From 8bb8fa5dd679d1f4086fac4d3181f0985c14006d Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 2 Jul 2008 01:57:08 +0000 Subject: Handle urllib's renaming for Python 3.0: * Deprecate urllib.urlopen() in favor of urllib2.urlopen() for 3.0. * Update docs to mention split/rename of the module and deprecation of urlopen(). Changes to lib2to3 are in a separate commit. Work is for issue #2885. --- Doc/library/urllib.rst | 11 +++++++++++ Lib/test/test_urllib.py | 24 ++++++++++++++---------- Lib/test/test_urllibnet.py | 10 +++++++--- Lib/urllib.py | 7 ++++++- Misc/NEWS | 13 +++++++++++++ 5 files changed, 51 insertions(+), 14 deletions(-) diff --git a/Doc/library/urllib.rst b/Doc/library/urllib.rst index ae1828f..15e0c7a 100644 --- a/Doc/library/urllib.rst +++ b/Doc/library/urllib.rst @@ -4,6 +4,13 @@ .. module:: urllib :synopsis: Open an arbitrary network resource by URL (requires sockets). +.. note:: + The :mod:`urllib` module has been split into parts and renamed in + Python 3.0 to :mod:`urllib.request`, :mod:`urllib.parse`, + and :mod:`urllib.error`. The :term:`2to3` tool will automatically adapt + imports when converting your sources to 3.0. + Also note that the :func:`urllib.urlopen` function has been removed in + Python 3.0 in favor of :func:`urllib2.urlopen`. .. index:: single: WWW @@ -116,6 +123,10 @@ High-level interface .. versionchanged:: 2.6 Added :meth:`getcode` to returned object and support for the :envvar:`no_proxy` environment variable. + + .. deprecated:: 2.6 + The :func:`urlopen` function has been removed in Python 3.0 in favor + of :func:`urllib2.urlopen`. .. function:: urlretrieve(url[, filename[, reporthook[, data]]]) diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index 61e0202..1dcbbed 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -640,16 +640,20 @@ class Pathname_Tests(unittest.TestCase): def test_main(): - test_support.run_unittest( - urlopen_FileTests, - urlopen_HttpTests, - urlretrieve_FileTests, - QuotingTests, - UnquotingTests, - urlencode_Tests, - Pathname_Tests, - #FTPWrapperTests, - ) + import warnings + with test_support.catch_warning(record=False): + warnings.filterwarnings('ignore', ".*urllib\.urlopen.*Python 3.0", + DeprecationWarning) + test_support.run_unittest( + urlopen_FileTests, + urlopen_HttpTests, + urlretrieve_FileTests, + QuotingTests, + UnquotingTests, + urlencode_Tests, + Pathname_Tests, + #FTPWrapperTests, + ) diff --git a/Lib/test/test_urllibnet.py b/Lib/test/test_urllibnet.py index 5e225ee..0404b77 100644 --- a/Lib/test/test_urllibnet.py +++ b/Lib/test/test_urllibnet.py @@ -182,9 +182,13 @@ class urlretrieveNetworkTests(unittest.TestCase): def test_main(): test_support.requires('network') - test_support.run_unittest(URLTimeoutTest, - urlopenNetworkTests, - urlretrieveNetworkTests) + from warnings import filterwarnings + with test_support.catch_warning(record=False): + filterwarnings('ignore', '.*urllib\.urlopen.*Python 3.0', + DeprecationWarning) + test_support.run_unittest(URLTimeoutTest, + urlopenNetworkTests, + urlretrieveNetworkTests) if __name__ == "__main__": test_main() diff --git a/Lib/urllib.py b/Lib/urllib.py index ab22a95..55a29f4 100644 --- a/Lib/urllib.py +++ b/Lib/urllib.py @@ -28,6 +28,7 @@ import os import time import sys from urlparse import urljoin as basejoin +import warnings __all__ = ["urlopen", "URLopener", "FancyURLopener", "urlretrieve", "urlcleanup", "quote", "quote_plus", "unquote", "unquote_plus", @@ -69,7 +70,11 @@ else: # Shortcut for basic usage _urlopener = None def urlopen(url, data=None, proxies=None): - """urlopen(url [, data]) -> open file-like object""" + """Create a file-like object for the specified URL to read from.""" + from warnings import warnpy3k + warnings.warnpy3k("urllib.urlopen() has been removed in Python 3.0 in " + "favor of urllib2.urlopen()", stacklevel=2) + global _urlopener if proxies is not None: opener = FancyURLopener(proxies=proxies) diff --git a/Misc/NEWS b/Misc/NEWS index 64b9751..686a87f 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -29,11 +29,24 @@ Core and Builtins would not cause a syntax error. This was regression from 2.4 caused by the switch to the new compiler. + +Library +------- + +- Issue #2885 (partial): The urllib.urlopen() function has been deprecated for + removal in Python 3.0 in favor of urllib2.urlopen(). + +- Issue #2885 (partial): lib2to3 has been updated to handle the renaming of the + urllib module in Python 3.0 to urllib.request, urllib.parse, and + urllib.error. + + Build ----- - Issue #3215: Build sqlite3 as sqlite3.dll, not sqlite3.pyd. + What's New in Python 2.6 beta 1? ================================ -- cgit v0.12