[Checkins] SVN: Sandbox/J1m/ppix/ experimental download code
Jim Fulton
jim at zope.com
Mon Jul 16 09:35:10 EDT 2007
Log message for revision 78029:
experimental download code
Changed:
A Sandbox/J1m/ppix/buildout.cfg
A Sandbox/J1m/ppix/setup.py
A Sandbox/J1m/ppix/src/
A Sandbox/J1m/ppix/src/ppix.py
-=-
Added: Sandbox/J1m/ppix/buildout.cfg
===================================================================
--- Sandbox/J1m/ppix/buildout.cfg (rev 0)
+++ Sandbox/J1m/ppix/buildout.cfg 2007-07-16 13:35:09 UTC (rev 78029)
@@ -0,0 +1,8 @@
+[buildout]
+parts = py
+develop = .
+
+[py]
+recipe = zc.recipe.egg
+eggs = ppix
+interpreter = py
Property changes on: Sandbox/J1m/ppix/buildout.cfg
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/J1m/ppix/setup.py
===================================================================
--- Sandbox/J1m/ppix/setup.py (rev 0)
+++ Sandbox/J1m/ppix/setup.py 2007-07-16 13:35:09 UTC (rev 78029)
@@ -0,0 +1,6 @@
+from setuptools import setup
+setup(
+ name='ppix',
+ package_dir = {'': 'src'},
+ install_requires = ['mechanize'],
+ )
Property changes on: Sandbox/J1m/ppix/setup.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: Sandbox/J1m/ppix/src/ppix.py
===================================================================
--- Sandbox/J1m/ppix/src/ppix.py (rev 0)
+++ Sandbox/J1m/ppix/src/ppix.py 2007-07-16 13:35:09 UTC (rev 78029)
@@ -0,0 +1,69 @@
+##############################################################################
+#
+# Copyright (c) 2005 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
+import marshal, mechanize, re, traceback, urllib2, xmlrpclib
+
+pound_egg_link = re.compile('[a-z+]+://\S+#egg=\S+')
+repo_py_version = re.compile('\d+[.]\d+/').match
+repo_general = 'source/', 'any/'
+packages = "http://cheeseshop.python.org/packages/"
+
+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)]
+
+ for repo in repos:
+ folder = packages+repo+name[0]+'/'+name+'/'
+ try:
+ browser.open(folder)
+ except urllib2.HTTPError:
+ continue
+ for link in browser.links():
+ url = link.url
+ if ('/' in url) or ('?' in url):
+ continue
+ urls[folder+url] = url
+
+ return urls
+
+def get_all_data(start=None):
+ data = open('data.mar', 'a')
+ server = xmlrpclib.Server('http://cheeseshop.python.org/pypi')
+ packages = server.list_packages()
+ if start:
+ while packages[0] != start:
+ packages.pop(0)
+
+ for package in packages:
+ print package
+ try:
+ marshal.dump((package, get_urls(package)), data)
+ except:
+ traceback.print_exc()
+
Property changes on: Sandbox/J1m/ppix/src/ppix.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
More information about the Checkins
mailing list