From 8383e4021674b5c81e25db5602af9f0327d8c762 Mon Sep 17 00:00:00 2001 From: Andy Neff Date: Tue, 21 Feb 2017 19:38:12 -0500 Subject: [PATCH] Fix for Python 3 --- rest_framework/utils/encoders.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/rest_framework/utils/encoders.py b/rest_framework/utils/encoders.py index 18532ec81..17cbd3cd5 100644 --- a/rest_framework/utils/encoders.py +++ b/rest_framework/utils/encoders.py @@ -7,7 +7,7 @@ import datetime import decimal import json import uuid -from json.encoder import (FLOAT_REPR, INFINITY, _make_iterencode, +from json.encoder import (INFINITY, _make_iterencode, encode_basestring, encode_basestring_ascii) from django.db.models.query import QuerySet @@ -17,6 +17,11 @@ from django.utils.functional import Promise from rest_framework.compat import coreapi, total_seconds +try: + from json.encoder import FLOAT_REPR +except: + FLOAT_REPR = float.__repr__ + class JSONEncoder(json.JSONEncoder): """ @@ -47,12 +52,6 @@ class JSONEncoder(json.JSONEncoder): o = o.decode(_encoding) return _orig_encoder(o) - if self.encoding != 'utf-8': - def _encoder(o, _orig_encoder=_encoder, _encoding=self.encoding): - if isinstance(o, str): - o = o.decode(_encoding) - return _orig_encoder(o) - def floatstr(o, allow_nan=self.allow_nan, _repr=FLOAT_REPR, _inf=INFINITY, _neginf=-INFINITY): # Check for specials. Note that this type of test is processor