diff options
| author | Tom Christie | 2014-10-30 16:53:12 +0000 | 
|---|---|---|
| committer | Tom Christie | 2014-10-30 16:53:12 +0000 | 
| commit | cd40dcb06500424ef9016913a1a89db0deed8a1f (patch) | |
| tree | 2023aa697c7916f264677dcce07d6142f5a6f496 /rest_framework | |
| parent | 0dea509dc9847206d830a0e48b91fa1c5b8ac52e (diff) | |
| download | django-rest-framework-cd40dcb06500424ef9016913a1a89db0deed8a1f.tar.bz2 | |
Ensure json.dumps(separators=...) works on both 2.x and 3.x
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/compat.py | 9 | ||||
| -rw-r--r-- | rest_framework/renderers.py | 6 | 
2 files changed, 13 insertions, 2 deletions
| diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 4ab23a4d..0201bd83 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -291,6 +291,15 @@ except ImportError:      oauth2_constants = None      provider_now = None +# `seperators` argument to `json.dumps()` differs between 2.x and 3.x +# See: http://bugs.python.org/issue22767 +if six.PY3: +    SHORT_SEPARATORS = (',', ':') +    LONG_SEPARATORS = (', ', ': ') +else: +    SHORT_SEPARATORS = (b',', b':') +    LONG_SEPARATORS = (b', ', b': ') +  # Handle lazy strings across Py2/Py3  from django.utils.functional import Promise diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 4dfd0f49..c950b498 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -18,7 +18,9 @@ from django.test.client import encode_multipart  from django.utils import six  from django.utils.xmlutils import SimplerXMLGenerator  from rest_framework import exceptions, serializers, status, VERSION -from rest_framework.compat import StringIO, smart_text, yaml +from rest_framework.compat import ( +    SHORT_SEPARATORS, LONG_SEPARATORS, StringIO, smart_text, yaml +)  from rest_framework.exceptions import ParseError  from rest_framework.settings import api_settings  from rest_framework.request import is_form_media_type, override_method @@ -87,7 +89,7 @@ class JSONRenderer(BaseRenderer):          renderer_context = renderer_context or {}          indent = self.get_indent(accepted_media_type, renderer_context) -        separators = (',', ':') if (indent is None and self.compact) else (', ', ': ') +        separators = SHORT_SEPARATORS if (indent is None and self.compact) else LONG_SEPARATORS          ret = json.dumps(              data, cls=self.encoder_class, | 
