From c0032c0de589c7f8f633314cae891bbb2191dbce Mon Sep 17 00:00:00 2001 From: guyroz Date: Sat, 17 Sep 2011 16:20:05 +0300 Subject: Issue #208: fixing parse_version and post-release tags including tests --HG-- branch : distribute extra : rebase_source : f953ba35614c338161249d6d74c7cda08acdf32b --- pkg_resources.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 52d92669..e8dae8a4 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -1912,7 +1912,7 @@ replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get def _parse_version_parts(s): for part in component_re.split(s): part = replace(part,part) - if not part or part=='.': + if part in ['', '.']: continue if part[:1] in '0123456789': yield part.zfill(8) # pad for numeric comparison @@ -1955,8 +1955,6 @@ def parse_version(s): parts = [] for part in _parse_version_parts(s.lower()): if part.startswith('*'): - if part<'*final': # remove '-' before a prerelease tag - while parts and parts[-1]=='*final-': parts.pop() # remove trailing zeros from each series of numeric parts while parts and parts[-1]=='00000000': parts.pop() -- cgit v1.2.3 From b27cbb5efa3005728fe1c892a528a614e306bc5d Mon Sep 17 00:00:00 2001 From: Tarek Ziade Date: Thu, 17 Nov 2011 11:07:08 -0800 Subject: workaround a cache issue refers #258 --HG-- branch : distribute extra : rebase_source : c8897b0541098e34f4347621f54ed79ef32be229 --- pkg_resources.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index e8dae8a4..4cc73bb8 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -508,6 +508,10 @@ class WorkingSet(object): """ seen = {} for item in self.entries: + if item not in self.entry_keys: + # workaround a cache issue + continue + for key in self.entry_keys[item]: if key not in seen: seen[key]=1 -- cgit v1.2.3 From eeb3f1916e5a11a35bd90351d5df6e199c5a383c Mon Sep 17 00:00:00 2001 From: Arfrever Frehtes Taifersar Arahesis Date: Wed, 2 May 2012 16:03:44 +0200 Subject: Add support for CPython 3.3. --HG-- branch : distribute extra : rebase_source : b2b90c6df17a19e6e9b876f13a9c3239e41fa141 --- pkg_resources.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 4cc73bb8..e8a73776 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -1325,6 +1325,14 @@ class DefaultProvider(EggProvider): register_loader_type(type(None), DefaultProvider) +try: + # CPython >=3.3 + import _frozen_importlib +except ImportError: + pass +else: + register_loader_type(_frozen_importlib.SourceFileLoader, DefaultProvider) + class EmptyProvider(NullProvider): """Provider that returns nothing for all requests""" @@ -1759,6 +1767,14 @@ def find_on_path(importer, path_item, only=False): break register_finder(ImpWrapper,find_on_path) +try: + # CPython >=3.3 + import _frozen_importlib +except ImportError: + pass +else: + register_finder(_frozen_importlib.FileFinder, find_on_path) + _declare_state('dict', _namespace_handlers={}) _declare_state('dict', _namespace_packages={}) -- cgit v1.2.3 From 021d9e02866e72c17cc39725d8138cb65a474c39 Mon Sep 17 00:00:00 2001 From: Arfrever Frehtes Taifersar Arahesis Date: Wed, 2 May 2012 18:03:54 +0200 Subject: Fix support for namespace packages with CPython 3.3. --HG-- branch : distribute extra : rebase_source : 3d6c103fefe30d3115dacca58c1a08fd26d0d8fa --- pkg_resources.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index e8a73776..a61c0efe 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -1874,6 +1874,14 @@ def file_ns_handler(importer, path_item, packageName, module): register_namespace_handler(ImpWrapper,file_ns_handler) register_namespace_handler(zipimport.zipimporter,file_ns_handler) +try: + # CPython >=3.3 + import _frozen_importlib +except ImportError: + pass +else: + register_namespace_handler(_frozen_importlib.FileFinder, file_ns_handler) + def null_ns_handler(importer, path_item, packageName, module): return None -- cgit v1.2.3 From ec81bfe54962ae4f902e8536b5841e11402a6505 Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Fri, 22 Jun 2012 23:33:19 -0400 Subject: find .dist-info distributions as well --HG-- branch : distribute extra : rebase_source : 9ec6872c031166c66743ee87d7018161aa415fb1 --- pkg_resources.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index a61c0efe..350a50ef 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -15,6 +15,7 @@ method. import sys, os, zipimport, time, re, imp, types from urlparse import urlparse, urlunparse +from email.parser import Parser try: frozenset @@ -1746,7 +1747,7 @@ def find_on_path(importer, path_item, only=False): # scan for .egg and .egg-info in directory for entry in os.listdir(path_item): lower = entry.lower() - if lower.endswith('.egg-info'): + if lower.endswith('.egg-info') or lower.endswith('.dist-info'): fullpath = os.path.join(path_item, entry) if os.path.isdir(fullpath): # egg-info directory, allow getting metadata @@ -2119,6 +2120,8 @@ def _remove_md5_fragment(location): class Distribution(object): """Wrap an actual or potential sys.path entry w/metadata""" + PKG_INFO = 'PKG-INFO' + def __init__(self, location=None, metadata=None, project_name=None, version=None, py_version=PY_MAJOR, platform=None, precedence = EGG_DIST @@ -2136,12 +2139,14 @@ class Distribution(object): def from_location(cls,location,basename,metadata=None,**kw): project_name, version, py_version, platform = [None]*4 basename, ext = os.path.splitext(basename) - if ext.lower() in (".egg",".egg-info"): + if ext.lower() in _distributionImpl: + # .dist-info gets much metadata differently match = EGG_NAME(basename) if match: project_name, version, py_version, platform = match.group( 'name','ver','pyver','plat' ) + cls = _distributionImpl[ext.lower()] return cls( location, metadata, project_name=project_name, version=version, py_version=py_version, platform=platform, **kw @@ -2204,13 +2209,13 @@ class Distribution(object): try: return self._version except AttributeError: - for line in self._get_metadata('PKG-INFO'): + for line in self._get_metadata(self.PKG_INFO): if line.lower().startswith('version:'): self._version = safe_version(line.split(':',1)[1].strip()) return self._version else: raise ValueError( - "Missing 'Version:' header and/or PKG-INFO file", self + "Missing 'Version:' header and/or %s file" % self.PKG_INFO, self ) version = property(version) @@ -2441,6 +2446,54 @@ class Distribution(object): extras = property(extras) +class DistInfoDistribution(Distribution): + """Wrap an actual or potential sys.path entry w/metadata, .dist-info style""" + PKG_INFO = 'METADATA' + + @property + def _parsed_pkg_info(self): + """Parse and cache metadata""" + try: + return self._pkg_info + except AttributeError: + self._pkg_info = Parser().parsestr(self.get_metadata(self.PKG_INFO)) + return self._pkg_info + + @property + def _dep_map(self): + try: + return self.__dep_map + except AttributeError: + dm = self.__dep_map = {None: []} + # Including condition expressions + # XXX parse condition expressions, extras + reqs = self._parsed_pkg_info.get_all('Requires-Dist') +# extras = self._parsed_pkg_info.get_all('Provides-Extra') or [] +# for extra,reqs in split_sections(self._get_metadata(name)): +# if extra: extra = safe_extra(extra) + dm.setdefault(None,[]).extend(parse_requirements(reqs)) + return dm + + def requires(self,extras=()): + """List of Requirements needed for this distro if `extras` are used""" + dm = self._dep_map + deps = [] + deps.extend(dm.get(None,())) + for ext in extras: + try: + deps.extend(dm[safe_extra(ext)]) + except KeyError: + raise UnknownExtra( + "%s has no such extra feature %r" % (self, ext) + ) + return deps + + +_distributionImpl = {'.egg': Distribution, + '.egg-info': Distribution, + '.dist-info': DistInfoDistribution } + + def issue_warning(*args,**kw): level = 1 g = globals() -- cgit v1.2.3 From ac2bc6ee75884f521d9097b83315adf413ff2a7c Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Fri, 29 Jun 2012 03:50:45 -0400 Subject: implement environment markers --HG-- branch : distribute extra : rebase_source : 16af7be95f787ab5de573388270b97cda6c9cea7 --- pkg_resources.py | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 350a50ef..5e3967f3 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -15,7 +15,6 @@ method. import sys, os, zipimport, time, re, imp, types from urlparse import urlparse, urlunparse -from email.parser import Parser try: frozenset @@ -2456,6 +2455,7 @@ class DistInfoDistribution(Distribution): try: return self._pkg_info except AttributeError: + from email.parser import Parser self._pkg_info = Parser().parsestr(self.get_metadata(self.PKG_INFO)) return self._pkg_info @@ -2464,15 +2464,41 @@ class DistInfoDistribution(Distribution): try: return self.__dep_map except AttributeError: - dm = self.__dep_map = {None: []} - # Including condition expressions - # XXX parse condition expressions, extras - reqs = self._parsed_pkg_info.get_all('Requires-Dist') -# extras = self._parsed_pkg_info.get_all('Provides-Extra') or [] -# for extra,reqs in split_sections(self._get_metadata(name)): -# if extra: extra = safe_extra(extra) - dm.setdefault(None,[]).extend(parse_requirements(reqs)) - return dm + self.__dep_map = self._compute_dependencies() + return self.__dep_map + + def _compute_dependencies(self): + """Recompute this distribution's dependencies.""" + def dummy_marker(marker): + def marker_fn(environment=None, override=None): + return True + return marker_fn + try: + from wheel.markers import as_function + except ImportError: + as_function = dummy_marker + dm = self.__dep_map = {None: []} + + reqs = [] + # Including any condition expressions + for req in self._parsed_pkg_info.get_all('Requires-Dist'): + rs = req.split(';', 1) + [''] + parsed = parse_requirements(rs[0]).next() + parsed.marker_fn = as_function(rs[1].strip()) + reqs.append(parsed) + + def reqs_for_extra(extra): + for req in reqs: + if req.marker_fn(override={'extra':extra}): + yield req + + common = set(reqs_for_extra(None)) + dm[None].extend(common) + + for extra in self._parsed_pkg_info.get_all('Provides-Extra'): + dm[extra] = list(set(reqs_for_extra(extra)) - common) + + return dm def requires(self,extras=()): """List of Requirements needed for this distro if `extras` are used""" -- cgit v1.2.3 From 07f0901db42f1bc5d411868e92e7e77d27f90323 Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Fri, 29 Jun 2012 04:11:44 -0400 Subject: use markerlib --HG-- branch : distribute extra : rebase_source : a684fafb1aeb44954bdb8604a77fcc8d1549648c --- pkg_resources.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 5e3967f3..dea54490 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2474,7 +2474,7 @@ class DistInfoDistribution(Distribution): return True return marker_fn try: - from wheel.markers import as_function + from markerlib import as_function except ImportError: as_function = dummy_marker dm = self.__dep_map = {None: []} -- cgit v1.2.3 From d87cabbf4cf11c0049c95d3359fc249b002b542e Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Fri, 29 Jun 2012 19:48:39 -0400 Subject: add missing == to prefix-less Requires-Dist version specifiers --HG-- branch : distribute extra : rebase_source : 131e2f27792688da5dd1f8bf984939ab51403a64 --- pkg_resources.py | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index dea54490..10c8aff5 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2466,12 +2466,36 @@ class DistInfoDistribution(Distribution): except AttributeError: self.__dep_map = self._compute_dependencies() return self.__dep_map + + def _preparse_requirement(self, requires_dist): + """Return (dist, versions, marker). + Add == prefix to version specifiers as necessary. + """ + m = re.compile(r"^(?P.*?)\s*(\((?P.*?)\))?\s*(;\s*(?P.*))?$") + match = m.match(requires_dist) + if not match: + raise ValueError("Unexpected Requires-Dist: %s" % requires_dist) + dist = match.group('d') + if match.group('v'): + vers = match.group('v').split(',') + else: + vers = [] + mark = match.group('m') or '' + for i, v in enumerate(vers): + if not VERSION(v): + v = "==%s" % v + if not VERSION(v): + raise ValueError("Unexpected version: (%s)" % + match.group('v')) + vers[i] = v + return (dist, ', '.join(vers), mark) def _compute_dependencies(self): """Recompute this distribution's dependencies.""" def dummy_marker(marker): def marker_fn(environment=None, override=None): return True + marker_fn.__doc__ = marker return marker_fn try: from markerlib import as_function @@ -2481,10 +2505,10 @@ class DistInfoDistribution(Distribution): reqs = [] # Including any condition expressions - for req in self._parsed_pkg_info.get_all('Requires-Dist'): - rs = req.split(';', 1) + [''] - parsed = parse_requirements(rs[0]).next() - parsed.marker_fn = as_function(rs[1].strip()) + for req in self._parsed_pkg_info.get_all('Requires-Dist'): + dist, vers, mark = self._preparse_requirement(req) + parsed = parse_requirements("%s %s" % (dist, vers)).next() + parsed.marker_fn = as_function(mark) reqs.append(parsed) def reqs_for_extra(extra): @@ -2492,11 +2516,12 @@ class DistInfoDistribution(Distribution): if req.marker_fn(override={'extra':extra}): yield req - common = set(reqs_for_extra(None)) + common = set(reqs_for_extra(None)) dm[None].extend(common) for extra in self._parsed_pkg_info.get_all('Provides-Extra'): - dm[extra] = list(set(reqs_for_extra(extra)) - common) + extra = safe_extra(extra.strip()) + dm[extra] = list(set(reqs_for_extra(extra)) - common) return dm -- cgit v1.2.3 From 9b885a3c4843c3985413181a6d18b18ce015cdce Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Sat, 30 Jun 2012 08:52:43 -0400 Subject: simplify Requires-Dist pre-parser --HG-- branch : distribute extra : rebase_source : 10900b24f80bc412881812fcea4e54e473a86068 --- pkg_resources.py | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 10c8aff5..20513dc7 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2448,6 +2448,7 @@ class Distribution(object): class DistInfoDistribution(Distribution): """Wrap an actual or potential sys.path entry w/metadata, .dist-info style""" PKG_INFO = 'METADATA' + EQEQ = re.compile(r"([\(,])\s*(\d.*?)\s*([,\)])") @property def _parsed_pkg_info(self): @@ -2471,24 +2472,12 @@ class DistInfoDistribution(Distribution): """Return (dist, versions, marker). Add == prefix to version specifiers as necessary. """ - m = re.compile(r"^(?P.*?)\s*(\((?P.*?)\))?\s*(;\s*(?P.*))?$") - match = m.match(requires_dist) - if not match: - raise ValueError("Unexpected Requires-Dist: %s" % requires_dist) - dist = match.group('d') - if match.group('v'): - vers = match.group('v').split(',') - else: - vers = [] - mark = match.group('m') or '' - for i, v in enumerate(vers): - if not VERSION(v): - v = "==%s" % v - if not VERSION(v): - raise ValueError("Unexpected version: (%s)" % - match.group('v')) - vers[i] = v - return (dist, ', '.join(vers), mark) + parts = requires_dist.split(';', 1) + [''] + distvers = parts[0].strip() + mark = parts[1].strip() + distvers = re.sub(self.EQEQ, r"\1==\2\3", distvers) + distvers = distvers.replace('(', '').replace(')', '') + return (distvers, mark) def _compute_dependencies(self): """Recompute this distribution's dependencies.""" @@ -2506,8 +2495,8 @@ class DistInfoDistribution(Distribution): reqs = [] # Including any condition expressions for req in self._parsed_pkg_info.get_all('Requires-Dist'): - dist, vers, mark = self._preparse_requirement(req) - parsed = parse_requirements("%s %s" % (dist, vers)).next() + distvers, mark = self._preparse_requirement(req) + parsed = parse_requirements(distvers).next() parsed.marker_fn = as_function(mark) reqs.append(parsed) -- cgit v1.2.3 From 7afb6a596a2d16b4d74b1b890eb9ca44d11197bd Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Sat, 30 Jun 2012 09:02:41 -0400 Subject: update docstring --HG-- branch : distribute extra : rebase_source : ee1bf5fd6c851fa3d9c87c1132f0864a811f09e5 --- pkg_resources.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 20513dc7..652079ec 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2469,8 +2469,9 @@ class DistInfoDistribution(Distribution): return self.__dep_map def _preparse_requirement(self, requires_dist): - """Return (dist, versions, marker). - Add == prefix to version specifiers as necessary. + """Convert 'Foobar (1); baz' to ('Foobar ==1', 'baz') + Split environment marker, add == prefix to version specifiers as + necessary, and remove parenthesis. """ parts = requires_dist.split(';', 1) + [''] distvers = parts[0].strip() -- cgit v1.2.3 From 0d5901c018dbccaa9bffc8902796b40a546f7f3d Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Sat, 30 Jun 2012 12:34:31 -0400 Subject: handle missing provides-extra or requires-dist --HG-- branch : distribute extra : rebase_source : 99392449586f9f299abfd1627ba60b9752caf26d --- pkg_resources.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 652079ec..285aa1bb 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2495,7 +2495,7 @@ class DistInfoDistribution(Distribution): reqs = [] # Including any condition expressions - for req in self._parsed_pkg_info.get_all('Requires-Dist'): + for req in self._parsed_pkg_info.get_all('Requires-Dist') or []: distvers, mark = self._preparse_requirement(req) parsed = parse_requirements(distvers).next() parsed.marker_fn = as_function(mark) @@ -2509,7 +2509,7 @@ class DistInfoDistribution(Distribution): common = set(reqs_for_extra(None)) dm[None].extend(common) - for extra in self._parsed_pkg_info.get_all('Provides-Extra'): + for extra in self._parsed_pkg_info.get_all('Provides-Extra') or []: extra = safe_extra(extra.strip()) dm[extra] = list(set(reqs_for_extra(extra)) - common) -- cgit v1.2.3 From b73bf20cea512d0d95a29db4fd9ed837130c54fc Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Sat, 7 Jul 2012 23:24:20 -0400 Subject: test .dist-info distributions --HG-- branch : distribute extra : rebase_source : ea6870d73aa69f2deacc50beb2e257d3c21073e4 --- pkg_resources.py | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 285aa1bb..27b9f834 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2514,21 +2514,7 @@ class DistInfoDistribution(Distribution): dm[extra] = list(set(reqs_for_extra(extra)) - common) return dm - - def requires(self,extras=()): - """List of Requirements needed for this distro if `extras` are used""" - dm = self._dep_map - deps = [] - deps.extend(dm.get(None,())) - for ext in extras: - try: - deps.extend(dm[safe_extra(ext)]) - except KeyError: - raise UnknownExtra( - "%s has no such extra feature %r" % (self, ext) - ) - return deps - + _distributionImpl = {'.egg': Distribution, '.egg-info': Distribution, -- cgit v1.2.3 From 977f4db35a9390a3e10cd184f69fb2d42886b639 Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Mon, 23 Jul 2012 22:31:07 -0400 Subject: use frozenset; 'empty marker' heuristic --HG-- branch : distribute extra : rebase_source : ebe5e94ea2a4dbea2754bef5d056f65f85fe6423 --- pkg_resources.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 27b9f834..ca0f21c4 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2484,7 +2484,8 @@ class DistInfoDistribution(Distribution): """Recompute this distribution's dependencies.""" def dummy_marker(marker): def marker_fn(environment=None, override=None): - return True + # 'empty markers are True' heuristic won't install extra deps. + return not marker.strip() marker_fn.__doc__ = marker return marker_fn try: @@ -2506,12 +2507,12 @@ class DistInfoDistribution(Distribution): if req.marker_fn(override={'extra':extra}): yield req - common = set(reqs_for_extra(None)) + common = frozenset(reqs_for_extra(None)) dm[None].extend(common) for extra in self._parsed_pkg_info.get_all('Provides-Extra') or []: extra = safe_extra(extra.strip()) - dm[extra] = list(set(reqs_for_extra(extra)) - common) + dm[extra] = list(frozenset(reqs_for_extra(extra)) - common) return dm -- cgit v1.2.3 From 776fdebc918822b57286ac7a2107f8766f43ce56 Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Sat, 25 Aug 2012 15:26:08 -0400 Subject: add markerlib as _markerlib --HG-- branch : distribute extra : rebase_source : b9d8fa81db6c6fc3d89db54a70778eb3e8396e17 --- pkg_resources.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index ca0f21c4..63d18977 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -1746,7 +1746,7 @@ def find_on_path(importer, path_item, only=False): # scan for .egg and .egg-info in directory for entry in os.listdir(path_item): lower = entry.lower() - if lower.endswith('.egg-info') or lower.endswith('.dist-info'): + if lower.endswith(('.egg-info', '.dist-info')): fullpath = os.path.join(path_item, entry) if os.path.isdir(fullpath): # egg-info directory, allow getting metadata @@ -2489,7 +2489,7 @@ class DistInfoDistribution(Distribution): marker_fn.__doc__ = marker return marker_fn try: - from markerlib import as_function + from _markerlib import as_function except ImportError: as_function = dummy_marker dm = self.__dep_map = {None: []} -- cgit v1.2.3 From 4095eb5d31995c4a80d0a9b5125d8cefbf1d8390 Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Sun, 26 Aug 2012 16:46:21 -0400 Subject: Python < 2.5 doesn't support tuple arguments to .endswith() --HG-- branch : distribute extra : rebase_source : c22d5cf00d0f5f053104ff81e60be4701ca27ad8 --- pkg_resources.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 63d18977..2d7f247e 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -1746,7 +1746,7 @@ def find_on_path(importer, path_item, only=False): # scan for .egg and .egg-info in directory for entry in os.listdir(path_item): lower = entry.lower() - if lower.endswith(('.egg-info', '.dist-info')): + if lower.endswith('.egg-info') or lower.endswith('.dist-info'): fullpath = os.path.join(path_item, entry) if os.path.isdir(fullpath): # egg-info directory, allow getting metadata -- cgit v1.2.3 From 9ebbe014df37c19976a5a9cb0ac2fa228a03144a Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Mon, 27 Aug 2012 18:54:29 -0400 Subject: impractical to support _markerlib on Python < 2.6 (no compile(ast)) --HG-- branch : distribute extra : rebase_source : c5019294d83fab26bc393fe72f086d0b13b1e337 --- pkg_resources.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 2d7f247e..060db644 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2489,9 +2489,9 @@ class DistInfoDistribution(Distribution): marker_fn.__doc__ = marker return marker_fn try: - from _markerlib import as_function + from _markerlib import compile as compile_marker except ImportError: - as_function = dummy_marker + compile_marker = dummy_marker dm = self.__dep_map = {None: []} reqs = [] @@ -2499,7 +2499,7 @@ class DistInfoDistribution(Distribution): for req in self._parsed_pkg_info.get_all('Requires-Dist') or []: distvers, mark = self._preparse_requirement(req) parsed = parse_requirements(distvers).next() - parsed.marker_fn = as_function(mark) + parsed.marker_fn = compile_marker(mark) reqs.append(parsed) def reqs_for_extra(extra): -- cgit v1.2.3 From 165f95218ab30580eafba4e2571e03ed14ca482f Mon Sep 17 00:00:00 2001 From: Daniel Holth Date: Mon, 27 Aug 2012 19:11:13 -0400 Subject: move Python < 2.6 fallback into _markerlib --HG-- branch : distribute extra : rebase_source : 901265cef35594b3ab20ae4ba3b270a5da6f9ea7 --- pkg_resources.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'pkg_resources.py') diff --git a/pkg_resources.py b/pkg_resources.py index 060db644..a5a10eb4 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2482,16 +2482,7 @@ class DistInfoDistribution(Distribution): def _compute_dependencies(self): """Recompute this distribution's dependencies.""" - def dummy_marker(marker): - def marker_fn(environment=None, override=None): - # 'empty markers are True' heuristic won't install extra deps. - return not marker.strip() - marker_fn.__doc__ = marker - return marker_fn - try: - from _markerlib import compile as compile_marker - except ImportError: - compile_marker = dummy_marker + from _markerlib import compile as compile_marker dm = self.__dep_map = {None: []} reqs = [] -- cgit v1.2.3