File remove-six.patch of Package python-Routes

From 44d96530bb52642a52e2a14921ebda6af0f7afc5 Mon Sep 17 00:00:00 2001
From: Alexandre Detiste <alexandre.detiste@gmail.com>
Date: Fri, 20 Oct 2023 15:39:04 +0200
Subject: [PATCH] remove python2 support

---
 routes/mapper.py                              | 27 +++++-------
 routes/route.py                               | 12 +++--
 routes/util.py                                | 44 +++++++++----------
 setup.py                                      | 13 ++----
 tests/test_functional/test_generation.py      |  3 +-
 tests/test_functional/test_nonminimization.py |  2 +-
 tests/test_functional/test_recognition.py     |  3 +-
 7 files changed, 45 insertions(+), 59 deletions(-)

diff --git a/routes/mapper.py b/routes/mapper.py
index 72981cb..9de7e60 100644
--- a/routes/mapper.py
+++ b/routes/mapper.py
@@ -5,7 +5,6 @@
 import threading
 
 from repoze.lru import LRUCache
-import six
 
 from routes import request_config
 from routes.util import (
@@ -168,7 +167,7 @@ def connect(self, routename, path=None, **kwargs):
         newkargs = {}
         _routename = routename
         _path = path
-        for key, value in six.iteritems(self.kwargs):
+        for key, value in self.kwargs.items():
             if key == 'path_prefix':
                 if path is not None:
                     # if there's a name_prefix, add it to the route name
@@ -595,7 +594,7 @@ def _create_gens(self):
             if 'controller' in route.hardcoded:
                 clist = [route.defaults['controller']]
             if 'action' in route.hardcoded:
-                alist = [six.text_type(route.defaults['action'])]
+                alist = [str(route.defaults['action'])]
             for controller in clist:
                 for action in alist:
                     actiondict = gendict.setdefault(controller, {})
@@ -625,7 +624,7 @@ def _create_regs(self, clist=None):
             else:
                 clist = self.controller_scan
 
-        for key, val in six.iteritems(self.maxkeys):
+        for key, val in self.maxkeys.items():
             for route in val:
                 route.makeregexp(clist)
 
@@ -801,15 +800,11 @@ def generate(self, *args, **kargs):
         # 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 = six.text_type(args).encode('utf8') + \
-            six.text_type(kargs).encode('utf8')
+        cache_key = str(args).encode('utf8') + str(kargs).encode('utf8')
 
         if self.urlcache is not None:
-            if six.PY3:
-                cache_key_script_name = b':'.join((script_name.encode('utf-8'),
-                                                   cache_key))
-            else:
-                cache_key_script_name = '%s:%s' % (script_name, cache_key)
+            cache_key_script_name = b':'.join((script_name.encode('utf-8'),
+                                               cache_key))
 
             # Check the url cache to see if it exists, use it if it does
             val = self.urlcache.get(cache_key_script_name, self)
@@ -829,7 +824,7 @@ def generate(self, *args, **kargs):
 
         keys = frozenset(kargs.keys())
         cacheset = False
-        cachekey = six.text_type(keys)
+        cachekey = str(keys)
         cachelist = sortcache.get(cachekey)
         if args:
             keylist = args
@@ -1110,7 +1105,7 @@ def resource(self, member_name, collection_name, **kwargs):
         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 six.iteritems(dct):
+            for key, val in dct.items():
                 newdct.setdefault(val.upper(), []).append(key)
             return newdct
         collection_methods = swap(collection, {})
@@ -1153,7 +1148,7 @@ def requirements_for(meth):
             return opts
 
         # Add the routes for handling collection methods
-        for method, lst in six.iteritems(collection_methods):
+        for method, lst in collection_methods.items():
             primary = (method != 'GET' and lst.pop(0)) or None
             route_options = requirements_for(method)
             for action in lst:
@@ -1177,7 +1172,7 @@ def requirements_for(meth):
                      action='index', conditions={'method': ['GET']}, **options)
 
         # Add the routes that deal with new resource methods
-        for method, lst in six.iteritems(new_methods):
+        for method, lst in new_methods.items():
             route_options = requirements_for(method)
             for action in lst:
                 name = "new_" + member_name
@@ -1196,7 +1191,7 @@ def requirements_for(meth):
         requirements_regexp = '[^\\/]+(?<!\\\\)'
 
         # Add the routes that deal with member methods of a resource
-        for method, lst in six.iteritems(member_methods):
+        for method, lst in member_methods.items():
             route_options = requirements_for(method)
             route_options['requirements'] = {'id': requirements_regexp}
             if method not in ['POST', 'GET', 'any']:
diff --git a/routes/route.py b/routes/route.py
index 719636a..b3f5dca 100644
--- a/routes/route.py
+++ b/routes/route.py
@@ -1,8 +1,6 @@
 import re
 import sys
-
-import six
-from six.moves.urllib import parse as urlparse
+from urllib import parse as urlparse
 
 from routes.util import _url_quote as url_quote, _str_encode, as_unicode
 
@@ -97,7 +95,7 @@ def _setup_route(self):
 
         # Build a req list with all the regexp requirements for our args
         self.req_regs = {}
-        for key, val in six.iteritems(self.reqs):
+        for key, val in self.reqs.items():
             self.req_regs[key] = re.compile('^' + val + '$')
         # Update our defaults and set new default keys if needed. defaults
         # needs to be saved
@@ -133,14 +131,14 @@ def make_full_route(self):
 
     def make_unicode(self, s):
         """Transform the given argument into a unicode string."""
-        if isinstance(s, six.text_type):
+        if isinstance(s, str):
             return s
         elif isinstance(s, bytes):
             return s.decode(self.encoding)
         elif callable(s):
             return s
         else:
-            return six.text_type(s)
+            return str(s)
 
     def _pathkeys(self, routepath):
         """Utility function to walk the route, and pull out the valid
@@ -567,7 +565,7 @@ def match(self, url, environ=None, sub_domains=False,
         matchdict = match.groupdict()
         result = {}
         extras = self._default_keys - frozenset(matchdict.keys())
-        for key, val in six.iteritems(matchdict):
+        for key, val in matchdict.items():
             if key != 'path_info' and self.encoding:
                 # change back into python unicode objects from the URL
                 # representation
diff --git a/routes/util.py b/routes/util.py
index 54c8951..be229ae 100644
--- a/routes/util.py
+++ b/routes/util.py
@@ -7,9 +7,7 @@
 """
 import os
 import re
-
-import six
-from six.moves import urllib
+import urllib
 
 from routes import request_config
 
@@ -34,8 +32,8 @@ def _screenargs(kargs, mapper, environ, force_explicit=False):
     """
     # Coerce any unicode args with the encoding
     encoding = mapper.encoding
-    for key, val in six.iteritems(kargs):
-        if isinstance(val, six.text_type):
+    for key, val in kargs.items():
+        if isinstance(val, str):
             kargs[key] = val.encode(encoding)
 
     if mapper.explicit and mapper.sub_domains and not force_explicit:
@@ -60,7 +58,7 @@ def _screenargs(kargs, mapper, environ, force_explicit=False):
         memory_kargs = {}
 
     # Remove keys from memory and kargs if kargs has them as None
-    empty_keys = [key for key, value in six.iteritems(kargs) if value is None]
+    empty_keys = [key for key, value in kargs.items() if value is None]
     for key in empty_keys:
         del kargs[key]
         memory_kargs.pop(key, None)
@@ -79,7 +77,7 @@ def _subdomain_check(kargs, mapper, environ):
     on the current subdomain or lack therof."""
     if mapper.sub_domains:
         subdomain = kargs.pop('sub_domain', None)
-        if isinstance(subdomain, six.text_type):
+        if isinstance(subdomain, str):
             subdomain = str(subdomain)
 
         fullhost = environ.get('HTTP_HOST') or environ.get('SERVER_NAME')
@@ -112,13 +110,13 @@ def _subdomain_check(kargs, mapper, environ):
 def _url_quote(string, encoding):
     """A Unicode handling version of urllib.quote."""
     if encoding:
-        if isinstance(string, six.text_type):
+        if isinstance(string, str):
             s = string.encode(encoding)
-        elif isinstance(string, six.text_type):
+        elif isinstance(string, str):
             # assume the encoding is already correct
             s = string
         else:
-            s = six.text_type(string).encode(encoding)
+            s = str(string).encode(encoding)
     else:
         s = str(string)
     return urllib.parse.quote(s, '/')
@@ -126,13 +124,13 @@ def _url_quote(string, encoding):
 
 def _str_encode(string, encoding):
     if encoding:
-        if isinstance(string, six.text_type):
+        if isinstance(string, str):
             s = string.encode(encoding)
-        elif isinstance(string, six.text_type):
+        elif isinstance(string, str):
             # assume the encoding is already correct
             s = string
         else:
-            s = six.text_type(string).encode(encoding)
+            s = str(string).encode(encoding)
     return s
 
 
@@ -216,16 +214,16 @@ def url_for(*args, **kargs):
             if kargs:
                 url += '?'
                 query_args = []
-                for key, val in six.iteritems(kargs):
+                for key, val in kargs.items():
                     if isinstance(val, (list, tuple)):
                         for value in val:
                             query_args.append("%s=%s" % (
-                                urllib.parse.quote(six.text_type(key).encode(encoding)),
-                                urllib.parse.quote(six.text_type(value).encode(encoding))))
+                                urllib.parse.quote(str(key).encode(encoding)),
+                                urllib.parse.quote(str(value).encode(encoding))))
                     else:
                         query_args.append("%s=%s" % (
-                            urllib.parse.quote(six.text_type(key).encode(encoding)),
-                            urllib.parse.quote(six.text_type(val).encode(encoding))))
+                            urllib.parse.quote(str(key).encode(encoding)),
+                            urllib.parse.quote(str(val).encode(encoding))))
                 url += '&'.join(query_args)
     environ = getattr(config, 'environ', {})
     if 'wsgiorg.routing_args' not in environ:
@@ -366,16 +364,16 @@ def __call__(self, *args, **kargs):
                 if kargs:
                     url += '?'
                     query_args = []
-                    for key, val in six.iteritems(kargs):
+                    for key, val in kargs.items():
                         if isinstance(val, (list, tuple)):
                             for value in val:
                                 query_args.append("%s=%s" % (
-                                    urllib.parse.quote(six.text_type(key).encode(encoding)),
-                                    urllib.parse.quote(six.text_type(value).encode(encoding))))
+                                    urllib.parse.quote(str(key).encode(encoding)),
+                                    urllib.parse.quote(str(value).encode(encoding))))
                         else:
                             query_args.append("%s=%s" % (
-                                urllib.parse.quote(six.text_type(key).encode(encoding)),
-                                urllib.parse.quote(six.text_type(val).encode(encoding))))
+                                urllib.parse.quote(str(key).encode(encoding)),
+                                urllib.parse.quote(str(val).encode(encoding))))
                     url += '&'.join(query_args)
         if not static:
             route_args = []
diff --git a/setup.py b/setup.py
index 18d886f..b6052cc 100644
--- a/setup.py
+++ b/setup.py
@@ -11,7 +11,6 @@
     README = f.read()
 with io.open(os.path.join(here, 'CHANGELOG.rst'), encoding='utf8') as f:
     CHANGES = f.read()
-PY3 = sys.version_info[0] == 3
 
 extra_options = {
     "packages": find_packages(),
@@ -24,11 +23,10 @@
 }
 extras_require['docs'] = ['Sphinx'] + extras_require['middleware']
 
-if PY3:
-    if "test" in sys.argv or "develop" in sys.argv:
-        for root, directories, files in os.walk("tests"):
-            for directory in directories:
-                extra_options["packages"].append(os.path.join(root, directory))
+if "test" in sys.argv or "develop" in sys.argv:
+    for root, directories, files in os.walk("tests"):
+        for directory in directories:
+            extra_options["packages"].append(os.path.join(root, directory))
 
 setup(name="Routes",
       version=__version__,
@@ -42,8 +40,6 @@
                    "Programming Language :: Python :: Implementation :: PyPy",
                    "Programming Language :: Python :: Implementation :: CPython",
                    'Programming Language :: Python',
-                   "Programming Language :: Python :: 2",
-                   "Programming Language :: Python :: 2.7",
                    "Programming Language :: Python :: 3",
                    "Programming Language :: Python :: 3.5",
                    "Programming Language :: Python :: 3.6",
@@ -67,7 +63,6 @@
       zip_safe=False,
       tests_require=["soupsieve<2.0", 'nose', 'webtest', 'webob', 'coverage'],
       install_requires=[
-          "six",
           "repoze.lru>=0.3"
       ],
       extras_require=extras_require,
diff --git a/tests/test_functional/test_generation.py b/tests/test_functional/test_generation.py
index b461b5f..cb6732d 100644
--- a/tests/test_functional/test_generation.py
+++ b/tests/test_functional/test_generation.py
@@ -1,6 +1,5 @@
 """test_generation"""
-import sys, time, unittest
-from six.moves import urllib
+import sys, time, unittest, urllib
 
 from nose.tools import eq_, assert_raises
 from routes import *
diff --git a/tests/test_functional/test_nonminimization.py b/tests/test_functional/test_nonminimization.py
index 1b152c4..7f2d0e1 100644
--- a/tests/test_functional/test_nonminimization.py
+++ b/tests/test_functional/test_nonminimization.py
@@ -1,5 +1,5 @@
 """Test non-minimization recognition"""
-from six.moves import urllib
+import urllib
 
 from nose.tools import eq_
 
diff --git a/tests/test_functional/test_recognition.py b/tests/test_functional/test_recognition.py
index 03fe6a7..6295979 100644
--- a/tests/test_functional/test_recognition.py
+++ b/tests/test_functional/test_recognition.py
@@ -3,7 +3,8 @@
 import sys
 import time
 import unittest
-from six.moves import urllib
+import urllib
+
 from nose.tools import eq_, assert_raises
 from routes import *
 from routes.util import RoutesException
openSUSE Build Service is sponsored by