File sqlalchemy2.patch of Package python-pecan
From 3c4e8488b6bf0db895ca3edbe51016e5026b92a7 Mon Sep 17 00:00:00 2001
From: Ryan Petrello <ryan@ryanpetrello.com>
Date: Fri, 17 Mar 2023 09:47:07 -0400
Subject: [PATCH] remove six as a requirement, and add support for SQLAlchemy
2.0
---
pecan/commands/base.py | 4 +-
pecan/commands/shell.py | 2 +-
pecan/compat/__init__.py | 21 +-
pecan/configuration.py | 26 +-
pecan/core.py | 29 +-
pecan/decorators.py | 6 +-
pecan/hooks.py | 4 +-
pecan/jsonify.py | 29 +-
pecan/middleware/debug.py | 9 +-
pecan/middleware/errordocument.py | 9 +-
pecan/middleware/static.py | 8 +-
pecan/rest.py | 8 +-
pecan/routing.py | 5 +-
pecan/scaffolds/__init__.py | 15 +-
pecan/secure.py | 20 +-
pecan/tests/middleware/test_errordocument.py | 19 +-
pecan/tests/middleware/test_recursive.py | 7 +-
pecan/tests/scaffold_builder.py | 4 +-
pecan/tests/test_base.py | 377 +++++++++----------
pecan/tests/test_conf.py | 6 +-
pecan/tests/test_generic.py | 12 +-
pecan/tests/test_hooks.py | 67 ++--
pecan/tests/test_jsonify.py | 19 +-
pecan/tests/test_no_thread_locals.py | 250 ++++++------
pecan/tests/test_rest.py | 265 +++++++------
pecan/tests/test_scaffolds.py | 3 +-
pecan/tests/test_secure.py | 39 +-
pecan/tests/test_templating.py | 4 +-
pecan/util.py | 8 +-
requirements.txt | 1 -
setup.py | 2 +-
34 files changed, 616 insertions(+), 689 deletions(-)
diff --git a/pecan/commands/base.py b/pecan/commands/base.py
index 441d577..b1a25e8 100644
--- a/pecan/commands/base.py
+++ b/pecan/commands/base.py
@@ -4,8 +4,6 @@
import sys
from warnings import warn
-import six
-
log = logging.getLogger(__name__)
@@ -81,7 +79,7 @@ def parse_sub_commands(self):
)
for arg in getattr(cmd, 'arguments', tuple()):
arg = arg.copy()
- if isinstance(arg.get('name'), six.string_types):
+ if isinstance(arg.get('name'), str):
sub.add_argument(arg.pop('name'), **arg)
elif isinstance(arg.get('name'), list):
sub.add_argument(*arg.pop('name'), **arg)
diff --git a/pecan/commands/shell.py b/pecan/commands/shell.py
index 00a0521..d09fb6f 100644
--- a/pecan/commands/shell.py
+++ b/pecan/commands/shell.py
@@ -141,7 +141,7 @@ def run(self, args):
banner += ' %-10s - This project\'s WSGI App instance\n' % 'wsgiapp'
banner += ' %-10s - The current configuration\n' % 'conf'
if TestApp:
- banner += ' %-10s - webtest.TestApp wrapped around wsgiapp\n' % 'app'
+ banner += ' %-10s - webtest.TestApp wrapped around wsgiapp\n' % 'app' # noqa
if model:
model_name = getattr(
model,
diff --git a/pecan/compat/__init__.py b/pecan/compat/__init__.py
index 650929b..995abc5 100644
--- a/pecan/compat/__init__.py
+++ b/pecan/compat/__init__.py
@@ -1,23 +1,14 @@
import inspect
-import six
-
-if six.PY3:
- import urllib.parse as urlparse
- from urllib.parse import quote, unquote_plus
- from urllib.request import urlopen, URLError
- from html import escape
- izip = zip
-else:
- import urlparse # noqa
- from urllib import quote, unquote_plus # noqa
- from urllib2 import urlopen, URLError # noqa
- from cgi import escape # noqa
- from itertools import izip
+import urllib.parse as urlparse # noqa
+from urllib.parse import quote, unquote_plus # noqa
+from urllib.request import urlopen, URLError # noqa
+from html import escape # noqa
+izip = zip
def is_bound_method(ob):
- return inspect.ismethod(ob) and six.get_method_self(ob) is not None
+ return inspect.ismethod(ob) and ob.__self__ is not None
def getargspec(func):
diff --git a/pecan/configuration.py b/pecan/configuration.py
index 0221a68..50531ff 100644
--- a/pecan/configuration.py
+++ b/pecan/configuration.py
@@ -2,13 +2,7 @@
import inspect
import os
import sys
-
-import six
-
-if six.PY3:
- from importlib.machinery import SourceFileLoader
-else:
- import imp
+from importlib.machinery import SourceFileLoader
IDENTIFIER = re.compile(r'[a-z_](\w)*$', re.IGNORECASE)
@@ -63,7 +57,7 @@ def update(self, conf_dict):
'''
if isinstance(conf_dict, dict):
- iterator = six.iteritems(conf_dict)
+ iterator = iter(conf_dict.items())
else:
iterator = iter(conf_dict)
@@ -134,14 +128,14 @@ def __setitem__(self, key, value):
self.__values__[key] = ConfigDict(value)
else:
self.__values__[key] = Config(value, filename=self.__file__)
- elif isinstance(value, six.string_types) and '%(confdir)s' in value:
+ elif isinstance(value, str) and '%(confdir)s' in value:
confdir = os.path.dirname(self.__file__) or os.getcwd()
self.__values__[key] = value.replace('%(confdir)s', confdir)
else:
self.__values__[key] = value
def __iter__(self):
- return six.iteritems(self.__values__)
+ return iter(self.__values__.items())
def __dir__(self):
"""
@@ -174,13 +168,7 @@ def conf_from_file(filepath):
# This provides more verbose import-related error reporting than exec()
absname, _ = os.path.splitext(abspath)
basepath, module_name = absname.rsplit(os.sep, 1)
- if six.PY3:
- SourceFileLoader(module_name, abspath).load_module(module_name)
- else:
- imp.load_module(
- module_name,
- *imp.find_module(module_name, [basepath])
- )
+ SourceFileLoader(module_name, abspath).load_module(module_name)
# If we were able to import as a module, actually exec the compiled code
exec(compiled, globals(), conf_dict)
@@ -215,7 +203,7 @@ def conf_from_dict(conf_dict):
'''
conf = Config(filename=conf_dict.get('__file__', ''))
- for k, v in six.iteritems(conf_dict):
+ for k, v in iter(conf_dict.items()):
if k.startswith('__'):
continue
elif inspect.ismodule(v):
@@ -248,7 +236,7 @@ def set_config(config, overwrite=False):
if overwrite is True:
_runtime_conf.empty()
- if isinstance(config, six.string_types):
+ if isinstance(config, str):
config = conf_from_file(config)
_runtime_conf.update(config)
if config.__file__:
diff --git a/pecan/core.py b/pecan/core.py
index bcf9cd4..819e50c 100644
--- a/pecan/core.py
+++ b/pecan/core.py
@@ -7,13 +7,11 @@
import sys
import types
-import six
-
from webob import (Request as WebObRequest, Response as WebObResponse, exc,
acceptparse)
from webob.multidict import NestedMultiDict
-from .compat import urlparse, izip
+from .compat import urlparse, izip, is_bound_method as ismethod
from .jsonify import encode as dumps
from .secure import handle_security
from .templating import RendererFactory
@@ -21,10 +19,6 @@
from .util import _cfg, getargspec
from .middleware.recursive import ForwardRequestException
-if six.PY3:
- from .compat import is_bound_method as ismethod
-else:
- from inspect import ismethod
# make sure that json is defined in mimetypes
add_type('application/json', '.json', True)
@@ -130,12 +124,7 @@ def abort(status_code, detail='', headers=None, comment=None, **kw):
comment=comment,
**kw
)
-
- if six.PY3:
- raise webob_exception.with_traceback(traceback)
- else:
- # Using exec to avoid python 3 parsers from crashing
- exec('raise webob_exception, None, traceback')
+ raise webob_exception.with_traceback(traceback)
finally:
# Per the suggestion of the Python docs, delete the traceback object
del traceback
@@ -236,7 +225,7 @@ def __init__(self, root, default_renderer='mako',
force_canonical=True, guess_content_type_from_ext=True,
context_local_factory=None, request_cls=Request,
response_cls=Response, **kw):
- if isinstance(root, six.string_types):
+ if isinstance(root, str):
root = self.__translate_root__(root)
self.root = root
@@ -246,7 +235,7 @@ def __init__(self, root, default_renderer='mako',
self.default_renderer = default_renderer
# pre-sort these so we don't have to do it per-request
- if six.callable(hooks):
+ if callable(hooks):
hooks = hooks()
self.hooks = list(sorted(
@@ -275,7 +264,7 @@ def __translate_root__(self, item):
module = __import__(name, fromlist=fromlist)
kallable = getattr(module, parts[-1])
msg = "%s does not represent a callable class or function."
- if not six.callable(kallable):
+ if not callable(kallable):
raise TypeError(msg % item)
return kallable()
@@ -397,7 +386,7 @@ def get_args(self, state, all_params, remainder, argspec, im_self):
# handle wildcard GET/POST params
if argspec[2]:
- for name, value in six.iteritems(all_params):
+ for name, value in iter(all_params.items()):
if name not in argspec[0]:
kwargs[name] = value
@@ -466,7 +455,7 @@ def find_controller(self, state):
# handle generic controllers
im_self = None
if cfg.get('generic'):
- im_self = six.get_method_self(controller)
+ im_self = controller.__self__
handlers = cfg['generic_handlers']
controller = handlers.get(req.method, handlers['DEFAULT'])
handle_security(controller, im_self)
@@ -622,7 +611,7 @@ def invoke_controller(self, controller, args, kwargs, state):
testing_variables['controller_output'] = result
# set the body content
- if result and isinstance(result, six.text_type):
+ if result and isinstance(result, str):
resp.text = result
elif result:
resp.body = result
@@ -707,7 +696,7 @@ def __call__(self, environ, start_response):
'title': e.title,
'description': e.detail
})
- if isinstance(json_body, six.text_type):
+ if isinstance(json_body, str):
e.text = json_body
else:
e.body = json_body
diff --git a/pecan/decorators.py b/pecan/decorators.py
index e9636b1..4f6daf5 100644
--- a/pecan/decorators.py
+++ b/pecan/decorators.py
@@ -1,6 +1,4 @@
-from inspect import getmembers, isclass, ismethod, isfunction
-
-import six
+from inspect import getmembers, isclass, isfunction
from .util import _cfg, getargspec
@@ -109,7 +107,7 @@ def deco(f):
if isclass(f):
for meth in [
m[1] for m in getmembers(f)
- if (isfunction if six.PY3 else ismethod)(m[1])
+ if isfunction(m[1])
]:
if getattr(meth, 'exposed', False):
_cfg(meth)['transactional'] = True
diff --git a/pecan/hooks.py b/pecan/hooks.py
index 9938c15..ae75e1b 100644
--- a/pecan/hooks.py
+++ b/pecan/hooks.py
@@ -1,8 +1,8 @@
+import builtins
import types
import sys
from inspect import getmembers
-import six
from webob.exc import HTTPFound
from .util import iscontroller, _cfg
@@ -15,7 +15,7 @@
def walk_controller(root_class, controller, hooks, seen=None):
seen = seen or set()
- if type(controller) not in vars(six.moves.builtins).values():
+ if type(controller) not in vars(builtins).values():
# Avoid recursion loops
try:
if controller in seen:
diff --git a/pecan/jsonify.py b/pecan/jsonify.py
index c5cbc15..5f8bd48 100644
--- a/pecan/jsonify.py
+++ b/pecan/jsonify.py
@@ -12,26 +12,26 @@
from webob.multidict import MultiDict
webob_dicts = (MultiDict,)
-import six
try:
from functools import singledispatch
except ImportError: # pragma: no cover
from singledispatch import singledispatch
try:
- from sqlalchemy.engine.result import ResultProxy, RowProxy
-except ImportError: # pragma no cover
+ import sqlalchemy # noqa
try:
- from sqlalchemy.engine.base import ResultProxy, RowProxy
- except ImportError: # pragma no cover
- # dummy classes since we don't have SQLAlchemy installed
-
- class ResultProxy(object): # noqa
- pass
-
- class RowProxy(object): # noqa
- pass
+ # SQLAlchemy 2.0 support
+ from sqlalchemy.engine import CursorResult as ResultProxy
+ from sqlalchemy.engine import Row as RowProxy
+ except ImportError:
+ from sqlalchemy.engine.result import ResultProxy, RowProxy
+except ImportError:
+ # dummy classes since we don't have SQLAlchemy installed
+ class ResultProxy(object): # noqa
+ pass
+ class RowProxy(object): # noqa
+ pass
try:
from sqlalchemy.engine.cursor import LegacyCursorResult, LegacyRow
@@ -93,7 +93,7 @@ def default(self, obj):
returns webob_dicts.mixed() dictionary, which is guaranteed
to be JSON-friendly.
'''
- if hasattr(obj, '__json__') and six.callable(obj.__json__):
+ if hasattr(obj, '__json__') and callable(obj.__json__):
return obj.__json__()
elif isinstance(obj, (date, datetime)):
return str(obj)
@@ -119,6 +119,9 @@ def default(self, obj):
elif isinstance(obj, LegacyRow):
return dict(obj._mapping)
elif isinstance(obj, RowProxy):
+ if obj.__class__.__name__ == 'Row':
+ # SQLAlchemy 2.0 support
+ obj = obj._mapping
return dict(obj)
elif isinstance(obj, webob_dicts):
return obj.mixed()
diff --git a/pecan/middleware/debug.py b/pecan/middleware/debug.py
index 2c3d4b0..b6ce553 100644
--- a/pecan/middleware/debug.py
+++ b/pecan/middleware/debug.py
@@ -1,4 +1,4 @@
-__CONFIG_HELP__ = '''
+__CONFIG_HELP__ = b'''
<div class="traceback">
<b>To disable this interface, set </b>
<a target="window"
@@ -10,18 +10,17 @@
try:
import re
- from six import b
from backlash.debug import DebuggedApplication
class DebugMiddleware(DebuggedApplication):
- body_re = re.compile(b('(<body[^>]*>)'), re.I)
+ body_re = re.compile(b'(<body[^>]*>)', re.I)
def debug_application(self, environ, start_response):
for part in super(DebugMiddleware, self).debug_application(
environ, start_response
):
- yield self.body_re.sub(b('\g<1>%s' % __CONFIG_HELP__), part)
+ yield self.body_re.sub(b'<1>%s' % __CONFIG_HELP__, part)
except ImportError:
@@ -30,7 +29,7 @@ def debug_application(self, environ, start_response):
from pprint import pformat
from mako.template import Template
- from six.moves import cStringIO as StringIO
+ from io import StringIO
from webob import Response
from webob.exc import HTTPException
diff --git a/pecan/middleware/errordocument.py b/pecan/middleware/errordocument.py
index 12a3c9e..5f4201b 100644
--- a/pecan/middleware/errordocument.py
+++ b/pecan/middleware/errordocument.py
@@ -1,6 +1,5 @@
import sys
-from six import b as b_
from .recursive import ForwardRequestException, RecursionLoop
@@ -32,9 +31,11 @@ def keep_status_start_response(status, headers, exc_info=None):
[('Content-type', 'text/plain')],
sys.exc_info()
)
- return [b_(
- 'Error: %s. (Error page could not be fetched)' % self.status
- )]
+ return [
+ b'Error: %s. (Error page could not be fetched)' % (
+ self.status.encode('utf-8')
+ )
+ ]
class ErrorDocumentMiddleware(object):
diff --git a/pecan/middleware/static.py b/pecan/middleware/static.py
index ab6dd4e..da70178 100644
--- a/pecan/middleware/static.py
+++ b/pecan/middleware/static.py
@@ -10,8 +10,6 @@
from datetime import datetime
from time import gmtime
-import six
-
class FileWrapper(object):
"""This class can be used to convert a :class:`file`-like object into
@@ -37,17 +35,13 @@ def close(self):
def __iter__(self):
return self
- def next(self):
+ def __next__(self):
data = self.file.read(self.buffer_size)
if data:
return data
raise StopIteration()
-if six.PY3:
- FileWrapper.__next__ = FileWrapper.next
-
-
def wrap_file(environ, file, buffer_size=8192):
"""Wraps a file. This uses the WSGI server's file wrapper if available
or otherwise the generic :class:`FileWrapper`.
diff --git a/pecan/rest.py b/pecan/rest.py
index e231c71..3483df4 100644
--- a/pecan/rest.py
+++ b/pecan/rest.py
@@ -2,7 +2,6 @@
import warnings
from webob import exc
-import six
from .core import abort
from .decorators import expose
@@ -49,8 +48,7 @@ def __new__(cls, *args, **kwargs):
# object.__new__ will error if called with extra arguments, and either
# __new__ is overridden or __init__ is not overridden;
# https://hg.python.org/cpython/file/78d36d54391c/Objects/typeobject.c#l3034
- # In PY3, this is actually a TypeError (in PY2, it just raises
- # a DeprecationWarning)
+ # In PY3, this is a TypeError
new = super(RestController, cls).__new__
if new is object.__new__:
return new(cls)
@@ -182,7 +180,7 @@ def _handle_lookup(self, args, request=None):
self._raise_method_deprecation_warning(self.handle_lookup)
# filter empty strings from the arg list
- args = list(six.moves.filter(bool, args))
+ args = list(filter(bool, args))
# check for lookup controllers
lookup = getattr(self, '_lookup', None)
@@ -276,7 +274,7 @@ def _handle_get(self, method, remainder, request=None):
# route to a get_all or get if no additional parts are available
if not remainder or remainder == ['']:
- remainder = list(six.moves.filter(bool, remainder))
+ remainder = list(filter(bool, remainder))
controller = self._find_controller('get_all', 'get')
if controller:
self._handle_bad_rest_arguments(controller, remainder, request)
diff --git a/pecan/routing.py b/pecan/routing.py
index 9b2f57b..95c5160 100644
--- a/pecan/routing.py
+++ b/pecan/routing.py
@@ -4,7 +4,6 @@
from inspect import getmembers, ismethod
from webob import exc
-import six
from .secure import handle_security, cross_boundary
from .util import iscontroller, getargspec, _cfg
@@ -42,7 +41,7 @@ class Controller(object):
"""
def _validate_route(route):
- if not isinstance(route, six.string_types):
+ if not isinstance(route, str):
raise TypeError('%s must be a string' % route)
if route in ('.', '..') or not re.match(
@@ -280,7 +279,7 @@ def _detect_custom_path_segments(obj):
for key, val in getmembers(obj):
if iscontroller(val) and isinstance(
getattr(val, 'custom_route', None),
- six.string_types
+ str,
):
route = val.custom_route
diff --git a/pecan/scaffolds/__init__.py b/pecan/scaffolds/__init__.py
index 2dbe46f..405ca5e 100644
--- a/pecan/scaffolds/__init__.py
+++ b/pecan/scaffolds/__init__.py
@@ -4,8 +4,6 @@
import pkg_resources
from string import Template
-import six
-
DEFAULT_SCAFFOLD = 'base'
_bad_chars_re = re.compile('[^a-zA-Z0-9_]')
@@ -125,18 +123,13 @@ def render_template(content, variables):
fsenc = sys.getfilesystemencoding()
def to_native(s, encoding='latin-1', errors='strict'):
- if six.PY3:
- if isinstance(s, six.text_type):
- return s
- return str(s, encoding, errors)
- else:
- if isinstance(s, six.text_type):
- return s.encode(encoding, errors)
- return str(s)
+ if isinstance(s, str):
+ return s
+ return str(s, encoding, errors)
output = Template(
to_native(content, fsenc)
).substitute(variables)
- if isinstance(output, six.text_type):
+ if isinstance(output, str):
output = output.encode(fsenc, 'strict')
return output
diff --git a/pecan/secure.py b/pecan/secure.py
index 7b04368..db5a746 100644
--- a/pecan/secure.py
+++ b/pecan/secure.py
@@ -2,18 +2,12 @@
from inspect import getmembers, isfunction
from webob import exc
-import six
-
+from .compat import is_bound_method as ismethod
from .decorators import expose
from .util import _cfg, iscontroller
__all__ = ['unlocked', 'secure', 'SecureController']
-if six.PY3:
- from .compat import is_bound_method as ismethod
-else:
- from inspect import ismethod
-
class _SecureState(object):
def __init__(self, desc, boolean_value):
@@ -66,7 +60,7 @@ def __init__(self, obj, check_permissions):
self._parent = None
def _check_permissions(self):
- if isinstance(self.check_permissions, six.string_types):
+ if isinstance(self.check_permissions, str):
return getattr(self.parent, self.check_permissions)()
else:
return self.check_permissions()
@@ -76,7 +70,7 @@ def __get_parent(self):
def __set_parent(self, parent):
if ismethod(parent):
- self._parent = six.get_method_self(parent)
+ self._parent = parent.__self__
else:
self._parent = parent
parent = property(__get_parent, __set_parent)
@@ -92,7 +86,7 @@ def _allowed_check_permissions_types(x):
return (
ismethod(x) or
isfunction(x) or
- isinstance(x, six.string_types)
+ isinstance(x, str)
)
@@ -145,7 +139,7 @@ def __init__(cls, name, bases, dict_):
)
for name, value in getmembers(cls)[:]:
- if (isfunction if six.PY3 else ismethod)(value):
+ if isfunction(value):
if iscontroller(value) and value._pecan.get(
'secured'
) is None:
@@ -207,9 +201,9 @@ def handle_security(controller, im_self=None):
if controller._pecan.get('secured', False):
check_permissions = controller._pecan['check_permissions']
- if isinstance(check_permissions, six.string_types):
+ if isinstance(check_permissions, str):
check_permissions = getattr(
- im_self or six.get_method_self(controller),
+ im_self or controller.__self__,
check_permissions
)
diff --git a/pecan/tests/middleware/test_errordocument.py b/pecan/tests/middleware/test_errordocument.py
index 29f46e5..93bbfe6 100644
--- a/pecan/tests/middleware/test_errordocument.py
+++ b/pecan/tests/middleware/test_errordocument.py
@@ -1,7 +1,6 @@
import json
from webtest import TestApp
-from six import b as b_
import pecan
from pecan.middleware.errordocument import ErrorDocumentMiddleware
@@ -11,13 +10,13 @@
def four_oh_four_app(environ, start_response):
if environ['PATH_INFO'].startswith('/error'):
- code = environ['PATH_INFO'].split('/')[2]
+ code = environ['PATH_INFO'].split('/')[2].encode('utf-8')
start_response("200 OK", [('Content-type', 'text/plain')])
- body = "Error: %s" % code
+ body = b"Error: %s" % code
if environ['QUERY_STRING']:
- body += "\nQS: %s" % environ['QUERY_STRING']
- return [b_(body)]
+ body += b"\nQS: %s" % environ['QUERY_STRING'].encode('utf-8')
+ return [body]
start_response("404 Not Found", [('Content-type', 'text/plain')])
return []
@@ -33,12 +32,12 @@ def setUp(self):
def test_hit_error_page(self):
r = self.app.get('/error/404')
assert r.status_int == 200
- assert r.body == b_('Error: 404')
+ assert r.body == b'Error: 404'
def test_middleware_routes_to_404_message(self):
r = self.app.get('/', expect_errors=True)
assert r.status_int == 404
- assert r.body == b_('Error: 404')
+ assert r.body == b'Error: 404'
def test_error_endpoint_with_query_string(self):
app = TestApp(RecursiveMiddleware(ErrorDocumentMiddleware(
@@ -46,7 +45,7 @@ def test_error_endpoint_with_query_string(self):
)))
r = app.get('/', expect_errors=True)
assert r.status_int == 404
- assert r.body == b_('Error: 404\nQS: foo=bar')
+ assert r.body == b'Error: 404\nQS: foo=bar'
def test_error_with_recursion_loop(self):
app = TestApp(RecursiveMiddleware(ErrorDocumentMiddleware(
@@ -54,8 +53,8 @@ def test_error_with_recursion_loop(self):
)))
r = app.get('/', expect_errors=True)
assert r.status_int == 404
- assert r.body == b_(
- 'Error: 404 Not Found. (Error page could not be fetched)'
+ assert r.body == (
+ b'Error: 404 Not Found. (Error page could not be fetched)'
)
def test_original_exception(self):
diff --git a/pecan/tests/middleware/test_recursive.py b/pecan/tests/middleware/test_recursive.py
index ed95d50..2d1481c 100644
--- a/pecan/tests/middleware/test_recursive.py
+++ b/pecan/tests/middleware/test_recursive.py
@@ -1,5 +1,4 @@
from webtest import TestApp
-from six import b as b_
from pecan.middleware.recursive import (RecursiveMiddleware,
ForwardRequestException)
@@ -8,16 +7,16 @@
def simple_app(environ, start_response):
start_response("200 OK", [('Content-type', 'text/plain')])
- return [b_('requested page returned')]
+ return [b'requested page returned']
def error_docs_app(environ, start_response):
if environ['PATH_INFO'] == '/not_found':
start_response("404 Not found", [('Content-type', 'text/plain')])
- return [b_('Not found')]
+ return [b'Not found']
elif environ['PATH_INFO'] == '/error':
start_response("200 OK", [('Content-type', 'text/plain')])
- return [b_('Page not found')]
+ return [b'Page not found']
elif environ['PATH_INFO'] == '/recurse':
raise ForwardRequestException('/recurse')
else:
diff --git a/pecan/tests/scaffold_builder.py b/pecan/tests/scaffold_builder.py
index 9ee7879..c608c18 100644
--- a/pecan/tests/scaffold_builder.py
+++ b/pecan/tests/scaffold_builder.py
@@ -3,8 +3,6 @@
import subprocess
import time
-from six import b as b_
-
from pecan.compat import urlopen, URLError
from pecan.tests import PecanTestCase
@@ -79,7 +77,7 @@ def test_project_pecan_shell_command(self):
self.poll(proc)
out, _ = proc.communicate(
- b_('{"model" : model, "conf" : conf, "app" : app}')
+ b'{"model" : model, "conf" : conf, "app" : app}'
)
assert 'testing123.model' in out.decode(), out
assert 'Config(' in out.decode(), out
diff --git a/pecan/tests/test_base.py b/pecan/tests/test_base.py
index 62d691e..57c8173 100644
--- a/pecan/tests/test_base.py
+++ b/pecan/tests/test_base.py
@@ -5,15 +5,11 @@
import json
import traceback
import warnings
-from unittest import mock
+from io import StringIO, BytesIO
import webob
from webob.exc import HTTPNotFound
from webtest import TestApp
-import six
-from six import b as b_
-from six import u as u_
-from six.moves import cStringIO as StringIO
from pecan import (
Pecan, Request, Response, expose, request, response, redirect,
@@ -49,19 +45,19 @@ def index(self):
@expose()
def explicit_body(self):
- response.body = b_('Hello, World!')
+ response.body = b'Hello, World!'
@expose()
def empty_body(self):
- response.body = b_('')
+ response.body = b''
@expose()
def explicit_text(self):
- response.text = six.text_type('Hello, World!')
+ response.text = 'Hello, World!'
@expose()
def empty_text(self):
- response.text = six.text_type('')
+ response.text = ''
@expose()
def explicit_json(self):
@@ -91,22 +87,22 @@ def test_index_with_non_unicode(self):
def test_explicit_body(self):
r = self.app_.get('/explicit_body/')
self.assertEqual(r.status_int, 200)
- self.assertEqual(r.body, b_('Hello, World!'))
+ self.assertEqual(r.body, b'Hello, World!')
def test_empty_body(self):
r = self.app_.get('/empty_body/')
self.assertEqual(r.status_int, 204)
- self.assertEqual(r.body, b_(''))
+ self.assertEqual(r.body, b'')
def test_explicit_text(self):
r = self.app_.get('/explicit_text/')
self.assertEqual(r.status_int, 200)
- self.assertEqual(r.body, b_('Hello, World!'))
+ self.assertEqual(r.body, b'Hello, World!')
def test_empty_text(self):
r = self.app_.get('/empty_text/')
self.assertEqual(r.status_int, 204)
- self.assertEqual(r.body, b_(''))
+ self.assertEqual(r.body, b'')
def test_explicit_json(self):
r = self.app_.get('/explicit_json/')
@@ -127,12 +123,12 @@ def app_(self):
class RootController(object):
@expose()
def index(self):
- body = six.BytesIO(b_('Hello, World!'))
+ body = BytesIO(b'Hello, World!')
response.body_file = body
@expose()
def empty(self):
- body = six.BytesIO(b_(''))
+ body = BytesIO(b'')
response.body_file = body
return TestApp(Pecan(RootController()))
@@ -140,7 +136,7 @@ def empty(self):
def test_body_generator(self):
r = self.app_.get('/')
self.assertEqual(r.status_int, 200)
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
def test_empty_body_generator(self):
r = self.app_.get('/empty')
@@ -179,17 +175,17 @@ def index(self):
def test_empty_root(self):
r = self.app_.get('/')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
def test_index(self):
r = self.app_.get('/index')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
def test_index_html(self):
r = self.app_.get('/index.html')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
class TestObjectDispatch(PecanTestCase):
@@ -232,22 +228,22 @@ def deeper(self):
def test_index(self):
r = self.app_.get('/')
assert r.status_int == 200
- assert r.body == b_('/')
+ assert r.body == b'/'
def test_one_level(self):
r = self.app_.get('/deeper')
assert r.status_int == 200
- assert r.body == b_('/deeper')
+ assert r.body == b'/deeper'
def test_one_level_with_trailing(self):
r = self.app_.get('/sub/')
assert r.status_int == 200
- assert r.body == b_('/sub/')
+ assert r.body == b'/sub/'
def test_two_levels(self):
r = self.app_.get('/sub/deeper')
assert r.status_int == 200
- assert r.body == b_('/sub/deeper')
+ assert r.body == b'/sub/deeper'
def test_two_levels_with_trailing(self):
r = self.app_.get('/sub/sub/')
@@ -256,10 +252,9 @@ def test_two_levels_with_trailing(self):
def test_three_levels(self):
r = self.app_.get('/sub/sub/deeper')
assert r.status_int == 200
- assert r.body == b_('/sub/sub/deeper')
+ assert r.body == b'/sub/sub/deeper'
-@unittest.skipIf(not six.PY3, "tests are Python3 specific")
class TestUnicodePathSegments(PecanTestCase):
def test_unicode_methods(self):
@@ -270,7 +265,7 @@ class RootController(object):
resp = app.get('/%F0%9F%8C%B0/')
assert resp.status_int == 200
- assert resp.body == b_('Hello, World!')
+ assert resp.body == b'Hello, World!'
def test_unicode_child(self):
class ChildController(object):
@@ -285,7 +280,7 @@ class RootController(object):
resp = app.get('/%F0%9F%8C%B0/')
assert resp.status_int == 200
- assert resp.body == b_('Hello, World!')
+ assert resp.body == b'Hello, World!'
class TestLookups(PecanTestCase):
@@ -318,17 +313,17 @@ def _lookup(self, someID, *remainder):
def test_index(self):
r = self.app_.get('/')
assert r.status_int == 200
- assert r.body == b_('/')
+ assert r.body == b'/'
def test_lookup(self):
r = self.app_.get('/100/')
assert r.status_int == 200
- assert r.body == b_('/100')
+ assert r.body == b'/100'
def test_lookup_with_method(self):
r = self.app_.get('/100/name')
assert r.status_int == 200
- assert r.body == b_('/100/name')
+ assert r.body == b'/100/name'
def test_lookup_with_wrong_argspec(self):
class RootController(object):
@@ -378,7 +373,7 @@ def test_canonical_lookup(self):
assert self.app_.get('/users', expect_errors=404).status_int == 404
assert self.app_.get('/users/', expect_errors=404).status_int == 404
assert self.app_.get('/users/100').status_int == 302
- assert self.app_.get('/users/100/').body == b_('100')
+ assert self.app_.get('/users/100/').body == b'100'
class TestControllerArguments(PecanTestCase):
@@ -466,22 +461,22 @@ def test_required_argument(self):
def test_single_argument(self):
r = self.app_.get('/1')
assert r.status_int == 200
- assert r.body == b_('index: 1')
+ assert r.body == b'index: 1'
def test_single_argument_with_encoded_url(self):
r = self.app_.get('/This%20is%20a%20test%21')
assert r.status_int == 200
- assert r.body == b_('index: This is a test!')
+ assert r.body == b'index: This is a test!'
def test_single_argument_with_plus(self):
r = self.app_.get('/foo+bar')
assert r.status_int == 200
- assert r.body == b_('index: foo+bar')
+ assert r.body == b'index: foo+bar'
def test_single_argument_with_encoded_plus(self):
r = self.app_.get('/foo%2Bbar')
assert r.status_int == 200
- assert r.body == b_('index: foo+bar')
+ assert r.body == b'index: foo+bar'
def test_two_arguments(self):
r = self.app_.get('/1/dummy', status=404)
@@ -490,120 +485,120 @@ def test_two_arguments(self):
def test_keyword_argument(self):
r = self.app_.get('/?id=2')
assert r.status_int == 200
- assert r.body == b_('index: 2')
+ assert r.body == b'index: 2'
def test_keyword_argument_with_encoded_url(self):
r = self.app_.get('/?id=This%20is%20a%20test%21')
assert r.status_int == 200
- assert r.body == b_('index: This is a test!')
+ assert r.body == b'index: This is a test!'
def test_keyword_argument_with_plus(self):
r = self.app_.get('/?id=foo+bar')
assert r.status_int == 200
- assert r.body == b_('index: foo bar')
+ assert r.body == b'index: foo bar'
def test_keyword_argument_with_encoded_plus(self):
r = self.app_.get('/?id=foo%2Bbar')
assert r.status_int == 200
- assert r.body == b_('index: foo+bar')
+ assert r.body == b'index: foo+bar'
def test_argument_and_keyword_argument(self):
r = self.app_.get('/3?id=three')
assert r.status_int == 200
- assert r.body == b_('index: 3')
+ assert r.body == b'index: 3'
def test_encoded_argument_and_keyword_argument(self):
r = self.app_.get('/This%20is%20a%20test%21?id=three')
assert r.status_int == 200
- assert r.body == b_('index: This is a test!')
+ assert r.body == b'index: This is a test!'
def test_explicit_kwargs(self):
r = self.app_.post('/', {'id': '4'})
assert r.status_int == 200
- assert r.body == b_('index: 4')
+ assert r.body == b'index: 4'
def test_path_with_explicit_kwargs(self):
r = self.app_.post('/4', {'id': 'four'})
assert r.status_int == 200
- assert r.body == b_('index: 4')
+ assert r.body == b'index: 4'
def test_explicit_json_kwargs(self):
r = self.app_.post_json('/', {'id': '4'})
assert r.status_int == 200
- assert r.body == b_('index: 4')
+ assert r.body == b'index: 4'
def test_path_with_explicit_json_kwargs(self):
r = self.app_.post_json('/4', {'id': 'four'})
assert r.status_int == 200
- assert r.body == b_('index: 4')
+ assert r.body == b'index: 4'
def test_multiple_kwargs(self):
r = self.app_.get('/?id=5&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('index: 5')
+ assert r.body == b'index: 5'
def test_kwargs_from_root(self):
r = self.app_.post('/', {'id': '6', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('index: 6')
+ assert r.body == b'index: 6'
def test_json_kwargs_from_root(self):
r = self.app_.post_json('/', {'id': '6', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('index: 6')
+ assert r.body == b'index: 6'
# multiple args
def test_multiple_positional_arguments(self):
r = self.app_.get('/multiple/one/two')
assert r.status_int == 200
- assert r.body == b_('multiple: one, two')
+ assert r.body == b'multiple: one, two'
def test_multiple_positional_arguments_with_url_encode(self):
r = self.app_.get('/multiple/One%20/Two%21')
assert r.status_int == 200
- assert r.body == b_('multiple: One , Two!')
+ assert r.body == b'multiple: One , Two!'
def test_multiple_positional_arguments_with_kwargs(self):
r = self.app_.get('/multiple?one=three&two=four')
assert r.status_int == 200
- assert r.body == b_('multiple: three, four')
+ assert r.body == b'multiple: three, four'
def test_multiple_positional_arguments_with_url_encoded_kwargs(self):
r = self.app_.get('/multiple?one=Three%20&two=Four%20%21')
assert r.status_int == 200
- assert r.body == b_('multiple: Three , Four !')
+ assert r.body == b'multiple: Three , Four !'
def test_positional_args_with_dictionary_kwargs(self):
r = self.app_.post('/multiple', {'one': 'five', 'two': 'six'})
assert r.status_int == 200
- assert r.body == b_('multiple: five, six')
+ assert r.body == b'multiple: five, six'
def test_positional_args_with_json_kwargs(self):
r = self.app_.post_json('/multiple', {'one': 'five', 'two': 'six'})
assert r.status_int == 200
- assert r.body == b_('multiple: five, six')
+ assert r.body == b'multiple: five, six'
def test_positional_args_with_url_encoded_dictionary_kwargs(self):
r = self.app_.post('/multiple', {'one': 'Five%20', 'two': 'Six%20%21'})
assert r.status_int == 200
- assert r.body == b_('multiple: Five%20, Six%20%21')
+ assert r.body == b'multiple: Five%20, Six%20%21'
# optional arg
def test_optional_arg(self):
r = self.app_.get('/optional')
assert r.status_int == 200
- assert r.body == b_('optional: None')
+ assert r.body == b'optional: None'
def test_multiple_optional(self):
r = self.app_.get('/optional/1')
assert r.status_int == 200
- assert r.body == b_('optional: 1')
+ assert r.body == b'optional: 1'
def test_multiple_optional_url_encoded(self):
r = self.app_.get('/optional/Some%20Number')
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_multiple_optional_missing(self):
r = self.app_.get('/optional/2/dummy', status=404)
@@ -612,72 +607,72 @@ def test_multiple_optional_missing(self):
def test_multiple_with_kwargs(self):
r = self.app_.get('/optional?id=2')
assert r.status_int == 200
- assert r.body == b_('optional: 2')
+ assert r.body == b'optional: 2'
def test_multiple_with_url_encoded_kwargs(self):
r = self.app_.get('/optional?id=Some%20Number')
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_multiple_args_with_url_encoded_kwargs(self):
r = self.app_.get('/optional/3?id=three')
assert r.status_int == 200
- assert r.body == b_('optional: 3')
+ assert r.body == b'optional: 3'
def test_url_encoded_positional_args(self):
r = self.app_.get('/optional/Some%20Number?id=three')
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_optional_arg_with_kwargs(self):
r = self.app_.post('/optional', {'id': '4'})
assert r.status_int == 200
- assert r.body == b_('optional: 4')
+ assert r.body == b'optional: 4'
def test_optional_arg_with_json_kwargs(self):
r = self.app_.post_json('/optional', {'id': '4'})
assert r.status_int == 200
- assert r.body == b_('optional: 4')
+ assert r.body == b'optional: 4'
def test_optional_arg_with_url_encoded_kwargs(self):
r = self.app_.post('/optional', {'id': 'Some%20Number'})
assert r.status_int == 200
- assert r.body == b_('optional: Some%20Number')
+ assert r.body == b'optional: Some%20Number'
def test_multiple_positional_arguments_with_dictionary_kwargs(self):
r = self.app_.post('/optional/5', {'id': 'five'})
assert r.status_int == 200
- assert r.body == b_('optional: 5')
+ assert r.body == b'optional: 5'
def test_multiple_positional_arguments_with_json_kwargs(self):
r = self.app_.post_json('/optional/5', {'id': 'five'})
assert r.status_int == 200
- assert r.body == b_('optional: 5')
+ assert r.body == b'optional: 5'
def test_multiple_positional_url_encoded_arguments_with_kwargs(self):
r = self.app_.post('/optional/Some%20Number', {'id': 'five'})
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_optional_arg_with_multiple_kwargs(self):
r = self.app_.get('/optional?id=6&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('optional: 6')
+ assert r.body == b'optional: 6'
def test_optional_arg_with_multiple_url_encoded_kwargs(self):
r = self.app_.get('/optional?id=Some%20Number&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_optional_arg_with_multiple_dictionary_kwargs(self):
r = self.app_.post('/optional', {'id': '7', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('optional: 7')
+ assert r.body == b'optional: 7'
def test_optional_arg_with_multiple_json_kwargs(self):
r = self.app_.post_json('/optional', {'id': '7', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('optional: 7')
+ assert r.body == b'optional: 7'
def test_optional_arg_with_multiple_url_encoded_dictionary_kwargs(self):
r = self.app_.post('/optional', {
@@ -685,34 +680,34 @@ def test_optional_arg_with_multiple_url_encoded_dictionary_kwargs(self):
'dummy': 'dummy'
})
assert r.status_int == 200
- assert r.body == b_('optional: Some%20Number')
+ assert r.body == b'optional: Some%20Number'
# multiple optional args
def test_multiple_optional_positional_args(self):
r = self.app_.get('/multiple_optional')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: None, None, None')
+ assert r.body == b'multiple_optional: None, None, None'
def test_multiple_optional_positional_args_one_arg(self):
r = self.app_.get('/multiple_optional/1')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_one_url_encoded_arg(self):
r = self.app_.get('/multiple_optional/One%21')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, None, None')
+ assert r.body == b'multiple_optional: One!, None, None'
def test_multiple_optional_positional_args_all_args(self):
r = self.app_.get('/multiple_optional/1/2/3')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, 2, 3')
+ assert r.body == b'multiple_optional: 1, 2, 3'
def test_multiple_optional_positional_args_all_url_encoded_args(self):
r = self.app_.get('/multiple_optional/One%21/Two%21/Three%21')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, Two!, Three!')
+ assert r.body == b'multiple_optional: One!, Two!, Three!'
def test_multiple_optional_positional_args_too_many_args(self):
r = self.app_.get('/multiple_optional/1/2/3/dummy', status=404)
@@ -721,64 +716,64 @@ def test_multiple_optional_positional_args_too_many_args(self):
def test_multiple_optional_positional_args_with_kwargs(self):
r = self.app_.get('/multiple_optional?one=1')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_with_url_encoded_kwargs(self):
r = self.app_.get('/multiple_optional?one=One%21')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, None, None')
+ assert r.body == b'multiple_optional: One!, None, None'
def test_multiple_optional_positional_args_with_string_kwargs(self):
r = self.app_.get('/multiple_optional/1?one=one')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_with_encoded_str_kwargs(self):
r = self.app_.get('/multiple_optional/One%21?one=one')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, None, None')
+ assert r.body == b'multiple_optional: One!, None, None'
def test_multiple_optional_positional_args_with_dict_kwargs(self):
r = self.app_.post('/multiple_optional', {'one': '1'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_with_json_kwargs(self):
r = self.app_.post_json('/multiple_optional', {'one': '1'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_with_encoded_dict_kwargs(self):
r = self.app_.post('/multiple_optional', {'one': 'One%21'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One%21, None, None')
+ assert r.body == b'multiple_optional: One%21, None, None'
def test_multiple_optional_positional_args_and_dict_kwargs(self):
r = self.app_.post('/multiple_optional/1', {'one': 'one'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_and_json_kwargs(self):
r = self.app_.post_json('/multiple_optional/1', {'one': 'one'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_encoded_positional_args_and_dict_kwargs(self):
r = self.app_.post('/multiple_optional/One%21', {'one': 'one'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, None, None')
+ assert r.body == b'multiple_optional: One!, None, None'
def test_multiple_optional_args_with_multiple_kwargs(self):
r = self.app_.get('/multiple_optional?one=1&two=2&three=3&four=4')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, 2, 3')
+ assert r.body == b'multiple_optional: 1, 2, 3'
def test_multiple_optional_args_with_multiple_encoded_kwargs(self):
r = self.app_.get(
'/multiple_optional?one=One%21&two=Two%21&three=Three%21&four=4'
)
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, Two!, Three!')
+ assert r.body == b'multiple_optional: One!, Two!, Three!'
def test_multiple_optional_args_with_multiple_dict_kwargs(self):
r = self.app_.post(
@@ -786,7 +781,7 @@ def test_multiple_optional_args_with_multiple_dict_kwargs(self):
{'one': '1', 'two': '2', 'three': '3', 'four': '4'}
)
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, 2, 3')
+ assert r.body == b'multiple_optional: 1, 2, 3'
def test_multiple_optional_args_with_multiple_json_kwargs(self):
r = self.app_.post_json(
@@ -794,7 +789,7 @@ def test_multiple_optional_args_with_multiple_json_kwargs(self):
{'one': '1', 'two': '2', 'three': '3', 'four': '4'}
)
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, 2, 3')
+ assert r.body == b'multiple_optional: 1, 2, 3'
def test_multiple_optional_args_with_multiple_encoded_dict_kwargs(self):
r = self.app_.post(
@@ -807,47 +802,47 @@ def test_multiple_optional_args_with_multiple_encoded_dict_kwargs(self):
}
)
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One%21, Two%21, Three%21')
+ assert r.body == b'multiple_optional: One%21, Two%21, Three%21'
def test_multiple_optional_args_with_last_kwarg(self):
r = self.app_.get('/multiple_optional?three=3')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: None, None, 3')
+ assert r.body == b'multiple_optional: None, None, 3'
def test_multiple_optional_args_with_last_encoded_kwarg(self):
r = self.app_.get('/multiple_optional?three=Three%21')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: None, None, Three!')
+ assert r.body == b'multiple_optional: None, None, Three!'
def test_multiple_optional_args_with_middle_arg(self):
r = self.app_.get('/multiple_optional', {'two': '2'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: None, 2, None')
+ assert r.body == b'multiple_optional: None, 2, None'
def test_variable_args(self):
r = self.app_.get('/variable_args')
assert r.status_int == 200
- assert r.body == b_('variable_args: ')
+ assert r.body == b'variable_args: '
def test_multiple_variable_args(self):
r = self.app_.get('/variable_args/1/dummy')
assert r.status_int == 200
- assert r.body == b_('variable_args: 1, dummy')
+ assert r.body == b'variable_args: 1, dummy'
def test_multiple_encoded_variable_args(self):
r = self.app_.get('/variable_args/Testing%20One%20Two/Three%21')
assert r.status_int == 200
- assert r.body == b_('variable_args: Testing One Two, Three!')
+ assert r.body == b'variable_args: Testing One Two, Three!'
def test_variable_args_with_kwargs(self):
r = self.app_.get('/variable_args?id=2&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('variable_args: ')
+ assert r.body == b'variable_args: '
def test_variable_args_with_dict_kwargs(self):
r = self.app_.post('/variable_args', {'id': '3', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('variable_args: ')
+ assert r.body == b'variable_args: '
def test_variable_args_with_json_kwargs(self):
r = self.app_.post_json(
@@ -855,12 +850,12 @@ def test_variable_args_with_json_kwargs(self):
{'id': '3', 'dummy': 'dummy'}
)
assert r.status_int == 200
- assert r.body == b_('variable_args: ')
+ assert r.body == b'variable_args: '
def test_variable_kwargs(self):
r = self.app_.get('/variable_kwargs')
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: ')
+ assert r.body == b'variable_kwargs: '
def test_multiple_variable_kwargs(self):
r = self.app_.get('/variable_kwargs/1/dummy', status=404)
@@ -869,19 +864,19 @@ def test_multiple_variable_kwargs(self):
def test_multiple_variable_kwargs_with_explicit_kwargs(self):
r = self.app_.get('/variable_kwargs?id=2&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: dummy=dummy, id=2')
+ assert r.body == b'variable_kwargs: dummy=dummy, id=2'
def test_multiple_variable_kwargs_with_explicit_encoded_kwargs(self):
r = self.app_.get(
'/variable_kwargs?id=Two%21&dummy=This%20is%20a%20test'
)
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: dummy=This is a test, id=Two!')
+ assert r.body == b'variable_kwargs: dummy=This is a test, id=Two!'
def test_multiple_variable_kwargs_with_dict_kwargs(self):
r = self.app_.post('/variable_kwargs', {'id': '3', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: dummy=dummy, id=3')
+ assert r.body == b'variable_kwargs: dummy=dummy, id=3'
def test_multiple_variable_kwargs_with_json_kwargs(self):
r = self.app_.post_json(
@@ -889,7 +884,7 @@ def test_multiple_variable_kwargs_with_json_kwargs(self):
{'id': '3', 'dummy': 'dummy'}
)
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: dummy=dummy, id=3')
+ assert r.body == b'variable_kwargs: dummy=dummy, id=3'
def test_multiple_variable_kwargs_with_encoded_dict_kwargs(self):
r = self.app_.post(
@@ -897,43 +892,43 @@ def test_multiple_variable_kwargs_with_encoded_dict_kwargs(self):
{'id': 'Three%21', 'dummy': 'This%20is%20a%20test'}
)
assert r.status_int == 200
- result = 'variable_kwargs: dummy=This%20is%20a%20test, id=Three%21'
- assert r.body == b_(result)
+ result = b'variable_kwargs: dummy=This%20is%20a%20test, id=Three%21'
+ assert r.body == result
def test_variable_all(self):
r = self.app_.get('/variable_all')
assert r.status_int == 200
- assert r.body == b_('variable_all: ')
+ assert r.body == b'variable_all: '
def test_variable_all_with_one_extra(self):
r = self.app_.get('/variable_all/1')
assert r.status_int == 200
- assert r.body == b_('variable_all: 1')
+ assert r.body == b'variable_all: 1'
def test_variable_all_with_two_extras(self):
r = self.app_.get('/variable_all/2/dummy')
assert r.status_int == 200
- assert r.body == b_('variable_all: 2, dummy')
+ assert r.body == b'variable_all: 2, dummy'
def test_variable_mixed(self):
r = self.app_.get('/variable_all/3?month=1&day=12')
assert r.status_int == 200
- assert r.body == b_('variable_all: 3, day=12, month=1')
+ assert r.body == b'variable_all: 3, day=12, month=1'
def test_variable_mixed_explicit(self):
r = self.app_.get('/variable_all/4?id=four&month=1&day=12')
assert r.status_int == 200
- assert r.body == b_('variable_all: 4, day=12, id=four, month=1')
+ assert r.body == b'variable_all: 4, day=12, id=four, month=1'
def test_variable_post(self):
r = self.app_.post('/variable_all/5/dummy')
assert r.status_int == 200
- assert r.body == b_('variable_all: 5, dummy')
+ assert r.body == b'variable_all: 5, dummy'
def test_variable_post_with_kwargs(self):
r = self.app_.post('/variable_all/6', {'month': '1', 'day': '12'})
assert r.status_int == 200
- assert r.body == b_('variable_all: 6, day=12, month=1')
+ assert r.body == b'variable_all: 6, day=12, month=1'
def test_variable_post_with_json_kwargs(self):
r = self.app_.post_json(
@@ -941,7 +936,7 @@ def test_variable_post_with_json_kwargs(self):
{'month': '1', 'day': '12'}
)
assert r.status_int == 200
- assert r.body == b_('variable_all: 6, day=12, month=1')
+ assert r.body == b'variable_all: 6, day=12, month=1'
def test_variable_post_mixed(self):
r = self.app_.post(
@@ -949,7 +944,7 @@ def test_variable_post_mixed(self):
{'id': 'seven', 'month': '1', 'day': '12'}
)
assert r.status_int == 200
- assert r.body == b_('variable_all: 7, day=12, id=seven, month=1')
+ assert r.body == b'variable_all: 7, day=12, id=seven, month=1'
def test_variable_post_mixed_with_json(self):
r = self.app_.post_json(
@@ -957,39 +952,35 @@ def test_variable_post_mixed_with_json(self):
{'id': 'seven', 'month': '1', 'day': '12'}
)
assert r.status_int == 200
- assert r.body == b_('variable_all: 7, day=12, id=seven, month=1')
+ assert r.body == b'variable_all: 7, day=12, id=seven, month=1'
def test_duplicate_query_parameters_GET(self):
r = self.app_.get('/variable_kwargs?list=1&list=2')
- l = [u_('1'), u_('2')]
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: list=%s' % l)
+ assert r.body == b"variable_kwargs: list=['1', '2']"
def test_duplicate_query_parameters_POST(self):
r = self.app_.post('/variable_kwargs',
{'list': ['1', '2']})
- l = [u_('1'), u_('2')]
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: list=%s' % l)
+ assert r.body == b"variable_kwargs: list=['1', '2']"
def test_duplicate_query_parameters_POST_mixed(self):
r = self.app_.post('/variable_kwargs?list=1&list=2',
{'list': ['3', '4']})
- l = [u_('1'), u_('2'), u_('3'), u_('4')]
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: list=%s' % l)
+ assert r.body == b"variable_kwargs: list=['1', '2', '3', '4']"
def test_duplicate_query_parameters_POST_mixed_json(self):
r = self.app_.post('/variable_kwargs?list=1&list=2',
{'list': 3})
- l = [u_('1'), u_('2'), u_('3')]
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: list=%s' % l)
+ assert r.body == b"variable_kwargs: list=['1', '2', '3']"
def test_staticmethod(self):
r = self.app_.get('/static/foobar')
assert r.status_int == 200
- assert r.body == b_('id is foobar')
+ assert r.body == b'id is foobar'
def test_no_remainder(self):
try:
@@ -1009,57 +1000,57 @@ def test_no_remainder(self):
def test_one_remainder(self):
r = self.app_.get('/eater/1')
assert r.status_int == 200
- assert r.body == b_('eater: 1, None, ')
+ assert r.body == b'eater: 1, None, '
def test_two_remainders(self):
r = self.app_.get('/eater/2/dummy')
assert r.status_int == 200
- assert r.body == b_('eater: 2, dummy, ')
+ assert r.body == b'eater: 2, dummy, '
def test_many_remainders(self):
r = self.app_.get('/eater/3/dummy/foo/bar')
assert r.status_int == 200
- assert r.body == b_('eater: 3, dummy, foo, bar')
+ assert r.body == b'eater: 3, dummy, foo, bar'
def test_remainder_with_kwargs(self):
r = self.app_.get('/eater/4?month=1&day=12')
assert r.status_int == 200
- assert r.body == b_('eater: 4, None, day=12, month=1')
+ assert r.body == b'eater: 4, None, day=12, month=1'
def test_remainder_with_many_kwargs(self):
r = self.app_.get('/eater/5?id=five&month=1&day=12&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('eater: 5, dummy, day=12, month=1')
+ assert r.body == b'eater: 5, dummy, day=12, month=1'
def test_post_remainder(self):
r = self.app_.post('/eater/6')
assert r.status_int == 200
- assert r.body == b_('eater: 6, None, ')
+ assert r.body == b'eater: 6, None, '
def test_post_three_remainders(self):
r = self.app_.post('/eater/7/dummy')
assert r.status_int == 200
- assert r.body == b_('eater: 7, dummy, ')
+ assert r.body == b'eater: 7, dummy, '
def test_post_many_remainders(self):
r = self.app_.post('/eater/8/dummy/foo/bar')
assert r.status_int == 200
- assert r.body == b_('eater: 8, dummy, foo, bar')
+ assert r.body == b'eater: 8, dummy, foo, bar'
def test_post_remainder_with_kwargs(self):
r = self.app_.post('/eater/9', {'month': '1', 'day': '12'})
assert r.status_int == 200
- assert r.body == b_('eater: 9, None, day=12, month=1')
+ assert r.body == b'eater: 9, None, day=12, month=1'
def test_post_empty_remainder_with_json_kwargs(self):
r = self.app_.post_json('/eater/9/', {'month': '1', 'day': '12'})
assert r.status_int == 200
- assert r.body == b_('eater: 9, None, day=12, month=1')
+ assert r.body == b'eater: 9, None, day=12, month=1'
def test_post_remainder_with_json_kwargs(self):
r = self.app_.post_json('/eater/9', {'month': '1', 'day': '12'})
assert r.status_int == 200
- assert r.body == b_('eater: 9, None, day=12, month=1')
+ assert r.body == b'eater: 9, None, day=12, month=1'
def test_post_many_remainders_with_many_kwargs(self):
r = self.app_.post(
@@ -1067,7 +1058,7 @@ def test_post_many_remainders_with_many_kwargs(self):
{'id': 'ten', 'month': '1', 'day': '12', 'dummy': 'dummy'}
)
assert r.status_int == 200
- assert r.body == b_('eater: 10, dummy, day=12, month=1')
+ assert r.body == b'eater: 10, dummy, day=12, month=1'
def test_post_many_remainders_with_many_json_kwargs(self):
r = self.app_.post_json(
@@ -1075,7 +1066,7 @@ def test_post_many_remainders_with_many_json_kwargs(self):
{'id': 'ten', 'month': '1', 'day': '12', 'dummy': 'dummy'}
)
assert r.status_int == 200
- assert r.body == b_('eater: 10, dummy, day=12, month=1')
+ assert r.body == b'eater: 10, dummy, day=12, month=1'
class TestDefaultErrorRendering(PecanTestCase):
@@ -1088,7 +1079,7 @@ class RootController(object):
r = app.get('/', status=404)
assert r.status_int == 404
assert r.content_type == 'text/plain'
- assert r.body == b_(HTTPNotFound().plain_body({}))
+ assert r.body == HTTPNotFound().plain_body({}).encode('utf-8')
def test_html_error(self):
class RootController(object):
@@ -1098,7 +1089,7 @@ class RootController(object):
r = app.get('/', headers={'Accept': 'text/html'}, status=404)
assert r.status_int == 404
assert r.content_type == 'text/html'
- assert r.body == b_(HTTPNotFound().html_body({}))
+ assert r.body == HTTPNotFound().html_body({}).encode('utf-8')
def test_json_error(self):
class RootController(object):
@@ -1200,12 +1191,12 @@ def test_index(self):
assert r.status_int == 302
r = r.follow()
assert r.status_int == 200
- assert r.body == b_('it worked!')
+ assert r.body == b'it worked!'
def test_internal(self):
r = self.app_.get('/internal')
assert r.status_int == 200
- assert r.body == b_('it worked!')
+ assert r.body == b'it worked!'
def test_internal_with_301(self):
self.assertRaises(ValueError, self.app_.get, '/bad_internal')
@@ -1215,7 +1206,7 @@ def test_permanent_redirect(self):
assert r.status_int == 301
r = r.follow()
assert r.status_int == 200
- assert r.body == b_('it worked!')
+ assert r.body == b'it worked!'
def test_x_forward_proto(self):
class ChildController(object):
@@ -1286,7 +1277,7 @@ class RootController(object):
def test(self, foo):
if foo == 'stream':
# mimic large file
- contents = six.BytesIO(b_('stream'))
+ contents = BytesIO(b'stream')
response.content_type = 'application/octet-stream'
contents.seek(0, os.SEEK_END)
response.content_length = contents.tell()
@@ -1299,11 +1290,11 @@ def test(self, foo):
app = TestApp(Pecan(RootController()))
r = app.get('/test/stream')
assert r.content_type == 'application/octet-stream'
- assert r.body == b_('stream')
+ assert r.body == b'stream'
r = app.get('/test/plain')
assert r.content_type == 'text/plain'
- assert r.body == b_('plain text')
+ assert r.body == b'plain text'
class TestManualResponse(PecanTestCase):
@@ -1314,12 +1305,12 @@ class RootController(object):
@expose()
def index(self):
resp = webob.Response(response.environ)
- resp.body = b_('Hello, World!')
+ resp.body = b'Hello, World!'
return resp
app = TestApp(Pecan(RootController()))
r = app.get('/')
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
class TestCustomResponseandRequest(PecanTestCase):
@@ -1353,7 +1344,7 @@ def index(self):
response_cls=CustomResponse
))
r = app.get('/')
- assert r.body == b_('ABC')
+ assert r.body == b'ABC'
assert r.headers.get('X-Custom-Response') == 'XYZ'
@@ -1374,7 +1365,7 @@ def index(self):
app = TestApp(Pecan(RootController()))
r = app.get('/')
assert r.status_int == 200
- assert r.body == b_('/')
+ assert r.body == b'/'
def test_request_state_cleanup(self):
"""
@@ -1391,7 +1382,7 @@ def index(self):
app = TestApp(Pecan(RootController()))
r = app.get('/')
assert r.status_int == 200
- assert r.body == b_('/')
+ assert r.body == b'/'
assert state.__dict__ == {}
@@ -1418,25 +1409,25 @@ def test_html_extension(self):
for path in ('/index.html', '/index.html/'):
r = self.app_.get(path)
assert r.status_int == 200
- assert r.body == b_('.html')
+ assert r.body == b'.html'
def test_image_extension(self):
for path in ('/index.png', '/index.png/'):
r = self.app_.get(path)
assert r.status_int == 200
- assert r.body == b_('.png')
+ assert r.body == b'.png'
def test_hidden_file(self):
for path in ('/.vimrc', '/.vimrc/'):
r = self.app_.get(path)
assert r.status_int == 204
- assert r.body == b_('')
+ assert r.body == b''
def test_multi_dot_extension(self):
for path in ('/gradient.min.js', '/gradient.min.js/'):
r = self.app_.get(path)
assert r.status_int == 200
- assert r.body == b_('.js')
+ assert r.body == b'.js'
def test_bad_content_type(self):
class RootController(object):
@@ -1447,11 +1438,11 @@ def index(self):
app = TestApp(Pecan(RootController()))
r = app.get('/')
assert r.status_int == 200
- assert r.body == b_('/')
+ assert r.body == b'/'
r = app.get('/index.html', expect_errors=True)
assert r.status_int == 200
- assert r.body == b_('/')
+ assert r.body == b'/'
with warnings.catch_warnings():
warnings.simplefilter("ignore")
@@ -1470,7 +1461,7 @@ def _default(self, *args):
r = app.get('/example:x.tiny')
assert r.status_int == 200
- assert r.body == b_('SOME VALUE')
+ assert r.body == b'SOME VALUE'
def test_guessing_disabled(self):
class RootController(object):
@@ -1485,7 +1476,7 @@ def _default(self, *args):
r = app.get('/index.html')
assert r.status_int == 200
- assert r.body == b_('SOME VALUE')
+ assert r.body == b'SOME VALUE'
def test_content_type_guessing_disabled(self):
@@ -1617,12 +1608,12 @@ def index(self):
def test_root(self):
r = self.app_.get('/')
assert r.status_int == 200
- assert b_('index') in r.body
+ assert b'index' in r.body
def test_index(self):
r = self.app_.get('/index')
assert r.status_int == 200
- assert b_('index') in r.body
+ assert b'index' in r.body
def test_broken_clients(self):
# for broken clients
@@ -1633,7 +1624,7 @@ def test_broken_clients(self):
def test_sub_controller_with_trailing(self):
r = self.app_.get('/sub/')
assert r.status_int == 200
- assert b_('subindex') in r.body
+ assert b'subindex' in r.body
def test_sub_controller_redirect(self):
r = self.app_.get('/sub', status=302)
@@ -1656,17 +1647,17 @@ def test_posts_fail(self):
def test_with_args(self):
r = self.app_.get('/arg/index/foo')
assert r.status_int == 200
- assert r.body == b_('foo')
+ assert r.body == b'foo'
def test_accept_noncanonical(self):
r = self.app_.get('/accept/')
assert r.status_int == 200
- assert r.body == b_('accept')
+ assert r.body == b'accept'
def test_accept_noncanonical_no_trailing_slash(self):
r = self.app_.get('/accept')
assert r.status_int == 200
- assert r.body == b_('accept')
+ assert r.body == b'accept'
class TestNonCanonical(PecanTestCase):
@@ -1703,22 +1694,22 @@ def index(self):
def test_index(self):
r = self.app_.get('/')
assert r.status_int == 200
- assert b_('index') in r.body
+ assert b'index' in r.body
def test_subcontroller(self):
r = self.app_.get('/sub')
assert r.status_int == 200
- assert b_('subindex') in r.body
+ assert b'subindex' in r.body
def test_subcontroller_with_kwargs(self):
r = self.app_.post('/sub', dict(foo=1))
assert r.status_int == 200
- assert b_('subindex') in r.body
+ assert b'subindex' in r.body
def test_sub_controller_with_trailing(self):
r = self.app_.get('/sub/')
assert r.status_int == 200
- assert b_('subindex') in r.body
+ assert b'subindex' in r.body
def test_proxy(self):
class RootController(object):
@@ -1829,11 +1820,11 @@ def badtemplate(self):
)
r = app.get('/')
assert r.status_int == 200
- assert b_("<h1>Hello, Jonathan!</h1>") in r.body
+ assert b"<h1>Hello, Jonathan!</h1>" in r.body
r = app.get('/index.html?name=World')
assert r.status_int == 200
- assert b_("<h1>Hello, World!</h1>") in r.body
+ assert b"<h1>Hello, World!</h1>" in r.body
error_msg = None
try:
@@ -1858,11 +1849,11 @@ def index(self, name='Jonathan'):
)
r = app.get('/')
assert r.status_int == 200
- assert b_("<h1>Hello, Jonathan!</h1>") in r.body
+ assert b"<h1>Hello, Jonathan!</h1>" in r.body
r = app.get('/index.html?name=World')
assert r.status_int == 200
- assert b_("<h1>Hello, World!</h1>") in r.body
+ assert b"<h1>Hello, World!</h1>" in r.body
@unittest.skipIf('jinja' not in builtin_renderers, 'Jinja not installed')
def test_jinja(self):
@@ -1881,7 +1872,7 @@ def badtemplate(self):
)
r = app.get('/')
assert r.status_int == 200
- assert b_("<h1>Hello, Jonathan!</h1>") in r.body
+ assert b"<h1>Hello, Jonathan!</h1>" in r.body
error_msg = None
try:
@@ -1910,11 +1901,11 @@ def badtemplate(self):
)
r = app.get('/')
assert r.status_int == 200
- assert b_("<h1>Hello, Jonathan!</h1>") in r.body
+ assert b"<h1>Hello, Jonathan!</h1>" in r.body
r = app.get('/index.html?name=World')
assert r.status_int == 200
- assert b_("<h1>Hello, World!</h1>") in r.body
+ assert b"<h1>Hello, World!</h1>" in r.body
error_msg = None
try:
@@ -1984,11 +1975,11 @@ def render(self, template_path, namespace):
))
r = app.get('/')
assert r.status_int == 200
- assert b_("<h1>Hello, eoJ!</h1>") in r.body
+ assert b"<h1>Hello, eoJ!</h1>" in r.body
r = app.get('/index.html?name=Tim')
assert r.status_int == 200
- assert b_("<h1>Hello, miT!</h1>") in r.body
+ assert b"<h1>Hello, miT!</h1>" in r.body
def test_override_template(self):
class RootController(object):
@@ -2000,7 +1991,7 @@ def index(self):
app = TestApp(Pecan(RootController()))
r = app.get('/')
assert r.status_int == 200
- assert b_('Override') in r.body
+ assert b'Override' in r.body
assert r.content_type == 'text/plain'
def test_render(self):
@@ -2014,7 +2005,7 @@ def index(self, name='Jonathan'):
)
r = app.get('/')
assert r.status_int == 200
- assert b_("<h1>Hello, Jonathan!</h1>") in r.body
+ assert b"<h1>Hello, Jonathan!</h1>" in r.body
def test_default_json_renderer(self):
@@ -2039,7 +2030,7 @@ def index(self, name='Bill'):
app = TestApp(Pecan(RootController(), default_renderer='json'))
r = app.get('/')
assert r.status_int == 200
- assert r.body == b_("Bill")
+ assert r.body == b"Bill"
class TestDeprecatedRouteMethod(PecanTestCase):
@@ -2063,7 +2054,7 @@ def test_required_argument(self):
warnings.simplefilter("ignore")
r = self.app_.get('/foo/bar/')
assert r.status_int == 200
- assert b_('foo, bar') in r.body
+ assert b'foo, bar' in r.body
class TestExplicitRoute(PecanTestCase):
@@ -2080,7 +2071,7 @@ def some_path(self):
r = app.get('/some-path/')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
r = app.get('/some_path/', expect_errors=True)
assert r.status_int == 404
@@ -2102,7 +2093,7 @@ class RootController(object):
r = app.get('/some-controller/some-path/')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
r = app.get('/some-controller/some_path/', expect_errors=True)
assert r.status_int == 404
@@ -2138,11 +2129,11 @@ def index(self):
r = app.get('/some-path/')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
r = app.get('/')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
r = app.get('/index/', expect_errors=True)
assert r.status_int == 404
@@ -2204,10 +2195,10 @@ class RootController(BaseController):
app = TestApp(Pecan(RootController()))
r = app.get('/testing/')
- assert r.body == b_('/testing/')
+ assert r.body == b'/testing/'
r = app.get('/child/testing/')
- assert r.body == b_('/child/testing/')
+ assert r.body == b'/child/testing/'
def test_custom_route_prohibited_on_lookup(self):
try:
@@ -2267,14 +2258,14 @@ def handle_post(self):
r = app.get('/some-path/')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
r = app.get('/foo/', expect_errors=True)
assert r.status_int == 404
r = app.post('/some-path/')
assert r.status_int == 200
- assert r.body == b_('POST!')
+ assert r.body == b'POST!'
r = app.post('/foo/', expect_errors=True)
assert r.status_int == 404
diff --git a/pecan/tests/test_conf.py b/pecan/tests/test_conf.py
index 2c67adb..8e04144 100644
--- a/pecan/tests/test_conf.py
+++ b/pecan/tests/test_conf.py
@@ -1,9 +1,7 @@
import os
-import sys
import tempfile
import unittest
-from six import b as b_
from webtest import TestApp
import pecan
@@ -148,7 +146,7 @@ def test_config_missing_file_on_path(self):
def test_config_with_syntax_error(self):
from pecan import configuration
with tempfile.NamedTemporaryFile('wb') as f:
- f.write(b_('\n'.join(['if false', 'var = 3'])))
+ f.write(b'\n'.join([b'if false', b'var = 3']))
f.flush()
configuration.Config({})
@@ -161,7 +159,7 @@ def test_config_with_syntax_error(self):
def test_config_with_non_package_relative_import(self):
from pecan import configuration
with tempfile.NamedTemporaryFile('wb', suffix='.py') as f:
- f.write(b_('\n'.join(['from . import variables'])))
+ f.write(b'\n'.join([b'from . import variables']))
f.flush()
configuration.Config({})
diff --git a/pecan/tests/test_generic.py b/pecan/tests/test_generic.py
index 93c8709..0d9d26e 100644
--- a/pecan/tests/test_generic.py
+++ b/pecan/tests/test_generic.py
@@ -1,8 +1,6 @@
from json import dumps
from webtest import TestApp
-from six import b as b_
-
from pecan import Pecan, expose, abort
from pecan.tests import PecanTestCase
@@ -26,11 +24,11 @@ def do_get(self):
app = TestApp(Pecan(RootController()))
r = app.get('/')
assert r.status_int == 200
- assert r.body == b_('GET')
+ assert r.body == b'GET'
r = app.post('/')
assert r.status_int == 200
- assert r.body == b_(dumps(dict(result='POST')))
+ assert r.body == dumps(dict(result='POST')).encode('utf-8')
r = app.get('/do_get', status=404)
assert r.status_int == 404
@@ -78,11 +76,13 @@ class RootController(object):
app = TestApp(Pecan(RootController()))
r = app.get('/sub/sub/')
assert r.status_int == 200
- assert r.body == b_('GET')
+ assert r.body == b'GET'
r = app.delete('/sub/sub/joe/is/cool')
assert r.status_int == 200
- assert r.body == b_(dumps(dict(result='joe', args='is, cool')))
+ assert r.body == dumps(
+ dict(result='joe', args='is, cool')
+ ).encode('utf-8')
class TestGenericWithSpecialMethods(PecanTestCase):
diff --git a/pecan/tests/test_hooks.py b/pecan/tests/test_hooks.py
index 902074b..324a3f2 100644
--- a/pecan/tests/test_hooks.py
+++ b/pecan/tests/test_hooks.py
@@ -1,11 +1,8 @@
import inspect
import operator
+from io import StringIO
from webtest import TestApp
-from six import PY3
-from six import b as b_
-from six import u as u_
-from six.moves import cStringIO as StringIO
from pecan import make_app, expose, redirect, abort, rest, Request, Response
from pecan.hooks import (
@@ -16,7 +13,7 @@
from pecan.tests import PecanTestCase
# The `inspect.Arguments` namedtuple is different between PY2/3
-kwargs = operator.attrgetter('varkw' if PY3 else 'keywords')
+kwargs = operator.attrgetter('varkw')
class TestHooks(PecanTestCase):
@@ -46,7 +43,7 @@ def on_error(self, state, e):
app = TestApp(make_app(RootController(), hooks=[SimpleHook()]))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 4
assert run_hook[0] == 'on_route'
@@ -84,7 +81,7 @@ def on_error(self, state, e):
]))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 10
assert run_hook[0] == 'on_route1'
@@ -125,7 +122,7 @@ def on_route(self, state):
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello World!')
+ assert response.body == b'Hello World!'
assert len(run_hook) == 2
assert run_hook[0] == 'on_route'
@@ -154,7 +151,7 @@ def on_error(self, state, e):
run_hook.append('error')
r = Response()
- r.text = u_('on_error')
+ r.text = 'on_error'
return r
@@ -201,7 +198,7 @@ def on_error(self, state, e):
app = TestApp(papp)
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 10
assert run_hook[0] == 'on_route3'
@@ -258,7 +255,7 @@ def index(self):
app = TestApp(make_app(RootController()))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 1
assert run_hook[0] == 'inside'
@@ -267,7 +264,7 @@ def index(self):
response = app.get('/sub/')
assert response.status_int == 200
- assert response.body == b_('Inside here!')
+ assert response.body == b'Inside here!'
assert len(run_hook) == 3
assert run_hook[0] == 'before'
@@ -277,7 +274,7 @@ def index(self):
run_hook = []
response = app.get('/sub/sub/')
assert response.status_int == 200
- assert response.body == b_('Deep inside here!')
+ assert response.body == b'Deep inside here!'
assert len(run_hook) == 3
assert run_hook[0] == 'before'
@@ -322,7 +319,7 @@ def index(self):
app = TestApp(make_app(RootController(), hooks=[SimpleHook(1)]))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 4
assert run_hook[0] == 'on_route1'
@@ -334,7 +331,7 @@ def index(self):
response = app.get('/sub/')
assert response.status_int == 200
- assert response.body == b_('Inside here!')
+ assert response.body == b'Inside here!'
assert len(run_hook) == 6
assert run_hook[0] == 'on_route1'
@@ -395,7 +392,7 @@ def index(self):
app = TestApp(papp)
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 4
assert run_hook[0] == 'simple - before hook', run_hook[0]
@@ -406,7 +403,7 @@ def index(self):
run_hook = []
response = app.get('/sub/')
assert response.status_int == 200
- assert response.body == b_('This is sub controller!')
+ assert response.body == b'This is sub controller!'
assert len(run_hook) == 4, run_hook
assert run_hook[0] == 'simple - before hook', run_hook[0]
@@ -434,7 +431,7 @@ def after(self, state):
app = TestApp(make_app(RootController(), hooks=[SimpleHook()]))
response = app.get('/internal')
- assert response.body == b_('it worked!')
+ assert response.body == b'it worked!'
assert len(run_hook) == 1
@@ -830,7 +827,7 @@ def gen(event):
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 3
assert run_hook[0] == 'start_ro'
@@ -841,7 +838,7 @@ def gen(event):
response = app.post('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 4
assert run_hook[0] == 'start'
@@ -936,7 +933,7 @@ def gen(event):
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Index Method!')
+ assert response.body == b'Index Method!'
assert len(run_hook) == 3
assert run_hook[0] == 'start_ro'
@@ -947,7 +944,7 @@ def gen(event):
response = app.post('/')
assert response.status_int == 200
- assert response.body == b_('Index Method!')
+ assert response.body == b'Index Method!'
assert len(run_hook) == 5
assert run_hook[0] == 'start'
@@ -960,7 +957,7 @@ def gen(event):
response = app.get('/decorated')
assert response.status_int == 200
- assert response.body == b_('Decorated Method!')
+ assert response.body == b'Decorated Method!'
assert len(run_hook) == 7
assert run_hook[0] == 'start_ro'
@@ -1065,7 +1062,7 @@ def gen(event):
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 3
assert run_hook[0] == 'start_ro'
@@ -1078,7 +1075,7 @@ def gen(event):
response = app.post('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 4
assert run_hook[0] == 'start'
@@ -1308,7 +1305,7 @@ def gen(event):
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 6
assert run_hook[0] == 'start_ro'
@@ -1324,7 +1321,7 @@ def gen(event):
response = app.post('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 4
assert run_hook[0] == 'start'
@@ -1433,7 +1430,7 @@ def gen(event):
response = app.get('/generic')
assert response.status_int == 200
- assert response.body == b_('generic get')
+ assert response.body == b'generic get'
assert len(run_hook) == 6
assert run_hook[0] == 'start_ro'
assert run_hook[1] == 'clear'
@@ -1451,7 +1448,7 @@ def gen(event):
response = app.post('/generic')
assert response.status_int == 200
- assert response.body == b_('generic post')
+ assert response.body == b'generic post'
assert len(run_hook) == 4
assert run_hook[0] == 'start'
assert run_hook[1] == 'inside'
@@ -1525,7 +1522,7 @@ def index(self):
out = _stdout.getvalue()
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert 'path' in out
assert 'method' in out
assert 'status' in out
@@ -1592,7 +1589,7 @@ def index(self):
out = _stdout.getvalue()
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert '/' in out
assert 'path' in out
assert 'method' not in out
@@ -1627,7 +1624,7 @@ def index(self):
out = _stdout.getvalue()
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert out == ''
def test_item_not_in_defaults(self):
@@ -1654,7 +1651,7 @@ def index(self):
out = _stdout.getvalue()
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert 'date' in out
assert 'method' not in out
assert 'status' not in out
@@ -1724,10 +1721,10 @@ def testing123(self):
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert response.headers['X-Testing'] == 'XYZ'
response = app.delete('/100/')
assert response.status_int == 200
- assert response.body == b_('Deleting 100')
+ assert response.body == b'Deleting 100'
assert response.headers['X-Testing'] == 'XYZ'
diff --git a/pecan/tests/test_jsonify.py b/pecan/tests/test_jsonify.py
index 86a76e2..91ec523 100644
--- a/pecan/tests/test_jsonify.py
+++ b/pecan/tests/test_jsonify.py
@@ -4,6 +4,7 @@
try:
from sqlalchemy import orm, schema, types
from sqlalchemy.engine import create_engine
+ from sqlalchemy.orm import registry
except ImportError:
create_engine = None # noqa
@@ -179,6 +180,7 @@ def keys(self):
def create_sa_proxies(self):
# create the table and mapper
+ mapper_registry = registry()
metadata = schema.MetaData()
user_table = schema.Table(
'user',
@@ -190,25 +192,24 @@ def create_sa_proxies(self):
class User(object):
pass
- orm.mapper(User, user_table)
+ mapper_registry.map_imperatively(User, user_table)
# create the session
engine = create_engine('sqlite:///:memory:')
metadata.bind = engine
- metadata.create_all()
+ metadata.create_all(metadata.bind)
session = orm.sessionmaker(bind=engine)()
# add some dummy data
- user_table.insert().execute([
- {'first_name': 'Jonathan', 'last_name': 'LaCour'},
- {'first_name': 'Yoann', 'last_name': 'Roman'}
- ])
+ session.add(User(first_name='Jonathan', last_name='LaCour'))
+ session.add(User(first_name='Ryan', last_name='Petrello'))
+ session.commit()
# get the SA objects
self.sa_object = session.query(User).first()
select = user_table.select()
- self.result_proxy = select.execute()
- self.row_proxy = select.execute().fetchone()
+ self.result_proxy = session.execute(select)
+ self.row_proxy = session.execute(select).fetchone()
def test_sa_object(self):
result = encode(self.sa_object)
@@ -220,7 +221,7 @@ def test_result_proxy(self):
result = encode(self.result_proxy)
assert loads(result) == {'count': 2, 'rows': [
{'id': 1, 'first_name': 'Jonathan', 'last_name': 'LaCour'},
- {'id': 2, 'first_name': 'Yoann', 'last_name': 'Roman'}
+ {'id': 2, 'first_name': 'Ryan', 'last_name': 'Petrello'}
]}
def test_row_proxy(self):
diff --git a/pecan/tests/test_no_thread_locals.py b/pecan/tests/test_no_thread_locals.py
index 3fbcd88..98b2f2b 100644
--- a/pecan/tests/test_no_thread_locals.py
+++ b/pecan/tests/test_no_thread_locals.py
@@ -4,8 +4,6 @@
from unittest import mock
from webtest import TestApp
-from six import b as b_
-from six import u as u_
import webob
from pecan import Pecan, expose, abort, Request, Response
@@ -48,7 +46,7 @@ def test_locals_are_not_used(self):
app = TestApp(Pecan(self.root(), use_context_locals=False))
r = app.get('/')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
self.assertRaises(AssertionError, Pecan, self.root)
@@ -99,17 +97,17 @@ def index(self, req, resp):
def test_empty_root(self):
r = self.app_.get('/')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
def test_index(self):
r = self.app_.get('/index')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
def test_index_html(self):
r = self.app_.get('/index.html')
assert r.status_int == 200
- assert r.body == b_('Hello, World!')
+ assert r.body == b'Hello, World!'
class TestManualResponse(PecanTestCase):
@@ -120,12 +118,12 @@ class RootController(object):
@expose()
def index(self, req, resp):
resp = webob.Response(resp.environ)
- resp.body = b_('Hello, World!')
+ resp.body = b'Hello, World!'
return resp
app = TestApp(Pecan(RootController(), use_context_locals=False))
r = app.get('/')
- assert r.body == b_('Hello, World!'), r.body
+ assert r.body == b'Hello, World!', r.body
class TestDispatch(PecanTestCase):
@@ -180,22 +178,22 @@ def deeper(self, req, resp):
def test_index(self):
r = self.app_.get('/')
assert r.status_int == 200
- assert r.body == b_('/')
+ assert r.body == b'/'
def test_one_level(self):
r = self.app_.get('/deeper')
assert r.status_int == 200
- assert r.body == b_('/deeper')
+ assert r.body == b'/deeper'
def test_one_level_with_trailing(self):
r = self.app_.get('/sub/')
assert r.status_int == 200
- assert r.body == b_('/sub/')
+ assert r.body == b'/sub/'
def test_two_levels(self):
r = self.app_.get('/sub/deeper')
assert r.status_int == 200
- assert r.body == b_('/sub/deeper')
+ assert r.body == b'/sub/deeper'
def test_two_levels_with_trailing(self):
r = self.app_.get('/sub/sub/')
@@ -204,7 +202,7 @@ def test_two_levels_with_trailing(self):
def test_three_levels(self):
r = self.app_.get('/sub/sub/deeper')
assert r.status_int == 200
- assert r.body == b_('/sub/sub/deeper')
+ assert r.body == b'/sub/sub/deeper'
class TestLookups(PecanTestCase):
@@ -237,17 +235,17 @@ def _lookup(self, someID, *remainder):
def test_index(self):
r = self.app_.get('/')
assert r.status_int == 200
- assert r.body == b_('/')
+ assert r.body == b'/'
def test_lookup(self):
r = self.app_.get('/100/')
assert r.status_int == 200
- assert r.body == b_('/100')
+ assert r.body == b'/100'
def test_lookup_with_method(self):
r = self.app_.get('/100/name')
assert r.status_int == 200
- assert r.body == b_('/100/name')
+ assert r.body == b'/100/name'
def test_lookup_with_wrong_argspec(self):
class RootController(object):
@@ -288,7 +286,7 @@ def test_canonical_lookup(self):
assert self.app_.get('/users', expect_errors=404).status_int == 404
assert self.app_.get('/users/', expect_errors=404).status_int == 404
assert self.app_.get('/users/100').status_int == 302
- assert self.app_.get('/users/100/').body == b_('100')
+ assert self.app_.get('/users/100/').body == b'100'
class TestControllerArguments(PecanTestCase):
@@ -372,12 +370,12 @@ def test_required_argument(self):
def test_single_argument(self):
r = self.app_.get('/1')
assert r.status_int == 200
- assert r.body == b_('index: 1')
+ assert r.body == b'index: 1'
def test_single_argument_with_encoded_url(self):
r = self.app_.get('/This%20is%20a%20test%21')
assert r.status_int == 200
- assert r.body == b_('index: This is a test!')
+ assert r.body == b'index: This is a test!'
def test_two_arguments(self):
r = self.app_.get('/1/dummy', status=404)
@@ -386,90 +384,90 @@ def test_two_arguments(self):
def test_keyword_argument(self):
r = self.app_.get('/?id=2')
assert r.status_int == 200
- assert r.body == b_('index: 2')
+ assert r.body == b'index: 2'
def test_keyword_argument_with_encoded_url(self):
r = self.app_.get('/?id=This%20is%20a%20test%21')
assert r.status_int == 200
- assert r.body == b_('index: This is a test!')
+ assert r.body == b'index: This is a test!'
def test_argument_and_keyword_argument(self):
r = self.app_.get('/3?id=three')
assert r.status_int == 200
- assert r.body == b_('index: 3')
+ assert r.body == b'index: 3'
def test_encoded_argument_and_keyword_argument(self):
r = self.app_.get('/This%20is%20a%20test%21?id=three')
assert r.status_int == 200
- assert r.body == b_('index: This is a test!')
+ assert r.body == b'index: This is a test!'
def test_explicit_kwargs(self):
r = self.app_.post('/', {'id': '4'})
assert r.status_int == 200
- assert r.body == b_('index: 4')
+ assert r.body == b'index: 4'
def test_path_with_explicit_kwargs(self):
r = self.app_.post('/4', {'id': 'four'})
assert r.status_int == 200
- assert r.body == b_('index: 4')
+ assert r.body == b'index: 4'
def test_multiple_kwargs(self):
r = self.app_.get('/?id=5&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('index: 5')
+ assert r.body == b'index: 5'
def test_kwargs_from_root(self):
r = self.app_.post('/', {'id': '6', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('index: 6')
+ assert r.body == b'index: 6'
# multiple args
def test_multiple_positional_arguments(self):
r = self.app_.get('/multiple/one/two')
assert r.status_int == 200
- assert r.body == b_('multiple: one, two')
+ assert r.body == b'multiple: one, two'
def test_multiple_positional_arguments_with_url_encode(self):
r = self.app_.get('/multiple/One%20/Two%21')
assert r.status_int == 200
- assert r.body == b_('multiple: One , Two!')
+ assert r.body == b'multiple: One , Two!'
def test_multiple_positional_arguments_with_kwargs(self):
r = self.app_.get('/multiple?one=three&two=four')
assert r.status_int == 200
- assert r.body == b_('multiple: three, four')
+ assert r.body == b'multiple: three, four'
def test_multiple_positional_arguments_with_url_encoded_kwargs(self):
r = self.app_.get('/multiple?one=Three%20&two=Four%20%21')
assert r.status_int == 200
- assert r.body == b_('multiple: Three , Four !')
+ assert r.body == b'multiple: Three , Four !'
def test_positional_args_with_dictionary_kwargs(self):
r = self.app_.post('/multiple', {'one': 'five', 'two': 'six'})
assert r.status_int == 200
- assert r.body == b_('multiple: five, six')
+ assert r.body == b'multiple: five, six'
def test_positional_args_with_url_encoded_dictionary_kwargs(self):
r = self.app_.post('/multiple', {'one': 'Five%20', 'two': 'Six%20%21'})
assert r.status_int == 200
- assert r.body == b_('multiple: Five%20, Six%20%21')
+ assert r.body == b'multiple: Five%20, Six%20%21'
# optional arg
def test_optional_arg(self):
r = self.app_.get('/optional')
assert r.status_int == 200
- assert r.body == b_('optional: None')
+ assert r.body == b'optional: None'
def test_multiple_optional(self):
r = self.app_.get('/optional/1')
assert r.status_int == 200
- assert r.body == b_('optional: 1')
+ assert r.body == b'optional: 1'
def test_multiple_optional_url_encoded(self):
r = self.app_.get('/optional/Some%20Number')
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_multiple_optional_missing(self):
r = self.app_.get('/optional/2/dummy', status=404)
@@ -478,57 +476,57 @@ def test_multiple_optional_missing(self):
def test_multiple_with_kwargs(self):
r = self.app_.get('/optional?id=2')
assert r.status_int == 200
- assert r.body == b_('optional: 2')
+ assert r.body == b'optional: 2'
def test_multiple_with_url_encoded_kwargs(self):
r = self.app_.get('/optional?id=Some%20Number')
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_multiple_args_with_url_encoded_kwargs(self):
r = self.app_.get('/optional/3?id=three')
assert r.status_int == 200
- assert r.body == b_('optional: 3')
+ assert r.body == b'optional: 3'
def test_url_encoded_positional_args(self):
r = self.app_.get('/optional/Some%20Number?id=three')
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_optional_arg_with_kwargs(self):
r = self.app_.post('/optional', {'id': '4'})
assert r.status_int == 200
- assert r.body == b_('optional: 4')
+ assert r.body == b'optional: 4'
def test_optional_arg_with_url_encoded_kwargs(self):
r = self.app_.post('/optional', {'id': 'Some%20Number'})
assert r.status_int == 200
- assert r.body == b_('optional: Some%20Number')
+ assert r.body == b'optional: Some%20Number'
def test_multiple_positional_arguments_with_dictionary_kwargs(self):
r = self.app_.post('/optional/5', {'id': 'five'})
assert r.status_int == 200
- assert r.body == b_('optional: 5')
+ assert r.body == b'optional: 5'
def test_multiple_positional_url_encoded_arguments_with_kwargs(self):
r = self.app_.post('/optional/Some%20Number', {'id': 'five'})
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_optional_arg_with_multiple_kwargs(self):
r = self.app_.get('/optional?id=6&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('optional: 6')
+ assert r.body == b'optional: 6'
def test_optional_arg_with_multiple_url_encoded_kwargs(self):
r = self.app_.get('/optional?id=Some%20Number&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('optional: Some Number')
+ assert r.body == b'optional: Some Number'
def test_optional_arg_with_multiple_dictionary_kwargs(self):
r = self.app_.post('/optional', {'id': '7', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('optional: 7')
+ assert r.body == b'optional: 7'
def test_optional_arg_with_multiple_url_encoded_dictionary_kwargs(self):
r = self.app_.post('/optional', {
@@ -536,34 +534,34 @@ def test_optional_arg_with_multiple_url_encoded_dictionary_kwargs(self):
'dummy': 'dummy'
})
assert r.status_int == 200
- assert r.body == b_('optional: Some%20Number')
+ assert r.body == b'optional: Some%20Number'
# multiple optional args
def test_multiple_optional_positional_args(self):
r = self.app_.get('/multiple_optional')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: None, None, None')
+ assert r.body == b'multiple_optional: None, None, None'
def test_multiple_optional_positional_args_one_arg(self):
r = self.app_.get('/multiple_optional/1')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_one_url_encoded_arg(self):
r = self.app_.get('/multiple_optional/One%21')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, None, None')
+ assert r.body == b'multiple_optional: One!, None, None'
def test_multiple_optional_positional_args_all_args(self):
r = self.app_.get('/multiple_optional/1/2/3')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, 2, 3')
+ assert r.body == b'multiple_optional: 1, 2, 3'
def test_multiple_optional_positional_args_all_url_encoded_args(self):
r = self.app_.get('/multiple_optional/One%21/Two%21/Three%21')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, Two!, Three!')
+ assert r.body == b'multiple_optional: One!, Two!, Three!'
def test_multiple_optional_positional_args_too_many_args(self):
r = self.app_.get('/multiple_optional/1/2/3/dummy', status=404)
@@ -572,54 +570,54 @@ def test_multiple_optional_positional_args_too_many_args(self):
def test_multiple_optional_positional_args_with_kwargs(self):
r = self.app_.get('/multiple_optional?one=1')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_with_url_encoded_kwargs(self):
r = self.app_.get('/multiple_optional?one=One%21')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, None, None')
+ assert r.body == b'multiple_optional: One!, None, None'
def test_multiple_optional_positional_args_with_string_kwargs(self):
r = self.app_.get('/multiple_optional/1?one=one')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_with_encoded_str_kwargs(self):
r = self.app_.get('/multiple_optional/One%21?one=one')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, None, None')
+ assert r.body == b'multiple_optional: One!, None, None'
def test_multiple_optional_positional_args_with_dict_kwargs(self):
r = self.app_.post('/multiple_optional', {'one': '1'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_positional_args_with_encoded_dict_kwargs(self):
r = self.app_.post('/multiple_optional', {'one': 'One%21'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One%21, None, None')
+ assert r.body == b'multiple_optional: One%21, None, None'
def test_multiple_optional_positional_args_and_dict_kwargs(self):
r = self.app_.post('/multiple_optional/1', {'one': 'one'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, None, None')
+ assert r.body == b'multiple_optional: 1, None, None'
def test_multiple_optional_encoded_positional_args_and_dict_kwargs(self):
r = self.app_.post('/multiple_optional/One%21', {'one': 'one'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, None, None')
+ assert r.body == b'multiple_optional: One!, None, None'
def test_multiple_optional_args_with_multiple_kwargs(self):
r = self.app_.get('/multiple_optional?one=1&two=2&three=3&four=4')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, 2, 3')
+ assert r.body == b'multiple_optional: 1, 2, 3'
def test_multiple_optional_args_with_multiple_encoded_kwargs(self):
r = self.app_.get(
'/multiple_optional?one=One%21&two=Two%21&three=Three%21&four=4'
)
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One!, Two!, Three!')
+ assert r.body == b'multiple_optional: One!, Two!, Three!'
def test_multiple_optional_args_with_multiple_dict_kwargs(self):
r = self.app_.post(
@@ -627,7 +625,7 @@ def test_multiple_optional_args_with_multiple_dict_kwargs(self):
{'one': '1', 'two': '2', 'three': '3', 'four': '4'}
)
assert r.status_int == 200
- assert r.body == b_('multiple_optional: 1, 2, 3')
+ assert r.body == b'multiple_optional: 1, 2, 3'
def test_multiple_optional_args_with_multiple_encoded_dict_kwargs(self):
r = self.app_.post(
@@ -640,52 +638,52 @@ def test_multiple_optional_args_with_multiple_encoded_dict_kwargs(self):
}
)
assert r.status_int == 200
- assert r.body == b_('multiple_optional: One%21, Two%21, Three%21')
+ assert r.body == b'multiple_optional: One%21, Two%21, Three%21'
def test_multiple_optional_args_with_last_kwarg(self):
r = self.app_.get('/multiple_optional?three=3')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: None, None, 3')
+ assert r.body == b'multiple_optional: None, None, 3'
def test_multiple_optional_args_with_last_encoded_kwarg(self):
r = self.app_.get('/multiple_optional?three=Three%21')
assert r.status_int == 200
- assert r.body == b_('multiple_optional: None, None, Three!')
+ assert r.body == b'multiple_optional: None, None, Three!'
def test_multiple_optional_args_with_middle_arg(self):
r = self.app_.get('/multiple_optional', {'two': '2'})
assert r.status_int == 200
- assert r.body == b_('multiple_optional: None, 2, None')
+ assert r.body == b'multiple_optional: None, 2, None'
def test_variable_args(self):
r = self.app_.get('/variable_args')
assert r.status_int == 200
- assert r.body == b_('variable_args: ')
+ assert r.body == b'variable_args: '
def test_multiple_variable_args(self):
r = self.app_.get('/variable_args/1/dummy')
assert r.status_int == 200
- assert r.body == b_('variable_args: 1, dummy')
+ assert r.body == b'variable_args: 1, dummy'
def test_multiple_encoded_variable_args(self):
r = self.app_.get('/variable_args/Testing%20One%20Two/Three%21')
assert r.status_int == 200
- assert r.body == b_('variable_args: Testing One Two, Three!')
+ assert r.body == b'variable_args: Testing One Two, Three!'
def test_variable_args_with_kwargs(self):
r = self.app_.get('/variable_args?id=2&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('variable_args: ')
+ assert r.body == b'variable_args: '
def test_variable_args_with_dict_kwargs(self):
r = self.app_.post('/variable_args', {'id': '3', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('variable_args: ')
+ assert r.body == b'variable_args: '
def test_variable_kwargs(self):
r = self.app_.get('/variable_kwargs')
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: ')
+ assert r.body == b'variable_kwargs: '
def test_multiple_variable_kwargs(self):
r = self.app_.get('/variable_kwargs/1/dummy', status=404)
@@ -694,19 +692,19 @@ def test_multiple_variable_kwargs(self):
def test_multiple_variable_kwargs_with_explicit_kwargs(self):
r = self.app_.get('/variable_kwargs?id=2&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: dummy=dummy, id=2')
+ assert r.body == b'variable_kwargs: dummy=dummy, id=2'
def test_multiple_variable_kwargs_with_explicit_encoded_kwargs(self):
r = self.app_.get(
'/variable_kwargs?id=Two%21&dummy=This%20is%20a%20test'
)
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: dummy=This is a test, id=Two!')
+ assert r.body == b'variable_kwargs: dummy=This is a test, id=Two!'
def test_multiple_variable_kwargs_with_dict_kwargs(self):
r = self.app_.post('/variable_kwargs', {'id': '3', 'dummy': 'dummy'})
assert r.status_int == 200
- assert r.body == b_('variable_kwargs: dummy=dummy, id=3')
+ assert r.body == b'variable_kwargs: dummy=dummy, id=3'
def test_multiple_variable_kwargs_with_encoded_dict_kwargs(self):
r = self.app_.post(
@@ -714,43 +712,43 @@ def test_multiple_variable_kwargs_with_encoded_dict_kwargs(self):
{'id': 'Three%21', 'dummy': 'This%20is%20a%20test'}
)
assert r.status_int == 200
- result = 'variable_kwargs: dummy=This%20is%20a%20test, id=Three%21'
- assert r.body == b_(result)
+ result = b'variable_kwargs: dummy=This%20is%20a%20test, id=Three%21'
+ assert r.body == result
def test_variable_all(self):
r = self.app_.get('/variable_all')
assert r.status_int == 200
- assert r.body == b_('variable_all: ')
+ assert r.body == b'variable_all: '
def test_variable_all_with_one_extra(self):
r = self.app_.get('/variable_all/1')
assert r.status_int == 200
- assert r.body == b_('variable_all: 1')
+ assert r.body == b'variable_all: 1'
def test_variable_all_with_two_extras(self):
r = self.app_.get('/variable_all/2/dummy')
assert r.status_int == 200
- assert r.body == b_('variable_all: 2, dummy')
+ assert r.body == b'variable_all: 2, dummy'
def test_variable_mixed(self):
r = self.app_.get('/variable_all/3?month=1&day=12')
assert r.status_int == 200
- assert r.body == b_('variable_all: 3, day=12, month=1')
+ assert r.body == b'variable_all: 3, day=12, month=1'
def test_variable_mixed_explicit(self):
r = self.app_.get('/variable_all/4?id=four&month=1&day=12')
assert r.status_int == 200
- assert r.body == b_('variable_all: 4, day=12, id=four, month=1')
+ assert r.body == b'variable_all: 4, day=12, id=four, month=1'
def test_variable_post(self):
r = self.app_.post('/variable_all/5/dummy')
assert r.status_int == 200
- assert r.body == b_('variable_all: 5, dummy')
+ assert r.body == b'variable_all: 5, dummy'
def test_variable_post_with_kwargs(self):
r = self.app_.post('/variable_all/6', {'month': '1', 'day': '12'})
assert r.status_int == 200
- assert r.body == b_('variable_all: 6, day=12, month=1')
+ assert r.body == b'variable_all: 6, day=12, month=1'
def test_variable_post_mixed(self):
r = self.app_.post(
@@ -758,7 +756,7 @@ def test_variable_post_mixed(self):
{'id': 'seven', 'month': '1', 'day': '12'}
)
assert r.status_int == 200
- assert r.body == b_('variable_all: 7, day=12, id=seven, month=1')
+ assert r.body == b'variable_all: 7, day=12, id=seven, month=1'
def test_no_remainder(self):
try:
@@ -778,47 +776,47 @@ def test_no_remainder(self):
def test_one_remainder(self):
r = self.app_.get('/eater/1')
assert r.status_int == 200
- assert r.body == b_('eater: 1, None, ')
+ assert r.body == b'eater: 1, None, '
def test_two_remainders(self):
r = self.app_.get('/eater/2/dummy')
assert r.status_int == 200
- assert r.body == b_('eater: 2, dummy, ')
+ assert r.body == b'eater: 2, dummy, '
def test_many_remainders(self):
r = self.app_.get('/eater/3/dummy/foo/bar')
assert r.status_int == 200
- assert r.body == b_('eater: 3, dummy, foo, bar')
+ assert r.body == b'eater: 3, dummy, foo, bar'
def test_remainder_with_kwargs(self):
r = self.app_.get('/eater/4?month=1&day=12')
assert r.status_int == 200
- assert r.body == b_('eater: 4, None, day=12, month=1')
+ assert r.body == b'eater: 4, None, day=12, month=1'
def test_remainder_with_many_kwargs(self):
r = self.app_.get('/eater/5?id=five&month=1&day=12&dummy=dummy')
assert r.status_int == 200
- assert r.body == b_('eater: 5, dummy, day=12, month=1')
+ assert r.body == b'eater: 5, dummy, day=12, month=1'
def test_post_remainder(self):
r = self.app_.post('/eater/6')
assert r.status_int == 200
- assert r.body == b_('eater: 6, None, ')
+ assert r.body == b'eater: 6, None, '
def test_post_three_remainders(self):
r = self.app_.post('/eater/7/dummy')
assert r.status_int == 200
- assert r.body == b_('eater: 7, dummy, ')
+ assert r.body == b'eater: 7, dummy, '
def test_post_many_remainders(self):
r = self.app_.post('/eater/8/dummy/foo/bar')
assert r.status_int == 200
- assert r.body == b_('eater: 8, dummy, foo, bar')
+ assert r.body == b'eater: 8, dummy, foo, bar'
def test_post_remainder_with_kwargs(self):
r = self.app_.post('/eater/9', {'month': '1', 'day': '12'})
assert r.status_int == 200
- assert r.body == b_('eater: 9, None, day=12, month=1')
+ assert r.body == b'eater: 9, None, day=12, month=1'
def test_post_many_remainders_with_many_kwargs(self):
r = self.app_.post(
@@ -826,7 +824,7 @@ def test_post_many_remainders_with_many_kwargs(self):
{'id': 'ten', 'month': '1', 'day': '12', 'dummy': 'dummy'}
)
assert r.status_int == 200
- assert r.body == b_('eater: 10, dummy, day=12, month=1')
+ assert r.body == b'eater: 10, dummy, day=12, month=1'
class TestRestController(PecanTestCase):
@@ -915,28 +913,30 @@ class RootController(object):
def test_get_all(self):
r = self.app_.get('/things')
assert r.status_int == 200
- assert r.body == b_(dumps(dict(items=['zero', 'one', 'two', 'three'])))
+ assert r.body == dumps(
+ dict(items=['zero', 'one', 'two', 'three'])
+ ).encode('utf-8')
def test_get_one(self):
- for i, value in enumerate(['zero', 'one', 'two', 'three']):
+ for i, value in enumerate([b'zero', b'one', b'two', b'three']):
r = self.app_.get('/things/%d' % i)
assert r.status_int == 200
- assert r.body == b_(value)
+ assert r.body == value
def test_post(self):
r = self.app_.post('/things', {'value': 'four'})
assert r.status_int == 302
- assert r.body == b_('CREATED')
+ assert r.body == b'CREATED'
def test_custom_action(self):
r = self.app_.get('/things/3/edit')
assert r.status_int == 200
- assert r.body == b_('EDIT three')
+ assert r.body == b'EDIT three'
def test_put(self):
r = self.app_.put('/things/3', {'value': 'THREE!'})
assert r.status_int == 200
- assert r.body == b_('UPDATED')
+ assert r.body == b'UPDATED'
def test_put_with_method_parameter_and_get(self):
r = self.app_.get('/things/3?_method=put', {'value': 'X'}, status=405)
@@ -945,17 +945,17 @@ def test_put_with_method_parameter_and_get(self):
def test_put_with_method_parameter_and_post(self):
r = self.app_.post('/things/3?_method=put', {'value': 'THREE!'})
assert r.status_int == 200
- assert r.body == b_('UPDATED')
+ assert r.body == b'UPDATED'
def test_get_delete(self):
r = self.app_.get('/things/3/delete')
assert r.status_int == 200
- assert r.body == b_('DELETE three')
+ assert r.body == b'DELETE three'
def test_delete_method(self):
r = self.app_.delete('/things/3')
assert r.status_int == 200
- assert r.body == b_('DELETED')
+ assert r.body == b'DELETED'
def test_delete_with_method_parameter(self):
r = self.app_.get('/things/3?_method=DELETE', status=405)
@@ -964,27 +964,27 @@ def test_delete_with_method_parameter(self):
def test_delete_with_method_parameter_and_post(self):
r = self.app_.post('/things/3?_method=DELETE')
assert r.status_int == 200
- assert r.body == b_('DELETED')
+ assert r.body == b'DELETED'
def test_custom_method_type(self):
r = self.app_.request('/things', method='RESET')
assert r.status_int == 200
- assert r.body == b_('RESET')
+ assert r.body == b'RESET'
def test_custom_method_type_with_method_parameter(self):
r = self.app_.get('/things?_method=RESET')
assert r.status_int == 200
- assert r.body == b_('RESET')
+ assert r.body == b'RESET'
def test_options(self):
r = self.app_.request('/things', method='OPTIONS')
assert r.status_int == 200
- assert r.body == b_('OPTIONS')
+ assert r.body == b'OPTIONS'
def test_options_with_method_parameter(self):
r = self.app_.post('/things', {'_method': 'OPTIONS'})
assert r.status_int == 200
- assert r.body == b_('OPTIONS')
+ assert r.body == b'OPTIONS'
def test_other_custom_action(self):
with warnings.catch_warnings():
@@ -1001,7 +1001,7 @@ def test_nested_controller_with_trailing_slash(self):
warnings.simplefilter("ignore")
r = self.app_.request('/things/others/', method='MISC')
assert r.status_int == 200
- assert r.body == b_('OTHERS')
+ assert r.body == b'OTHERS'
def test_nested_controller_without_trailing_slash(self):
with warnings.catch_warnings():
@@ -1017,19 +1017,19 @@ def test_named_action(self):
# test custom "GET" request "length"
r = self.app_.get('/things/1/length')
assert r.status_int == 200
- assert r.body == b_(str(len('one')))
+ assert r.body == b'3'
def test_named_nested_action(self):
# test custom "GET" request through subcontroller
r = self.app_.get('/things/others/echo?value=test')
assert r.status_int == 200
- assert r.body == b_('test')
+ assert r.body == b'test'
def test_nested_post(self):
# test custom "POST" request through subcontroller
r = self.app_.post('/things/others/echo', {'value': 'test'})
assert r.status_int == 200
- assert r.body == b_('test')
+ assert r.body == b'test'
class TestHooks(PecanTestCase):
@@ -1063,7 +1063,7 @@ def on_error(self, state, e):
))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 4
assert run_hook[0] == 'on_route'
@@ -1101,7 +1101,7 @@ def on_error(self, state, e):
], use_context_locals=False))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 10
assert run_hook[0] == 'on_route1'
@@ -1142,7 +1142,7 @@ def on_route(self, state):
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello World!')
+ assert response.body == b'Hello World!'
assert len(run_hook) == 2
assert run_hook[0] == 'on_route'
@@ -1171,7 +1171,7 @@ def on_error(self, state, e):
run_hook.append('error')
r = webob.Response()
- r.text = u_('on_error')
+ r.text = 'on_error'
return r
@@ -1218,7 +1218,7 @@ def on_error(self, state, e):
app = TestApp(papp)
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 10
assert run_hook[0] == 'on_route3'
@@ -1275,7 +1275,7 @@ def index(self, req, resp):
app = TestApp(Pecan(RootController(), use_context_locals=False))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 1
assert run_hook[0] == 'inside'
@@ -1284,7 +1284,7 @@ def index(self, req, resp):
response = app.get('/sub/')
assert response.status_int == 200
- assert response.body == b_('Inside here!')
+ assert response.body == b'Inside here!'
assert len(run_hook) == 3
assert run_hook[0] == 'before'
@@ -1294,7 +1294,7 @@ def index(self, req, resp):
run_hook = []
response = app.get('/sub/sub/')
assert response.status_int == 200
- assert response.body == b_('Deep inside here!')
+ assert response.body == b'Deep inside here!'
assert len(run_hook) == 3
assert run_hook[0] == 'before'
@@ -1343,7 +1343,7 @@ def index(self, req, resp):
))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
assert len(run_hook) == 4
assert run_hook[0] == 'on_route1'
@@ -1355,7 +1355,7 @@ def index(self, req, resp):
response = app.get('/sub/')
assert response.status_int == 200
- assert response.body == b_('Inside here!')
+ assert response.body == b'Inside here!'
assert len(run_hook) == 6
assert run_hook[0] == 'on_route1'
diff --git a/pecan/tests/test_rest.py b/pecan/tests/test_rest.py
index 0151cc0..317283f 100644
--- a/pecan/tests/test_rest.py
+++ b/pecan/tests/test_rest.py
@@ -6,7 +6,6 @@
import sys
import warnings
-from six import b as b_, PY3
from webtest import TestApp
from pecan import abort, expose, make_app, response, redirect
@@ -107,38 +106,40 @@ class RootController(object):
# test get_all
r = app.get('/things')
assert r.status_int == 200
- assert r.body == b_(dumps(dict(items=ThingsController.data)))
+ assert r.body == dumps(
+ dict(items=ThingsController.data)
+ ).encode('utf-8')
# test get_one
for i, value in enumerate(ThingsController.data):
r = app.get('/things/%d' % i)
assert r.status_int == 200
- assert r.body == b_(value)
+ assert r.body == value.encode('utf-8')
# test post
r = app.post('/things', {'value': 'four'})
assert r.status_int == 302
- assert r.body == b_('CREATED')
+ assert r.body == b'CREATED'
# make sure it works
r = app.get('/things/4')
assert r.status_int == 200
- assert r.body == b_('four')
+ assert r.body == b'four'
# test edit
r = app.get('/things/3/edit')
assert r.status_int == 200
- assert r.body == b_('EDIT three')
+ assert r.body == b'EDIT three'
# test put
r = app.put('/things/4', {'value': 'FOUR'})
assert r.status_int == 200
- assert r.body == b_('UPDATED')
+ assert r.body == b'UPDATED'
# make sure it works
r = app.get('/things/4')
assert r.status_int == 200
- assert r.body == b_('FOUR')
+ assert r.body == b'FOUR'
# test put with _method parameter and GET
r = app.get('/things/4?_method=put', {'value': 'FOUR!'}, status=405)
@@ -147,27 +148,27 @@ class RootController(object):
# make sure it works
r = app.get('/things/4')
assert r.status_int == 200
- assert r.body == b_('FOUR')
+ assert r.body == b'FOUR'
# test put with _method parameter and POST
r = app.post('/things/4?_method=put', {'value': 'FOUR!'})
assert r.status_int == 200
- assert r.body == b_('UPDATED')
+ assert r.body == b'UPDATED'
# make sure it works
r = app.get('/things/4')
assert r.status_int == 200
- assert r.body == b_('FOUR!')
+ assert r.body == b'FOUR!'
# test get delete
r = app.get('/things/4/delete')
assert r.status_int == 200
- assert r.body == b_('DELETE FOUR!')
+ assert r.body == b'DELETE FOUR!'
# test delete
r = app.delete('/things/4')
assert r.status_int == 200
- assert r.body == b_('DELETED')
+ assert r.body == b'DELETED'
# make sure it works
r = app.get('/things')
@@ -186,7 +187,7 @@ class RootController(object):
# test delete with _method parameter and POST
r = app.post('/things/3?_method=DELETE')
assert r.status_int == 200
- assert r.body == b_('DELETED')
+ assert r.body == b'DELETED'
# make sure it works
r = app.get('/things')
@@ -196,22 +197,22 @@ class RootController(object):
# test "RESET" custom action
r = app.request('/things', method='RESET')
assert r.status_int == 200
- assert r.body == b_('RESET')
+ assert r.body == b'RESET'
# test "RESET" custom action with _method parameter
r = app.get('/things?_method=RESET')
assert r.status_int == 200
- assert r.body == b_('RESET')
+ assert r.body == b'RESET'
# test the "OPTIONS" custom action
r = app.request('/things', method='OPTIONS')
assert r.status_int == 200
- assert r.body == b_('OPTIONS')
+ assert r.body == b'OPTIONS'
# test the "OPTIONS" custom action with the _method parameter
r = app.post('/things', {'_method': 'OPTIONS'})
assert r.status_int == 200
- assert r.body == b_('OPTIONS')
+ assert r.body == b'OPTIONS'
# test the "other" custom action
with warnings.catch_warnings():
@@ -228,7 +229,7 @@ class RootController(object):
warnings.simplefilter("ignore")
r = app.request('/things/others/', method='MISC')
assert r.status_int == 200
- assert r.body == b_('OTHERS')
+ assert r.body == b'OTHERS'
# test the "others" custom action missing trailing slash
with warnings.catch_warnings():
@@ -239,7 +240,7 @@ class RootController(object):
# test the "others" custom action with the _method parameter
r = app.get('/things/others/?_method=MISC')
assert r.status_int == 200
- assert r.body == b_('OTHERS')
+ assert r.body == b'OTHERS'
# test an invalid custom action
r = app.get('/things?_method=BAD', status=405)
@@ -248,27 +249,27 @@ class RootController(object):
# test custom "GET" request "count"
r = app.get('/things/count')
assert r.status_int == 200
- assert r.body == b_('3')
+ assert r.body == b'3'
# test custom "GET" request "length"
r = app.get('/things/1/length')
assert r.status_int == 200
- assert r.body == b_(str(len('one')))
+ assert r.body == b'3'
# test custom "GET" request through subcontroller
r = app.get('/things/others/echo?value=test')
assert r.status_int == 200
- assert r.body == b_('test')
+ assert r.body == b'test'
# test custom "POST" request "length"
r = app.post('/things/1/length', {'value': 'test'})
assert r.status_int == 200
- assert r.body == b_(str(len('onetest')))
+ assert r.body == b'7'
# test custom "POST" request through subcontroller
r = app.post('/things/others/echo', {'value': 'test'})
assert r.status_int == 200
- assert r.body == b_('test')
+ assert r.body == b'test'
def test_getall_with_trailing_slash(self):
@@ -289,7 +290,9 @@ class RootController(object):
# test get_all
r = app.get('/things/')
assert r.status_int == 200
- assert r.body == b_(dumps(dict(items=ThingsController.data)))
+ assert r.body == dumps(
+ dict(items=ThingsController.data)
+ ).encode('utf-8')
def test_405_with_lookup(self):
@@ -321,7 +324,7 @@ class RootController(object):
r = app.get('/things/foo')
assert r.status_int == 200
- assert r.body == b_('ID: foo')
+ assert r.body == b'ID: foo'
def test_getall_with_lookup(self):
@@ -356,11 +359,13 @@ class RootController(object):
for path in ('/things', '/things/'):
r = app.get(path)
assert r.status_int == 200
- assert r.body == b_(dumps(dict(items=ThingsController.data)))
+ assert r.body == dumps(
+ dict(items=ThingsController.data)
+ ).encode('utf-8')
r = app.get('/things/foo')
assert r.status_int == 200
- assert r.body == b_('ID: foo')
+ assert r.body == b'ID: foo'
def test_simple_nested_rest(self):
@@ -394,19 +399,19 @@ class RootController(object):
r = app.post('/foo')
assert r.status_int == 200
- assert r.body == b_("FOO-POST")
+ assert r.body == b"FOO-POST"
r = app.delete('/foo/1')
assert r.status_int == 200
- assert r.body == b_("FOO-1")
+ assert r.body == b"FOO-1"
r = app.post('/foo/bar')
assert r.status_int == 200
- assert r.body == b_("BAR-POST")
+ assert r.body == b"BAR-POST"
r = app.delete('/foo/bar/2')
assert r.status_int == 200
- assert r.body == b_("BAR-2")
+ assert r.body == b"BAR-2"
def test_complicated_nested_rest(self):
@@ -504,75 +509,79 @@ class RootController(object):
# test get_all
r = app.get('/foos')
assert r.status_int == 200
- assert r.body == b_(dumps(dict(items=FoosController.data)))
+ assert r.body == dumps(
+ dict(items=FoosController.data)
+ ).encode('utf-8')
# test nested get_all
r = app.get('/foos/1/bars')
assert r.status_int == 200
- assert r.body == b_(dumps(dict(items=BarsController.data[1])))
+ assert r.body == dumps(
+ dict(items=BarsController.data[1])
+ ).encode('utf-8')
# test get_one
for i, value in enumerate(FoosController.data):
r = app.get('/foos/%d' % i)
assert r.status_int == 200
- assert r.body == b_(value)
+ assert r.body == value.encode('utf-8')
# test nested get_one
for i, value in enumerate(FoosController.data):
for j, value in enumerate(BarsController.data[i]):
r = app.get('/foos/%s/bars/%s' % (i, j))
assert r.status_int == 200
- assert r.body == b_(value)
+ assert r.body == value.encode('utf-8')
# test post
r = app.post('/foos', {'value': 'two'})
assert r.status_int == 302
- assert r.body == b_('CREATED')
+ assert r.body == b'CREATED'
# make sure it works
r = app.get('/foos/2')
assert r.status_int == 200
- assert r.body == b_('two')
+ assert r.body == b'two'
# test nested post
r = app.post('/foos/2/bars', {'value': 'two-zero'})
assert r.status_int == 302
- assert r.body == b_('CREATED FOR 2')
+ assert r.body == b'CREATED FOR 2'
# make sure it works
r = app.get('/foos/2/bars/0')
assert r.status_int == 200
- assert r.body == b_('two-zero')
+ assert r.body == b'two-zero'
# test edit
r = app.get('/foos/1/edit')
assert r.status_int == 200
- assert r.body == b_('EDIT one')
+ assert r.body == b'EDIT one'
# test nested edit
r = app.get('/foos/1/bars/1/edit')
assert r.status_int == 200
- assert r.body == b_('EDIT one-one')
+ assert r.body == b'EDIT one-one'
# test put
r = app.put('/foos/2', {'value': 'TWO'})
assert r.status_int == 200
- assert r.body == b_('UPDATED')
+ assert r.body == b'UPDATED'
# make sure it works
r = app.get('/foos/2')
assert r.status_int == 200
- assert r.body == b_('TWO')
+ assert r.body == b'TWO'
# test nested put
r = app.put('/foos/2/bars/0', {'value': 'TWO-ZERO'})
assert r.status_int == 200
- assert r.body == b_('UPDATED')
+ assert r.body == b'UPDATED'
# make sure it works
r = app.get('/foos/2/bars/0')
assert r.status_int == 200
- assert r.body == b_('TWO-ZERO')
+ assert r.body == b'TWO-ZERO'
# test put with _method parameter and GET
r = app.get('/foos/2?_method=put', {'value': 'TWO!'}, status=405)
@@ -581,7 +590,7 @@ class RootController(object):
# make sure it works
r = app.get('/foos/2')
assert r.status_int == 200
- assert r.body == b_('TWO')
+ assert r.body == b'TWO'
# test nested put with _method parameter and GET
r = app.get(
@@ -593,42 +602,42 @@ class RootController(object):
# make sure it works
r = app.get('/foos/2/bars/0')
assert r.status_int == 200
- assert r.body == b_('TWO-ZERO')
+ assert r.body == b'TWO-ZERO'
# test put with _method parameter and POST
r = app.post('/foos/2?_method=put', {'value': 'TWO!'})
assert r.status_int == 200
- assert r.body == b_('UPDATED')
+ assert r.body == b'UPDATED'
# make sure it works
r = app.get('/foos/2')
assert r.status_int == 200
- assert r.body == b_('TWO!')
+ assert r.body == b'TWO!'
# test nested put with _method parameter and POST
r = app.post('/foos/2/bars/0?_method=put', {'value': 'TWO-ZERO!'})
assert r.status_int == 200
- assert r.body == b_('UPDATED')
+ assert r.body == b'UPDATED'
# make sure it works
r = app.get('/foos/2/bars/0')
assert r.status_int == 200
- assert r.body == b_('TWO-ZERO!')
+ assert r.body == b'TWO-ZERO!'
# test get delete
r = app.get('/foos/2/delete')
assert r.status_int == 200
- assert r.body == b_('DELETE TWO!')
+ assert r.body == b'DELETE TWO!'
# test nested get delete
r = app.get('/foos/2/bars/0/delete')
assert r.status_int == 200
- assert r.body == b_('DELETE TWO-ZERO!')
+ assert r.body == b'DELETE TWO-ZERO!'
# test nested delete
r = app.delete('/foos/2/bars/0')
assert r.status_int == 200
- assert r.body == b_('DELETED')
+ assert r.body == b'DELETED'
# make sure it works
r = app.get('/foos/2/bars')
@@ -638,7 +647,7 @@ class RootController(object):
# test delete
r = app.delete('/foos/2')
assert r.status_int == 200
- assert r.body == b_('DELETED')
+ assert r.body == b'DELETED'
# make sure it works
r = app.get('/foos')
@@ -666,7 +675,7 @@ class RootController(object):
# test nested delete with _method parameter and POST
r = app.post('/foos/1/bars/1?_method=DELETE')
assert r.status_int == 200
- assert r.body == b_('DELETED')
+ assert r.body == b'DELETED'
# make sure it works
r = app.get('/foos/1/bars')
@@ -676,7 +685,7 @@ class RootController(object):
# test delete with _method parameter and POST
r = app.post('/foos/1?_method=DELETE')
assert r.status_int == 200
- assert r.body == b_('DELETED')
+ assert r.body == b'DELETED'
# make sure it works
r = app.get('/foos')
@@ -715,19 +724,19 @@ class RootController(object):
r = app.get('/foos/')
assert r.status_int == 200
- assert r.body == b_('1')
+ assert r.body == b'1'
r = app.get('/foos/1/')
assert r.status_int == 200
- assert r.body == b_('2')
+ assert r.body == b'2'
r = app.get('/foos/1/bars/')
assert r.status_int == 200
- assert r.body == b_('3')
+ assert r.body == b'3'
r = app.get('/foos/1/bars/2/')
assert r.status_int == 200
- assert r.body == b_('4')
+ assert r.body == b'4'
r = app.get('/foos/bars/', status=404)
assert r.status_int == 404
@@ -771,19 +780,19 @@ class RootController(object):
r = app.get('/foos/')
assert r.status_int == 200
- assert r.body == b_('1')
+ assert r.body == b'1'
r = app.get('/foos/1/')
assert r.status_int == 200
- assert r.body == b_('2')
+ assert r.body == b'2'
r = app.get('/foos/1/bars/')
assert r.status_int == 200
- assert r.body == b_('3')
+ assert r.body == b'3'
r = app.get('/foos/1/bars/2/')
assert r.status_int == 200
- assert r.body == b_('4')
+ assert r.body == b'4'
r = app.get('/foos/bars/')
assert r.status_int == 302
@@ -886,12 +895,16 @@ class RootController(object):
# test get_all
r = app.get('/foos')
self.assertEqual(r.status_int, 200)
- self.assertEqual(r.body, b_(dumps(dict(items=FoosController.data))))
+ self.assertEqual(r.body, dumps(
+ dict(items=FoosController.data)
+ ).encode('utf-8'))
# test nested get_all
r = app.get('/foos/1/bars')
self.assertEqual(r.status_int, 200)
- self.assertEqual(r.body, b_(dumps(dict(items=BarsController.data[1]))))
+ self.assertEqual(r.body, dumps(
+ dict(items=BarsController.data[1])
+ ).encode('utf-8'))
r = app.get('/foos/bars', expect_errors=True)
self.assertEqual(r.status_int, 404)
@@ -927,35 +940,35 @@ def remove(self, id):
r = app.get('/detail')
assert r.status_int == 200
- assert r.body == b_('DETAIL')
+ assert r.body == b'DETAIL'
r = app.get('/detail/')
assert r.status_int == 200
- assert r.body == b_('DETAIL')
+ assert r.body == b'DETAIL'
r = app.post('/create')
assert r.status_int == 200
- assert r.body == b_('CREATE')
+ assert r.body == b'CREATE'
r = app.post('/create/')
assert r.status_int == 200
- assert r.body == b_('CREATE')
+ assert r.body == b'CREATE'
r = app.put('/update/123')
assert r.status_int == 200
- assert r.body == b_('123')
+ assert r.body == b'123'
r = app.put('/update/123/')
assert r.status_int == 200
- assert r.body == b_('123')
+ assert r.body == b'123'
r = app.delete('/remove/456')
assert r.status_int == 200
- assert r.body == b_('456')
+ assert r.body == b'456'
r = app.delete('/remove/456/')
assert r.status_int == 200
- assert r.body == b_('456')
+ assert r.body == b'456'
def test_custom_delete(self):
@@ -998,7 +1011,7 @@ class RootController(object):
# test custom delete without ID
r = app.delete('/things/others/')
assert r.status_int == 200
- assert r.body == b_('DELETE')
+ assert r.body == b'DELETE'
# test custom delete without ID with _method parameter and GET
r = app.get('/things/others/?_method=delete', status=405)
@@ -1007,12 +1020,12 @@ class RootController(object):
# test custom delete without ID with _method parameter and POST
r = app.post('/things/others/', {'_method': 'delete'})
assert r.status_int == 200
- assert r.body == b_('DELETE')
+ assert r.body == b'DELETE'
# test custom delete with ID
r = app.delete('/things/others/reset/1')
assert r.status_int == 200
- assert r.body == b_('1')
+ assert r.body == b'1'
# test custom delete with ID with _method parameter and GET
r = app.get('/things/others/reset/1?_method=delete', status=405)
@@ -1021,7 +1034,7 @@ class RootController(object):
# test custom delete with ID with _method parameter and POST
r = app.post('/things/others/reset/1', {'_method': 'delete'})
assert r.status_int == 200
- assert r.body == b_('1')
+ assert r.body == b'1'
def test_get_with_var_args(self):
@@ -1048,12 +1061,12 @@ class RootController(object):
# test get request
r = app.get('/things/one/two/three')
assert r.status_int == 200
- assert r.body == b_('one, two, three')
+ assert r.body == b'one, two, three'
# test nested get request
r = app.get('/things/one/two/three/others/')
assert r.status_int == 200
- assert r.body == b_('NESTED: one, two, three')
+ assert r.body == b'NESTED: one, two, three'
def test_sub_nested_rest(self):
@@ -1094,7 +1107,7 @@ class RootController(object):
# test sub-nested get_one
r = app.get('/foos/0/bars/0/bazs/0')
assert r.status_int == 200
- assert r.body == b_('zero-zero-zero')
+ assert r.body == b'zero-zero-zero'
def test_sub_nested_rest_with_overwrites(self):
@@ -1170,35 +1183,35 @@ class RootController(object):
r = app.post('/foos')
assert r.status_int == 200
- assert r.body == b_('POST')
+ assert r.body == b'POST'
r = app.put('/foos/0')
assert r.status_int == 200
- assert r.body == b_('PUT')
+ assert r.body == b'PUT'
r = app.post('/foos/bars')
assert r.status_int == 200
- assert r.body == b_('POST-CHILD')
+ assert r.body == b'POST-CHILD'
r = app.put('/foos/bars/0')
assert r.status_int == 200
- assert r.body == b_('PUT-CHILD')
+ assert r.body == b'PUT-CHILD'
r = app.post('/foos/bars/bazs')
assert r.status_int == 200
- assert r.body == b_('POST-GRAND-CHILD')
+ assert r.body == b'POST-GRAND-CHILD'
r = app.put('/foos/bars/bazs/0')
assert r.status_int == 200
- assert r.body == b_('PUT-GRAND-CHILD')
+ assert r.body == b'PUT-GRAND-CHILD'
r = app.get('/foos/bars/bazs/final/')
assert r.status_int == 200
- assert r.body == b_('FINAL')
+ assert r.body == b'FINAL'
r = app.get('/foos/bars/bazs/final/named')
assert r.status_int == 200
- assert r.body == b_('NAMED')
+ assert r.body == b'NAMED'
def test_post_with_kwargs_only(self):
@@ -1217,7 +1230,7 @@ def post(self, **kw):
r = app.get('/')
assert r.status_int == 200
- assert r.body == b_('INDEX')
+ assert r.body == b'INDEX'
kwargs = {'foo': 'bar', 'spam': 'eggs'}
r = app.post('/', kwargs)
@@ -1306,43 +1319,43 @@ class RootController(RestController):
r = app.get('/foo')
assert r.status_int == 200
- assert r.body == b_('INDEX')
+ assert r.body == b'INDEX'
r = app.post('/foo')
assert r.status_int == 200
- assert r.body == b_('POST')
+ assert r.body == b'POST'
r = app.get('/foo/1')
assert r.status_int == 200
- assert r.body == b_('GET ONE')
+ assert r.body == b'GET ONE'
r = app.post('/foo/1')
assert r.status_int == 200
- assert r.body == b_('POST-LOOKUP-1')
+ assert r.body == b'POST-LOOKUP-1'
r = app.put('/foo/1')
assert r.status_int == 200
- assert r.body == b_('PUT-1')
+ assert r.body == b'PUT-1'
r = app.delete('/foo/1')
assert r.status_int == 200
- assert r.body == b_('DELETE-1')
+ assert r.body == b'DELETE-1'
r = app.put('/foo/1/2')
assert r.status_int == 200
- assert r.body == b_('PUT-LOOKUP-1-2')
+ assert r.body == b'PUT-LOOKUP-1-2'
r = app.delete('/foo/1/2')
assert r.status_int == 200
- assert r.body == b_('DELETE-LOOKUP-1-2')
+ assert r.body == b'DELETE-LOOKUP-1-2'
r = app.get('/foo/1/2')
assert r.status_int == 200
- assert r.body == b_('FINAL-2')
+ assert r.body == b'FINAL-2'
r = app.post('/foo/1/2')
assert r.status_int == 200
- assert r.body == b_('POST-2')
+ assert r.body == b'POST-2'
def test_nested_rest_with_default(self):
@@ -1359,28 +1372,7 @@ class RootController(RestController):
r = app.get('/foo/missing')
assert r.status_int == 200
- assert r.body == b_("DEFAULT missing")
-
- def test_rest_with_non_utf_8_body(self):
- if PY3:
- # webob+PY3 doesn't suffer from this bug; the POST parsing in PY3
- # seems to more gracefully detect the bytestring
- return
-
- class FooController(RestController):
-
- @expose()
- def post(self):
- return "POST"
-
- class RootController(RestController):
- foo = FooController()
-
- app = TestApp(make_app(RootController()))
-
- data = struct.pack('255h', *range(0, 255))
- r = app.post('/foo/', data, expect_errors=True)
- assert r.status_int == 400
+ assert r.body == b"DEFAULT missing"
def test_dynamic_rest_lookup(self):
class BarController(RestController):
@@ -1444,43 +1436,43 @@ class RootController(RestController):
r = app.get('/foos')
assert r.status_int == 200
- assert r.body == b_('FOOS')
+ assert r.body == b'FOOS'
r = app.post('/foos')
assert r.status_int == 200
- assert r.body == b_('POST_FOOS')
+ assert r.body == b'POST_FOOS'
r = app.get('/foos/foo')
assert r.status_int == 200
- assert r.body == b_('FOO')
+ assert r.body == b'FOO'
r = app.put('/foos/foo')
assert r.status_int == 200
- assert r.body == b_('PUT_FOO')
+ assert r.body == b'PUT_FOO'
r = app.delete('/foos/foo')
assert r.status_int == 200
- assert r.body == b_('DELETE_FOO')
+ assert r.body == b'DELETE_FOO'
r = app.get('/foos/foo/bars')
assert r.status_int == 200
- assert r.body == b_('BARS')
+ assert r.body == b'BARS'
r = app.post('/foos/foo/bars')
assert r.status_int == 200
- assert r.body == b_('POST_BARS')
+ assert r.body == b'POST_BARS'
r = app.get('/foos/foo/bars/bar')
assert r.status_int == 200
- assert r.body == b_('BAR')
+ assert r.body == b'BAR'
r = app.put('/foos/foo/bars/bar')
assert r.status_int == 200
- assert r.body == b_('PUT_BAR')
+ assert r.body == b'PUT_BAR'
r = app.delete('/foos/foo/bars/bar')
assert r.status_int == 200
- assert r.body == b_('DELETE_BAR')
+ assert r.body == b'DELETE_BAR'
def test_method_not_allowed_get(self):
class ThingsController(RestController):
@@ -1554,7 +1546,7 @@ def get(self):
def test_rest_with_utf8_uri(self):
class FooController(RestController):
- key = chr(0x1F330) if PY3 else unichr(0x1F330)
+ key = chr(0x1F330)
data = {key: 'Success!'}
@expose()
@@ -1594,7 +1586,6 @@ class RootController(RestController):
assert r.status_int == 200
assert r.body == b'Hello, World!'
- @unittest.skipIf(not PY3, "test is Python3 specific")
def test_rest_with_utf8_endpoint(self):
class ChildController(object):
@expose()
diff --git a/pecan/tests/test_scaffolds.py b/pecan/tests/test_scaffolds.py
index ef8f1f1..f24d435 100644
--- a/pecan/tests/test_scaffolds.py
+++ b/pecan/tests/test_scaffolds.py
@@ -3,8 +3,7 @@
import sys
import tempfile
import unittest
-
-from six.moves import cStringIO as StringIO
+from io import StringIO
from pecan.tests import PecanTestCase
diff --git a/pecan/tests/test_secure.py b/pecan/tests/test_secure.py
index 5286985..3257142 100644
--- a/pecan/tests/test_secure.py
+++ b/pecan/tests/test_secure.py
@@ -1,7 +1,6 @@
import sys
import unittest
-from six import b as b_
from webtest import TestApp
from pecan import expose, make_app
@@ -56,11 +55,11 @@ def unlocked(self):
))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
response = app.get('/unlocked')
assert response.status_int == 200
- assert response.body == b_('Sure thing')
+ assert response.body == b'Sure thing'
response = app.get('/locked', expect_errors=True)
assert response.status_int == 401
@@ -70,7 +69,7 @@ def unlocked(self):
response = app.get('/secret/allowed')
assert response.status_int == 200
- assert response.body == b_('Allowed!')
+ assert response.body == b'Allowed!'
def test_unlocked_attribute(self):
class AuthorizedSubController(object):
@@ -118,11 +117,11 @@ def unlocked(self):
))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello, World!')
+ assert response.body == b'Hello, World!'
response = app.get('/unlocked')
assert response.status_int == 200
- assert response.body == b_('Sure thing')
+ assert response.body == b'Sure thing'
response = app.get('/locked', expect_errors=True)
assert response.status_int == 401
@@ -132,15 +131,15 @@ def unlocked(self):
response = app.get('/secret/allowed')
assert response.status_int == 200
- assert response.body == b_('Allowed!')
+ assert response.body == b'Allowed!'
response = app.get('/secret/authorized/')
assert response.status_int == 200
- assert response.body == b_('Index')
+ assert response.body == b'Index'
response = app.get('/secret/authorized/allowed')
assert response.status_int == 200
- assert response.body == b_('Allowed!')
+ assert response.body == b'Allowed!'
def test_secure_attribute(self):
authorized = False
@@ -160,7 +159,7 @@ def index(self):
app = TestApp(make_app(RootController()))
response = app.get('/')
assert response.status_int == 200
- assert response.body == b_('Hello from root!')
+ assert response.body == b'Hello from root!'
response = app.get('/sub/', expect_errors=True)
assert response.status_int == 401
@@ -168,7 +167,7 @@ def index(self):
authorized = True
response = app.get('/sub/')
assert response.status_int == 200
- assert response.body == b_('Hello from sub!')
+ assert response.body == b'Hello from sub!'
def test_secured_generic_controller(self):
authorized = False
@@ -413,7 +412,7 @@ def tearDown(self):
def test_sub_of_both_not_secret(self):
response = self.app.get('/notsecret/hi/')
assert response.status_int == 200
- assert response.body == b_('Index hi')
+ assert response.body == b'Index hi'
def test_protected_lookup(self):
response = self.app.get('/secret/hi/', expect_errors=True)
@@ -422,7 +421,7 @@ def test_protected_lookup(self):
self.secret_cls.authorized = True
response = self.app.get('/secret/hi/')
assert response.status_int == 200
- assert response.body == b_('Index hi')
+ assert response.body == b'Index hi'
assert 'secretcontroller' in self.permissions_checked
def test_secured_notfound_lookup(self):
@@ -449,7 +448,7 @@ def test_layered_protection(self):
self.deepsecret_cls.authorized = True
response = self.app.get('/secret/hi/deepsecret/')
assert response.status_int == 200
- assert response.body == b_('Deep Secret')
+ assert response.body == b'Deep Secret'
assert 'secretcontroller' in self.permissions_checked
assert 'deepsecret' in self.permissions_checked
@@ -458,14 +457,14 @@ def test_cyclical_protection(self):
self.deepsecret_cls.authorized = True
response = self.app.get('/secret/1/deepsecret/2/deepsecret/')
assert response.status_int == 200
- assert response.body == b_('Deep Secret')
+ assert response.body == b'Deep Secret'
assert 'secretcontroller' in self.permissions_checked
assert 'deepsecret' in self.permissions_checked
def test_unlocked_lookup(self):
response = self.app.get('/notsecret/1/deepsecret/2/')
assert response.status_int == 200
- assert response.body == b_('Index 2')
+ assert response.body == b'Index 2'
assert 'deepsecret' not in self.permissions_checked
response = self.app.get(
@@ -493,7 +492,7 @@ def test_independent_check_success(self):
self.secret_cls.independent_authorization = True
response = self.app.get('/secret/independent')
assert response.status_int == 200
- assert response.body == b_('Independent Security')
+ assert response.body == b'Independent Security'
assert len(self.permissions_checked) == 1
assert 'independent' in self.permissions_checked
@@ -508,7 +507,7 @@ def test_wrapped_attribute_success(self):
self.secret_cls.independent_authorization = True
response = self.app.get('/secret/wrapped/')
assert response.status_int == 200
- assert response.body == b_('Index wrapped')
+ assert response.body == b'Index wrapped'
assert len(self.permissions_checked) == 1
assert 'independent' in self.permissions_checked
@@ -517,7 +516,7 @@ def test_lookup_to_wrapped_attribute_on_self(self):
self.secret_cls.independent_authorization = True
response = self.app.get('/secret/lookup_wrapped/')
assert response.status_int == 200
- assert response.body == b_('Index wrapped')
+ assert response.body == b'Index wrapped'
assert len(self.permissions_checked) == 2
assert 'independent' in self.permissions_checked
assert 'secretcontroller' in self.permissions_checked
@@ -525,7 +524,7 @@ def test_lookup_to_wrapped_attribute_on_self(self):
def test_unlocked_attribute_in_insecure(self):
response = self.app.get('/notsecret/unlocked/')
assert response.status_int == 200
- assert response.body == b_('Index unlocked')
+ assert response.body == b'Index unlocked'
class SecureControllerSharedPermissionsRegression(PecanTestCase):
diff --git a/pecan/tests/test_templating.py b/pecan/tests/test_templating.py
index 5fffb0c..07d199e 100644
--- a/pecan/tests/test_templating.py
+++ b/pecan/tests/test_templating.py
@@ -1,7 +1,5 @@
import tempfile
-from six import b as b_
-
from pecan.templating import RendererFactory, format_line_context
from pecan.tests import PecanTestCase
@@ -44,7 +42,7 @@ def tearDown(self):
def test_format_line_context(self):
for i in range(11):
- self.f.write(b_('Testing Line %d\n' % i))
+ self.f.write(b'Testing Line %d\n' % i)
self.f.flush()
assert format_line_context(self.f.name, 0).count('Testing Line') == 10
diff --git a/pecan/util.py b/pecan/util.py
index cb76cef..731be42 100644
--- a/pecan/util.py
+++ b/pecan/util.py
@@ -1,7 +1,3 @@
-import sys
-
-import six
-
from pecan.compat import getargspec as _getargspec
@@ -22,7 +18,7 @@ def getargspec(method):
if hasattr(method, '__func__'):
method = method.__func__
- func_closure = six.get_function_closure(method)
+ func_closure = method.__closure__
# NOTE(sileht): if the closure is None we cannot look deeper,
# so return actual argspec, this occurs when the method
@@ -37,7 +33,7 @@ def getargspec(method):
# (has a __code__ object, and 'self' is the first argument)
func_closure = filter(
lambda c: (
- six.callable(c.cell_contents) and
+ callable(c.cell_contents) and
hasattr(c.cell_contents, '__code__')
),
func_closure
diff --git a/requirements.txt b/requirements.txt
index 0d61d64..94c6136 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,4 @@
WebOb>=1.8
Mako>=0.4.0
setuptools
-six
logutils>=0.3