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