Skip to content

Upgrade pkg_resources to setuptools 2.1 #1490

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 21, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
Changelog
=========

1.5.2 (unreleased)
------------------

* Upgraded the vendored ``pkg_resources`` and ``_markerlib`` to setuptools 2.1.


1.5.1 (2014-01-20)
------------------

Expand Down
2 changes: 1 addition & 1 deletion pip/_vendor/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Modifications
Markerlib and pkg_resources
===========================

Markerlib and pkg_resources has been pulled in from setuptools 2.0.2
Markerlib and pkg_resources has been pulled in from setuptools 2.1


Note to Downstream Distributors
Expand Down
54 changes: 23 additions & 31 deletions pip/_vendor/pkg_resources.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Package resource API
"""
Package resource API
--------------------

A resource is a logical file contained within a package, or a logical
Expand Down Expand Up @@ -1717,7 +1718,14 @@ def find_distributions(path_item, only=False):
finder = _find_adapter(_distribution_finders, importer)
return finder(importer, path_item, only)

def find_in_zip(importer, path_item, only=False):
def find_eggs_in_zip(importer, path_item, only=False):
"""
Find eggs in zip files; possibly multiple nested eggs.
"""
if importer.archive.endswith('.whl'):
# wheels are not supported with this finder
# they don't have PKG-INFO metadata, and won't ever contain eggs
return
metadata = EggMetadata(importer)
if metadata.has_metadata('PKG-INFO'):
yield Distribution.from_filename(path_item, metadata=metadata)
Expand All @@ -1726,10 +1734,10 @@ def find_in_zip(importer, path_item, only=False):
for subitem in metadata.resource_listdir('/'):
if subitem.endswith('.egg'):
subpath = os.path.join(path_item, subitem)
for dist in find_in_zip(zipimport.zipimporter(subpath), subpath):
for dist in find_eggs_in_zip(zipimport.zipimporter(subpath), subpath):
yield dist

register_finder(zipimport.zipimporter, find_in_zip)
register_finder(zipimport.zipimporter, find_eggs_in_zip)

def find_nothing(importer, path_item, only=False):
return ()
Expand Down Expand Up @@ -2032,7 +2040,7 @@ def require(self, env=None, installer=None):
list(map(working_set.add,
working_set.resolve(self.dist.requires(self.extras),env,installer)))

#@classmethod
@classmethod
def parse(cls, src, dist=None):
"""Parse a single entry point from string `src`

Expand Down Expand Up @@ -2064,9 +2072,7 @@ def parse(cls, src, dist=None):
else:
return cls(name.strip(), value.strip(), attrs, extras, dist)

parse = classmethod(parse)

#@classmethod
@classmethod
def parse_group(cls, group, lines, dist=None):
"""Parse an entry point group"""
if not MODULE(group):
Expand All @@ -2079,9 +2085,7 @@ def parse_group(cls, group, lines, dist=None):
this[ep.name]=ep
return this

parse_group = classmethod(parse_group)

#@classmethod
@classmethod
def parse_map(cls, data, dist=None):
"""Parse a map of entry point groups"""
if isinstance(data,dict):
Expand All @@ -2100,8 +2104,6 @@ def parse_map(cls, data, dist=None):
maps[group] = cls.parse_group(group, lines, dist)
return maps

parse_map = classmethod(parse_map)


def _remove_md5_fragment(location):
if not location:
Expand All @@ -2128,7 +2130,7 @@ def __init__(self, location=None, metadata=None, project_name=None,
self.precedence = precedence
self._provider = metadata or empty_provider

#@classmethod
@classmethod
def from_location(cls,location,basename,metadata=None,**kw):
project_name, version, py_version, platform = [None]*4
basename, ext = os.path.splitext(basename)
Expand All @@ -2144,7 +2146,6 @@ def from_location(cls,location,basename,metadata=None,**kw):
location, metadata, project_name=project_name, version=version,
py_version=py_version, platform=platform, **kw
)
from_location = classmethod(from_location)

hashcmp = property(
lambda self: (
Expand Down Expand Up @@ -2177,26 +2178,23 @@ def __ne__(self, other):
# metadata until/unless it's actually needed. (i.e., some distributions
# may not know their name or version without loading PKG-INFO)

#@property
@property
def key(self):
try:
return self._key
except AttributeError:
self._key = key = self.project_name.lower()
return key
key = property(key)

#@property
@property
def parsed_version(self):
try:
return self._parsed_version
except AttributeError:
self._parsed_version = pv = parse_version(self.version)
return pv

parsed_version = property(parsed_version)

#@property
@property
def version(self):
try:
return self._version
Expand All @@ -2209,9 +2207,8 @@ def version(self):
raise ValueError(
"Missing 'Version:' header and/or %s file" % self.PKG_INFO, self
)
version = property(version)

#@property
@property
def _dep_map(self):
try:
return self.__dep_map
Expand All @@ -2229,7 +2226,6 @@ def _dep_map(self):
extra = safe_extra(extra) or None
dm.setdefault(extra,[]).extend(parse_requirements(reqs))
return dm
_dep_map = property(_dep_map)

def requires(self,extras=()):
"""List of Requirements needed for this distro if `extras` are used"""
Expand Down Expand Up @@ -2287,13 +2283,12 @@ def __getattr__(self,attr):
raise AttributeError(attr)
return getattr(self._provider, attr)

#@classmethod
@classmethod
def from_filename(cls,filename,metadata=None, **kw):
return cls.from_location(
_normalize_cached(filename), os.path.basename(filename), metadata,
**kw
)
from_filename = classmethod(from_filename)

def as_requirement(self):
"""Return a ``Requirement`` that matches this distribution exactly"""
Expand Down Expand Up @@ -2400,10 +2395,9 @@ def clone(self,**kw):
kw.setdefault('metadata', self._provider)
return self.__class__(**kw)

#@property
@property
def extras(self):
return [dep for dep in self._dep_map if dep]
extras = property(extras)


class DistInfoDistribution(Distribution):
Expand Down Expand Up @@ -2607,7 +2601,7 @@ def __hash__(self):

def __repr__(self): return "Requirement.parse(%r)" % str(self)

#@staticmethod
@staticmethod
def parse(s):
reqs = list(parse_requirements(s))
if reqs:
Expand All @@ -2616,8 +2610,6 @@ def parse(s):
raise ValueError("Expected only one requirement", s)
raise ValueError("No requirements found", s)

parse = staticmethod(parse)

state_machine = {
# =><
'<': '--T',
Expand Down