aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.hgtags1
-rw-r--r--CHANGES.txt12
-rw-r--r--ez_setup.py2
-rw-r--r--pkg_resources.py36
-rw-r--r--setuptools/_vendor/packaging/__about__.py2
-rw-r--r--setuptools/_vendor/packaging/version.py74
-rw-r--r--setuptools/_vendor/vendored.txt2
-rw-r--r--setuptools/version.py2
8 files changed, 80 insertions, 51 deletions
diff --git a/.hgtags b/.hgtags
index 26f830e1..c0ace198 100644
--- a/.hgtags
+++ b/.hgtags
@@ -167,3 +167,4 @@ d62bf4e407b3b9b5bedcc1396a9ba46f35571902 8.0.1
1c03d512e39d5cfd711ae3ed7e316769f427e43b 8.0.2
6c3467488123ce70b1dd009145a02f51fb78cdcc 8.0.3
2c467afffe9fe1e14618b576fac6b4f7c412a61e 8.0.4
+3f87370b6863e5a4e831b394ef1a58e0e97a4336 8.1
diff --git a/CHANGES.txt b/CHANGES.txt
index 4048ac8d..3621ed77 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,11 +3,21 @@ CHANGES
=======
---
-8.1
+8.2
---
* Pull Request #85: Search egg-base when adding egg-info to manifest.
+---
+8.1
+---
+
+* Upgrade ``packaging`` to 14.5, giving preference to "rc" as designator for
+ release candidates over "c".
+* PEP-440 warnings are now raised as their own class,
+ ``pkg_resources.PEP440Warning``, instead of RuntimeWarning.
+* Disabled warnings on empty versions.
+
-----
8.0.4
-----
diff --git a/ez_setup.py b/ez_setup.py
index 6c77135b..969a073a 100644
--- a/ez_setup.py
+++ b/ez_setup.py
@@ -36,7 +36,7 @@ try:
except ImportError:
USER_SITE = None
-DEFAULT_VERSION = "8.0.5"
+DEFAULT_VERSION = "8.2"
DEFAULT_URL = "https://pypi.python.org/packages/source/s/setuptools/"
def _python_cmd(*args):
diff --git a/pkg_resources.py b/pkg_resources.py
index 5af4c869..87fd2782 100644
--- a/pkg_resources.py
+++ b/pkg_resources.py
@@ -80,6 +80,13 @@ import setuptools._vendor.packaging.specifiers
packaging = setuptools._vendor.packaging
+class PEP440Warning(RuntimeWarning):
+ """
+ Used when there is an issue with a version or specifier not complying with
+ PEP 440.
+ """
+
+
class _SetuptoolsVersionMixin(object):
def __hash__(self):
@@ -272,6 +279,9 @@ __all__ = [
'ResolutionError', 'VersionConflict', 'DistributionNotFound',
'UnknownExtra', 'ExtractionError',
+ # Warnings
+ 'PEP440Warning',
+
# Parsing functions and string utilities
'parse_requirements', 'parse_version', 'safe_name', 'safe_version',
'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections',
@@ -2415,15 +2425,23 @@ class Distribution(object):
self._parsed_version = parse_version(self.version)
if isinstance(
self._parsed_version, packaging.version.LegacyVersion):
- warnings.warn(
- "'%s (%s)' is being parsed as a legacy, non PEP 440, "
- "version. You may find odd behavior and sort order. In "
- "particular it will be sorted as less than 0.0. It is "
- "recommend to migrate to PEP 440 compatible versions." % (
- self.project_name, self.version,
- ),
- RuntimeWarning,
- )
+ # While an empty version is techincally a legacy version and
+ # is not a valid PEP 440 version, it's also unlikely to
+ # actually come from someone and instead it is more likely that
+ # it comes from setuptools attempting to parse a filename and
+ # including it in the list. So for that we'll gate this warning
+ # on if the version is anything at all or not.
+ if self.version:
+ warnings.warn(
+ "'%s (%s)' is being parsed as a legacy, non PEP 440, "
+ "version. You may find odd behavior and sort order. "
+ "In particular it will be sorted as less than 0.0. It "
+ "is recommend to migrate to PEP 440 compatible "
+ "versions." % (
+ self.project_name, self.version,
+ ),
+ PEP440Warning,
+ )
return self._parsed_version
diff --git a/setuptools/_vendor/packaging/__about__.py b/setuptools/_vendor/packaging/__about__.py
index d3e3dacf..d3e50f1e 100644
--- a/setuptools/_vendor/packaging/__about__.py
+++ b/setuptools/_vendor/packaging/__about__.py
@@ -22,7 +22,7 @@ __title__ = "packaging"
__summary__ = "Core utilities for Python packages"
__uri__ = "https://github.com/pypa/packaging"
-__version__ = "14.4"
+__version__ = "14.5"
__author__ = "Donald Stufft"
__email__ = "donald@stufft.io"
diff --git a/setuptools/_vendor/packaging/version.py b/setuptools/_vendor/packaging/version.py
index e76e9607..8d779a48 100644
--- a/setuptools/_vendor/packaging/version.py
+++ b/setuptools/_vendor/packaging/version.py
@@ -21,7 +21,7 @@ from ._structures import Infinity
__all__ = [
- "parse", "Version", "LegacyVersion", "InvalidVersion",
+ "parse", "Version", "LegacyVersion", "InvalidVersion", "VERSION_PATTERN"
]
@@ -156,44 +156,44 @@ def _legacy_cmpkey(version):
return epoch, parts
+# Deliberately not anchored to the start and end of the string, to make it
+# easier for 3rd party code to reuse
+VERSION_PATTERN = r"""
+ v?
+ (?:
+ (?:(?P<epoch>[0-9]+)!)? # epoch
+ (?P<release>[0-9]+(?:\.[0-9]+)*) # release segment
+ (?P<pre> # pre-release
+ [-_\.]?
+ (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
+ [-_\.]?
+ (?P<pre_n>[0-9]+)?
+ )?
+ (?P<post> # post release
+ (?:-(?P<post_n1>[0-9]+))
+ |
+ (?:
+ [-_\.]?
+ (?P<post_l>post|rev|r)
+ [-_\.]?
+ (?P<post_n2>[0-9]+)?
+ )
+ )?
+ (?P<dev> # dev release
+ [-_\.]?
+ (?P<dev_l>dev)
+ [-_\.]?
+ (?P<dev_n>[0-9]+)?
+ )?
+ )
+ (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))? # local version
+"""
+
class Version(_BaseVersion):
_regex = re.compile(
- r"""
- ^
- \s*
- v?
- (?:
- (?:(?P<epoch>[0-9]+)!)? # epoch
- (?P<release>[0-9]+(?:\.[0-9]+)*) # release segment
- (?P<pre> # pre-release
- [-_\.]?
- (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
- [-_\.]?
- (?P<pre_n>[0-9]+)?
- )?
- (?P<post> # post release
- (?:-(?P<post_n1>[0-9]+))
- |
- (?:
- [-_\.]?
- (?P<post_l>post|rev|r)
- [-_\.]?
- (?P<post_n2>[0-9]+)?
- )
- )?
- (?P<dev> # dev release
- [-_\.]?
- (?P<dev_l>dev)
- [-_\.]?
- (?P<dev_n>[0-9]+)?
- )?
- )
- (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))? # local version
- \s*
- $
- """,
+ r"^\s*" + VERSION_PATTERN + r"\s*$",
re.VERBOSE | re.IGNORECASE,
)
@@ -297,8 +297,8 @@ def _parse_letter_version(letter, number):
letter = "a"
elif letter == "beta":
letter = "b"
- elif letter in ["rc", "pre", "preview"]:
- letter = "c"
+ elif letter in ["c", "pre", "preview"]:
+ letter = "rc"
return letter, int(number)
if not letter and number:
diff --git a/setuptools/_vendor/vendored.txt b/setuptools/_vendor/vendored.txt
index 576aa8db..723e026b 100644
--- a/setuptools/_vendor/vendored.txt
+++ b/setuptools/_vendor/vendored.txt
@@ -1 +1 @@
-packaging==14.4
+packaging==14.5
diff --git a/setuptools/version.py b/setuptools/version.py
index d9d36010..ad8076ba 100644
--- a/setuptools/version.py
+++ b/setuptools/version.py
@@ -1 +1 @@
-__version__ = '8.0.5'
+__version__ = '8.2'