From: DongHun Kwak Date: Tue, 29 Dec 2020 22:03:50 +0000 (+0900) Subject: Imported Upstream version 40.7.3 X-Git-Tag: upstream/40.7.3^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c18e5762d869c75c7649a508cb88d15b6b61b4ab;p=platform%2Fupstream%2Fpython-setuptools.git Imported Upstream version 40.7.3 --- diff --git a/CHANGES.rst b/CHANGES.rst index 7d1353b..6289622 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,9 @@ +v40.7.3 +------- + +* #1670: In package_index, revert to using a copy of splituser from Python 3.8. Attempts to use ``urllib.parse.urlparse`` led to problems as reported in #1663 and #1668. This change serves as an alternative to #1499 and fixes #1668. + + v40.7.2 ------- diff --git a/setup.cfg b/setup.cfg index 16db122..4261f9b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 40.7.2 +current_version = 40.7.3 commit = True tag = True diff --git a/setup.py b/setup.py index a009f17..b3e1cc7 100755 --- a/setup.py +++ b/setup.py @@ -89,7 +89,7 @@ def pypi_link(pkg_filename): setup_params = dict( name="setuptools", - version="40.7.2", + version="40.7.3", description=( "Easily download, build, install, upgrade, and uninstall " "Python packages" diff --git a/setuptools/package_index.py b/setuptools/package_index.py index ea76c00..705a47c 100644 --- a/setuptools/package_index.py +++ b/setuptools/package_index.py @@ -850,16 +850,13 @@ class PackageIndex(Environment): def _download_svn(self, url, filename): warnings.warn("SVN download support is deprecated", UserWarning) - def splituser(host): - user, delim, host = host.rpartition('@') - return user, host url = url.split('#', 1)[0] # remove any fragment for svn's sake creds = '' if url.lower().startswith('svn:') and '@' in url: scheme, netloc, path, p, q, f = urllib.parse.urlparse(url) if not netloc and path.startswith('//') and '/' in path[2:]: netloc, path = path[2:].split('/', 1) - auth, host = splituser(netloc) + auth, host = _splituser(netloc) if auth: if ':' in auth: user, pw = auth.split(':', 1) @@ -1058,8 +1055,8 @@ def open_with_auth(url, opener=urllib.request.urlopen): if netloc.endswith(':'): raise http_client.InvalidURL("nonnumeric port: ''") - if scheme in ('http', 'https') and parsed.username: - auth = ':'.join((parsed.username, parsed.password)) + if scheme in ('http', 'https'): + auth, address = _splituser(netloc) else: auth = None @@ -1072,7 +1069,7 @@ def open_with_auth(url, opener=urllib.request.urlopen): if auth: auth = "Basic " + _encode_auth(auth) - parts = scheme, netloc, path, params, query, frag + parts = scheme, address, path, params, query, frag new_url = urllib.parse.urlunparse(parts) request = urllib.request.Request(new_url) request.add_header("Authorization", auth) @@ -1086,13 +1083,20 @@ def open_with_auth(url, opener=urllib.request.urlopen): # Put authentication info back into request URL if same host, # so that links found on the page will work s2, h2, path2, param2, query2, frag2 = urllib.parse.urlparse(fp.url) - if s2 == scheme and h2 == parsed.hostname: + if s2 == scheme and h2 == address: parts = s2, netloc, path2, param2, query2, frag2 fp.url = urllib.parse.urlunparse(parts) return fp +# copy of urllib.parse._splituser from Python 3.8 +def _splituser(host): + """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.""" + user, delim, host = host.rpartition('@') + return (user if delim else None), host + + # adding a timeout to avoid freezing package_index open_with_auth = socket_timeout(_SOCKET_TIMEOUT)(open_with_auth)