[Checkins] SVN: Sandbox/J1m/ppix/src/ppix.py Added logic to get md5 data.

Jim Fulton jim at zope.com
Tue Jul 17 07:09:07 EDT 2007


Log message for revision 78059:
  Added logic to get md5 data.
  

Changed:
  U   Sandbox/J1m/ppix/src/ppix.py

-=-
Modified: Sandbox/J1m/ppix/src/ppix.py
===================================================================
--- Sandbox/J1m/ppix/src/ppix.py	2007-07-17 11:09:01 UTC (rev 78058)
+++ Sandbox/J1m/ppix/src/ppix.py	2007-07-17 11:09:06 UTC (rev 78059)
@@ -13,6 +13,7 @@
 ##############################################################################
 
 import marshal, mechanize, os, re, traceback, urllib, urllib2, xmlrpclib
+import pkg_resources
 
 pound_egg_link = re.compile('[a-z+]+://\S+#egg=\S+')
 repo_py_version = re.compile('\d+[.]\d+/').match
@@ -21,23 +22,13 @@
 
 def get_urls(name):
     urls = {}
-    server = xmlrpclib.Server('http://cheeseshop.python.org/pypi')
-    releases = server.package_releases(name)
-    for release in releases:
-        data = server.release_data(name, release)
-        for text in ('download_url', 'home_page'):
-            url = data.get(text, '')
-            if url == 'UNKNOWN':
-                continue
-            if url:
-                urls[url] = text
-        for url in pound_egg_link.findall(data.get('description') or ''):
-            urls[url] = url
+            
     browser = mechanize.Browser()
     browser.open(packages)
     repos = [link.url for link in browser.links()
              if (link.url in repo_general) or repo_py_version(link.url)]
 
+    versions = set()
     for repo in repos:
         folder = packages+repo+name[0]+'/'+name+'/'
         try:
@@ -48,12 +39,39 @@
             url = link.url
             if ('/' in url) or ('?' in url):
                 continue
-            urls[folder+url] = url
+            urls[folder+url] = url, None, None
+            dist = pkg_resources.Distribution.from_location(
+                folder+url, url)
+            try:
+                versions.add(dist.version)
+            except ValueError:
+                pass
 
+    server = xmlrpclib.Server('http://cheeseshop.python.org/pypi')
+    for version in versions:
+        for url_data in server.release_urls(name, version):
+            url = url_data['url']
+            if url in urls:
+                urls[url] = urls[url][0], None, url_data.get('md5_digest')
+            else:
+                urls[url] = url, None, url_data.get('md5_digest')
+                
+    releases = server.package_releases(name)
+    for release in releases:
+        data = server.release_data(name, release)
+        for text in ('download_url', 'home_page'):
+            url = data.get(text, '')
+            if url == 'UNKNOWN':
+                continue
+            if url:
+                urls[url] = '%s %s' % (release, text), text, None
+        for url in pound_egg_link.findall(data.get('description') or ''):
+            urls[url] = url, None, None
+
     return urls
 
 def get_all_data(start=None):
-    data = open('data.mar', 'a')
+    data = open('ppix.mar', 'a')
     server = xmlrpclib.Server('http://cheeseshop.python.org/pypi')
     packages = server.list_packages()
     if start:



More information about the Checkins mailing list