Senthil added the comment:
Hi Guido,
I have added the unit tests, tested it on my system and created a new patch
combining the previous one against the trunk.
You can verify and check in this.
Thank you,
Senthil
Added file: http://bugs.python.org/file9054/issue1698-withtests.patch
__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1698>
__________________________________
Index: Lib/test/test_urlparse.py
===================================================================
--- Lib/test/test_urlparse.py (revision 59706)
+++ Lib/test/test_urlparse.py (working copy)
@@ -254,6 +254,24 @@
self.assertEqual(p.port, 80)
self.assertEqual(p.geturl(), url)
+ # Addressing issue1698, which suggests Username can contain
+ # "@" character. Though not RFC complaint, many ftp sites allow
+ # and requests email ids as usernames.
+
+ url = "http://[EMAIL PROTECTED]:[EMAIL
PROTECTED]:080/doc/?query=yes#frag"
+ p = urlparse.urlsplit(url)
+ self.assertEqual(p.scheme, "http")
+ self.assertEqual(p.netloc, "[EMAIL PROTECTED]:[EMAIL PROTECTED]:080")
+ self.assertEqual(p.path, "/doc/")
+ self.assertEqual(p.query, "query=yes")
+ self.assertEqual(p.fragment, "frag")
+ self.assertEqual(p.username, "[EMAIL PROTECTED]")
+ self.assertEqual(p.password, "Pass")
+ self.assertEqual(p.hostname, "www.python.org")
+ self.assertEqual(p.port, 80)
+ self.assertEqual(p.geturl(), url)
+
+
def test_attributes_bad_port(self):
"""Check handling of non-integer ports."""
p = urlparse.urlsplit("http://www.example.net:foo")
Index: Lib/urlparse.py
===================================================================
--- Lib/urlparse.py (revision 59706)
+++ Lib/urlparse.py (working copy)
@@ -82,7 +82,7 @@
def username(self):
netloc = self.netloc
if "@" in netloc:
- userinfo = netloc.split("@", 1)[0]
+ userinfo = netloc.rsplit("@", 1)[0]
if ":" in userinfo:
userinfo = userinfo.split(":", 1)[0]
return userinfo
@@ -92,7 +92,7 @@
def password(self):
netloc = self.netloc
if "@" in netloc:
- userinfo = netloc.split("@", 1)[0]
+ userinfo = netloc.rsplit("@", 1)[0]
if ":" in userinfo:
return userinfo.split(":", 1)[1]
return None
@@ -101,7 +101,7 @@
def hostname(self):
netloc = self.netloc
if "@" in netloc:
- netloc = netloc.split("@", 1)[1]
+ netloc = netloc.rsplit("@", 1)[1]
if ":" in netloc:
netloc = netloc.split(":", 1)[0]
return netloc.lower() or None
@@ -110,7 +110,7 @@
def port(self):
netloc = self.netloc
if "@" in netloc:
- netloc = netloc.split("@", 1)[1]
+ netloc = netloc.rsplit("@", 1)[1]
if ":" in netloc:
port = netloc.split(":", 1)[1]
return int(port, 10)
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com