aboutsummaryrefslogtreecommitdiffstats
path: root/pkg_resources.py
diff options
context:
space:
mode:
authorPJ Eby <distutils-sig@python.org>2005-07-17 19:01:15 +0000
committerPJ Eby <distutils-sig@python.org>2005-07-17 19:01:15 +0000
commit63d507adccf8207a40e2b22a8c11f79efb83f56a (patch)
tree079ea1f80004c18837a93f3bdc66b039d8d5127a /pkg_resources.py
parent30f1c5ad93e21ec007d371313e2a27e4d0efb661 (diff)
downloadexternal_python_setuptools-63d507adccf8207a40e2b22a8c11f79efb83f56a.tar.gz
external_python_setuptools-63d507adccf8207a40e2b22a8c11f79efb83f56a.tar.bz2
external_python_setuptools-63d507adccf8207a40e2b22a8c11f79efb83f56a.zip
``Distribution`` objects now implement the ``IResourceProvider`` and
``IMetadataProvider`` interfaces, so you don't need to reference the (no longer available) ``metadata`` attribute to get at these interfaces. --HG-- branch : setuptools extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/trunk/setuptools%4041133
Diffstat (limited to 'pkg_resources.py')
-rw-r--r--pkg_resources.py38
1 files changed, 19 insertions, 19 deletions
diff --git a/pkg_resources.py b/pkg_resources.py
index 81c6314d..8eabdd25 100644
--- a/pkg_resources.py
+++ b/pkg_resources.py
@@ -23,7 +23,7 @@ __all__ = [
'get_importer', 'find_distributions', 'find_on_path', 'register_finder',
'split_sections', 'declare_namespace', 'register_namespace_handler',
'safe_name', 'safe_version', 'run_main', 'BINARY_DIST', 'run_script',
- 'get_default_cache',
+ 'get_default_cache', 'EmptyProvider', 'empty_provider',
]
import sys, os, zipimport, time, re, imp
@@ -108,7 +108,7 @@ def run_script(dist_spec, script_name):
name = ns['__name__']
ns.clear()
ns['__name__'] = name
- require(dist_spec)[0].metadata.run_script(script_name, ns)
+ require(dist_spec)[0].run_script(script_name, ns)
run_main = run_script # backward compatibility
@@ -714,18 +714,18 @@ class DefaultProvider(NullProvider):
register_loader_type(type(None), DefaultProvider)
+class EmptyProvider(NullProvider):
+ """Provider that returns nothing for all requests"""
+ _isdir = _has = lambda self,path: False
+ _get = lambda self,path: ''
+ _listdir = lambda self,path: []
+ module_path = None
+ def __init__(self):
+ pass
-
-
-
-
-
-
-
-
-
+empty_provider = EmptyProvider()
@@ -1325,7 +1325,7 @@ class Distribution(object):
self.platform = platform
self.path = path_str
self.distro_type = distro_type
- self.metadata = metadata
+ self._provider = metadata or empty_provider
def installed_on(self,path=None):
"""Is this distro installed on `path`? (defaults to ``sys.path``)"""
@@ -1419,8 +1419,8 @@ class Distribution(object):
return deps
def _get_metadata(self,name):
- if self.metadata is not None and self.metadata.has_metadata(name):
- for line in self.metadata.get_metadata_lines(name):
+ if self.has_metadata(name):
+ for line in self.get_metadata_lines(name):
yield line
def install_on(self,path=None):
@@ -1452,11 +1452,11 @@ class Distribution(object):
version = getattr(self,'version',None) or "[unknown version]"
return "%s %s" % (self.project_name,version)
-
-
-
-
-
+ def __getattr__(self,attr):
+ """Delegate all unrecognized public attributes to .metadata provider"""
+ if attr.startswith('_'):
+ raise AttributeError,attr
+ return getattr(self._provider, attr)