Update get.py to support python 3.10+ (#7166)
* Update get.py to support python 3.10+ * Use try/except to remove version check
This commit is contained in:
parent
3ebb774463
commit
3f69bcfca4
1 changed files with 42 additions and 5 deletions
47
tools/get.py
47
tools/get.py
|
|
@ -54,9 +54,17 @@ def mkdir_p(path):
|
||||||
|
|
||||||
def report_progress(count, blockSize, totalSize):
|
def report_progress(count, blockSize, totalSize):
|
||||||
if sys.stdout.isatty():
|
if sys.stdout.isatty():
|
||||||
percent = int(count*blockSize*100/totalSize)
|
if totalSize > 0:
|
||||||
percent = min(100, percent)
|
percent = int(count*blockSize*100/totalSize)
|
||||||
sys.stdout.write("\r%d%%" % percent)
|
percent = min(100, percent)
|
||||||
|
sys.stdout.write("\r%d%%" % percent)
|
||||||
|
else:
|
||||||
|
sofar = (count*blockSize) / 1024
|
||||||
|
if sofar >= 1000:
|
||||||
|
sofar /= 1024
|
||||||
|
sys.stdout.write("\r%dMB " % (sofar))
|
||||||
|
else:
|
||||||
|
sys.stdout.write("\r%dKB" % (sofar))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
def unpack(filename, destination):
|
def unpack(filename, destination):
|
||||||
|
|
@ -82,6 +90,32 @@ def unpack(filename, destination):
|
||||||
shutil.rmtree(rename_to)
|
shutil.rmtree(rename_to)
|
||||||
shutil.move(dirname, rename_to)
|
shutil.move(dirname, rename_to)
|
||||||
|
|
||||||
|
def download_file_with_progress(url,filename):
|
||||||
|
import ssl
|
||||||
|
import contextlib
|
||||||
|
ctx = ssl.create_default_context()
|
||||||
|
ctx.check_hostname = False
|
||||||
|
ctx.verify_mode = ssl.CERT_NONE
|
||||||
|
with contextlib.closing(urlopen(url,context=ctx)) as fp:
|
||||||
|
total_size = int(fp.getheader("Content-Length",fp.getheader("Content-length","0")))
|
||||||
|
block_count = 0
|
||||||
|
block_size = 1024 * 8
|
||||||
|
block = fp.read(block_size)
|
||||||
|
if block:
|
||||||
|
with open(filename,'wb') as out_file:
|
||||||
|
out_file.write(block)
|
||||||
|
block_count += 1
|
||||||
|
report_progress(block_count, block_size, total_size)
|
||||||
|
while True:
|
||||||
|
block = fp.read(block_size)
|
||||||
|
if not block:
|
||||||
|
break
|
||||||
|
out_file.write(block)
|
||||||
|
block_count += 1
|
||||||
|
report_progress(block_count, block_size, total_size)
|
||||||
|
else:
|
||||||
|
raise Exception ('nonexisting file or connection error')
|
||||||
|
|
||||||
def download_file(url,filename):
|
def download_file(url,filename):
|
||||||
import ssl
|
import ssl
|
||||||
import contextlib
|
import contextlib
|
||||||
|
|
@ -126,8 +160,11 @@ def get_tool(tool):
|
||||||
if is_ci:
|
if is_ci:
|
||||||
download_file(url, local_path)
|
download_file(url, local_path)
|
||||||
else:
|
else:
|
||||||
urlretrieve(url, local_path, report_progress)
|
try:
|
||||||
sys.stdout.write("\rDone\n")
|
urlretrieve(url, local_path, report_progress)
|
||||||
|
except:
|
||||||
|
download_file_with_progress(url, local_path)
|
||||||
|
sys.stdout.write("\rDone \n")
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
else:
|
else:
|
||||||
print('Tool {0} already downloaded'.format(archive_name))
|
print('Tool {0} already downloaded'.format(archive_name))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue