mirror of
https://github.com/kennethreitz-archive/python-build.git
synced 2026-06-05 23:30:18 +00:00
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
import sys
|
|
import urllib
|
|
from pythonbrew.util import size_format
|
|
from pythonbrew.define import PYTHON_PACKAGE_URL, PYTHONBREW_UPDATE_URL
|
|
|
|
class Downloader(object):
|
|
def __init__(self):
|
|
self._msg = ""
|
|
self._last_msg = ""
|
|
self._bytes = 0.0
|
|
|
|
def download(self, msg, url, path):
|
|
self._msg = msg
|
|
self._bytes = 0
|
|
urllib.urlretrieve(url, path, self._download_progress)
|
|
print " downloaded."
|
|
|
|
def _download_progress(self, block, blockbytes, maxbytes):
|
|
self._bytes += float(blockbytes)
|
|
if self._bytes >= maxbytes:
|
|
self._bytes = maxbytes
|
|
percent = (self._bytes / maxbytes) * 100
|
|
max_size = size_format(maxbytes)
|
|
now_size = size_format(self._bytes)
|
|
now_msg = "\rDownloading %s (%s): %3i%% %s" % (self._msg, max_size, percent, now_size)
|
|
padding = " " * (len(self._last_msg) - len(now_msg))
|
|
sys.stdout.write("%s%s" % (now_msg, padding))
|
|
sys.stdout.flush()
|
|
self._last_msg = now_msg
|
|
|
|
def get_pythonbrew_update_url(version):
|
|
if PYTHONBREW_UPDATE_URL.has_key(version):
|
|
return PYTHONBREW_UPDATE_URL[version]
|
|
return None
|
|
|
|
def get_python_package_url(version):
|
|
if PYTHON_PACKAGE_URL.has_key(version):
|
|
return PYTHON_PACKAGE_URL[version]
|
|
return None
|