aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'pym/euscan/handlers/pypi.py')
-rw-r--r--pym/euscan/handlers/pypi.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/pym/euscan/handlers/pypi.py b/pym/euscan/handlers/pypi.py
new file mode 100644
index 0000000..59f7046
--- /dev/null
+++ b/pym/euscan/handlers/pypi.py
@@ -0,0 +1,51 @@
+import xmlrpclib
+import pprint
+import re
+
+import portage
+
+from euscan import helpers, output
+
+def can_handle(cpv, url):
+ return url.startswith('mirror://pypi/')
+
+def guess_package(cp, url):
+ match = re.search('mirror://pypi/\w+/(.*)/.*', url)
+ if match:
+ return match.group(1)
+
+ cat, pkg = cp.split("/")
+
+ return pkg
+
+def scan(cpv, url):
+ 'http://wiki.python.org/moin/PyPiXmlRpc'
+
+
+ package = guess_package(cpv, url)
+
+ output.einfo("Using PyPi XMLRPC: " + package)
+
+ client = xmlrpclib.ServerProxy('http://pypi.python.org/pypi')
+ versions = client.package_releases(package)
+
+ if not versions:
+ return versions
+
+ versions.reverse()
+
+ cp, ver, rev = portage.pkgsplit(cpv)
+
+ ret = []
+
+ for version in versions:
+ if helpers.version_filtered(cp, ver, version):
+ continue
+ urls = client.release_urls(package, version)
+ urls = " ".join([ infos['url'] for infos in urls ])
+ ret.append(( urls, version ))
+
+ return ret
+
+def brute_force(cpv, url):
+ return []