diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2015-11-28 14:00:30 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2015-11-28 14:00:30 -0500 |
commit | ca89b06983e1a099bab3a7fe540ef72d210484b3 (patch) | |
tree | 3fdb704554d5e7429b8f6c495257aad68875e905 | |
parent | 78b89bdb89e27a165619496fc0b84979664784e3 (diff) | |
download | external_python_setuptools-ca89b06983e1a099bab3a7fe540ef72d210484b3.tar.gz external_python_setuptools-ca89b06983e1a099bab3a7fe540ef72d210484b3.tar.bz2 external_python_setuptools-ca89b06983e1a099bab3a7fe540ef72d210484b3.zip |
Encapsulate egg-info special behavior in EggInfoDistribution class.
-rw-r--r-- | pkg_resources/__init__.py | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 3090dd81..631c8547 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -2516,25 +2516,7 @@ class Distribution(object): @staticmethod def _version_from_egg_info(dist_path): - """ - Packages installed by distutils (e.g. numpy or scipy), - which uses an old safe_version, and so - their version numbers can get mangled when - converted to filenames (e.g., 1.11.0.dev0+2329eae to - 1.11.0.dev0_2329eae). These distributions will not be - parsed properly - downstream by Distribution and safe_version, so - take an extra step and try to get the version number from - the metadata file itself instead of the filename. - """ - _, ext = os.path.splitext(dist_path) - if ext != '.egg-info' or not os.path.isfile(dist_path): - return - try: - with open(dist_path) as strm: - return _version_from_file(strm) - except IOError: - pass + pass @property def hashcmp(self): @@ -2830,6 +2812,30 @@ class Distribution(object): return [dep for dep in self._dep_map if dep] +class EggInfoDistribution(Distribution): + + @staticmethod + def _version_from_egg_info(dist_path): + """ + Packages installed by distutils (e.g. numpy or scipy), + which uses an old safe_version, and so + their version numbers can get mangled when + converted to filenames (e.g., 1.11.0.dev0+2329eae to + 1.11.0.dev0_2329eae). These distributions will not be + parsed properly + downstream by Distribution and safe_version, so + take an extra step and try to get the version number from + the metadata file itself instead of the filename. + """ + if not os.path.isfile(dist_path): + return + try: + with open(dist_path) as strm: + return _version_from_file(strm) + except IOError: + pass + + class DistInfoDistribution(Distribution): """Wrap an actual or potential sys.path entry w/metadata, .dist-info style""" PKG_INFO = 'METADATA' @@ -2895,7 +2901,7 @@ class DistInfoDistribution(Distribution): _distributionImpl = { '.egg': Distribution, - '.egg-info': Distribution, + '.egg-info': EggInfoDistribution, '.dist-info': DistInfoDistribution, } |