[Python-checkins] cpython: deprecated the old urllib primitives in 3.3 urllib package - issue 10050

senthil.kumaran python-checkins at python.org
Wed Mar 14 21:44:03 CET 2012


http://hg.python.org/cpython/rev/eab274c7d456
changeset: 75640:eab274c7d456
user: Senthil Kumaran <senthil at uthcode.com>
date: Wed Mar 14 13:43:53 2012 -0700
summary:
 deprecated the old urllib primitives in 3.3 urllib package - issue 10050
files:
 Doc/library/urllib.request.rst | 92 +++++++++++++--------
 Lib/test/test_urllib.py | 4 +
 Lib/test/test_urllib2.py | 23 ++++-
 Lib/urllib/request.py | 44 +++++++---
 4 files changed, 112 insertions(+), 51 deletions(-)
diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst
--- a/Doc/library/urllib.request.rst
+++ b/Doc/library/urllib.request.rst
@@ -385,12 +385,6 @@
 
 .. versionadded:: 3.3
 
-.. method:: Request.add_data(data)
-
- Set the :class:`Request` data to *data*. This is ignored by all handlers except
- HTTP handlers --- and there it should be a byte string, and will change the
- request to be ``POST`` rather than ``GET``.
-
 
 .. method:: Request.get_method()
 
@@ -403,16 +397,6 @@
 get_method now looks at the value of :attr:`Request.method`.
 
 
-.. method:: Request.has_data()
-
- Return whether the instance has a non-\ ``None`` data.
-
-
-.. method:: Request.get_data()
-
- Return the instance's data.
-
-
 .. method:: Request.add_header(key, val)
 
 Add another header to the request. Headers are currently ignored by all
@@ -440,21 +424,6 @@
 Return the URL given in the constructor.
 
 
-.. method:: Request.get_type()
-
- Return the type of the URL --- also known as the scheme.
-
-
-.. method:: Request.get_host()
-
- Return the host to which a connection will be made.
-
-
-.. method:: Request.get_selector()
-
- Return the selector --- the part of the URL that is sent to the server.
-
-
 .. method:: Request.set_proxy(host, type)
 
 Prepare the request by connecting to a proxy server. The *host* and *type* will
@@ -462,16 +431,71 @@
 URL given in the constructor.
 
 
+.. method:: Request.add_data(data)
+
+ Set the :class:`Request` data to *data*. This is ignored by all handlers except
+ HTTP handlers --- and there it should be a byte string, and will change the
+ request to be ``POST`` rather than ``GET``. Deprecated in 3.3, use
+ :attr:`Request.data`.
+
+ .. deprecated:: 3.3
+
+
+.. method:: Request.has_data()
+
+ Return whether the instance has a non-\ ``None`` data. Deprecated in 3.3,
+ use :attr:`Request.data`.
+
+ .. deprecated:: 3.3
+
+
+.. method:: Request.get_data()
+
+ Return the instance's data. Deprecated in 3.3, use :attr:`Request.data`.
+
+ .. deprecated:: 3.3
+
+
+.. method:: Request.get_type()
+
+ Return the type of the URL --- also known as the scheme. Deprecated in 3.3,
+ use :attr:`Request.type`.
+
+ .. deprecated:: 3.3
+
+
+.. method:: Request.get_host()
+
+ Return the host to which a connection will be made. Deprecated in 3.3, use
+ :attr:`Request.host`.
+
+ .. deprecated:: 3.3
+
+
+.. method:: Request.get_selector()
+
+ Return the selector --- the part of the URL that is sent to the server.
+ Deprecated in 3.3, use :attr:`Request.selector`.
+
+ .. deprecated:: 3.3
+
+
 .. method:: Request.get_origin_req_host()
 
- Return the request-host of the origin transaction, as defined by :rfc:`2965`.
- See the documentation for the :class:`Request` constructor.
+ Return the request-host of the origin transaction, as defined by
+ :rfc:`2965`. See the documentation for the :class:`Request` constructor.
+ Deprecated in 3.3, use :attr:`Request.origin_req_host`.
+
+ .. deprecated:: 3.3
 
 
 .. method:: Request.is_unverifiable()
 
 Return whether the request is unverifiable, as defined by RFC 2965. See the
- documentation for the :class:`Request` constructor.
+ documentation for the :class:`Request` constructor. Deprecated in 3.3, use
+ :attr:`Request.is_unverifiable`.
+
+ .. deprecated:: 3.3
 
 
 .. _opener-director-objects:
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -298,6 +298,10 @@
 finally:
 self.unfakehttp()
 
+ def test_URLopener_deprecation(self):
+ with support.check_warnings(('',DeprecationWarning)):
+ warn = urllib.request.URLopener()
+
 class urlretrieve_FileTests(unittest.TestCase):
 """Test urllib.urlretrieve() on local files"""
 
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -553,10 +553,6 @@
 self.assertRaises(urllib.error.URLError, o.open, req)
 self.assertEqual(o.calls, [(handlers[0], "http_open", (req,), {})])
 
-## def test_error(self):
-## # XXX this doesn't actually seem to be used in standard library,
-## # but should really be tested anyway...
-
 def test_http_error(self):
 # XXX http_error_default
 # http errors are a special case
@@ -584,6 +580,7 @@
 self.assertEqual((handler, method_name), got[:2])
 self.assertEqual(args, got[2])
 
+
 def test_processors(self):
 # *_request / *_response methods get called appropriately
 o = OpenerDirector()
@@ -619,6 +616,24 @@
 self.assertTrue(args[1] is None or
 isinstance(args[1], MockResponse))
 
+ def test_method_deprecations(self):
+ req = Request("http://www.example.com")
+ with support.check_warnings(('', DeprecationWarning)):
+ req.add_data("data")
+ with support.check_warnings(('', DeprecationWarning)):
+ req.has_data()
+ with support.check_warnings(('', DeprecationWarning)):
+ req.get_data()
+ with support.check_warnings(('', DeprecationWarning)):
+ req.get_full_url()
+ with support.check_warnings(('', DeprecationWarning)):
+ req.get_host()
+ with support.check_warnings(('', DeprecationWarning)):
+ req.get_selector()
+ with support.check_warnings(('', DeprecationWarning)):
+ req.is_unverifiable()
+ with support.check_warnings(('', DeprecationWarning)):
+ req.get_origin_req_host()
 
 def sanepathname2url(path):
 try:
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -96,6 +96,7 @@
 import collections
 import tempfile
 import contextlib
+import warnings
 
 
 from urllib.error import URLError, HTTPError, ContentTooShortError
@@ -291,36 +292,52 @@
 else:
 return "GET"
 
- # Begin deprecated methods
-
- def add_data(self, data):
- self.data = data
-
- def has_data(self):
- return self.data is not None
-
- def get_data(self):
- return self.data
-
 def get_full_url(self):
 if self.fragment:
 return '%s#%s' % (self.full_url, self.fragment)
 else:
 return self.full_url
 
+ # Begin deprecated methods
+
+ def add_data(self, data):
+ msg = "Request.add_data method is deprecated."
+ warnings.warn(msg, DeprecationWarning, stacklevel=1)
+ self.data = data
+
+ def has_data(self):
+ msg = "Request.has_data method is deprecated."
+ warnings.warn(msg, DeprecationWarning, stacklevel=1)
+ return self.data is not None
+
+ def get_data(self):
+ msg = "Request.get_data method is deprecated."
+ warnings.warn(msg, DeprecationWarning, stacklevel=1)
+ return self.data
+
 def get_type(self):
+ msg = "Request.get_type method is deprecated."
+ warnings.warn(msg, DeprecationWarning, stacklevel=1)
 return self.type
 
 def get_host(self):
+ msg = "Request.get_host method is deprecated."
+ warnings.warn(msg, DeprecationWarning, stacklevel=1)
 return self.host
 
 def get_selector(self):
+ msg = "Request.get_selector method is deprecated."
+ warnings.warn(msg, DeprecationWarning, stacklevel=1)
 return self.selector
 
 def is_unverifiable(self):
+ msg = "Request.is_unverifiable method is deprecated."
+ warnings.warn(msg, DeprecationWarning, stacklevel=1)
 return self.unverifiable
 
 def get_origin_req_host(self):
+ msg = "Request.get_origin_req_host method is deprecated."
+ warnings.warn(msg, DeprecationWarning, stacklevel=1)
 return self.origin_req_host
 
 # End deprecated methods
@@ -1552,6 +1569,9 @@
 
 # Constructor
 def __init__(self, proxies=None, **x509):
+ msg = "%(class)s style of invoking requests is deprecated."\
+ "Use newer urlopen functions/methods" % {'class': self.__class__.__name__}
+ warnings.warn(msg, DeprecationWarning, stacklevel=3)
 if proxies is None:
 proxies = getproxies()
 assert hasattr(proxies, 'keys'), "proxies must be a mapping"
@@ -1753,7 +1773,6 @@
 if proxy_bypass(realhost):
 host = realhost
 
- #print "proxy via http:", host, selector
 if not host: raise IOError('http error', 'no host given')
 
 if proxy_passwd:
@@ -2554,7 +2573,6 @@
 test = test.replace("*", r".*") # change glob sequence
 test = test.replace("?", r".") # change glob char
 for val in host:
- # print "%s <--> %s" %( test, val )
 if re.match(test, val, re.I):
 return 1
 return 0
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /