diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2015-12-31 10:51:55 -0500 |
|---|---|---|
| committer | Jason R. Coombs <jaraco@jaraco.com> | 2015-12-31 10:51:55 -0500 |
| commit | 29fa01621c3de0a5c78c4f49b5d051386d0d566f (patch) | |
| tree | fce7387c8ba82178be987b004cbda1c22005a04f /pkg_resources/_vendor | |
| parent | 928324bd76f35e9c8c526df828577b5640a95ed0 (diff) | |
| parent | 6bdbe8957d8c8d293e3fea3fa4baf45eb7c3a3a4 (diff) | |
| download | python-setuptools-git-29fa01621c3de0a5c78c4f49b5d051386d0d566f.tar.gz | |
Merge with master. Ref #229.
--HG--
branch : feature/issue-229
Diffstat (limited to 'pkg_resources/_vendor')
| -rw-r--r-- | pkg_resources/_vendor/packaging/__about__.py | 2 | ||||
| -rw-r--r-- | pkg_resources/_vendor/packaging/specifiers.py | 70 | ||||
| -rw-r--r-- | pkg_resources/_vendor/packaging/version.py | 2 | ||||
| -rw-r--r-- | pkg_resources/_vendor/vendored.txt | 2 |
4 files changed, 45 insertions, 31 deletions
diff --git a/pkg_resources/_vendor/packaging/__about__.py b/pkg_resources/_vendor/packaging/__about__.py index 36f1a35c..eadb794e 100644 --- a/pkg_resources/_vendor/packaging/__about__.py +++ b/pkg_resources/_vendor/packaging/__about__.py @@ -22,7 +22,7 @@ __title__ = "packaging" __summary__ = "Core utilities for Python packages" __uri__ = "https://github.com/pypa/packaging" -__version__ = "15.0" +__version__ = "15.3" __author__ = "Donald Stufft" __email__ = "donald@stufft.io" diff --git a/pkg_resources/_vendor/packaging/specifiers.py b/pkg_resources/_vendor/packaging/specifiers.py index 9ad0a635..891664f0 100644 --- a/pkg_resources/_vendor/packaging/specifiers.py +++ b/pkg_resources/_vendor/packaging/specifiers.py @@ -152,6 +152,14 @@ class _IndividualSpecifier(BaseSpecifier): return version @property + def operator(self): + return self._spec[0] + + @property + def version(self): + return self._spec[1] + + @property def prereleases(self): return self._prereleases @@ -159,6 +167,9 @@ class _IndividualSpecifier(BaseSpecifier): def prereleases(self, value): self._prereleases = value + def __contains__(self, item): + return self.contains(item) + def contains(self, item, prereleases=None): # Determine if prereleases are to be allowed or not. if prereleases is None: @@ -176,7 +187,7 @@ class _IndividualSpecifier(BaseSpecifier): # Actually do the comparison to determine if this item is contained # within this Specifier or not. - return self._get_operator(self._spec[0])(item, self._spec[1]) + return self._get_operator(self.operator)(item, self.version) def filter(self, iterable, prereleases=None): yielded = False @@ -526,7 +537,7 @@ class Specifier(_IndividualSpecifier): # operators, and if they are if they are including an explicit # prerelease. operator, version = self._spec - if operator in ["==", ">=", "<=", "~="]: + if operator in ["==", ">=", "<=", "~=", "==="]: # The == specifier can include a trailing .*, if it does we # want to remove before parsing. if operator == "==" and version.endswith(".*"): @@ -666,6 +677,12 @@ class SpecifierSet(BaseSpecifier): return self._specs != other._specs + def __len__(self): + return len(self._specs) + + def __iter__(self): + return iter(self._specs) + @property def prereleases(self): # If we have been given an explicit prerelease modifier, then we'll @@ -673,42 +690,43 @@ class SpecifierSet(BaseSpecifier): if self._prereleases is not None: return self._prereleases + # If we don't have any specifiers, and we don't have a forced value, + # then we'll just return None since we don't know if this should have + # pre-releases or not. + if not self._specs: + return None + # Otherwise we'll see if any of the given specifiers accept # prereleases, if any of them do we'll return True, otherwise False. - # Note: The use of any() here means that an empty set of specifiers - # will always return False, this is an explicit design decision. return any(s.prereleases for s in self._specs) @prereleases.setter def prereleases(self, value): self._prereleases = value + def __contains__(self, item): + return self.contains(item) + def contains(self, item, prereleases=None): # Ensure that our item is a Version or LegacyVersion instance. if not isinstance(item, (LegacyVersion, Version)): item = parse(item) + # Determine if we're forcing a prerelease or not, if we're not forcing + # one for this particular filter call, then we'll use whatever the + # SpecifierSet thinks for whether or not we should support prereleases. + if prereleases is None: + prereleases = self.prereleases + # We can determine if we're going to allow pre-releases by looking to # see if any of the underlying items supports them. If none of them do # and this item is a pre-release then we do not allow it and we can # short circuit that here. # Note: This means that 1.0.dev1 would not be contained in something # like >=1.0.devabc however it would be in >=1.0.debabc,>0.0.dev0 - if (not (self.prereleases or prereleases)) and item.is_prerelease: + if not prereleases and item.is_prerelease: return False - # Determine if we're forcing a prerelease or not, we bypass - # self.prereleases here and use self._prereleases because we want to - # only take into consideration actual *forced* values. The underlying - # specifiers will handle the other logic. - # The logic here is: If prereleases is anything but None, we'll just - # go aheand and continue to use that. However if - # prereleases is None, then we'll use whatever the - # value of self._prereleases is as long as it is not - # None itself. - if prereleases is None and self._prereleases is not None: - prereleases = self._prereleases - # We simply dispatch to the underlying specs here to make sure that the # given version is contained within all of them. # Note: This use of all() here means that an empty set of specifiers @@ -719,24 +737,18 @@ class SpecifierSet(BaseSpecifier): ) def filter(self, iterable, prereleases=None): - # Determine if we're forcing a prerelease or not, we bypass - # self.prereleases here and use self._prereleases because we want to - # only take into consideration actual *forced* values. The underlying - # specifiers will handle the other logic. - # The logic here is: If prereleases is anything but None, we'll just - # go aheand and continue to use that. However if - # prereleases is None, then we'll use whatever the - # value of self._prereleases is as long as it is not - # None itself. - if prereleases is None and self._prereleases is not None: - prereleases = self._prereleases + # Determine if we're forcing a prerelease or not, if we're not forcing + # one for this particular filter call, then we'll use whatever the + # SpecifierSet thinks for whether or not we should support prereleases. + if prereleases is None: + prereleases = self.prereleases # If we have any specifiers, then we want to wrap our iterable in the # filter method for each one, this will act as a logical AND amongst # each specifier. if self._specs: for spec in self._specs: - iterable = spec.filter(iterable, prereleases=prereleases) + iterable = spec.filter(iterable, prereleases=bool(prereleases)) return iterable # If we do not have any specifiers, then we need to have a rough filter # which will filter out any pre-releases, unless there are no final diff --git a/pkg_resources/_vendor/packaging/version.py b/pkg_resources/_vendor/packaging/version.py index cf8afb16..4ba574b9 100644 --- a/pkg_resources/_vendor/packaging/version.py +++ b/pkg_resources/_vendor/packaging/version.py @@ -324,6 +324,8 @@ def _parse_letter_version(letter, number): letter = "b" elif letter in ["c", "pre", "preview"]: letter = "rc" + elif letter in ["rev", "r"]: + letter = "post" return letter, int(number) if not letter and number: diff --git a/pkg_resources/_vendor/vendored.txt b/pkg_resources/_vendor/vendored.txt index 75a31670..4cf7664e 100644 --- a/pkg_resources/_vendor/vendored.txt +++ b/pkg_resources/_vendor/vendored.txt @@ -1 +1 @@ -packaging==15.0 +packaging==15.3 |
