From 7c6cb3b9d9c6ac6fb7e6bec08645ae18b377a7c4 Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Wed, 28 Apr 2021 15:51:46 +0200
Subject: [PATCH] working on: 0.0.32 Release

---
 build.sh                                      |  17 +-
 docs/TODO.md                                  |   6 +
 requirements/build.txt                        |  68 ++++----
 requirements/dev.txt                          | 161 +++++++++---------
 requirements/docs.txt                         |  92 +++++-----
 requirements/tests.txt                        |  92 +++++-----
 .../vendor/fontawesome-free/package.json      |   4 +-
 src/database.py                               |   2 +-
 8 files changed, 234 insertions(+), 208 deletions(-)

diff --git a/build.sh b/build.sh
index f01b2f34..ef4ea802 100755
--- a/build.sh
+++ b/build.sh
@@ -25,7 +25,9 @@ function pip_install() {
   pip check
 }
 
-function pip_install_via_setup_py() {
+
+
+function build_setup() {
   python setup.py develop
   pip install -e .
   pip check
@@ -47,15 +49,12 @@ function first_install() {
   python setup.py develop
   python -m pip install --upgrade pip
   pip install setuptools wheel twine
-  pip install -r requirements\build.in
-  pip install -r requirements\docs.in
-  pip install -r requirements\tests.in
-  pip install -r requirements\dev.in
-  pip check
-  pip install -e .
-  pip check
-  python setup.py develop
+  pip_install
+  pip_compile
+  build_wheel
+  build_setup
   pip check
+  npm_install
 }
 
 function main() {
diff --git a/docs/TODO.md b/docs/TODO.md
index b6dbda7f..26f50c02 100644
--- a/docs/TODO.md
+++ b/docs/TODO.md
@@ -1,2 +1,8 @@
 # TODO
 
+* https://stackoverflow.com/questions/12273889/calculate-execution-time-for-every-page-in-pythons-flask
+* https://docs.sqlalchemy.org/en/13/faq/performance.html
+* https://mariadb.com/kb/en/query-cache/
+* https://docs.sqlalchemy.org/en/14/core/pooling.html
+* https://docs.sqlalchemy.org/en/14/core/pooling.html?highlight=disconnects#dealing-with-disconnects
+
diff --git a/requirements/build.txt b/requirements/build.txt
index ca6be47c..5790071e 100644
--- a/requirements/build.txt
+++ b/requirements/build.txt
@@ -2,39 +2,43 @@
 # This file is autogenerated by pip-compile
 # To update, run:
 #
-#    pip-compile 'requirements\build.in'
+#    pip-compile requirements/build.in
 #
 alembic==1.5.5
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 appdirs==1.4.4
     # via virtualenv
 argparse==1.4.0
     # via pytoolbox
 attrs==20.3.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 bleach==3.3.0
     # via readme-renderer
 build==0.3.1.post1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 certifi==2020.12.5
     # via
     #   pipenv
     #   requests
+cffi==1.14.5
+    # via cryptography
 cfgv==3.2.0
     # via pre-commit
 chardet==3.0.4
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   requests
 click==7.1.2
     # via pip-tools
 colorama==0.4.4
     # via twine
+cryptography==3.4.7
+    # via secretstorage
 distlib==0.3.1
     # via virtualenv
 docutils==0.17
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   readme-renderer
 filelock==3.0.12
     # via virtualenv
@@ -42,7 +46,7 @@ greenlet==1.0.0
     # via sqlalchemy
 identify==2.2.2
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pre-commit
 idna==2.10
     # via requests
@@ -50,6 +54,10 @@ importlib-metadata==3.10.0
     # via
     #   keyring
     #   twine
+jeepney==0.6.0
+    # via
+    #   keyring
+    #   secretstorage
 keyring==23.0.1
     # via twine
 mako==1.1.4
@@ -60,55 +68,55 @@ nodeenv==1.5.0
     # via pre-commit
 packaging==20.9
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   bleach
     #   build
 pbr==3.1.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pep517==0.10.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   build
 pip-licenses==3.3.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pip-tools==5.5.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pipenv==2020.11.15
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pkginfo==1.7.0
     # via twine
 pre-commit==2.10.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 ptable==0.9.2
     # via pip-licenses
 py==1.10.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pyaml==20.4.0
     # via pytoolbox
+pycparser==2.20
+    # via cffi
 pygments==2.8.1
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   readme-renderer
 pyparsing==2.4.7
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   packaging
 python-dateutil==2.8.1
     # via alembic
 python-dotenv==0.15.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 python-editor==1.0.4
     # via alembic
 python-magic==0.4.22
     # via pytoolbox
 pytoolbox==14.0.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pytz==2020.5
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pytoolbox
-pywin32-ctypes==0.2.0
-    # via keyring
 pyyaml==5.4.1
     # via
     #   pre-commit
@@ -124,9 +132,11 @@ requests==2.25.1
     #   twine
 rfc3986==1.4.0
     # via twine
+secretstorage==3.3.1
+    # via keyring
 six==1.15.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   bleach
     #   python-dateutil
     #   readme-renderer
@@ -135,31 +145,31 @@ sqlalchemy==1.4.6
     # via alembic
 toml==0.10.2
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   build
     #   pep517
     #   pre-commit
 tqdm==4.59.0
     # via twine
 twine==3.4.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 urllib3==1.26.4
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   requests
 venv-run==0.1.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 virtualenv-clone==0.5.4
     # via pipenv
 virtualenv==20.4.3
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pipenv
     #   pre-commit
 webencodings==0.5.1
     # via bleach
 wheel==0.36.2
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 zipp==3.4.1
     # via importlib-metadata
 
diff --git a/requirements/dev.txt b/requirements/dev.txt
index 0bdb9179..b9b2f882 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -2,13 +2,13 @@
 # This file is autogenerated by pip-compile
 # To update, run:
 #
-#    pip-compile 'requirements\dev.in'
+#    pip-compile requirements/dev.in
 #
 alabaster==0.7.12
     # via sphinx
 alembic==1.5.5
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   flask-db
 amqp==5.0.5
     # via kombu
@@ -16,11 +16,9 @@ appdirs==1.4.4
     # via virtualenv
 argparse==1.4.0
     # via pytoolbox
-atomicwrites==1.4.0
-    # via pytest
 attrs==20.3.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pytest
 babel==2.9.0
     # via sphinx
@@ -29,9 +27,9 @@ billiard==3.6.3.0
 bleach==3.3.0
     # via readme-renderer
 build==0.3.1.post1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 celery[redis]==5.0.5
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 certifi==2020.12.5
     # via
     #   pipenv
@@ -42,7 +40,7 @@ cfgv==3.2.0
     # via pre-commit
 chardet==3.0.4
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   requests
 click-didyoumean==0.0.3
     # via celery
@@ -59,56 +57,55 @@ click==7.1.2
     #   flask
     #   pip-tools
 colorama==0.4.4
-    # via
-    #   pytest
-    #   sphinx
-    #   twine
+    # via twine
 cryptography==3.4.7
-    # via jwcrypto
+    # via
+    #   jwcrypto
+    #   secretstorage
 cycler==0.10.0
     # via matplotlib
 distlib==0.3.1
     # via virtualenv
 dnspython==2.1.0
     # via
-    #   -r requirements\dev.in
+    #   -r requirements/dev.in
     #   email-validator
 docutils==0.17
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   readme-renderer
     #   sphinx
 dominate==2.6.0
     # via flask-bs4
 email-validator==1.1.2
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 filelock==3.0.12
     # via virtualenv
 flask-admin==1.5.7
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 flask-bs4==4.5.3.0
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 flask-cors==3.0.10
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 flask-db==0.3.1
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 flask-fixtures==0.3.8
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 flask-login==0.5.0
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 flask-sqlalchemy==2.5.1
     # via
-    #   -r requirements\dev.in
+    #   -r requirements/dev.in
     #   flask-db
     #   flask-fixtures
     #   pytest-flask-sqlalchemy
 flask-wtf==0.14.3
     # via
-    #   -r requirements\dev.in
+    #   -r requirements/dev.in
     #   flask-bs4
 flask==1.1.2
     # via
-    #   -r requirements\dev.in
+    #   -r requirements/dev.in
     #   flask-admin
     #   flask-bs4
     #   flask-cors
@@ -126,7 +123,7 @@ httplib2==0.19.0
     # via plantuml
 identify==2.2.2
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pre-commit
 idna==2.10
     # via
@@ -148,6 +145,10 @@ jaraco.context==4.0.0
     # via pytest-enabler
 jaraco.functools==3.2.1
     # via pytest-enabler
+jeepney==0.6.0
+    # via
+    #   keyring
+    #   secretstorage
 jinja2==2.11.3
     # via
     #   flask
@@ -175,6 +176,8 @@ llvmlite==0.35.0
     #   pynndescent
 mako==1.1.4
     # via alembic
+mariadb==1.0.6
+    # via -r requirements/dev.in
 markdown==3.3.3
     # via plantuml-markdown
 markupsafe==1.1.1
@@ -196,7 +199,7 @@ numba==0.52.0
     # via pynndescent
 numpy==1.20.2
     # via
-    #   -r requirements\dev.in
+    #   -r requirements/dev.in
     #   matplotlib
     #   numba
     #   pandas
@@ -207,41 +210,41 @@ numpy==1.20.2
     #   visdom
 packaging==20.9
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   bleach
     #   build
     #   pytest
     #   pytest-flask-sqlalchemy
     #   sphinx
 pandas==1.2.3
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 pbr==3.1.1
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   sphinxcontrib-gravizo
 pep517==0.10.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   build
 pillow==8.2.0
     # via
-    #   -r requirements\dev.in
+    #   -r requirements/dev.in
     #   matplotlib
     #   visdom
 pip-licenses==3.3.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pip-tools==5.5.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pipenv==2020.11.15
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pkginfo==1.7.0
     # via twine
 plantuml-gentools==0.1.2
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 plantuml-markdown==3.4.2
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 plantuml-wrapper==0.1.0
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 plantuml==0.3.0
     # via plantuml-markdown
 pluggy==0.13.1
@@ -249,63 +252,61 @@ pluggy==0.13.1
 port-for==0.4
     # via pytest-postgresql
 pre-commit==2.10.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 prettytable==2.0.0
     # via pyecharts
 prompt-toolkit==3.0.16
     # via click-repl
 psutil==5.8.0
     # via mirakuru
-psycopg2-binary==2.8.6
-    # via -r requirements\dev.in
 ptable==0.9.2
     # via pip-licenses
 py2puml==0.4.0
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 py==1.10.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pytest
 pyaml==20.4.0
     # via pytoolbox
 pycparser==2.20
     # via cffi
 pyecharts-extras==0.0.5
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 pyecharts==1.9.0
     # via
-    #   -r requirements\dev.in
+    #   -r requirements/dev.in
     #   pyecharts-extras
 pygments==2.8.1
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   readme-renderer
     #   sphinx
 pynndescent==0.5.2
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 pyparsing==2.4.7
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   httplib2
     #   matplotlib
     #   packaging
 pytest-enabler==1.2.0
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-flask-sqlalchemy==1.0.2
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-flask==1.2.0
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-mock==3.5.1
     # via pytest-flask-sqlalchemy
 pytest-postgresql==2.6.1
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-runner==5.3.0
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-venv==0.2.1
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest==6.2.3
     # via
-    #   -r requirements\tests.in
+    #   -r requirements/tests.in
     #   pytest-flask
     #   pytest-flask-sqlalchemy
     #   pytest-mock
@@ -318,22 +319,20 @@ python-dateutil==2.8.1
     #   matplotlib
     #   pandas
 python-dotenv==0.15.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 python-editor==1.0.4
     # via alembic
 python-magic==0.4.22
     # via pytoolbox
 pytoolbox==14.0.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pytz==2020.5
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   babel
     #   celery
     #   pandas
     #   pytoolbox
-pywin32-ctypes==0.2.0
-    # via keyring
 pyyaml==5.4.1
     # via
     #   pre-commit
@@ -360,16 +359,18 @@ scikit-learn==0.24.1
     # via pynndescent
 scipy==1.6.2
     # via
-    #   -r requirements\dev.in
+    #   -r requirements/dev.in
     #   pynndescent
     #   scikit-learn
     #   statisticaldiagrams
     #   visdom
+secretstorage==3.3.1
+    # via keyring
 simplejson==3.17.2
     # via pyecharts
 six==1.15.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   bleach
     #   click-repl
     #   cycler
@@ -384,10 +385,10 @@ six==1.15.0
 snowballstemmer==2.1.0
     # via sphinx
 speaklater==1.3
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinx==3.4.3
     # via
-    #   -r requirements\docs.in
+    #   -r requirements/docs.in
     #   sphinxcontrib-github
     #   sphinxcontrib-log-cabinet
     #   sphinxcontrib-plantuml
@@ -396,17 +397,17 @@ sphinxcontrib-applehelp==1.0.2
 sphinxcontrib-devhelp==1.0.2
     # via sphinx
 sphinxcontrib-github==0.1.3
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinxcontrib-gravizo==0.0.4
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinxcontrib-htmlhelp==1.0.3
     # via sphinx
 sphinxcontrib-jsmath==1.0.1
     # via sphinx
 sphinxcontrib-log-cabinet==1.0.1
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinxcontrib-plantuml==0.20.1
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinxcontrib-qthelp==1.0.3
     # via sphinx
 sphinxcontrib-serializinghtml==1.1.4
@@ -415,28 +416,28 @@ sqlalchemy-utils==0.36.8
     # via flask-db
 sqlalchemy==1.4.5
     # via
-    #   -r requirements\dev.in
+    #   -r requirements/dev.in
     #   alembic
     #   flask-db
     #   flask-sqlalchemy
     #   pytest-flask-sqlalchemy
     #   sqlalchemy-utils
 statisticaldiagrams==20.5
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 threadpoolctl==2.1.0
     # via scikit-learn
 tokenize-rt==4.1.0
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 toml==0.10.2
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   build
     #   pep517
     #   pre-commit
     #   pytest
     #   pytest-enabler
 torch==1.8.1
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 torchfile==0.1.0
     # via visdom
 tornado==6.1
@@ -444,17 +445,17 @@ tornado==6.1
 tqdm==4.59.0
     # via twine
 twine==3.4.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 typing-extensions==3.7.4.3
     # via torch
 uritemplate==3.0.1
     # via github3.py
 urllib3==1.26.4
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   requests
 venv-run==0.1.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 vine==5.0.0
     # via
     #   amqp
@@ -463,12 +464,12 @@ virtualenv-clone==0.5.4
     # via pipenv
 virtualenv==20.4.3
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pipenv
     #   pre-commit
     #   pytest-venv
 visdom==0.1.8.9
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 visitor==0.1.3
     # via flask-bs4
 wcwidth==0.1.8
@@ -484,9 +485,9 @@ werkzeug==1.0.1
     #   flask
     #   pytest-flask
 wget==3.2
-    # via -r requirements\dev.in
+    # via -r requirements/dev.in
 wheel==0.36.2
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 wtforms==2.3.3
     # via
     #   flask-admin
diff --git a/requirements/docs.txt b/requirements/docs.txt
index e8b9624d..c5dd3ae7 100644
--- a/requirements/docs.txt
+++ b/requirements/docs.txt
@@ -2,24 +2,24 @@
 # This file is autogenerated by pip-compile
 # To update, run:
 #
-#    pip-compile 'requirements\docs.in'
+#    pip-compile requirements/docs.in
 #
 alabaster==0.7.12
     # via sphinx
 alembic==1.5.5
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 appdirs==1.4.4
     # via virtualenv
 argparse==1.4.0
     # via pytoolbox
 attrs==20.3.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 babel==2.9.0
     # via sphinx
 bleach==3.3.0
     # via readme-renderer
 build==0.3.1.post1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 certifi==2020.12.5
     # via
     #   pipenv
@@ -30,21 +30,21 @@ cfgv==3.2.0
     # via pre-commit
 chardet==3.0.4
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   requests
 click==7.1.2
     # via pip-tools
 colorama==0.4.4
-    # via
-    #   sphinx
-    #   twine
+    # via twine
 cryptography==3.4.7
-    # via jwcrypto
+    # via
+    #   jwcrypto
+    #   secretstorage
 distlib==0.3.1
     # via virtualenv
 docutils==0.17
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   readme-renderer
     #   sphinx
 filelock==3.0.12
@@ -57,7 +57,7 @@ httplib2==0.19.0
     # via plantuml
 identify==2.2.2
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pre-commit
 idna==2.10
     # via requests
@@ -67,6 +67,10 @@ importlib-metadata==3.10.0
     # via
     #   keyring
     #   twine
+jeepney==0.6.0
+    # via
+    #   keyring
+    #   secretstorage
 jinja2==2.11.3
     # via sphinx
 jwcrypto==0.8
@@ -85,54 +89,54 @@ nodeenv==1.5.0
     # via pre-commit
 packaging==20.9
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   bleach
     #   build
     #   sphinx
 pbr==3.1.1
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   sphinxcontrib-gravizo
 pep517==0.10.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   build
 pip-licenses==3.3.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pip-tools==5.5.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pipenv==2020.11.15
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pkginfo==1.7.0
     # via twine
 plantuml-gentools==0.1.2
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 plantuml-markdown==3.4.2
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 plantuml-wrapper==0.1.0
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 plantuml==0.3.0
     # via plantuml-markdown
 pre-commit==2.10.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 ptable==0.9.2
     # via pip-licenses
 py2puml==0.4.0
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 py==1.10.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pyaml==20.4.0
     # via pytoolbox
 pycparser==2.20
     # via cffi
 pygments==2.8.1
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   readme-renderer
     #   sphinx
 pyparsing==2.4.7
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   httplib2
     #   packaging
 python-dateutil==2.8.1
@@ -140,20 +144,18 @@ python-dateutil==2.8.1
     #   alembic
     #   github3.py
 python-dotenv==0.17.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 python-editor==1.0.4
     # via alembic
 python-magic==0.4.22
     # via pytoolbox
 pytoolbox==14.0.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pytz==2020.5
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   babel
     #   pytoolbox
-pywin32-ctypes==0.2.0
-    # via keyring
 pyyaml==5.4.1
     # via
     #   pre-commit
@@ -171,9 +173,11 @@ requests==2.25.1
     #   twine
 rfc3986==1.4.0
     # via twine
+secretstorage==3.3.1
+    # via keyring
 six==1.15.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   bleach
     #   python-dateutil
     #   readme-renderer
@@ -181,10 +185,10 @@ six==1.15.0
 snowballstemmer==2.1.0
     # via sphinx
 speaklater==1.3
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinx==3.4.3
     # via
-    #   -r requirements\docs.in
+    #   -r requirements/docs.in
     #   sphinxcontrib-github
     #   sphinxcontrib-log-cabinet
     #   sphinxcontrib-plantuml
@@ -193,17 +197,17 @@ sphinxcontrib-applehelp==1.0.2
 sphinxcontrib-devhelp==1.0.2
     # via sphinx
 sphinxcontrib-github==0.1.3
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinxcontrib-gravizo==0.0.4
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinxcontrib-htmlhelp==1.0.3
     # via sphinx
 sphinxcontrib-jsmath==1.0.1
     # via sphinx
 sphinxcontrib-log-cabinet==1.0.1
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinxcontrib-plantuml==0.20.1
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 sphinxcontrib-qthelp==1.0.3
     # via sphinx
 sphinxcontrib-serializinghtml==1.1.4
@@ -211,36 +215,36 @@ sphinxcontrib-serializinghtml==1.1.4
 sqlalchemy==1.4.6
     # via alembic
 tokenize-rt==4.1.0
-    # via -r requirements\docs.in
+    # via -r requirements/docs.in
 toml==0.10.2
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   build
     #   pep517
     #   pre-commit
 tqdm==4.60.0
     # via twine
 twine==3.4.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 uritemplate==3.0.1
     # via github3.py
 urllib3==1.26.4
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   requests
 venv-run==0.1.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 virtualenv-clone==0.5.4
     # via pipenv
 virtualenv==20.4.3
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pipenv
     #   pre-commit
 webencodings==0.5.1
     # via bleach
 wheel==0.36.2
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 zipp==3.4.1
     # via importlib-metadata
 
diff --git a/requirements/tests.txt b/requirements/tests.txt
index 0186fbf2..a10be830 100644
--- a/requirements/tests.txt
+++ b/requirements/tests.txt
@@ -2,56 +2,56 @@
 # This file is autogenerated by pip-compile
 # To update, run:
 #
-#    pip-compile 'requirements\tests.in'
+#    pip-compile requirements/tests.in
 #
 alembic==1.5.5
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   flask-db
 appdirs==1.4.4
     # via virtualenv
 argparse==1.4.0
     # via pytoolbox
-atomicwrites==1.4.0
-    # via pytest
 attrs==20.3.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pytest
 bleach==3.3.0
     # via readme-renderer
 build==0.3.1.post1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 certifi==2020.12.5
     # via
     #   pipenv
     #   requests
+cffi==1.14.5
+    # via cryptography
 cfgv==3.2.0
     # via pre-commit
 chardet==3.0.4
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   requests
 click==7.1.2
     # via
     #   flask
     #   pip-tools
 colorama==0.4.4
-    # via
-    #   pytest
-    #   twine
+    # via twine
+cryptography==3.4.7
+    # via secretstorage
 distlib==0.3.1
     # via virtualenv
 docutils==0.17
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   readme-renderer
 filelock==3.0.12
     # via virtualenv
 flask-db==0.3.1
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 flask-fixtures==0.3.8
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 flask-sqlalchemy==2.4.4
     # via
     #   flask-db
@@ -65,7 +65,7 @@ flask==1.1.2
     #   pytest-flask
 identify==2.2.2
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pre-commit
 idna==2.10
     # via requests
@@ -81,6 +81,10 @@ jaraco.context==4.0.0
     # via pytest-enabler
 jaraco.functools==3.2.1
     # via pytest-enabler
+jeepney==0.6.0
+    # via
+    #   keyring
+    #   secretstorage
 jinja2==2.11.3
     # via flask
 keyring==23.0.1
@@ -101,23 +105,23 @@ nodeenv==1.5.0
     # via pre-commit
 packaging==20.9
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   bleach
     #   build
     #   pytest
     #   pytest-flask-sqlalchemy
 pbr==3.1.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pep517==0.10.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   build
 pip-licenses==3.3.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pip-tools==5.5.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pipenv==2020.11.15
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pkginfo==1.7.0
     # via twine
 pluggy==0.13.1
@@ -125,42 +129,44 @@ pluggy==0.13.1
 port-for==0.4
     # via pytest-postgresql
 pre-commit==2.10.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 psutil==5.8.0
     # via mirakuru
 ptable==0.9.2
     # via pip-licenses
 py==1.10.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pytest
 pyaml==20.4.0
     # via pytoolbox
+pycparser==2.20
+    # via cffi
 pygments==2.8.1
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   readme-renderer
 pyparsing==2.4.7
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   packaging
 pytest-enabler==1.2.0
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-flask-sqlalchemy==1.0.2
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-flask==1.2.0
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-mock==3.5.1
     # via pytest-flask-sqlalchemy
 pytest-postgresql==2.6.1
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-runner==5.3.0
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest-venv==0.2.1
-    # via -r requirements\tests.in
+    # via -r requirements/tests.in
 pytest==6.2.3
     # via
-    #   -r requirements\tests.in
+    #   -r requirements/tests.in
     #   pytest-flask
     #   pytest-flask-sqlalchemy
     #   pytest-mock
@@ -169,19 +175,17 @@ pytest==6.2.3
 python-dateutil==2.8.1
     # via alembic
 python-dotenv==0.17.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 python-editor==1.0.4
     # via alembic
 python-magic==0.4.22
     # via pytoolbox
 pytoolbox==14.0.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 pytz==2020.5
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pytoolbox
-pywin32-ctypes==0.2.0
-    # via keyring
 pyyaml==5.4.1
     # via
     #   pre-commit
@@ -197,9 +201,11 @@ requests==2.25.1
     #   twine
 rfc3986==1.4.0
     # via twine
+secretstorage==3.3.1
+    # via keyring
 six==1.15.0
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   bleach
     #   flask-fixtures
     #   python-dateutil
@@ -217,7 +223,7 @@ sqlalchemy==1.3.23
     #   sqlalchemy-utils
 toml==0.10.2
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   build
     #   pep517
     #   pre-commit
@@ -226,18 +232,18 @@ toml==0.10.2
 tqdm==4.60.0
     # via twine
 twine==3.4.1
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 urllib3==1.26.4
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   requests
 venv-run==0.1.0
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 virtualenv-clone==0.5.4
     # via pipenv
 virtualenv==20.4.3
     # via
-    #   -r requirements\build.in
+    #   -r requirements/build.in
     #   pipenv
     #   pre-commit
     #   pytest-venv
@@ -248,7 +254,7 @@ werkzeug==1.0.1
     #   flask
     #   pytest-flask
 wheel==0.36.2
-    # via -r requirements\build.in
+    # via -r requirements/build.in
 zipp==3.4.1
     # via importlib-metadata
 
diff --git a/src/covid19/static/vendor/fontawesome-free/package.json b/src/covid19/static/vendor/fontawesome-free/package.json
index de3ccba9..37236be3 100644
--- a/src/covid19/static/vendor/fontawesome-free/package.json
+++ b/src/covid19/static/vendor/fontawesome-free/package.json
@@ -2,7 +2,7 @@
   "_args": [
     [
       "@fortawesome/fontawesome-free@5.15.2",
-      "D:\\gitnoc\\flask-covid19\\src\\covid19"
+      "/home/tw/gitnoc/flask-covid19/src/covid19"
     ]
   ],
   "_from": "@fortawesome/fontawesome-free@5.15.2",
@@ -27,7 +27,7 @@
   ],
   "_resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.2.tgz",
   "_spec": "5.15.2",
-  "_where": "D:\\gitnoc\\flask-covid19\\src\\covid19",
+  "_where": "/home/tw/gitnoc/flask-covid19/src/covid19",
   "author": {
     "name": "Dave Gandy",
     "email": "dave@fontawesome.com",
diff --git a/src/database.py b/src/database.py
index 28d260a8..83905508 100644
--- a/src/database.py
+++ b/src/database.py
@@ -27,7 +27,7 @@ def create_app():
     login_manager.login_view = 'usr.login'
     login_manager.init_app(my_app)
     my_app.config.from_object("config")
-    my_db_url_mariadb = "mariadb+mariadbconnector://{user}:{pw}@{url}/{db}?charset=utf8mb4".format(
+    my_db_url_mariadb = "mariadb+pymysql://{user}:{pw}@{url}/{db}?charset=utf8mb4&pool_pre_ping=True".format(
         user=my_app.config['SQLALCHEMY_DATABASE_USER'],
         pw=my_app.config['SQLALCHEMY_DATABASE_PW'],
         url=my_app.config['SQLALCHEMY_DATABASE_HOST'],
-- 
GitLab