diff options
author | Jauhien Piatlicki (jauhien) <piatlicki@gmail.com> | 2013-07-24 01:14:02 +0200 |
---|---|---|
committer | Jauhien Piatlicki (jauhien) <piatlicki@gmail.com> | 2013-07-24 01:14:02 +0200 |
commit | 65e4510b7409a122a8744f1ced20286ca9ca0a3c (patch) | |
tree | 976911d33a12e8d3084ca2abbd8b601e9a422434 /gs_pypi | |
parent | g_sorcery/package_db: reasonable default for DBGenerator.get_download_uries a... (diff) | |
download | g-sorcery-65e4510b7409a122a8744f1ced20286ca9ca0a3c.tar.gz g-sorcery-65e4510b7409a122a8744f1ced20286ca9ca0a3c.tar.bz2 g-sorcery-65e4510b7409a122a8744f1ced20286ca9ca0a3c.zip |
PyPI backend: experiments
Diffstat (limited to 'gs_pypi')
-rw-r--r-- | gs_pypi/pypi_db.py | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/gs_pypi/pypi_db.py b/gs_pypi/pypi_db.py index 938f79c..71e5397 100644 --- a/gs_pypi/pypi_db.py +++ b/gs_pypi/pypi_db.py @@ -11,7 +11,60 @@ :license: GPL-2, see LICENSE for more details. """ +from g_sorcery.compatibility import py2k + +if py2k: + import xmlrpclib + import httplib + urlparse +else: + import xmlrpc.client as xmlrpclib + import http.client as httplib + import urllib.parse as urlparse + +import sys + +from g_sorcery.logger import Logger from g_sorcery.package_db import DBGenerator class PypiDBGenerator(DBGenerator): - pass + + def process_uri(self, uri, data): + url = uri["uri"] + client = xmlrpclib.ServerProxy(url) + logger = Logger() + logger.info("downloading packages data") + pkg_list = client.list_packages() + + number_of_packages = len(pkg_list) + downloaded_number = 0 + + connection = httplib.HTTPConnection(urlparse.urlparse(url).netloc) + + connection.request("GET", "/pypi/zmqpy/json") + response = connection.getresponse() + print(response.getheaders()) + + for pkg in pkg_list: + data[pkg] = {} + + chars = ['-','\\','|','/'] + show = chars[downloaded_number % 4] + percent = (downloaded_number * 100)//number_of_packages + length = 70 + progress = (percent * length)//100 + blank = length - progress + + sys.stdout.write("\r %s [%s%s] %s%%" % (show, "#" * progress, " " * blank, percent)) + sys.stdout.flush() + downloaded_number += 1 + + connection.close() + + sys.stdout.write("\r %s [%s] %s%%" % ("-", "#" * length, 100)) + sys.stdout.flush() + print("") + + def process_data(self, pkg_db, data, common_config, config): + #print(data) + pass |