diff --git a/Lib/http/client.py b/Lib/http/client.py index 82213c3d0d7..57755730e9c 100644 --- a/Lib/http/client.py +++ b/Lib/http/client.py @@ -777,8 +777,8 @@ class HTTPConnection: for d in data: self.sock.sendall(d) else: - raise TypeError("data should be a bytes-like object\ - or an iterable, got %r " % type(data)) + raise TypeError("data should be a bytes-like object " + "or an iterable, got %r" % type(data)) def _output(self, s): """Add a line of output to the current request buffer. diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py index 72f37769e27..af200d55e32 100644 --- a/Lib/test/test_urlparse.py +++ b/Lib/test/test_urlparse.py @@ -371,6 +371,8 @@ class UrlParseTestCase(unittest.TestCase): self.checkJoin('http:///', '..','http:///') self.checkJoin('', 'http://a/b/c/g?y/./x','http://a/b/c/g?y/./x') self.checkJoin('', 'http://a/./g', 'http://a/./g') + self.checkJoin('svn://pathtorepo/dir1', 'dir2', 'svn://pathtorepo/dir2') + self.checkJoin('svn://pathtorepo/dir1', 'dir2', 'svn://pathtorepo/dir2') def test_RFC2732(self): str_cases = [ diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py index 45ae202d5c6..01067ae6ac0 100644 --- a/Lib/urllib/parse.py +++ b/Lib/urllib/parse.py @@ -38,7 +38,8 @@ __all__ = ["urlparse", "urlunparse", "urljoin", "urldefrag", # A classification of schemes ('' means apply by default) uses_relative = ['ftp', 'http', 'gopher', 'nntp', 'imap', 'wais', 'file', 'https', 'shttp', 'mms', - 'prospero', 'rtsp', 'rtspu', '', 'sftp'] + 'prospero', 'rtsp', 'rtspu', '', 'sftp', + 'svn', 'svn+ssh'] uses_netloc = ['ftp', 'http', 'gopher', 'nntp', 'telnet', 'imap', 'wais', 'file', 'mms', 'https', 'shttp', 'snews', 'prospero', 'rtsp', 'rtspu', 'rsync', '', diff --git a/Misc/NEWS b/Misc/NEWS index df0591050f9..22ed1c02375 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -249,6 +249,9 @@ Core and Builtins Library ------- +- Issue #12683: urlparse updated to include svn as schemes that uses relative + paths. (svn from 1.5 onwards support relative path). + - Issue #12655: Expose functions from sched.h in the os module: sched_yield(), sched_setscheduler(), sched_getscheduler(), sched_setparam(), sched_get_min_priority(), sched_get_max_priority(), sched_rr_get_interval(),