Merge lp:~cjwatson/lazr.restful/six-urllib into lp:lazr.restful

Proposed by Colin Watson
Status: Merged
Merged at revision: 235
Proposed branch: lp:~cjwatson/lazr.restful/six-urllib
Merge into: lp:lazr.restful
Diff against target: 338 lines (+37/-33)
16 files modified
src/lazr/restful/docs/multiversion.rst (+1/-1)
src/lazr/restful/docs/webservice-declarations.rst (+1/-1)
src/lazr/restful/docs/webservice.rst (+2/-3)
src/lazr/restful/example/base/tests/collection.txt (+1/-2)
src/lazr/restful/example/base/tests/entry.txt (+1/-1)
src/lazr/restful/example/base/tests/field.txt (+1/-1)
src/lazr/restful/example/base/tests/hostedfile.txt (+1/-1)
src/lazr/restful/example/base/tests/representation-cache.txt (+1/-1)
src/lazr/restful/example/base/tests/service.txt (+1/-1)
src/lazr/restful/example/base/tests/wadl.txt (+1/-1)
src/lazr/restful/example/base/traversal.py (+1/-1)
src/lazr/restful/marshallers.py (+2/-2)
src/lazr/restful/publisher.py (+8/-7)
src/lazr/restful/simple.py (+6/-4)
src/lazr/restful/tales.py (+2/-2)
src/lazr/restful/testing/webservice.py (+7/-4)
To merge this branch: bzr merge lp:~cjwatson/lazr.restful/six-urllib
Reviewer Review Type Date Requested Status
Ioana Lasc (community) Approve
LAZR Developers Pending
Review via email: mp+378515@code.launchpad.net

Commit message

Import urllib and friends from six.moves.

Description of the change

This part of the standard library was rearranged in Python 3.

To post a comment you must log in.
Revision history for this message
Ioana Lasc (ilasc) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/lazr/restful/docs/multiversion.rst'
--- src/lazr/restful/docs/multiversion.rst 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/docs/multiversion.rst 2020-02-04 13:19:13 +0000
@@ -163,7 +163,7 @@
163163
164Here's a simple implementation of IContact.164Here's a simple implementation of IContact.
165165
166 >>> from urllib import quote166 >>> from six.moves.urllib.parse import quote
167 >>> from zope.interface import implementer167 >>> from zope.interface import implementer
168 >>> from lazr.restful.security import protect_schema168 >>> from lazr.restful.security import protect_schema
169 >>> @implementer(IContact, ILocation)169 >>> @implementer(IContact, ILocation)
170170
=== modified file 'src/lazr/restful/docs/webservice-declarations.rst'
--- src/lazr/restful/docs/webservice-declarations.rst 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/docs/webservice-declarations.rst 2020-02-04 13:19:13 +0000
@@ -1291,7 +1291,7 @@
1291(For the URL generation to work, we need to register an IAbsoluteURL1291(For the URL generation to work, we need to register an IAbsoluteURL
1292adapter and set the request as the current interaction.)1292adapter and set the request as the current interaction.)
12931293
1294 >>> from urllib import quote1294 >>> from six.moves.urllib.parse import quote
1295 >>> from zope.component import provideAdapter1295 >>> from zope.component import provideAdapter
1296 >>> from zope.traversing.browser.interfaces import IAbsoluteURL1296 >>> from zope.traversing.browser.interfaces import IAbsoluteURL
1297 >>> from zope.publisher.interfaces.http import IHTTPApplicationRequest1297 >>> from zope.publisher.interfaces.http import IHTTPApplicationRequest
12981298
=== modified file 'src/lazr/restful/docs/webservice.rst'
--- src/lazr/restful/docs/webservice.rst 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/docs/webservice.rst 2020-02-04 13:19:13 +0000
@@ -114,7 +114,7 @@
114interface.114interface.
115115
116116
117 >>> from urllib import quote117 >>> from six.moves.urllib.parse import quote
118 >>> from zope.component import (118 >>> from zope.component import (
119 ... adapter, getSiteManager, getMultiAdapter)119 ... adapter, getSiteManager, getMultiAdapter)
120 >>> from zope.interface import implementer120 >>> from zope.interface import implementer
@@ -201,7 +201,7 @@
201201
202 >>> protect_schema(Cookbook, ICookbook, write_permission=CheckerPublic)202 >>> protect_schema(Cookbook, ICookbook, write_permission=CheckerPublic)
203203
204 >>> from urllib import unquote204 >>> from six.moves.urllib.parse import unquote
205 >>> @implementer(IPublishTraverse)205 >>> @implementer(IPublishTraverse)
206 ... @adapter(ICookbook, IBrowserRequest)206 ... @adapter(ICookbook, IBrowserRequest)
207 ... class CookbookTraversal:207 ... class CookbookTraversal:
@@ -2090,7 +2090,6 @@
2090activate that operation and delete the entry by sending a DELETE2090activate that operation and delete the entry by sending a DELETE
2091request.2091request.
20922092
2093 >>> from urllib import quote
2094 >>> recipe_url = quote('/beta/cookbooks/Mastering the Art of '2093 >>> recipe_url = quote('/beta/cookbooks/Mastering the Art of '
2095 ... 'French Cooking/recipes/Foies de voilaille en aspic')2094 ... 'French Cooking/recipes/Foies de voilaille en aspic')
20962095
20972096
=== modified file 'src/lazr/restful/example/base/tests/collection.txt'
--- src/lazr/restful/example/base/tests/collection.txt 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/example/base/tests/collection.txt 2020-02-04 13:19:13 +0000
@@ -85,7 +85,7 @@
8585
86A collection may be empty.86A collection may be empty.
8787
88 >>> from urllib import quote88 >>> from six.moves.urllib.parse import quote
89 >>> url = quote("/cookbooks/Cooking Without Recipes/recipes")89 >>> url = quote("/cookbooks/Cooking Without Recipes/recipes")
90 >>> result = webservice.get(url)90 >>> result = webservice.get(url)
91 >>> list(result.jsonBody()['entries'])91 >>> list(result.jsonBody()['entries'])
@@ -99,7 +99,6 @@
99them has been marked private. The private one is hidden from view in99them has been marked private. The private one is hidden from view in
100collections.100collections.
101101
102 >>> from urllib import quote
103 >>> url = quote("/cookbooks/James Beard's American Cookery/recipes")102 >>> url = quote("/cookbooks/James Beard's American Cookery/recipes")
104 >>> output = webservice.get(url).jsonBody()103 >>> output = webservice.get(url).jsonBody()
105 >>> output['total_size']104 >>> output['total_size']
106105
=== modified file 'src/lazr/restful/example/base/tests/entry.txt'
--- src/lazr/restful/example/base/tests/entry.txt 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/example/base/tests/entry.txt 2020-02-04 13:19:13 +0000
@@ -22,7 +22,7 @@
2222
23Here we see that the cookbook 'Everyday Greens' is a vegetarian cookbook.23Here we see that the cookbook 'Everyday Greens' is a vegetarian cookbook.
2424
25 >>> from urllib import quote25 >>> from six.moves.urllib.parse import quote
26 >>> greens_url = quote("/cookbooks/Everyday Greens")26 >>> greens_url = quote("/cookbooks/Everyday Greens")
27 >>> webservice.get(greens_url).jsonBody()['cuisine']27 >>> webservice.get(greens_url).jsonBody()['cuisine']
28 u'Vegetarian'28 u'Vegetarian'
2929
=== modified file 'src/lazr/restful/example/base/tests/field.txt'
--- src/lazr/restful/example/base/tests/field.txt 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/example/base/tests/field.txt 2020-02-04 13:19:13 +0000
@@ -8,7 +8,7 @@
8 >>> from lazr.restful.testing.webservice import WebServiceCaller8 >>> from lazr.restful.testing.webservice import WebServiceCaller
9 >>> webservice = WebServiceCaller(domain='cookbooks.dev')9 >>> webservice = WebServiceCaller(domain='cookbooks.dev')
1010
11 >>> from urllib import quote11 >>> from six.moves.urllib.parse import quote
12 >>> cookbook_url = quote("/cookbooks/The Joy of Cooking")12 >>> cookbook_url = quote("/cookbooks/The Joy of Cooking")
13 >>> field_url = cookbook_url + "/description"13 >>> field_url = cookbook_url + "/description"
1414
1515
=== modified file 'src/lazr/restful/example/base/tests/hostedfile.txt'
--- src/lazr/restful/example/base/tests/hostedfile.txt 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/example/base/tests/hostedfile.txt 2020-02-04 13:19:13 +0000
@@ -15,7 +15,7 @@
1515
16A cookbook starts out with a link to a cover image, but no actual cover.16A cookbook starts out with a link to a cover image, but no actual cover.
1717
18 >>> from urllib import quote18 >>> from six.moves.urllib.parse import quote
19 >>> greens_url = quote("/cookbooks/Everyday Greens")19 >>> greens_url = quote("/cookbooks/Everyday Greens")
20 >>> greens = webservice.get(greens_url).jsonBody()20 >>> greens = webservice.get(greens_url).jsonBody()
21 >>> greens['cover_link']21 >>> greens['cover_link']
2222
=== modified file 'src/lazr/restful/example/base/tests/representation-cache.txt'
--- src/lazr/restful/example/base/tests/representation-cache.txt 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/example/base/tests/representation-cache.txt 2020-02-04 13:19:13 +0000
@@ -209,7 +209,7 @@
209 >>> print(dictionary.keys()[0])209 >>> print(dictionary.keys()[0])
210 http://.../devel/cookbooks/Everyday%20Greens,application/json210 http://.../devel/cookbooks/Everyday%20Greens,application/json
211211
212 >>> from urllib import quote212 >>> from six.moves.urllib.parse import quote
213 >>> greens_url = quote("/cookbooks/Everyday Greens")213 >>> greens_url = quote("/cookbooks/Everyday Greens")
214 >>> ignore = webservice.named_post(214 >>> ignore = webservice.named_post(
215 ... greens_url, "replace_cover", cover="foo")215 ... greens_url, "replace_cover", cover="foo")
216216
=== modified file 'src/lazr/restful/example/base/tests/service.txt'
--- src/lazr/restful/example/base/tests/service.txt 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/example/base/tests/service.txt 2020-02-04 13:19:13 +0000
@@ -59,7 +59,7 @@
59 Allow: GET POST59 Allow: GET POST
60 ...60 ...
6161
62 >>> from urllib import quote62 >>> from six.moves.urllib.parse import quote
63 >>> print(webservice.delete(quote("/dishes/Roast chicken")))63 >>> print(webservice.delete(quote("/dishes/Roast chicken")))
64 HTTP/1.1 405 Method Not Allowed...64 HTTP/1.1 405 Method Not Allowed...
65 Allow: GET PUT PATCH65 Allow: GET PUT PATCH
6666
=== modified file 'src/lazr/restful/example/base/tests/wadl.txt'
--- src/lazr/restful/example/base/tests/wadl.txt 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/example/base/tests/wadl.txt 2020-02-04 13:19:13 +0000
@@ -12,7 +12,7 @@
12Let's get a WADL representation of an entry resource (in this case, a12Let's get a WADL representation of an entry resource (in this case, a
13cookbook), and see what's inside.13cookbook), and see what's inside.
1414
15 >>> from urllib import quote15 >>> from six.moves.urllib.parse import quote
16 >>> from lazr.restful.testing.webservice import WebServiceCaller16 >>> from lazr.restful.testing.webservice import WebServiceCaller
17 >>> webservice = WebServiceCaller(domain='cookbooks.dev')17 >>> webservice = WebServiceCaller(domain='cookbooks.dev')
18 >>> entry_url = quote("/cookbooks/The Joy of Cooking")18 >>> entry_url = quote("/cookbooks/The Joy of Cooking")
1919
=== modified file 'src/lazr/restful/example/base/traversal.py'
--- src/lazr/restful/example/base/traversal.py 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/example/base/traversal.py 2020-02-04 13:19:13 +0000
@@ -13,7 +13,7 @@
13 ]13 ]
1414
1515
16from urllib import unquote16from six.moves.urllib.parse import unquote
17from zope.publisher.interfaces import IPublishTraverse, NotFound17from zope.publisher.interfaces import IPublishTraverse, NotFound
18from zope.publisher.interfaces.browser import IDefaultBrowserLayer18from zope.publisher.interfaces.browser import IDefaultBrowserLayer
19from zope.traversing.browser import absoluteURL, AbsoluteURL19from zope.traversing.browser import absoluteURL, AbsoluteURL
2020
=== modified file 'src/lazr/restful/marshallers.py'
--- src/lazr/restful/marshallers.py 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/marshallers.py 2020-02-04 13:19:13 +0000
@@ -27,9 +27,9 @@
27from datetime import datetime27from datetime import datetime
28import pytz28import pytz
29from StringIO import StringIO29from StringIO import StringIO
30import urllib
3130
32import simplejson31import simplejson
32from six.moves.urllib.parse import unquote
3333
34from zope.datetime import (34from zope.datetime import (
35 DateTimeError,35 DateTimeError,
@@ -113,7 +113,7 @@
113 or fragment is not None):113 or fragment is not None):
114 raise NotFound(self, url, self.request)114 raise NotFound(self, url, self.request)
115115
116 path_parts = [urllib.unquote(part) for part in path.split('/')]116 path_parts = [unquote(part) for part in path.split('/')]
117 path_parts.pop(0)117 path_parts.pop(0)
118 path_parts.reverse()118 path_parts.reverse()
119 request = config.createRequest(StringIO(), {'PATH_INFO': path})119 request = config.createRequest(StringIO(), {'PATH_INFO': path})
120120
=== modified file 'src/lazr/restful/publisher.py'
--- src/lazr/restful/publisher.py 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/publisher.py 2020-02-04 13:19:13 +0000
@@ -17,9 +17,11 @@
1717
1818
19import simplejson19import simplejson
20import urllib20from six.moves.urllib.parse import (
21import urlparse21 quote,
2222 urlsplit,
23 urlunsplit,
24 )
23from zope.component import (25from zope.component import (
24 adapter,26 adapter,
25 getMultiAdapter,27 getMultiAdapter,
@@ -229,20 +231,19 @@
229 location = request.response.getHeader("Location", None)231 location = request.response.getHeader("Location", None)
230 if location is not None:232 if location is not None:
231 accept = request.getHeader("Accept", "application/json")233 accept = request.getHeader("Accept", "application/json")
232 qs_append = "ws.accept=" + urllib.quote(accept)234 qs_append = "ws.accept=" + quote(accept)
233 # We don't use the URI class because it will raise235 # We don't use the URI class because it will raise
234 # an exception if the Location contains invalid236 # an exception if the Location contains invalid
235 # characters. Invalid characters may indeed be a237 # characters. Invalid characters may indeed be a
236 # problem, but let the problem be handled238 # problem, but let the problem be handled
237 # somewhere else.239 # somewhere else.
238 (scheme, netloc, path, query, fragment) = (240 (scheme, netloc, path, query, fragment) = (
239 urlparse.urlsplit(location))241 urlsplit(location))
240 if query == '':242 if query == '':
241 query = qs_append243 query = qs_append
242 else:244 else:
243 query += '&' + qs_append245 query += '&' + qs_append
244 uri = urlparse.urlunsplit(246 uri = urlunsplit((scheme, netloc, path, query, fragment))
245 (scheme, netloc, path, query, fragment))
246 request.response.setHeader("Location", str(uri))247 request.response.setHeader("Location", str(uri))
247 return value248 return value
248249
249250
=== modified file 'src/lazr/restful/simple.py'
--- src/lazr/restful/simple.py 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/simple.py 2020-02-04 13:19:13 +0000
@@ -19,8 +19,11 @@
19 ]19 ]
2020
21import traceback21import traceback
22import urllib
2322
23from six.moves.urllib.parse import (
24 quote,
25 unquote,
26 )
24from zope.component import (27from zope.component import (
25 adapter, getMultiAdapter, getUtility, queryMultiAdapter)28 adapter, getMultiAdapter, getUtility, queryMultiAdapter)
26from zope.interface import Attribute, Interface, implementer29from zope.interface import Attribute, Interface, implementer
@@ -168,7 +171,7 @@
168171
169 def publishTraverse(self, request, name):172 def publishTraverse(self, request, name):
170 """See `IPublishTraverse`."""173 """See `IPublishTraverse`."""
171 name = urllib.unquote(name)174 name = unquote(name)
172 value = self.get(request, name)175 value = self.get(request, name)
173 if value is None:176 if value is None:
174 raise NotFound(self, name)177 raise NotFound(self, name)
@@ -370,8 +373,7 @@
370 if not hasattr(parts, '__iter__'):373 if not hasattr(parts, '__iter__'):
371 raise TypeError("Expected an iterable for __path_parts__.")374 raise TypeError("Expected an iterable for __path_parts__.")
372375
373 escaped_parts = [urllib.quote(part.encode('utf-8'), _safe)376 escaped_parts = [quote(part.encode('utf-8'), _safe) for part in parts]
374 for part in parts]
375 return start_url + "/" + "/".join(escaped_parts)377 return start_url + "/" + "/".join(escaped_parts)
376 __call__ = __str__378 __call__ = __str__
377379
378380
=== modified file 'src/lazr/restful/tales.py'
--- src/lazr/restful/tales.py 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/tales.py 2020-02-04 13:19:13 +0000
@@ -11,7 +11,6 @@
11import operator11import operator
12import simplejson12import simplejson
13import textwrap13import textwrap
14import urllib
1514
16from epydoc.markup import DocstringLinker15from epydoc.markup import DocstringLinker
17from epydoc.markup.restructuredtext import (16from epydoc.markup.restructuredtext import (
@@ -22,6 +21,7 @@
22from docutils import io21from docutils import io
23from docutils.core import Publisher22from docutils.core import Publisher
2423
24from six.moves.urllib.parse import quote
25from zope.component import (25from zope.component import (
26 adapter, getGlobalSiteManager, getUtility, queryMultiAdapter)26 adapter, getGlobalSiteManager, getUtility, queryMultiAdapter)
27from zope.interface import implementer27from zope.interface import implementer
@@ -246,7 +246,7 @@
246 relationship_name = self.context.relationship.__name__246 relationship_name = self.context.relationship.__name__
247 return (absoluteURL(self.context.context,247 return (absoluteURL(self.context.context,
248 get_current_web_service_request()) + '/' +248 get_current_web_service_request()) + '/' +
249 urllib.quote(relationship_name))249 quote(relationship_name))
250 else:250 else:
251 return super(WadlCollectionResourceAPI, self).url251 return super(WadlCollectionResourceAPI, self).url
252252
253253
=== modified file 'src/lazr/restful/testing/webservice.py'
--- src/lazr/restful/testing/webservice.py 2020-02-04 11:52:59 +0000
+++ src/lazr/restful/testing/webservice.py 2020-02-04 13:19:13 +0000
@@ -25,11 +25,14 @@
25import sys25import sys
26from types import ModuleType26from types import ModuleType
27import unittest27import unittest
28import urllib
2928
30from urlparse import urljoin
31import wsgi_intercept29import wsgi_intercept
3230
31from six.moves.urllib.parse import (
32 quote,
33 urlencode,
34 urljoin,
35 )
33from zope.component import (36from zope.component import (
34 adapter, getGlobalSiteManager, getUtility)37 adapter, getGlobalSiteManager, getUtility)
35from zope.configuration import xmlconfig38from zope.configuration import xmlconfig
@@ -333,7 +336,7 @@
333 for key, value in args.items():336 for key, value in args.items():
334 if not isinstance(value, basestring):337 if not isinstance(value, basestring):
335 args[key] = simplejson.dumps(value)338 args[key] = simplejson.dumps(value)
336 return urllib.urlencode(args)339 return urlencode(args)
337340
338 def named_get(self, path_or_url, operation_name, headers=None,341 def named_get(self, path_or_url, operation_name, headers=None,
339 api_version=None, **kwargs):342 api_version=None, **kwargs):
@@ -362,7 +365,7 @@
362 """365 """
363 if not isinstance(value, basestring):366 if not isinstance(value, basestring):
364 value = simplejson.dumps(value)367 value = simplejson.dumps(value)
365 return urllib.quote(value)368 return quote(value)
366369
367 def _make_request_with_entity_body(self, path, method, media_type, data,370 def _make_request_with_entity_body(self, path, method, media_type, data,
368 headers, api_version):371 headers, api_version):

Subscribers

People subscribed via source and target branches