diff options
Diffstat (limited to 'paste')
-rw-r--r-- | paste/exceptions/collector.py | 2 | ||||
-rw-r--r-- | paste/exceptions/formatter.py | 4 | ||||
-rw-r--r-- | paste/fixture.py | 4 | ||||
-rw-r--r-- | paste/request.py | 11 | ||||
-rw-r--r-- | paste/util/template.py | 11 | ||||
-rw-r--r-- | paste/wsgilib.py | 4 | ||||
-rw-r--r-- | paste/wsgiwrappers.py | 3 |
7 files changed, 23 insertions, 16 deletions
diff --git a/paste/exceptions/collector.py b/paste/exceptions/collector.py index 8867bf7..632ce06 100644 --- a/paste/exceptions/collector.py +++ b/paste/exceptions/collector.py @@ -266,7 +266,7 @@ class ExceptionCollector(object): name = co.co_name globals = f.f_globals locals = f.f_locals - if not hasattr(locals, 'has_key'): + if not hasattr(locals, 'keys'): # Something weird about this frame; it's not a real dict warnings.warn( "Frame %s has an invalid locals(): %r" % ( diff --git a/paste/exceptions/formatter.py b/paste/exceptions/formatter.py index c83ab50..09309de 100644 --- a/paste/exceptions/formatter.py +++ b/paste/exceptions/formatter.py @@ -217,7 +217,7 @@ class TextFormatter(AbstractFormatter): elif isinstance(value, dict): lines = ['\n', title, '-'*len(title)] items = value.items() - items.sort() + items = sorted(items) for n, v in items: try: v = repr(v) @@ -303,7 +303,7 @@ class HTMLFormatter(TextFormatter): def zebra_table(self, title, rows, table_class="variables"): if isinstance(rows, dict): rows = rows.items() - rows.sort() + rows = sorted(rows) table = ['<table class="%s">' % table_class, '<tr class="header"><th colspan="2">%s</th></tr>' % self.quote(title)] diff --git a/paste/fixture.py b/paste/fixture.py index df1c75d..363f119 100644 --- a/paste/fixture.py +++ b/paste/fixture.py @@ -226,8 +226,8 @@ class TestApp(object): if hasattr(params, 'items'): # Some other multi-dict like format params = urlencode(params.items()) - if six.PY3: - params = params.encode('utf8') + if six.PY3 and isinstance(params, six.text_type): + params = params.encode('utf8') if upload_files: params = urlparse.parse_qsl(params, keep_blank_values=True) content_type, params = self.encode_multipart( diff --git a/paste/request.py b/paste/request.py index f0d91c1..8d5e5c3 100644 --- a/paste/request.py +++ b/paste/request.py @@ -140,7 +140,7 @@ def parse_dict_querystring(environ): environ['paste.parsed_dict_querystring'] = (multi, source) return multi -def parse_formvars(environ, include_get_vars=True): +def parse_formvars(environ, include_get_vars=True, encoding=None, errors=None): """Parses the request, returning a MultiDict of form variables. If ``include_get_vars`` is true then GET (query string) variables @@ -182,9 +182,16 @@ def parse_formvars(environ, include_get_vars=True): environ['CONTENT_TYPE'] = '' else: input = environ['wsgi.input'] + kwparms = {} + if six.PY3: + if encoding: + kwparms['encoding'] = encoding + if errors: + kwparms['errors'] = errors fs = cgi.FieldStorage(fp=input, environ=environ, - keep_blank_values=1) + keep_blank_values=1, + **kwparms) environ['QUERY_STRING'] = old_query_string if fake_out_cgi: environ['CONTENT_TYPE'] = old_content_type diff --git a/paste/util/template.py b/paste/util/template.py index f0826af..5a63664 100644 --- a/paste/util/template.py +++ b/paste/util/template.py @@ -318,28 +318,27 @@ def html_quote(value): if value is None: return '' if not isinstance(value, six.string_types): - if hasattr(value, '__unicode__'): + if six.PY2 and hasattr(value, '__unicode__'): value = unicode(value) else: value = str(value) value = cgi.escape(value, 1) - if isinstance(value, unicode): + if six.PY2 and isinstance(value, unicode): value = value.encode('ascii', 'xmlcharrefreplace') return value def url(v): if not isinstance(v, six.string_types): - if hasattr(v, '__unicode__'): + if six.PY2 and hasattr(v, '__unicode__'): v = unicode(v) else: v = str(v) - if isinstance(v, unicode): + if six.PY2 and isinstance(v, unicode): v = v.encode('utf8') return quote(v) def attr(**kw): - kw = kw.items() - kw.sort() + kw = sorted(kw.items()) parts = [] for name, value in kw: if value is None: diff --git a/paste/wsgilib.py b/paste/wsgilib.py index 116f47b..772e090 100644 --- a/paste/wsgilib.py +++ b/paste/wsgilib.py @@ -47,8 +47,8 @@ class add_close(object): return self.app_iter.next() # Python 3 uses __next__ instead of next - def __next__(self): - return bytes(next(self.app_iter), encoding='ascii') + # def __next__(self): + # return bytes(next(self.app_iter), encoding='ascii') def close(self): self._closed = True diff --git a/paste/wsgiwrappers.py b/paste/wsgiwrappers.py index 7b8f6de..674054f 100644 --- a/paste/wsgiwrappers.py +++ b/paste/wsgiwrappers.py @@ -199,7 +199,8 @@ class WSGIRequest(object): GET = property(GET, doc=GET.__doc__) def _POST(self): - return parse_formvars(self.environ, include_get_vars=False) + return parse_formvars(self.environ, include_get_vars=False, + encoding=self.charset, errors=self.errors) def POST(self): """Dictionary-like object representing the POST body. |