aboutsummaryrefslogtreecommitdiffstats
path: root/pkg_resources.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2013-03-19 17:45:46 -0700
committerJason R. Coombs <jaraco@jaraco.com>2013-03-19 17:45:46 -0700
commitd54b82ff21706452e66ae1b7f59fb6d5945fab4d (patch)
tree56190445836e2cc137b16d40774b5d9e760735a5 /pkg_resources.py
parent59cf01356e2611dd921d4cece2176fc9ea7cce59 (diff)
parent5b2e22a7985daad2d7e44efc8b73d202d287a645 (diff)
downloadexternal_python_setuptools-d54b82ff21706452e66ae1b7f59fb6d5945fab4d.tar.gz
external_python_setuptools-d54b82ff21706452e66ae1b7f59fb6d5945fab4d.tar.bz2
external_python_setuptools-d54b82ff21706452e66ae1b7f59fb6d5945fab4d.zip
Merge pkg_resources
--HG-- branch : Setuptools-Distribute merge
Diffstat (limited to 'pkg_resources.py')
-rw-r--r--pkg_resources.py37
1 files changed, 20 insertions, 17 deletions
diff --git a/pkg_resources.py b/pkg_resources.py
index 49f71c23..2ba0febf 100644
--- a/pkg_resources.py
+++ b/pkg_resources.py
@@ -13,7 +13,7 @@ The package resource API is designed to work with normal filesystem packages,
method.
"""
-import sys, os, zipimport, time, re, imp, types
+import sys, os, zipimport, time, re, imp
from urlparse import urlparse, urlunparse
try:
@@ -87,6 +87,7 @@ _sget_none = _sset_none = lambda *args: None
+
def get_supported_platform():
"""Return this platform's maximum compatible version.
@@ -260,6 +261,12 @@ macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)")
darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)")
get_platform = get_build_platform # XXX backward compat
+
+
+
+
+
+
def compatible_platforms(provided,required):
"""Can code for the `provided` platform run on the `required` platform?
@@ -435,7 +442,7 @@ class WorkingSet(object):
def add_entry(self, entry):
"""Add a path item to ``.entries``, finding any distributions on it
- ``find_distributions(entry,True)`` is used to find distributions
+ ``find_distributions(entry, True)`` is used to find distributions
corresponding to the path entry, and they are added. `entry` is
always appended to ``.entries``, even if it is already present.
(This is because ``sys.path`` can contain the same value more than
@@ -680,7 +687,6 @@ class WorkingSet(object):
activated to fulfill the requirements; all relevant distributions are
included, even if they were already activated in this working set.
"""
-
needed = self.resolve(parse_requirements(requirements))
for dist in needed:
@@ -688,7 +694,6 @@ class WorkingSet(object):
return needed
-
def subscribe(self, callback):
"""Invoke `callback` for all distributions (including existing ones)"""
if callback in self.callbacks:
@@ -697,14 +702,15 @@ class WorkingSet(object):
for dist in self:
callback(dist)
-
def _added_new(self, dist):
for callback in self.callbacks:
callback(dist)
def __getstate__(self):
- return (self.entries[:], self.entry_keys.copy(), self.by_key.copy(),
- self.callbacks[:])
+ return (
+ self.entries[:], self.entry_keys.copy(), self.by_key.copy(),
+ self.callbacks[:]
+ )
def __setstate__(self, (entries, keys, by_key, callbacks)):
self.entries = entries[:]
@@ -713,8 +719,6 @@ class WorkingSet(object):
self.callbacks = callbacks[:]
-
-
class Environment(object):
"""Searchable snapshot of distributions on a search path"""
@@ -1795,7 +1799,7 @@ def _handle_ns(packageName, path_item):
return None
module = sys.modules.get(packageName)
if module is None:
- module = sys.modules[packageName] = types.ModuleType(packageName)
+ module = sys.modules[packageName] = imp.new_module(packageName)
module.__path__ = []; _set_parent_ns(packageName)
elif not hasattr(module,'__path__'):
raise TypeError("Not a package:", packageName)
@@ -2337,12 +2341,9 @@ class Distribution(object):
if not loc:
return
- if path is sys.path:
- self.check_version_conflict()
-
nloc = _normalize_cached(loc)
bdir = os.path.dirname(nloc)
- npath= map(_normalize_cached, path)
+ npath= [(p and _normalize_cached(p) or p) for p in path]
bp = None
for p, item in enumerate(npath):
@@ -2350,10 +2351,14 @@ class Distribution(object):
break
elif item==bdir and self.precedence==EGG_DIST:
# if it's an .egg, give it precedence over its directory
+ if path is sys.path:
+ self.check_version_conflict()
path.insert(p, loc)
npath.insert(p, nloc)
break
else:
+ if path is sys.path:
+ self.check_version_conflict()
path.append(loc)
return
@@ -2370,7 +2375,6 @@ class Distribution(object):
return
-
def check_version_conflict(self):
if self.key=='setuptools':
return # ignore the inevitable setuptools self-conflicts :(
@@ -2631,7 +2635,7 @@ class Requirement:
def __contains__(self,item):
if isinstance(item,Distribution):
- if item.key <> self.key: return False
+ if item.key != self.key: return False
if self.index: item = item.parsed_version # only get if we need it
elif isinstance(item,basestring):
item = parse_version(item)
@@ -2739,7 +2743,6 @@ _initialize(globals())
# Prepare the master working set and make the ``require()`` API available
_declare_state('object', working_set = WorkingSet())
-
try:
# Does the main program list any requirements?
from __main__ import __requires__