summaryrefslogtreecommitdiff
path: root/setuptools
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools')
-rwxr-xr-xsetuptools/command/egg_info.py22
-rw-r--r--setuptools/dist.py30
2 files changed, 26 insertions, 26 deletions
diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py
index c5a404e9..198f9635 100755
--- a/setuptools/command/egg_info.py
+++ b/setuptools/command/egg_info.py
@@ -7,7 +7,7 @@ import os, re
from setuptools import Command
from distutils.errors import *
from distutils import log
-from pkg_resources import parse_requirements, safe_name, \
+from pkg_resources import parse_requirements, safe_name, parse_version, \
safe_version, yield_lines, EntryPoint, iter_entry_points
class egg_info(Command):
@@ -65,16 +65,16 @@ class egg_info(Command):
#
self.distribution.metadata.version = self.egg_version
-
-
-
-
-
-
-
-
-
-
+ # If we bootstrapped around the lack of a PKG-INFO, as might be the
+ # case in a fresh checkout, make sure that any special tags get added
+ # to the version info
+ #
+ pd = self.distribution._patched_dist
+ if pd is not None and pd.key==self.egg_name.lower():
+ pd._version = self.egg_version
+ pd._parsed_version = parse_version(self.egg_version)
+ self.distribution._patched_dist = None
+
diff --git a/setuptools/dist.py b/setuptools/dist.py
index 31a07827..f0ad6f8b 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -188,20 +188,20 @@ class Distribution(_Distribution):
distribution for the included and excluded features.
"""
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ _patched_dist = None
+
+ def patch_missing_pkg_info(self, attrs):
+ # Fake up a replacement for the data that would normally come from
+ # PKG-INFO, but which might not yet be built if this is a fresh
+ # checkout.
+ #
+ if not attrs or 'name' not in attrs or 'version' not in attrs:
+ return
+ key = pkg_resources.safe_name(str(attrs['name'])).lower()
+ dist = pkg_resources.working_set.by_key.get(key)
+ if dist is not None and not dist.has_metadata('PKG-INFO'):
+ dist._version = pkg_resources.safe_version(str(attrs['version']))
+ self._patched_dist = dist
def __init__ (self, attrs=None):
have_package_data = hasattr(self, "package_data")
@@ -210,7 +210,7 @@ class Distribution(_Distribution):
self.requires = [] # XXX
self.features = {}
self.dist_files = []
-
+ self.patch_missing_pkg_info(attrs)
if attrs and 'setup_requires' in attrs:
# Make sure we have any eggs needed to interpret 'attrs'
self.fetch_build_eggs(attrs.pop('setup_requires'))