Update to master, updated requirements and certificates

This commit is contained in:
Marco
2019-06-28 23:57:32 +02:00
parent 2832f3f4df
commit c40abc6001
5 changed files with 45 additions and 52 deletions

View File

@@ -52,6 +52,8 @@ class Messages:
NO_CONNECTION_MSG = "Unable to establish an internet connection."
BAD_DOWNLOAD = "Something went wrong"
BAD_DOWNLOAD_MSG = "Something went wrong with the downaload.\nCheck your internet connection and try again."
SLOW_CONN = "Slow internet connection"
SLOW_CONN_MSG = "Your internet connection is unstable or too slow."
class Signal:

View File

@@ -1,6 +1,7 @@
pandas==0.24.2
aiohttp==3.5.4
pygame==1.9.6
QtAwesome==0.5.7
urllib3==1.24.2
PyQt5==5.12.2
pandas>=0.24.2
certifi>=2019.6.16
aiohttp>=3.5.4
pygame>=1.9.6
QtAwesome>=0.5.7
urllib3>=1.25.3
PyQt5>=5.12.3

View File

@@ -1,36 +1,7 @@
aiohttp==3.5.4
altgraph==0.16.1
asn1crypto==0.24.0
async-timeout==3.0.1
attrs==19.1.0
certifi==2019.3.9
cffi==1.11.5
chardet==3.0.4
cryptography==2.3.1
Cython==0.29.6
future==0.16.0
idna==2.7
intel-openmp==2019.0
macholib==1.11
multidict==4.5.2
numpy==1.15.2
pandas==0.23.4
pefile==2018.8.8
pycparser==2.19
pydub==0.23.0
pygame==1.9.4
PyInstaller==3.4
pyOpenSSL==18.0.0
PyQt5==5.10.1
PySocks==1.6.8
python-dateutil==2.7.3
pytz==2018.5
pywin32-ctypes==0.2.0
QtAwesome==0.5.0
QtPy==1.5.1
sip==4.19.8
six==1.11.0
urllib3==1.24
win-inet-pton==1.0.1
wincertstore==0.2
yarl==1.3.0
pandas>=0.24.2
certifi>=2019.6.16
aiohttp>=3.5.4
pygame>=1.9.6
QtAwesome>=0.5.7
urllib3>=1.25.3
PyQt5>=5.12.3

View File

@@ -37,6 +37,10 @@ class DownloadWindow(QWidget, Ui_Download_window):
text=Messages.BAD_DOWNLOAD_MSG,
connection=self.close)
self._slow_conn_msg = pop_up(self, title=Messages.SLOW_CONN,
text=Messages.SLOW_CONN_MSG,
connection=self.close)
self._download_thread = DownloadThread()
self._download_thread.finished.connect(self._wait_close)
self._download_thread.progress.connect(self._display_progress)
@@ -49,7 +53,12 @@ class DownloadWindow(QWidget, Ui_Download_window):
def _downlaod_format_str(self, n, speed):
"""Return a well-formatted string with downloaded MB and speed."""
return f"Downloaded: {n} MB\nSpeed: {speed} MB/s"
ret = f"Downloaded: {n} MB\nSpeed: "
if speed == 0.0:
ret += "VERY SLOW"
else:
ret += f"{speed} MB/s"
return ret
def show(self):
"""Extends QWidget.show. Set downloaded MB and speed to zero."""
@@ -86,6 +95,8 @@ class DownloadWindow(QWidget, Ui_Download_window):
self._no_internet_msg.show()
elif self._download_thread.status is ThreadStatus.BAD_DOWNLOAD_ERR:
self._bad_db_download_msg.show()
elif self._download_thread.status is ThreadStatus.SLOW_CONN_ERR:
self._slow_conn_msg.show()
else:
self.close()

View File

@@ -4,7 +4,7 @@ from io import BytesIO
from math import ceil
import os.path
from shutil import rmtree
from time import time
from time import perf_counter
from zipfile import ZipFile
import aiohttp
import urllib3
@@ -21,6 +21,11 @@ class ThreadStatus(Enum):
UNKNOWN_ERR = auto()
BAD_DOWNLOAD_ERR = auto()
UNDEFINED = auto()
SLOW_CONN_ERR = auto()
class _SlowConnError(Exception):
pass
class BaseDownloadThread(QThread):
@@ -41,7 +46,7 @@ class DownloadThread(BaseDownloadThread):
"""Subclass BaseDownloadThread. Download the database, images and audio samples."""
progress = pyqtSignal(int, float)
_CHUNK = 512 * 1024
_CHUNK = 128 * 1024
_MEGA = 1024**2
def __init__(self):
@@ -82,35 +87,38 @@ class DownloadThread(BaseDownloadThread):
preload_content=False,
timeout=4.0
)
start = perf_counter()
while True:
start = time()
try:
data = self._db.read(self._CHUNK)
except Exception:
raise
raise _SlowConnError
else:
delta = time() - start
delta = perf_counter() - start
if not data:
break
raw_data += data
self.progress.emit(
self._pretty_len(raw_data),
self._get_download_speed(data, delta)
self._get_download_speed(raw_data, delta)
)
if self._exit_call:
self._exit_call = False
self._db.release_conn()
return
except Exception: # No internet connection.
except Exception as e: # No (or bad) internet connection.
self._db.release_conn()
self.status = ThreadStatus.NO_CONNECTION_ERR
if isinstance(e, _SlowConnError):
self.status = ThreadStatus.SLOW_CONN_ERR
else:
self.status = ThreadStatus.NO_CONNECTION_ERR
return
if self._db.status != 200:
self.status = ThreadStatus.BAD_DOWNLOAD_ERR
return
try:
is_checksum_ok = checksum_ok(raw_data, ChecksumWhat.FOLDER)
except Exception:
except Exception: # checksum_ok unable to connect to the reference.
self.status = ThreadStatus.NO_CONNECTION_ERR
return
else: