[Python-checkins] python/nondist/sandbox/setuptools pkg_resources.py, 1.43, 1.44 setuptools.txt, 1.16, 1.17

pje@users.sourceforge.net pje at users.sourceforge.net
Sun Jul 17 21:01:19 CEST 2005


Update of /cvsroot/python/python/nondist/sandbox/setuptools
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30805

Modified Files:
	pkg_resources.py setuptools.txt 
Log Message:
``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.


Index: pkg_resources.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/setuptools/pkg_resources.py,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- pkg_resources.py	17 Jul 2005 04:42:41 -0000	1.43
+++ pkg_resources.py	17 Jul 2005 19:01:14 -0000	1.44
@@ -23,7 +23,7 @@
     '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 @@
     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 @@
 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 @@
         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 @@
         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 @@
         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)
 
 
 

Index: setuptools.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/setuptools/setuptools.txt,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- setuptools.txt	17 Jul 2005 04:42:41 -0000	1.16
+++ setuptools.txt	17 Jul 2005 19:01:15 -0000	1.17
@@ -1342,6 +1342,16 @@
    
  * Fixed ``pkg_resources.resource_exists()`` not working correctly.
 
+ * Many ``pkg_resources`` API changes:
+
+   * ``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.
+
+   * ``Distribution`` and ``Requirement`` both have a ``project_name``
+     attribute for the project name they refer to.  (Previously these were
+     ``name`` and ``distname`` attributes.)
+
 0.5a13
  * Fixed a bug in resource extraction from nested packages in a zipped egg.
 



More information about the Python-checkins mailing list