[Python-checkins] python/nondist/sandbox/setuptools pkg_resources.py, 1.23, 1.24

pje@users.sourceforge.net pje at users.sourceforge.net
Sun Jun 5 02:47:38 CEST 2005


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

Modified Files:
	pkg_resources.py 
Log Message:
Add support for prioritized sorting of distributions by distribution type,
to assist easy_install in indexing packages from PyPI.


Index: pkg_resources.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/setuptools/pkg_resources.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- pkg_resources.py	4 Jun 2005 21:18:19 -0000	1.23
+++ pkg_resources.py	5 Jun 2005 00:47:36 -0000	1.24
@@ -15,8 +15,8 @@
 __all__ = [
     'register_loader_type', 'get_provider', 'IResourceProvider','PathMetadata',
     'ResourceManager', 'AvailableDistributions', 'require', 'resource_string',
-    'resource_stream', 'resource_filename', 'set_extraction_path',
-    'cleanup_resources', 'parse_requirements', 'ensure_directory',
+    'resource_stream', 'resource_filename', 'set_extraction_path', 'EGG_DIST',
+    'cleanup_resources', 'parse_requirements', 'ensure_directory','SOURCE_DIST',
     'compatible_platforms', 'get_platform', 'IMetadataProvider','parse_version',
     'ResolutionError', 'VersionConflict', 'DistributionNotFound','EggMetadata',
     'InvalidOption', 'Distribution', 'Requirement', 'yield_lines',
@@ -1105,9 +1105,12 @@
 
 
 
+EGG_DIST    = 2
+SOURCE_DIST = 1
+
 class Distribution(object):
     """Wrap an actual or potential sys.path entry w/metadata"""
-
+    typecode = EGG_DIST
     def __init__(self,
         path_str, metadata=None, name=None, version=None,
         py_version=PY_MAJOR, platform=None
@@ -1116,7 +1119,6 @@
             self.name = name.replace('_','-')
         if version:
             self._version = version.replace('_','-')
-
         self.py_version = py_version
         self.platform = platform
         self.path = path_str
@@ -1144,8 +1146,6 @@
         )
     from_filename = classmethod(from_filename)
 
-
-
     # These properties have to be lazy so that we don't have to load any
     # metadata until/unless it's actually needed.  (i.e., some distributions
     # may not know their name or version without loading PKG-INFO)
@@ -1174,13 +1174,13 @@
         try:
             return self._version
         except AttributeError:
-            for line in self.metadata.get_metadata_lines('PKG-INFO'):
+            for line in self._get_metadata('PKG-INFO'):
                 if line.lower().startswith('version:'):
                     self._version = line.split(':',1)[1].strip()
                     return self._version
             else:
                 raise AttributeError(
-                    "Missing Version: header in PKG-INFO", self
+                    "Missing 'Version:' header in PKG-INFO", self
                 )
     version = property(version)
 
@@ -1215,7 +1215,7 @@
         return deps
 
     def _get_metadata(self,name):
-        if self.metadata.has_metadata(name):
+        if self.metadata is not None and self.metadata.has_metadata(name):
             for line in self.metadata.get_metadata_lines(name):
                 yield line
 
@@ -1289,9 +1289,9 @@
 
 
 def _sort_dists(dists):
-    tmp = [(dist.version,dist) for dist in dists]
+    tmp = [(dist.version,dist.typecode,dist) for dist in dists]
     tmp.sort()
-    dists[::-1] = [d for v,d in tmp]
+    dists[::-1] = [d for v,t,d in tmp]
 
 
 



More information about the Python-checkins mailing list