diff options
Diffstat (limited to 'pym/euscan/handlers/pypi.py')
-rw-r--r-- | pym/euscan/handlers/pypi.py | 51 |
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 [] |