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.
This commit is contained in:
Brett Cannon 2008-07-02 01:57:08 +00:00
parent aac51b8a69
commit 8bb8fa5dd6
5 changed files with 51 additions and 14 deletions

View file

@ -4,6 +4,13 @@
.. module:: urllib .. module:: urllib
:synopsis: Open an arbitrary network resource by URL (requires sockets). :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:: .. index::
single: WWW single: WWW
@ -116,6 +123,10 @@ High-level interface
.. versionchanged:: 2.6 .. versionchanged:: 2.6
Added :meth:`getcode` to returned object and support for the Added :meth:`getcode` to returned object and support for the
:envvar:`no_proxy` environment variable. :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]]]) .. function:: urlretrieve(url[, filename[, reporthook[, data]]])

View file

@ -640,16 +640,20 @@ class Pathname_Tests(unittest.TestCase):
def test_main(): def test_main():
test_support.run_unittest( import warnings
urlopen_FileTests, with test_support.catch_warning(record=False):
urlopen_HttpTests, warnings.filterwarnings('ignore', ".*urllib\.urlopen.*Python 3.0",
urlretrieve_FileTests, DeprecationWarning)
QuotingTests, test_support.run_unittest(
UnquotingTests, urlopen_FileTests,
urlencode_Tests, urlopen_HttpTests,
Pathname_Tests, urlretrieve_FileTests,
#FTPWrapperTests, QuotingTests,
) UnquotingTests,
urlencode_Tests,
Pathname_Tests,
#FTPWrapperTests,
)

View file

@ -182,9 +182,13 @@ class urlretrieveNetworkTests(unittest.TestCase):
def test_main(): def test_main():
test_support.requires('network') test_support.requires('network')
test_support.run_unittest(URLTimeoutTest, from warnings import filterwarnings
urlopenNetworkTests, with test_support.catch_warning(record=False):
urlretrieveNetworkTests) filterwarnings('ignore', '.*urllib\.urlopen.*Python 3.0',
DeprecationWarning)
test_support.run_unittest(URLTimeoutTest,
urlopenNetworkTests,
urlretrieveNetworkTests)
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()

View file

@ -28,6 +28,7 @@ import os
import time import time
import sys import sys
from urlparse import urljoin as basejoin from urlparse import urljoin as basejoin
import warnings
__all__ = ["urlopen", "URLopener", "FancyURLopener", "urlretrieve", __all__ = ["urlopen", "URLopener", "FancyURLopener", "urlretrieve",
"urlcleanup", "quote", "quote_plus", "unquote", "unquote_plus", "urlcleanup", "quote", "quote_plus", "unquote", "unquote_plus",
@ -69,7 +70,11 @@ else:
# Shortcut for basic usage # Shortcut for basic usage
_urlopener = None _urlopener = None
def urlopen(url, data=None, proxies=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 global _urlopener
if proxies is not None: if proxies is not None:
opener = FancyURLopener(proxies=proxies) opener = FancyURLopener(proxies=proxies)

View file

@ -29,11 +29,24 @@ Core and Builtins
would not cause a syntax error. This was regression from 2.4 caused by the would not cause a syntax error. This was regression from 2.4 caused by the
switch to the new compiler. 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 Build
----- -----
- Issue #3215: Build sqlite3 as sqlite3.dll, not sqlite3.pyd. - Issue #3215: Build sqlite3 as sqlite3.dll, not sqlite3.pyd.
What's New in Python 2.6 beta 1? What's New in Python 2.6 beta 1?
================================ ================================