[Python-checkins] r80364 - in python/branches/py3k: Doc/library/urllib.parse.rst Lib/test/test_urlparse.py Lib/urllib/parse.py

senthil.kumaran python-checkins at python.org
Thu Apr 22 14:19:46 CEST 2010


Author: senthil.kumaran
Date: Thu Apr 22 14:19:46 2010
New Revision: 80364

Log:
Merged revisions 80362 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r80362 | senthil.kumaran | 2010-04-22 17:40:13 +0530 (Thu, 22 Apr 2010) | 4 lines
  
  Changed tests to only urlparse one, which was enough, addressed Ezio's comment
  on Invalid url check statement and versionchanged string in docs.
........


Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Doc/library/urllib.parse.rst
   python/branches/py3k/Lib/test/test_urlparse.py
   python/branches/py3k/Lib/urllib/parse.py

Modified: python/branches/py3k/Doc/library/urllib.parse.rst
==============================================================================
--- python/branches/py3k/Doc/library/urllib.parse.rst	(original)
+++ python/branches/py3k/Doc/library/urllib.parse.rst	Thu Apr 22 14:19:46 2010
@@ -88,6 +88,9 @@
    See section :ref:`urlparse-result-object` for more information on the result
    object.
 
+   .. versionchanged:: 3.2
+      Added IPv6 URL parsing capabilities.
+
 
 .. function:: parse_qs(qs, keep_blank_values=False, strict_parsing=False)
 
@@ -329,7 +332,7 @@
    :rfc:`3986` - Uniform Resource Identifiers
       This is the current standard (STD66). Any changes to urlparse module
       should conform to this. Certain deviations could be observed, which are
-      mostly due backward compatiblity purposes and for certain to de-facto
+      mostly due backward compatiblity purposes and for certain de-facto
       parsing requirements as commonly observed in major browsers.
 
    :rfc:`2732` - Format for Literal IPv6 Addresses in URL's.

Modified: python/branches/py3k/Lib/test/test_urlparse.py
==============================================================================
--- python/branches/py3k/Lib/test/test_urlparse.py	(original)
+++ python/branches/py3k/Lib/test/test_urlparse.py	Thu Apr 22 14:19:46 2010
@@ -273,10 +273,10 @@
         for invalid_url in [
                 'http://::12.34.56.78]/',
                 'http://[::1/foo/',
+                'ftp://[::1/foo/bad]/bad',
                 'http://[::1/foo/bad]/bad',
                 'http://[::ffff:12.34.56.78']:
-            self.assertRaises(ValueError, lambda : urllib.parse.urlparse(invalid_url).hostname)
-            self.assertRaises(ValueError, lambda : urllib.parse.urlparse(invalid_url))
+            self.assertRaises(ValueError, urllib.parse.urlparse, invalid_url)
 
     def test_urldefrag(self):
         for url, defrag, frag in [

Modified: python/branches/py3k/Lib/urllib/parse.py
==============================================================================
--- python/branches/py3k/Lib/urllib/parse.py	(original)
+++ python/branches/py3k/Lib/urllib/parse.py	Thu Apr 22 14:19:46 2010
@@ -181,10 +181,9 @@
             url = url[i+1:]
             if url[:2] == '//':
                 netloc, url = _splitnetloc(url, 2)
-                if '[' in netloc :
-                    if not ']' in netloc: raise ValueError("Invalid IPv6 URL")
-                if ']' in netloc:
-                    if not '[' in netloc: raise ValueError("Invalid IPv6 URL")
+                if (('[' in netloc and ']' not in netloc) or
+                        (']' in netloc and '[' not in netloc)):
+                    raise ValueError("Invalid IPv6 URL")
             if allow_fragments and '#' in url:
                 url, fragment = url.split('#', 1)
             if '?' in url:
@@ -199,10 +198,9 @@
             scheme, url = url[:i].lower(), url[i+1:]
     if url[:2] == '//':
         netloc, url = _splitnetloc(url, 2)
-        if '[' in netloc:
-            if not ']' in netloc: raise ValueError("Invalid IPv6 URL")
-        if ']' in netloc:
-            if not '[' in netloc: raise ValueError("Invalid IPv6 URL")
+        if (('[' in netloc and ']' not in netloc) or
+                (']' in netloc and '[' not in netloc)):
+            raise ValueError("Invalid IPv6 URL")
     if allow_fragments and scheme in uses_fragment and '#' in url:
         url, fragment = url.split('#', 1)
     if scheme in uses_query and '?' in url:


More information about the Python-checkins mailing list