summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <mmerickel@users.noreply.github.com>2016-08-16 20:06:00 -0500
committerGitHub <noreply@github.com>2016-08-16 20:06:00 -0500
commite4183b2378acd85fee5ec71d281b3e8e6c2de323 (patch)
treef587fa36310ebb318e1918d2e4f756e8070d58de
parent93770d015c0de094bd308e5097ed94fe28b3ce7f (diff)
parent23b7a2a8423a56928e99953bcc41ce281b1ae6be (diff)
downloadpyramid-e4183b2378acd85fee5ec71d281b3e8e6c2de323.tar.gz
pyramid-e4183b2378acd85fee5ec71d281b3e8e6c2de323.tar.bz2
pyramid-e4183b2378acd85fee5ec71d281b3e8e6c2de323.zip
Merge pull request #2745 from mmerickel/fix/2744
revert changes to the renderers from #2706
-rw-r--r--CHANGES.txt5
-rw-r--r--pyramid/renderers.py17
-rw-r--r--pyramid/tests/test_config/test_views.py4
-rw-r--r--pyramid/tests/test_renderers.py31
4 files changed, 14 insertions, 43 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 8cb4c602e..02e3271ce 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -24,11 +24,6 @@ Bug Fixes
and `attr` is involved.
See: https://github.com/Pylons/pyramid/pull/2687
-- The JSON renderers now encode their result as UTF-8. The renderer helper
- will now warn the user and encode the result as UTF-8 if a renderer returns a
- text type and the response does not have a valid character set. See
- https://github.com/Pylons/pyramid/pull/2706
-
Deprecations
------------
diff --git a/pyramid/renderers.py b/pyramid/renderers.py
index 5b915ffdf..9b3f19510 100644
--- a/pyramid/renderers.py
+++ b/pyramid/renderers.py
@@ -1,7 +1,6 @@
import json
import os
import re
-import warnings
from zope.interface import (
implementer,
@@ -273,7 +272,7 @@ class JSON(object):
if ct == response.default_content_type:
response.content_type = 'application/json'
default = self._make_default(request)
- return self.serializer(value, default=default, **self.kw).encode('UTF-8')
+ return self.serializer(value, default=default, **self.kw)
return _render
@@ -380,7 +379,7 @@ class JSONP(JSON):
raise HTTPBadRequest('Invalid JSONP callback function name.')
ct = 'application/javascript'
- body = '/**/{0}({1});'.format(callback, val).encode('UTF-8')
+ body = '/**/{0}({1});'.format(callback, val)
response = request.response
if response.content_type == response.default_content_type:
response.content_type = ct
@@ -468,17 +467,7 @@ class RendererHelper(object):
if result is not None:
if isinstance(result, text_type):
- if response.charset is None:
- warnings.warn(
- "Renderer returned a result of type {0}, "
- "however the response Content-Type <{1}> does not "
- "have a charset. Implicitly encoding the result as "
- "UTF-8.".format(type(result), response.content_type),
- RuntimeWarning
- )
- response.body = result.encode('UTF-8')
- else:
- response.text = result
+ response.text = result
elif isinstance(result, bytes):
response.body = result
elif hasattr(result, '__iter__'):
diff --git a/pyramid/tests/test_config/test_views.py b/pyramid/tests/test_config/test_views.py
index c57deec7a..878574e88 100644
--- a/pyramid/tests/test_config/test_views.py
+++ b/pyramid/tests/test_config/test_views.py
@@ -2168,7 +2168,7 @@ class TestViewsConfigurationMixin(unittest.TestCase):
ctx_iface=implementedBy(HTTPNotFound),
request_iface=IRequest)
result = view(None, request)
- self._assertBody(result, b'{}')
+ self._assertBody(result, '{}')
def test_add_forbidden_view_with_renderer(self):
from zope.interface import implementedBy
@@ -2185,7 +2185,7 @@ class TestViewsConfigurationMixin(unittest.TestCase):
ctx_iface=implementedBy(HTTPForbidden),
request_iface=IRequest)
result = view(None, request)
- self._assertBody(result, b'{}')
+ self._assertBody(result, '{}')
def test_set_view_mapper(self):
from pyramid.interfaces import IViewMapperFactory
diff --git a/pyramid/tests/test_renderers.py b/pyramid/tests/test_renderers.py
index ce337cd99..65bfa5582 100644
--- a/pyramid/tests/test_renderers.py
+++ b/pyramid/tests/test_renderers.py
@@ -18,7 +18,7 @@ class TestJSON(unittest.TestCase):
def test_it(self):
renderer = self._makeOne()(None)
result = renderer({'a':1}, {})
- self.assertEqual(result, b'{"a": 1}')
+ self.assertEqual(result, '{"a": 1}')
def test_with_request_content_type_notset(self):
request = testing.DummyRequest()
@@ -43,7 +43,7 @@ class TestJSON(unittest.TestCase):
renderer = self._makeOne()
renderer.add_adapter(datetime, adapter)
result = renderer(None)({'a':now}, {'request':request})
- self.assertEqual(result, '{{"a": "{0}"}}'.format(now.isoformat()).encode('UTF-8'))
+ self.assertEqual(result, '{"a": "%s"}' % now.isoformat())
def test_with_custom_adapter2(self):
request = testing.DummyRequest()
@@ -54,7 +54,7 @@ class TestJSON(unittest.TestCase):
now = datetime.utcnow()
renderer = self._makeOne(adapters=((datetime, adapter),))
result = renderer(None)({'a':now}, {'request':request})
- self.assertEqual(result, '{{"a": "{0}"}}'.format(now.isoformat()).encode('UTF-8'))
+ self.assertEqual(result, '{"a": "%s"}' % now.isoformat())
def test_with_custom_serializer(self):
class Serializer(object):
@@ -66,7 +66,7 @@ class TestJSON(unittest.TestCase):
renderer = self._makeOne(serializer=serializer, baz=5)
obj = {'a':'b'}
result = renderer(None)(obj, {})
- self.assertEqual(result, b'foo')
+ self.assertEqual(result, 'foo')
self.assertEqual(serializer.obj, obj)
self.assertEqual(serializer.kw['baz'], 5)
self.assertTrue('default' in serializer.kw)
@@ -84,7 +84,7 @@ class TestJSON(unittest.TestCase):
objects = [MyObject(1), MyObject(2)]
renderer = self._makeOne()(None)
result = renderer(objects, {'request':request})
- self.assertEqual(result, b'[{"x": 1}, {"x": 2}]')
+ self.assertEqual(result, '[{"x": 1}, {"x": 2}]')
def test_with_object_adapter_no___json__(self):
class MyObject(object):
@@ -290,19 +290,6 @@ class TestRendererHelper(unittest.TestCase):
response = helper._make_response(la.encode('utf-8'), request)
self.assertEqual(response.body, la.encode('utf-8'))
- def test__make_response_result_is_str_no_charset(self):
- from pyramid.response import Response
- request = testing.DummyRequest()
- request.response = Response(content_type='application/json', charset=None)
-
- self.assertIsNone(request.response.charset)
-
- helper = self._makeOne('loo.foo')
- la = text_('/La Pe\xc3\xb1a', 'utf-8')
- response = helper._make_response(la, request)
- self.assertIsNone(response.charset)
- self.assertEqual(response.body, la.encode('utf-8'))
-
def test__make_response_result_is_iterable(self):
from pyramid.response import Response
request = testing.DummyRequest()
@@ -505,7 +492,7 @@ class Test_render(unittest.TestCase):
request.response = response
# use a json renderer, which will mutate the response
result = self._callFUT('json', dict(a=1), request=request)
- self.assertEqual(result, b'{"a": 1}')
+ self.assertEqual(result, '{"a": 1}')
self.assertEqual(request.response, response)
def test_no_response_to_preserve(self):
@@ -520,7 +507,7 @@ class Test_render(unittest.TestCase):
request = DummyRequestWithClassResponse()
# use a json renderer, which will mutate the response
result = self._callFUT('json', dict(a=1), request=request)
- self.assertEqual(result, b'{"a": 1}')
+ self.assertEqual(result, '{"a": 1}')
self.assertFalse('response' in request.__dict__)
class Test_render_to_response(unittest.TestCase):
@@ -640,7 +627,7 @@ class TestJSONP(unittest.TestCase):
request = testing.DummyRequest()
request.GET['callback'] = 'callback'
result = renderer({'a':'1'}, {'request':request})
- self.assertEqual(result, b'/**/callback({"a": "1"});')
+ self.assertEqual(result, '/**/callback({"a": "1"});')
self.assertEqual(request.response.content_type,
'application/javascript')
@@ -650,7 +637,7 @@ class TestJSONP(unittest.TestCase):
request = testing.DummyRequest()
request.GET['callback'] = 'angular.callbacks._0'
result = renderer({'a':'1'}, {'request':request})
- self.assertEqual(result, b'/**/angular.callbacks._0({"a": "1"});')
+ self.assertEqual(result, '/**/angular.callbacks._0({"a": "1"});')
self.assertEqual(request.response.content_type,
'application/javascript')