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:
Me No Dev 2022-08-22 17:33:14 +03:00 committed by GitHub
parent 3ebb774463
commit 3f69bcfca4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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():
if totalSize > 0:
percent = int(count*blockSize*100/totalSize) percent = int(count*blockSize*100/totalSize)
percent = min(100, percent) percent = min(100, percent)
sys.stdout.write("\r%d%%" % 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,7 +160,10 @@ def get_tool(tool):
if is_ci: if is_ci:
download_file(url, local_path) download_file(url, local_path)
else: else:
try:
urlretrieve(url, local_path, report_progress) urlretrieve(url, local_path, report_progress)
except:
download_file_with_progress(url, local_path)
sys.stdout.write("\rDone \n") sys.stdout.write("\rDone \n")
sys.stdout.flush() sys.stdout.flush()
else: else: