Hello community,

here is the log from the commit of package python-Routes for openSUSE:Factory 
checked in at 2015-08-10 09:16:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Routes (Old)
 and      /work/SRC/openSUSE:Factory/.python-Routes.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Routes"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Routes/python-Routes.changes      
2015-04-23 08:04:34.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-Routes.new/python-Routes.changes 
2015-08-10 09:16:41.000000000 +0200
@@ -1,0 +2,8 @@
+Fri Aug  7 08:03:53 UTC 2015 - h...@urpla.net
+
+- update to 2.2:
+  * Fix Python 3 support. Patch by Victor Stinner.
+
+- spell python-WebTest and python-WebOb correctly
+
+-------------------------------------------------------------------

Old:
----
  Routes-2.1.tar.gz

New:
----
  Routes-2.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-Routes.spec ++++++
--- /var/tmp/diff_new_pack.zXoqw2/_old  2015-08-10 09:16:42.000000000 +0200
+++ /var/tmp/diff_new_pack.zXoqw2/_new  2015-08-10 09:16:42.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           python-Routes
-Version:        2.1
+Version:        2.2
 Release:        0
 Url:            http://routes.groovie.org/
 Summary:        Routing Recognition and Generation Tools
@@ -28,11 +28,11 @@
 BuildRequires:  python-devel
 BuildRequires:  python-setuptools
 # for testing
+BuildRequires:  python-WebOb
+BuildRequires:  python-WebTest
 BuildRequires:  python-coverage
 BuildRequires:  python-nose
 BuildRequires:  python-repoze.lru >= 0.3
-BuildRequires:  python-webob
-BuildRequires:  python-webtest
 
 Requires:       python-repoze.lru >= 0.3
 Provides:       python-routes = %{version}

++++++ Routes-2.1.tar.gz -> Routes-2.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/CHANGELOG.rst new/Routes-2.2/CHANGELOG.rst
--- old/Routes-2.1/CHANGELOG.rst        2015-01-18 00:17:56.000000000 +0100
+++ new/Routes-2.2/CHANGELOG.rst        2015-07-22 06:42:41.000000000 +0200
@@ -1,6 +1,10 @@
 Routes Changelog
 %%%%%%%%%%%%%%%%
 
+Release 2.2 (July 21, 2015)
+===========================
+* Fix Python 3 support. Patch by Victor Stinner.
+
 Release 2.1 (January 17, 2015)
 ==============================
 * Fix 3 other route matching groups in route.py to use anonymous groups for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/LICENSE.txt new/Routes-2.2/LICENSE.txt
--- old/Routes-2.1/LICENSE.txt  2015-01-17 18:46:49.000000000 +0100
+++ new/Routes-2.2/LICENSE.txt  2015-07-22 06:40:34.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright (c) 2005-2012 Ben Bangert <b...@groovie.org>
+Copyright (c) 2005-2015 Ben Bangert <b...@groovie.org>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/PKG-INFO new/Routes-2.2/PKG-INFO
--- old/Routes-2.1/PKG-INFO     2015-01-18 00:20:51.000000000 +0100
+++ new/Routes-2.2/PKG-INFO     2015-07-22 06:44:43.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: Routes
-Version: 2.1
+Version: 2.2
 Summary: Routing Recognition and Generation Tools
 Home-page: http://routes.readthedocs.org/
 Author: Ben Bangert
@@ -24,6 +24,10 @@
         Routes Changelog
         %%%%%%%%%%%%%%%%
         
+        Release 2.2 (July 21, 2015)
+        ===========================
+        * Fix Python 3 support. Patch by Victor Stinner.
+        
         Release 2.1 (January 17, 2015)
         ==============================
         * Fix 3 other route matching groups in route.py to use anonymous 
groups for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/Routes.egg-info/PKG-INFO 
new/Routes-2.2/Routes.egg-info/PKG-INFO
--- old/Routes-2.1/Routes.egg-info/PKG-INFO     2015-01-18 00:20:48.000000000 
+0100
+++ new/Routes-2.2/Routes.egg-info/PKG-INFO     2015-07-22 06:44:43.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: Routes
-Version: 2.1
+Version: 2.2
 Summary: Routing Recognition and Generation Tools
 Home-page: http://routes.readthedocs.org/
 Author: Ben Bangert
@@ -24,6 +24,10 @@
         Routes Changelog
         %%%%%%%%%%%%%%%%
         
+        Release 2.2 (July 21, 2015)
+        ===========================
+        * Fix Python 3 support. Patch by Victor Stinner.
+        
         Release 2.1 (January 17, 2015)
         ==============================
         * Fix 3 other route matching groups in route.py to use anonymous 
groups for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/Routes.egg-info/requires.txt 
new/Routes-2.2/Routes.egg-info/requires.txt
--- old/Routes-2.1/Routes.egg-info/requires.txt 2015-01-18 00:20:48.000000000 
+0100
+++ new/Routes-2.2/Routes.egg-info/requires.txt 2015-07-22 06:44:43.000000000 
+0200
@@ -1 +1,2 @@
-repoze.lru>=0.3
+six
+repoze.lru>=0.3
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/docs/conf.py new/Routes-2.2/docs/conf.py
--- old/Routes-2.1/docs/conf.py 2015-01-17 18:46:49.000000000 +0100
+++ new/Routes-2.2/docs/conf.py 2015-07-22 06:41:30.000000000 +0200
@@ -36,7 +36,7 @@
 
 # General substitutions.
 project = 'Routes'
-copyright = '2010-2012, Ben Bangert, Mike Orr'
+copyright = '2005-2015, Ben Bangert, Mike Orr'
 
 # The default replacements for |version| and |release|, also used in various
 # other places throughout the built documents.
@@ -91,7 +91,7 @@
 # typographically correct entities.
 #html_use_smartypants = True
 
-
+html_theme = 'classic'
 html_theme_options = {
     "bgcolor": "#fff",
     "footertextcolor": "#666",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/docs/generating.rst 
new/Routes-2.2/docs/generating.rst
--- old/Routes-2.1/docs/generating.rst  2015-01-17 18:46:49.000000000 +0100
+++ new/Routes-2.2/docs/generating.rst  2015-07-22 06:40:34.000000000 +0200
@@ -24,8 +24,8 @@
 
     m.connect("archives", "/archives/{id}",
         controller="archives", action="view", id=1)
-    url("blog", id=123)  =>  "/blog/123"
-    url("blog")  =>  "/blog/1"
+    url("archives", id=123)  =>  "/archives/123"
+    url("archives")  =>  "/archives/1"
 
 (The extra variable is *not* used for matching unless minimization is enabled.)
 
@@ -128,7 +128,7 @@
 This example provides a convenient way to link to a search::
 
     map.connect("google", "http://google.com/";, _static=True)
-    url("google", q="search term")  =>  "/http://google.com/?q=search+term";)
+    url("google", q="search term")  =>  "http://google.com/?q=search+term";)
 
 This example generates a URL to a static image in a Pylons public directory.
 Pylons serves the public directory in a way that bypasses Routes, so there's no
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/docs/index.rst 
new/Routes-2.2/docs/index.rst
--- old/Routes-2.1/docs/index.rst       2015-01-17 19:50:09.000000000 +0100
+++ new/Routes-2.2/docs/index.rst       2015-07-22 06:41:30.000000000 +0200
@@ -49,7 +49,7 @@
 ============
 
 Bug's can be reported on the `github issue tracker
-<https://github.com/bbangert/routes/issues`_. Note that routes is in 
maintenance
+<https://github.com/bbangert/routes/issues>`_. Note that routes is in 
maintenance
 mode so bug reports are unlikely to be worked on, pull requests will be applied
 if submitted with tests.
 
@@ -65,6 +65,7 @@
    restful
    uni_redirect_rest
    changes
+   todo
 
 .. toctree::
    :maxdepth: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/docs/introduction.rst 
new/Routes-2.2/docs/introduction.rst
--- old/Routes-2.1/docs/introduction.rst        2015-01-17 18:46:49.000000000 
+0100
+++ new/Routes-2.2/docs/introduction.rst        2015-07-22 06:40:34.000000000 
+0200
@@ -11,7 +11,7 @@
 bookmarks.  Likewise, if you want to reorganize your URLs and make a section
 into a subsection, you have to change your carefully-tested logic code.
 
-Routes takes a different approach. You determine your URL hierarchy and and
+Routes takes a different approach. You determine your URL hierarchy and 
 actions separately, and then link them together in whichever ways you decide.
 If you change your mind about a particular URL, just change one line in your
 route map and never touch your action logic. You can even have multiple URLs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/docs/porting.rst 
new/Routes-2.2/docs/porting.rst
--- old/Routes-2.1/docs/porting.rst     2015-01-17 18:46:49.000000000 +0100
+++ new/Routes-2.2/docs/porting.rst     2015-07-22 06:40:34.000000000 +0200
@@ -37,7 +37,7 @@
 matching an incoming URL, it is assumed that the URL path is the only string
 being matched. All query args should be stripped before matching::
 
-    m.connect('articles/{year}/{month}', controller='blog', action='view', 
year=None)
+    m.connect('/articles/{year}/{month}', controller='blog', action='view', 
year=None)
 
     m.match('/articles/2003/10')
     # {'controller':'blog', 'action':'view', 'year':'2003', 'month':'10'}
@@ -46,7 +46,7 @@
 differentiate between where the argument came from you can use routematch which
 will return the Route object that has all these details::
 
-    m.connect('articles/{year}/{month}', controller='blog', action='view', 
year=None)
+    m.connect('/articles/{year}/{month}', controller='blog', action='view', 
year=None)
 
     result = m.routematch('/articles/2003/10')
     # result is a tuple of the match dict and the Route object
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/docs/setting_up.rst 
new/Routes-2.2/docs/setting_up.rst
--- old/Routes-2.1/docs/setting_up.rst  2015-01-17 18:46:49.000000000 +0100
+++ new/Routes-2.2/docs/setting_up.rst  2015-07-22 06:40:34.000000000 +0200
@@ -84,7 +84,7 @@
 
 Another example::
 
-    m.connect("archives/{year}/{month}/{day}", controller="archives",
+    m.connect("/archives/{year}/{month}/{day}", controller="archives",
               action="view", year=2004,
               requirements=dict(year=R"\d{2,4}", month=R"\d{1,2}"))
 
@@ -344,6 +344,7 @@
 gives the parent a list of routes to add to its mapper.  These can be added
 with the ``.extend`` method, optionally providing a path prefix::
 
+    from routes.route import Route
     routes = [
         Route("index", "/index.html", controller="home", action="index"),
         ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/routes/mapper.py 
new/Routes-2.2/routes/mapper.py
--- old/Routes-2.1/routes/mapper.py     2015-01-17 23:15:14.000000000 +0100
+++ new/Routes-2.2/routes/mapper.py     2015-07-22 06:40:34.000000000 +0200
@@ -3,6 +3,7 @@
 import threading
 
 from repoze.lru import LRUCache
+import six
 
 from routes import request_config
 from routes.util import (
@@ -153,7 +154,7 @@
     def connect(self, *args, **kwargs):
         newkargs = {}
         newargs = args
-        for key, value in self.kwargs.items():
+        for key, value in six.iteritems(self.kwargs):
             if key == 'path_prefix':
                 if len(args) > 1:
                     newargs = (args[0], self.kwargs[key] + args[1])
@@ -547,8 +548,8 @@
         # Setup the lists of all controllers/actions we'll add each route
         # to. We include the '*' in the case that a generate contains a
         # controller/action that has no hardcodes
-        controllerlist = controllerlist.keys() + ['*']
-        actionlist = actionlist.keys() + ['*']
+        controllerlist = list(controllerlist.keys()) + ['*']
+        actionlist = list(actionlist.keys()) + ['*']
 
         # Go through our list again, assemble the controllers/actions we'll
         # add each route to. If its hardcoded, we only add it to that dict key.
@@ -562,7 +563,7 @@
             if 'controller' in route.hardcoded:
                 clist = [route.defaults['controller']]
             if 'action' in route.hardcoded:
-                alist = [unicode(route.defaults['action'])]
+                alist = [six.text_type(route.defaults['action'])]
             for controller in clist:
                 for action in alist:
                     actiondict = gendict.setdefault(controller, {})
@@ -592,7 +593,7 @@
             else:
                 clist = self.controller_scan
 
-        for key, val in self.maxkeys.iteritems():
+        for key, val in six.iteritems(self.maxkeys):
             for route in val:
                 route.makeregexp(clist)
 
@@ -758,8 +759,8 @@
         # If the URL didn't depend on the SCRIPT_NAME, we'll cache it
         # keyed by just by kargs; otherwise we need to cache it with
         # both SCRIPT_NAME and kargs:
-        cache_key = unicode(args).encode('utf8') + \
-            unicode(kargs).encode('utf8')
+        cache_key = six.text_type(args).encode('utf8') + \
+            six.text_type(kargs).encode('utf8')
 
         if self.urlcache is not None:
             cache_key_script_name = '%s:%s' % (script_name, cache_key)
@@ -782,7 +783,7 @@
 
         keys = frozenset(kargs.keys())
         cacheset = False
-        cachekey = unicode(keys)
+        cachekey = six.text_type(keys)
         cachelist = sortcache.get(cachekey)
         if args:
             keylist = args
@@ -1047,7 +1048,7 @@
         def swap(dct, newdct):
             """Swap the keys and values in the dict, and uppercase the values
             from the dict during the swap."""
-            for key, val in dct.iteritems():
+            for key, val in six.iteritems(dct):
                 newdct.setdefault(val.upper(), []).append(key)
             return newdct
         collection_methods = swap(collection, {})
@@ -1088,7 +1089,7 @@
             return opts
 
         # Add the routes for handling collection methods
-        for method, lst in collection_methods.iteritems():
+        for method, lst in six.iteritems(collection_methods):
             primary = (method != 'GET' and lst.pop(0)) or None
             route_options = requirements_for(method)
             for action in lst:
@@ -1112,7 +1113,7 @@
                      action='index', conditions={'method': ['GET']}, **options)
 
         # Add the routes that deal with new resource methods
-        for method, lst in new_methods.iteritems():
+        for method, lst in six.iteritems(new_methods):
             route_options = requirements_for(method)
             for action in lst:
                 name = "new_" + member_name
@@ -1131,7 +1132,7 @@
         requirements_regexp = '[^\/]+(?<!\\\)'
 
         # Add the routes that deal with member methods of a resource
-        for method, lst in member_methods.iteritems():
+        for method, lst in six.iteritems(member_methods):
             route_options = requirements_for(method)
             route_options['requirements'] = {'id': requirements_regexp}
             if method not in ['POST', 'GET', 'any']:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/routes/route.py 
new/Routes-2.2/routes/route.py
--- old/Routes-2.1/routes/route.py      2015-01-17 23:25:48.000000000 +0100
+++ new/Routes-2.2/routes/route.py      2015-07-22 06:40:34.000000000 +0200
@@ -1,10 +1,12 @@
 import re
 import sys
-import urllib
-
+from six.moves import urllib
 if sys.version < '2.4':
     from sets import ImmutableSet as frozenset
 
+import six
+from six.moves.urllib import parse as urlparse
+
 from routes.util import _url_quote as url_quote, _str_encode, as_unicode
 
 
@@ -87,18 +89,18 @@
     def _setup_route(self):
         # Build our routelist, and the keys used in the route
         self.routelist = routelist = self._pathkeys(self.routepath)
-        routekeys = frozenset([key['name'] for key in routelist
-                               if isinstance(key, dict)])
-        self.dotkeys = frozenset([key['name'] for key in routelist
-                                  if isinstance(key, dict) and
-                                  key['type'] == '.'])
+        routekeys = frozenset(key['name'] for key in routelist
+                              if isinstance(key, dict))
+        self.dotkeys = frozenset(key['name'] for key in routelist
+                                 if isinstance(key, dict) and
+                                 key['type'] == '.')
 
         if not self.minimization:
             self.make_full_route()
 
         # Build a req list with all the regexp requirements for our args
         self.req_regs = {}
-        for key, val in self.reqs.iteritems():
+        for key, val in six.iteritems(self.reqs):
             self.req_regs[key] = re.compile('^' + val + '$')
         # Update our defaults and set new default keys if needed. defaults
         # needs to be saved
@@ -114,9 +116,9 @@
 
         # Populate our hardcoded keys, these are ones that are set and don't
         # exist in the route
-        self.hardcoded = frozenset(
-            [key for key in self.maxkeys if key not in routekeys and
-             self.defaults[key] is not None])
+        self.hardcoded = frozenset(key for key in self.maxkeys
+                                   if key not in routekeys
+                                      and self.defaults[key] is not None)
 
         # Cache our default keys
         self._default_keys = frozenset(self.defaults.keys())
@@ -134,14 +136,14 @@
 
     def make_unicode(self, s):
         """Transform the given argument into a unicode string."""
-        if isinstance(s, unicode):
+        if isinstance(s, six.text_type):
             return s
         elif isinstance(s, bytes):
             return s.decode(self.encoding)
         elif callable(s):
             return s
         else:
-            return unicode(s)
+            return six.text_type(s)
 
     def _pathkeys(self, routepath):
         """Utility function to walk the route, and pull out the valid
@@ -253,8 +255,8 @@
         if 'action' not in routekeys and 'action' not in kargs \
            and not self.explicit:
             kargs['action'] = 'index'
-        defaultkeys = frozenset([key for key in kargs.keys()
-                                 if key not in reserved_keys])
+        defaultkeys = frozenset(key for key in kargs.keys()
+                                if key not in reserved_keys)
         for key in defaultkeys:
             if kargs[key] is not None:
                 defaults[key] = self.make_unicode(kargs[key])
@@ -266,8 +268,8 @@
         if 'id' in routekeys and 'id' not in defaults \
            and not self.explicit:
             defaults['id'] = None
-        newdefaultkeys = frozenset([key for key in defaults.keys()
-                                    if key not in reserved_keys])
+        newdefaultkeys = frozenset(key for key in defaults.keys()
+                                   if key not in reserved_keys)
 
         return (defaults, newdefaultkeys)
 
@@ -554,7 +556,7 @@
         matchdict = match.groupdict()
         result = {}
         extras = self._default_keys - frozenset(matchdict.keys())
-        for key, val in matchdict.iteritems():
+        for key, val in six.iteritems(matchdict):
             if key != 'path_info' and self.encoding:
                 # change back into python unicode objects from the URL
                 # representation
@@ -745,7 +747,7 @@
                     fragments.append((key, _str_encode(val, self.encoding)))
             if fragments:
                 url += '?'
-                url += urllib.urlencode(fragments)
+                url += urlparse.urlencode(fragments)
         elif _append_slash and not url.endswith('/'):
             url += '/'
         return url
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/routes/util.py 
new/Routes-2.2/routes/util.py
--- old/Routes-2.1/routes/util.py       2015-01-17 23:10:33.000000000 +0100
+++ new/Routes-2.2/routes/util.py       2015-07-22 06:40:34.000000000 +0200
@@ -7,7 +7,10 @@
 """
 import os
 import re
-import urllib
+
+import six
+from six.moves import urllib
+
 from routes import request_config
 
 
@@ -31,8 +34,8 @@
     """
     # Coerce any unicode args with the encoding
     encoding = mapper.encoding
-    for key, val in kargs.iteritems():
-        if isinstance(val, unicode):
+    for key, val in six.iteritems(kargs):
+        if isinstance(val, six.text_type):
             kargs[key] = val.encode(encoding)
 
     if mapper.explicit and mapper.sub_domains and not force_explicit:
@@ -46,7 +49,7 @@
         # If the controller name starts with '/', ignore route memory
         kargs['controller'] = kargs['controller'][1:]
         return kargs
-    elif controller_name and not kargs.has_key('action'):
+    elif controller_name and 'action' not in kargs:
         # Fill in an action if we don't have one, but have a controller
         kargs['action'] = 'index'
 
@@ -57,10 +60,10 @@
         memory_kargs = {}
 
     # Remove keys from memory and kargs if kargs has them as None
-    for key in [key for key in kargs.keys() if kargs[key] is None]:
+    empty_keys = [key for key, value in six.iteritems(kargs) if value is None]
+    for key in empty_keys:
         del kargs[key]
-        if memory_kargs.has_key(key):
-            del memory_kargs[key]
+        memory_kargs.pop(key, None)
 
     # Merge the new args on top of the memory args
     memory_kargs.update(kargs)
@@ -76,7 +79,7 @@
     on the current subdomain or lack therof."""
     if mapper.sub_domains:
         subdomain = kargs.pop('sub_domain', None)
-        if isinstance(subdomain, unicode):
+        if isinstance(subdomain, six.text_type):
             subdomain = str(subdomain)
 
         fullhost = environ.get('HTTP_HOST') or environ.get('SERVER_NAME')
@@ -107,27 +110,27 @@
 def _url_quote(string, encoding):
     """A Unicode handling version of urllib.quote."""
     if encoding:
-        if isinstance(string, unicode):
+        if isinstance(string, six.text_type):
             s = string.encode(encoding)
-        elif isinstance(string, str):
+        elif isinstance(string, six.text_type):
             # assume the encoding is already correct
             s = string
         else:
-            s = unicode(string).encode(encoding)
+            s = six.text_type(string).encode(encoding)
     else:
         s = str(string)
-    return urllib.quote(s, '/')
+    return urllib.parse.quote(s, '/')
 
 
 def _str_encode(string, encoding):
     if encoding:
-        if isinstance(string, unicode):
+        if isinstance(string, six.text_type):
             s = string.encode(encoding)
-        elif isinstance(string, str):
+        elif isinstance(string, six.text_type):
             # assume the encoding is already correct
             s = string
         else:
-            s = unicode(string).encode(encoding)
+            s = six.text_type(string).encode(encoding)
     return s
 
 
@@ -207,16 +210,16 @@
             if kargs:
                 url += '?'
                 query_args = []
-                for key, val in kargs.iteritems():
+                for key, val in six.iteritems(kargs):
                     if isinstance(val, (list, tuple)):
                         for value in val:
                             query_args.append("%s=%s" % (
-                                urllib.quote(unicode(key).encode(encoding)),
-                                urllib.quote(unicode(value).encode(encoding))))
+                                
urllib.parse.quote(six.text_type(key).encode(encoding)),
+                                
urllib.parse.quote(six.text_type(value).encode(encoding))))
                     else:
                         query_args.append("%s=%s" % (
-                            urllib.quote(unicode(key).encode(encoding)),
-                            urllib.quote(unicode(val).encode(encoding))))
+                            
urllib.parse.quote(six.text_type(key).encode(encoding)),
+                            
urllib.parse.quote(six.text_type(val).encode(encoding))))
                 url += '&'.join(query_args)
     environ = getattr(config, 'environ', {})
     if 'wsgiorg.routing_args' not in environ:
@@ -352,16 +355,16 @@
                 if kargs:
                     url += '?'
                     query_args = []
-                    for key, val in kargs.iteritems():
+                    for key, val in six.iteritems(kargs):
                         if isinstance(val, (list, tuple)):
                             for value in val:
                                 query_args.append("%s=%s" % (
-                                    
urllib.quote(unicode(key).encode(encoding)),
-                                    
urllib.quote(unicode(value).encode(encoding))))
+                                    
urllib.parse.quote(six.text_type(key).encode(encoding)),
+                                    
urllib.parse.quote(six.text_type(value).encode(encoding))))
                         else:
                             query_args.append("%s=%s" % (
-                                urllib.quote(unicode(key).encode(encoding)),
-                                urllib.quote(unicode(val).encode(encoding))))
+                                
urllib.parse.quote(six.text_type(key).encode(encoding)),
+                                
urllib.parse.quote(six.text_type(val).encode(encoding))))
                     url += '&'.join(query_args)
         if not static:
             route_args = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/setup.cfg new/Routes-2.2/setup.cfg
--- old/Routes-2.1/setup.cfg    2015-01-18 00:20:51.000000000 +0100
+++ new/Routes-2.2/setup.cfg    2015-07-22 06:44:43.000000000 +0200
@@ -1,5 +1,7 @@
-[bdist_wheel]
-universal = 1
+[egg_info]
+tag_build = 
+tag_date = 0
+tag_svn_revision = 0
 
 [nosetests]
 verbose = True
@@ -11,10 +13,4 @@
 cover-html = True
 cover-html-dir = html_coverage
 cover-package = routes
-py3where = build
-
-[egg_info]
-tag_svn_revision = 0
-tag_date = 0
-tag_build = 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Routes-2.1/setup.py new/Routes-2.2/setup.py
--- old/Routes-2.1/setup.py     2015-01-17 23:56:37.000000000 +0100
+++ new/Routes-2.2/setup.py     2015-07-22 06:42:53.000000000 +0200
@@ -1,4 +1,4 @@
-__version__ = '2.1'
+__version__ = '2.2'
 
 import io
 import os
@@ -18,7 +18,6 @@
     }
 
 if PY3:
-    extra_options["use_2to3"] = True
     if "test" in sys.argv or "develop" in sys.argv:
         for root, directories, files in os.walk("tests"):
             for directory in directories:
@@ -54,6 +53,7 @@
       zip_safe=False,
       tests_require=['nose', 'webtest', 'webob', 'coverage'],
       install_requires=[
+          "six",
           "repoze.lru>=0.3"
       ],
       **extra_options


Reply via email to