Skip to content

Commit 114b161

Browse files
committed
Merge branch 'issue_158' into v0.14.x
2 parents 7448097 + 0971652 commit 114b161

File tree

4 files changed

+32
-9
lines changed

4 files changed

+32
-9
lines changed

src/future/standard_library/__init__.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -462,11 +462,11 @@ def install_aliases():
462462

463463
# Hack for urllib so it appears to have the same structure on Py2 as on Py3
464464
import urllib
465-
from future.moves.urllib import request
466-
from future.moves.urllib import response
467-
from future.moves.urllib import parse
468-
from future.moves.urllib import error
469-
from future.moves.urllib import robotparser
465+
from future.backports.urllib import request
466+
from future.backports.urllib import response
467+
from future.backports.urllib import parse
468+
from future.backports.urllib import error
469+
from future.backports.urllib import robotparser
470470
urllib.request = request
471471
urllib.response = response
472472
urllib.parse = parse

tests/test_future/test_imports_urllib.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import sys
44
from future.tests.base import unittest
5+
from future.standard_library import install_aliases
6+
57

68
class ImportUrllibTest(unittest.TestCase):
79
def test_urllib(self):
@@ -16,6 +18,27 @@ def test_urllib(self):
1618
import urllib.response
1719
self.assertEqual(orig_file, urllib.__file__)
1820

21+
def test_issue_158(self):
22+
"""
23+
CherryPy conditional import in _cpcompat.py: issue 158
24+
"""
25+
install_aliases()
26+
try:
27+
from urllib.parse import unquote as parse_unquote
28+
29+
def unquote_qs(atom, encoding, errors='strict'):
30+
return parse_unquote(
31+
atom.replace('+', ' '),
32+
encoding=encoding,
33+
errors=errors)
34+
except ImportError:
35+
from urllib import unquote as parse_unquote
36+
37+
def unquote_qs(atom, encoding, errors='strict'):
38+
return parse_unquote(atom.replace('+', ' ')).decode(encoding, errors)
39+
self.assertEqual(unquote_qs('/%7Econnolly/', 'utf-8'),
40+
'/~connolly/')
41+
1942

2043
if __name__ == '__main__':
2144
unittest.main()

tests/test_future/test_urllib.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1005,10 +1005,11 @@ def test_nonstring_values(self):
10051005
self.assertEqual("a=None", urllib_parse.urlencode({"a": None}))
10061006

10071007
def test_nonstring_seq_values(self):
1008+
from future.backports import OrderedDict
10081009
self.assertEqual("a=1&a=2", urllib_parse.urlencode({"a": [1, 2]}, True))
10091010
self.assertEqual("a=None&a=a",
10101011
urllib_parse.urlencode({"a": [None, "a"]}, True))
1011-
data = collections.OrderedDict([("a", 1), ("b", 1)])
1012+
data = OrderedDict([("a", 1), ("b", 1)])
10121013
self.assertEqual("a=a&a=b",
10131014
urllib_parse.urlencode({"a": data}, True))
10141015

tests/test_future/test_urllib2.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
import array
66
import sys
77

8-
from future.standard_library import import_, install_aliases
8+
import http.client
9+
from future.standard_library import install_aliases
910
from future.backports.test import support
1011
import future.backports.urllib.request as urllib_request
1112
# The proxy bypass method imported below has logic specific to the OSX
@@ -448,8 +449,6 @@ def reset(self):
448449
self.requests = []
449450
def http_open(self, req):
450451
import future.backports.email as email
451-
from future import standard_library
452-
http = import_('http.client', backport=True)
453452
import copy
454453
self.requests.append(copy.deepcopy(req))
455454
if self._count == 0:

0 commit comments

Comments
 (0)