summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiyas Sait <niyas.sait@linaro.org>2021-09-26 09:36:25 +0100
committerGitHub <noreply@github.com>2021-09-26 09:36:25 +0100
commitcb66b03fe65bba5e8cfa44b0cdc6935d5923d2a7 (patch)
tree8ef99e83c95b51f3140212b94d6e004fd0c71e6f
parentb392833a0f1cff1bbee1ac6dbe0270cccdd0c11f (diff)
downloadpip-cb66b03fe65bba5e8cfa44b0cdc6935d5923d2a7.tar.gz
Upgrade distlib to 0.3.3 (#10502)
Co-authored-by: Niyas Sait <Niyas.Sait@arm.com>
-rw-r--r--news/d8390fd1-8c20-4ef8-bea3-ad6b2eb5b3a5.vendor.rst1
-rw-r--r--setup.py9
-rw-r--r--src/pip/_vendor/distlib/__init__.py2
-rw-r--r--src/pip/_vendor/distlib/compat.py26
-rw-r--r--src/pip/_vendor/distlib/markers.py17
-rw-r--r--src/pip/_vendor/distlib/scripts.py10
-rw-r--r--src/pip/_vendor/distlib/t64-arm.exebin0 -> 180736 bytes
-rw-r--r--src/pip/_vendor/distlib/util.py4
-rw-r--r--src/pip/_vendor/distlib/version.py2
-rw-r--r--src/pip/_vendor/distlib/w64-arm.exebin0 -> 166400 bytes
-rw-r--r--src/pip/_vendor/distlib/wheel.py5
-rw-r--r--src/pip/_vendor/vendor.txt2
12 files changed, 56 insertions, 22 deletions
diff --git a/news/d8390fd1-8c20-4ef8-bea3-ad6b2eb5b3a5.vendor.rst b/news/d8390fd1-8c20-4ef8-bea3-ad6b2eb5b3a5.vendor.rst
new file mode 100644
index 000000000..9dc125923
--- /dev/null
+++ b/news/d8390fd1-8c20-4ef8-bea3-ad6b2eb5b3a5.vendor.rst
@@ -0,0 +1 @@
+Upgrade distlib to 0.3.3
diff --git a/setup.py b/setup.py
index 75f5195cf..4e5ce3015 100644
--- a/setup.py
+++ b/setup.py
@@ -64,7 +64,14 @@ setup(
"pip._vendor.certifi": ["*.pem"],
"pip._vendor.requests": ["*.pem"],
"pip._vendor.distlib._backport": ["sysconfig.cfg"],
- "pip._vendor.distlib": ["t32.exe", "t64.exe", "w32.exe", "w64.exe"],
+ "pip._vendor.distlib": [
+ "t32.exe",
+ "t64.exe",
+ "t64-arm.exe",
+ "w32.exe",
+ "w64.exe",
+ "w64-arm.exe",
+ ],
},
entry_points={
"console_scripts": [
diff --git a/src/pip/_vendor/distlib/__init__.py b/src/pip/_vendor/distlib/__init__.py
index 492c2c705..115494810 100644
--- a/src/pip/_vendor/distlib/__init__.py
+++ b/src/pip/_vendor/distlib/__init__.py
@@ -6,7 +6,7 @@
#
import logging
-__version__ = '0.3.2'
+__version__ = '0.3.3'
class DistlibException(Exception):
pass
diff --git a/src/pip/_vendor/distlib/compat.py b/src/pip/_vendor/distlib/compat.py
index c316fd973..e59410695 100644
--- a/src/pip/_vendor/distlib/compat.py
+++ b/src/pip/_vendor/distlib/compat.py
@@ -48,17 +48,18 @@ if sys.version_info[0] < 3: # pragma: no cover
from itertools import ifilter as filter
from itertools import ifilterfalse as filterfalse
- _userprog = None
- def splituser(host):
- """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'."""
- global _userprog
- if _userprog is None:
- import re
- _userprog = re.compile('^(.*)@(.*)$')
-
- match = _userprog.match(host)
- if match: return match.group(1, 2)
- return None, host
+ # Leaving this around for now, in case it needs resurrecting in some way
+ # _userprog = None
+ # def splituser(host):
+ # """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'."""
+ # global _userprog
+ # if _userprog is None:
+ # import re
+ # _userprog = re.compile('^(.*)@(.*)$')
+
+ # match = _userprog.match(host)
+ # if match: return match.group(1, 2)
+ # return None, host
else: # pragma: no cover
from io import StringIO
@@ -68,7 +69,7 @@ else: # pragma: no cover
import builtins
import configparser
import shutil
- from urllib.parse import (urlparse, urlunparse, urljoin, splituser, quote,
+ from urllib.parse import (urlparse, urlunparse, urljoin, quote,
unquote, urlsplit, urlunsplit, splittype)
from urllib.request import (urlopen, urlretrieve, Request, url2pathname,
pathname2url,
@@ -88,6 +89,7 @@ else: # pragma: no cover
from itertools import filterfalse
filter = filter
+
try:
from ssl import match_hostname, CertificateError
except ImportError: # pragma: no cover
diff --git a/src/pip/_vendor/distlib/markers.py b/src/pip/_vendor/distlib/markers.py
index 923a832b2..b43136fa1 100644
--- a/src/pip/_vendor/distlib/markers.py
+++ b/src/pip/_vendor/distlib/markers.py
@@ -13,19 +13,29 @@ Parser for the environment markers micro-language defined in PEP 508.
# as ~= and === which aren't in Python, necessitating a different approach.
import os
+import re
import sys
import platform
from .compat import string_types
from .util import in_venv, parse_marker
+from .version import NormalizedVersion as NV
__all__ = ['interpret']
+_VERSION_PATTERN = re.compile(r'((\d+(\.\d+)*\w*)|\'(\d+(\.\d+)*\w*)\'|\"(\d+(\.\d+)*\w*)\")')
+
def _is_literal(o):
if not isinstance(o, string_types) or not o:
return False
return o[0] in '\'"'
+def _get_versions(s):
+ result = []
+ for m in _VERSION_PATTERN.finditer(s):
+ result.append(NV(m.groups()[0]))
+ return set(result)
+
class Evaluator(object):
"""
This class is used to evaluate marker expessions.
@@ -70,6 +80,13 @@ class Evaluator(object):
lhs = self.evaluate(elhs, context)
rhs = self.evaluate(erhs, context)
+ if ((elhs == 'python_version' or erhs == 'python_version') and
+ op in ('<', '<=', '>', '>=', '===', '==', '!=', '~=')):
+ lhs = NV(lhs)
+ rhs = NV(rhs)
+ elif elhs == 'python_version' and op in ('in', 'not in'):
+ lhs = NV(lhs)
+ rhs = _get_versions(rhs)
result = self.operations[op](lhs, rhs)
return result
diff --git a/src/pip/_vendor/distlib/scripts.py b/src/pip/_vendor/distlib/scripts.py
index 1ac01dde5..913912c7b 100644
--- a/src/pip/_vendor/distlib/scripts.py
+++ b/src/pip/_vendor/distlib/scripts.py
@@ -14,7 +14,7 @@ import sys
from .compat import sysconfig, detect_encoding, ZipFile
from .resources import finder
from .util import (FileOperator, get_export_entry, convert_path,
- get_executable, in_venv)
+ get_executable, get_platform, in_venv)
logger = logging.getLogger(__name__)
@@ -170,6 +170,11 @@ class ScriptMaker(object):
sysconfig.get_config_var('BINDIR'),
'python%s%s' % (sysconfig.get_config_var('VERSION'),
sysconfig.get_config_var('EXE')))
+ if not os.path.isfile(executable):
+ # for Python builds from source on Windows, no Python executables with
+ # a version suffix are created, so we use python.exe
+ executable = os.path.join(sysconfig.get_config_var('BINDIR'),
+ 'python%s' % (sysconfig.get_config_var('EXE')))
if options:
executable = self._get_alternate_executable(executable, options)
@@ -379,7 +384,8 @@ class ScriptMaker(object):
bits = '64'
else:
bits = '32'
- name = '%s%s.exe' % (kind, bits)
+ platform_suffix = '-arm' if get_platform() == 'win-arm64' else ''
+ name = '%s%s%s.exe' % (kind, bits, platform_suffix)
# Issue 31: don't hardcode an absolute package name, but
# determine it relative to the current package
distlib_package = __name__.rsplit('.', 1)[0]
diff --git a/src/pip/_vendor/distlib/t64-arm.exe b/src/pip/_vendor/distlib/t64-arm.exe
new file mode 100644
index 000000000..c5df4869d
--- /dev/null
+++ b/src/pip/_vendor/distlib/t64-arm.exe
Binary files differ
diff --git a/src/pip/_vendor/distlib/util.py b/src/pip/_vendor/distlib/util.py
index b9e2c695c..80bfc864b 100644
--- a/src/pip/_vendor/distlib/util.py
+++ b/src/pip/_vendor/distlib/util.py
@@ -215,6 +215,10 @@ def parse_requirement(req):
if not ver_remaining or ver_remaining[0] != ',':
break
ver_remaining = ver_remaining[1:].lstrip()
+ # Some packages have a trailing comma which would break things
+ # See issue #148
+ if not ver_remaining:
+ break
m = COMPARE_OP.match(ver_remaining)
if not m:
raise SyntaxError('invalid constraint: %s' % ver_remaining)
diff --git a/src/pip/_vendor/distlib/version.py b/src/pip/_vendor/distlib/version.py
index 86c069a7c..c7c8bb6ff 100644
--- a/src/pip/_vendor/distlib/version.py
+++ b/src/pip/_vendor/distlib/version.py
@@ -194,7 +194,7 @@ def _pep_440_key(s):
if not groups[0]:
epoch = 0
else:
- epoch = int(groups[0])
+ epoch = int(groups[0][:-1])
pre = groups[4:6]
post = groups[7:9]
dev = groups[10:12]
diff --git a/src/pip/_vendor/distlib/w64-arm.exe b/src/pip/_vendor/distlib/w64-arm.exe
new file mode 100644
index 000000000..70a2ec268
--- /dev/null
+++ b/src/pip/_vendor/distlib/w64-arm.exe
Binary files differ
diff --git a/src/pip/_vendor/distlib/wheel.py b/src/pip/_vendor/distlib/wheel.py
index 5262c8323..48abfde5b 100644
--- a/src/pip/_vendor/distlib/wheel.py
+++ b/src/pip/_vendor/distlib/wheel.py
@@ -47,10 +47,7 @@ else:
VER_SUFFIX = sysconfig.get_config_var('py_version_nodot')
if not VER_SUFFIX: # pragma: no cover
- if sys.version_info[1] >= 10:
- VER_SUFFIX = '%s_%s' % sys.version_info[:2] # PEP 641 (draft)
- else:
- VER_SUFFIX = '%s%s' % sys.version_info[:2]
+ VER_SUFFIX = '%s%s' % sys.version_info[:2]
PYVER = 'py' + VER_SUFFIX
IMPVER = IMP_PREFIX + VER_SUFFIX
diff --git a/src/pip/_vendor/vendor.txt b/src/pip/_vendor/vendor.txt
index ea0c213e7..991c3af8c 100644
--- a/src/pip/_vendor/vendor.txt
+++ b/src/pip/_vendor/vendor.txt
@@ -1,7 +1,7 @@
appdirs==1.4.4
CacheControl==0.12.6
colorama==0.4.4
-distlib==0.3.2
+distlib==0.3.3
distro==1.6.0
html5lib==1.1
msgpack==1.0.2