diff --git a/app/main/routes.py b/app/main/routes.py index 72a8d7753..093ad7758 100644 --- a/app/main/routes.py +++ b/app/main/routes.py @@ -36,7 +36,11 @@ from pprint import pprint as pp import functools import six.moves._thread # essai from zipfile import ZipFile -from StringIO import StringIO + +try: + from io import StringIO ## for Python 3 +except ImportError: + from cStringIO import StringIO ## for Python 2 import flask from flask import request, render_template, redirect @@ -156,7 +160,8 @@ def formsemestre_statux(dept_id=None, formsemestre_id=None, REQUEST=None): @bp.route("/hello/world") def hello(): H = get_request_infos() + [ - "

Hello, World! %s count=%s

" % (six.moves._thread.get_ident(), D["count"]), + "

Hello, World! %s count=%s

" + % (six.moves._thread.get_ident(), D["count"]), ] # print(pprint.pformat(dir(request))) return "\n".join(H) diff --git a/app/scodoc/imageresize.py b/app/scodoc/imageresize.py index 4afba9e64..f33dd624a 100644 --- a/app/scodoc/imageresize.py +++ b/app/scodoc/imageresize.py @@ -1,7 +1,11 @@ """Simple image resize using PIL""" from PIL import Image as PILImage -from cStringIO import StringIO + +try: + from io import StringIO # for Python 3 +except ImportError: + from cStringIO import StringIO # for Python 2 def ImageScale(img_file, maxx, maxy): diff --git a/app/scodoc/pe_jurype.py b/app/scodoc/pe_jurype.py index 74c8f3b4f..35c2992c1 100644 --- a/app/scodoc/pe_jurype.py +++ b/app/scodoc/pe_jurype.py @@ -45,12 +45,10 @@ Created on Fri Sep 9 09:15:05 2016 import os try: - from cStringIO import StringIO + from io import StringIO ## for Python 3 except ImportError: - try: - from StringIO import StringIO - except ImportError: - from io import StringIO + from cStringIO import StringIO ## for Python 2 + from zipfile import ZipFile, BadZipfile import pprint diff --git a/app/scodoc/sco_apogee_csv.py b/app/scodoc/sco_apogee_csv.py index d86a282a3..4f11c1d8e 100644 --- a/app/scodoc/sco_apogee_csv.py +++ b/app/scodoc/sco_apogee_csv.py @@ -85,7 +85,11 @@ import re import time import datetime import os -from cStringIO import StringIO + +try: + from io import StringIO # for Python 3 +except ImportError: + from cStringIO import StringIO # for Python 2 from zipfile import ZipFile import pprint from functools import reduce diff --git a/app/scodoc/sco_etape_apogee_view.py b/app/scodoc/sco_etape_apogee_view.py index 77c538875..433193632 100644 --- a/app/scodoc/sco_etape_apogee_view.py +++ b/app/scodoc/sco_etape_apogee_view.py @@ -28,7 +28,10 @@ """ScoDoc : formulaires gestion maquettes Apogee / export resultats """ -from cStringIO import StringIO +try: + from io import StringIO # for Python 3 +except ImportError: + from cStringIO import StringIO # for Python 2 from zipfile import ZipFile from flask import url_for, g diff --git a/app/scodoc/sco_news.py b/app/scodoc/sco_news.py index 9baf2a802..fc97219a0 100644 --- a/app/scodoc/sco_news.py +++ b/app/scodoc/sco_news.py @@ -30,7 +30,11 @@ import datetime import re import time -from cStringIO import StringIO + +try: + from io import StringIO # for Python 3 +except ImportError: + from cStringIO import StringIO # for Python 2 from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header diff --git a/app/scodoc/sco_pdf.py b/app/scodoc/sco_pdf.py old mode 100644 new mode 100755 index a7d53b85c..a2a5f33cd --- a/app/scodoc/sco_pdf.py +++ b/app/scodoc/sco_pdf.py @@ -32,11 +32,16 @@ et terminé par un PDFLOCK.release() """ import time -import cStringIO import re import os import unicodedata import traceback + +try: + from io import StringIO # for Python 3 +except ImportError: + from cStringIO import StringIO # for Python 2 + import reportlab from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Frame, PageBreak from reportlab.platypus import Table, TableStyle, Image, KeepInFrame @@ -60,9 +65,9 @@ from app.scodoc.sco_utils import ( ) from app.scodoc.notes_log import log from app.scodoc.sco_exceptions import ScoGenError -from SuppressAccents import suppression_diacritics +from .SuppressAccents import suppression_diacritics from app.scodoc import VERSION -from VERSION import SCOVERSION, SCONAME +from .VERSION import SCOVERSION, SCONAME import six PAGE_HEIGHT = defaultPageSize[1] diff --git a/app/scodoc/sco_photos.py b/app/scodoc/sco_photos.py index a8ade73e3..ac9373c21 100644 --- a/app/scodoc/sco_photos.py +++ b/app/scodoc/sco_photos.py @@ -50,7 +50,11 @@ import random import six.moves.urllib.request, six.moves.urllib.error, six.moves.urllib.parse import traceback from PIL import Image as PILImage -from cStringIO import StringIO + +try: + from io import StringIO # for Python 3 +except ImportError: + from cStringIO import StringIO # for Python 2 import glob from flask import request diff --git a/app/scodoc/sco_trombino.py b/app/scodoc/sco_trombino.py index a551dd685..ec2e10d9e 100644 --- a/app/scodoc/sco_trombino.py +++ b/app/scodoc/sco_trombino.py @@ -28,7 +28,10 @@ """Photos: trombinoscopes """ -from cStringIO import StringIO +try: + from io import StringIO # for Python 3 +except ImportError: + from cStringIO import StringIO # for Python 2 from zipfile import ZipFile, BadZipfile import reportlab from reportlab.lib.units import cm, mm diff --git a/app/scodoc/sco_trombino_tours.py b/app/scodoc/sco_trombino_tours.py index 93262e2ea..f6689e279 100644 --- a/app/scodoc/sco_trombino_tours.py +++ b/app/scodoc/sco_trombino_tours.py @@ -31,9 +31,9 @@ """ try: - from cStringIO import StringIO -except: - from StringIO import StringIO + from io import StringIO # for Python 3 +except ImportError: + from cStringIO import StringIO # for Python 2 from reportlab.lib import colors from reportlab.lib import pagesizes diff --git a/app/views/scolar.py b/app/views/scolar.py index 45d2305ad..af5502e0b 100644 --- a/app/views/scolar.py +++ b/app/views/scolar.py @@ -36,9 +36,9 @@ import time # StringIO => io.StringIO or io.BytesIO for text and data respectively. #py3 try: - from cStringIO import StringIO + from io import StringIO # for Python 3 except ImportError: - from StringIO import StringIO + from cStringIO import StringIO # for Python 2 from zipfile import ZipFile import psycopg2 diff --git a/requirements-3.7.txt b/requirements-3.7.txt index 26d518161..f7cba7e5c 100644 --- a/requirements-3.7.txt +++ b/requirements-3.7.txt @@ -1,261 +1,40 @@ -alabaster==0.7.12 -anaconda-client==1.7.2 -anaconda-navigator==1.10.0 -anaconda-project==0.8.3 -anyio @ file:///Users/runner/miniforge3/conda-bld/anyio_1609601102095/work/dist -appdirs==1.4.4 -applaunchservices==0.2.1 -appnope @ file:///opt/concourse/worker/volumes/live/5f13e5b3-5355-4541-5fc3-f08850c73cf9/volume/appnope_1606859448618/work -appscript @ file:///opt/concourse/worker/volumes/live/50ca4c96-3090-40bb-6981-3a6114ed0af4/volume/appscript_1594840187551/work -argh==0.26.2 -argon2-cffi @ file:///opt/concourse/worker/volumes/live/59af29ac-4890-416e-7ab7-794f8d6f7ecd/volume/argon2-cffi_1596828548321/work -asn1crypto @ file:///tmp/build/80754af9/asn1crypto_1596577642040/work -astroid @ file:///opt/concourse/worker/volumes/live/21fd14a9-2a7e-484b-7394-5a9912cdcf80/volume/astroid_1592498459180/work -astropy @ file:///opt/concourse/worker/volumes/live/37fbd2b2-7bed-485f-777f-7939107df919/volume/astropy_1606922928626/work -async-generator==1.10 -atomicwrites==1.4.0 -attrs @ file:///tmp/build/80754af9/attrs_1604765588209/work -autopep8 @ file:///tmp/build/80754af9/autopep8_1596578164842/work -Babel @ file:///tmp/build/80754af9/babel_1607110387436/work -backcall==0.2.0 -backports.functools-lru-cache @ file:///tmp/build/80754af9/backports.functools_lru_cache_1605305165209/work -backports.shutil-get-terminal-size @ file:///tmp/build/80754af9/backports.shutil_get_terminal_size_1608222128777/work -backports.tempfile==1.0 -backports.weakref==1.0.post1 -beautifulsoup4 @ file:///tmp/build/80754af9/beautifulsoup4_1601924105527/work -bitarray @ file:///opt/concourse/worker/volumes/live/fdfca23e-4dd8-48f7-512d-c4f3db552eeb/volume/bitarray_1605065128338/work -bkcharts==0.2 -black==19.10b0 -bleach @ file:///tmp/build/80754af9/bleach_1600439572647/work -bokeh @ file:///opt/concourse/worker/volumes/live/b2253281-9b72-4dcb-624e-e22924b50435/volume/bokeh_1603297849453/work -boto==2.49.0 -Bottleneck==1.3.2 -brotlipy==0.7.0 -certifi==2020.12.5 -cffi @ file:///opt/concourse/worker/volumes/live/730e9a28-66f9-4e03-51ad-252ec8e40d81/volume/cffi_1606255126408/work -chardet @ file:///opt/concourse/worker/volumes/live/c798b2ee-88b1-4341-6830-161a92c2399e/volume/chardet_1607706832595/work -click==7.1.2 -cloudpickle @ file:///tmp/build/80754af9/cloudpickle_1598884132938/work -clyent==1.2.2 -colorama @ file:///tmp/build/80754af9/colorama_1607707115595/work -conda==4.10.0 -conda-build==3.20.5 -conda-package-handling @ file:///opt/concourse/worker/volumes/live/a7e34989-4c54-4cb6-4156-4e58ee270730/volume/conda-package-handling_1603018121300/work -conda-verify==3.4.2 -contextlib2==0.6.0.post1 -cryptography @ file:///opt/concourse/worker/volumes/live/27753773-e292-4a76-405d-313f3647b99f/volume/cryptography_1607636767414/work -cycler==0.10.0 -Cython @ file:///opt/concourse/worker/volumes/live/c7485e3f-2096-4fd2-7e22-acdb1fbaa2c6/volume/cython_1605457627467/work -cytoolz==0.11.0 -dask @ file:///tmp/build/80754af9/dask-core_1607706933335/work -decorator==4.4.2 -defusedxml==0.6.0 -diff-match-patch @ file:///tmp/build/80754af9/diff-match-patch_1594828741838/work -distributed @ file:///opt/concourse/worker/volumes/live/89e12bf4-1040-4d48-5a0e-b692ff793f86/volume/distributed_1607714073518/work -docutils==0.16 -docx2python==1.27.1 -entrypoints==0.3 -et-xmlfile==1.0.1 -fastcache==1.1.0 -filelock==3.0.12 -flake8 @ file:///tmp/build/80754af9/flake8_1601911421857/work -Flask==1.1.2 -fsspec @ file:///tmp/build/80754af9/fsspec_1602684995936/work -future==0.18.2 -gevent @ file:///opt/concourse/worker/volumes/live/364cbfc8-016d-4944-63a6-37b987feae66/volume/gevent_1609093112196/work -glob2==0.7 -gmpy2==2.0.8 -greenlet @ file:///opt/concourse/worker/volumes/live/02d5d57d-1f11-4cf9-580a-19e679c78dc9/volume/greenlet_1600874049903/work -h5py==2.10.0 -HeapDict==1.0.1 -html5lib @ file:///tmp/build/80754af9/html5lib_1593446221756/work -idna @ file:///tmp/build/80754af9/idna_1593446292537/work -imagecodecs @ file:///opt/concourse/worker/volumes/live/3653133f-9e24-4981-701d-f871d8cdf04f/volume/imagecodecs_1603270473410/work -imageio @ file:///tmp/build/80754af9/imageio_1594161405741/work -imagesize==1.2.0 -importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1602276842396/work -iniconfig @ file:///tmp/build/80754af9/iniconfig_1602780191262/work -intervaltree @ file:///tmp/build/80754af9/intervaltree_1598376443606/work -ipykernel @ file:///opt/concourse/worker/volumes/live/88f541d3-5a27-498f-7391-f2e50ca36560/volume/ipykernel_1596206680118/work/dist/ipykernel-5.3.4-py3-none-any.whl -ipython @ file:///opt/concourse/worker/volumes/live/26969e8f-c9f7-42dc-6ffb-b3effd424c49/volume/ipython_1604101242376/work -ipython-genutils @ file:///tmp/build/80754af9/ipython_genutils_1606773439826/work -ipywidgets @ file:///tmp/build/80754af9/ipywidgets_1608834360725/work -isort @ file:///tmp/build/80754af9/isort_1602603989581/work -itsdangerous==1.1.0 -jdcal==1.4.1 -jedi @ file:///opt/concourse/worker/volumes/live/12a2c347-a8e4-4b62-5b19-dcc92a2254f6/volume/jedi_1606932552286/work -Jinja2==2.11.2 -joblib @ file:///tmp/build/80754af9/joblib_1607970656719/work -json5==0.9.5 -jsonschema @ file:///tmp/build/80754af9/jsonschema_1602607155483/work -jupyter==1.0.0 -jupyter-client @ file:///tmp/build/80754af9/jupyter_client_1601311786391/work -jupyter-console @ file:///tmp/build/80754af9/jupyter_console_1598884538475/work -jupyter-contrib-core==0.3.3 -jupyter-contrib-nbextensions @ file:///Users/runner/miniforge3/conda-bld/jupyter_contrib_nbextensions_1602805472999/work -jupyter-core @ file:///opt/concourse/worker/volumes/live/e8302867-5dbe-440b-7a37-f61bacc38ed8/volume/jupyter_core_1606148993907/work -jupyter-highlight-selected-word @ file:///Users/runner/miniforge3/conda-bld/jupyter_highlight_selected_word_1603234251450/work -jupyter-latex-envs @ file:///Users/runner/miniforge3/conda-bld/jupyter_latex_envs_1602788808989/work -jupyter-nbextensions-configurator @ file:///Users/runner/miniforge3/conda-bld/jupyter_nbextensions_configurator_1602769531809/work -jupyter-server @ file:///Users/runner/miniforge3/conda-bld/jupyter_server_1609793732862/work -jupyterlab @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_1609830309460/work -jupyterlab-pygments @ file:///tmp/build/80754af9/jupyterlab_pygments_1601490720602/work -jupyterlab-server @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_server_1608758016764/work -keyring @ file:///opt/concourse/worker/volumes/live/4b64160c-5883-473f-7e72-b24b04c653c1/volume/keyring_1609353655294/work -kiwisolver @ file:///opt/concourse/worker/volumes/live/b8936fa6-0e4b-47e7-4fb4-e02dbd4505ee/volume/kiwisolver_1604014598721/work -lazy-object-proxy @ file:///opt/concourse/worker/volumes/live/4edac9a2-4df2-4a26-4521-3cf6eec3d38c/volume/lazy-object-proxy_1607707342845/work -libarchive-c==2.9 -llvmlite==0.34.0 -locket==0.2.0 -lxml @ file:///opt/concourse/worker/volumes/live/0c49af63-83fd-4e70-550a-65ad2757eabb/volume/lxml_1606516849441/work -MarkupSafe @ file:///opt/concourse/worker/volumes/live/cb778296-98db-45ad-411e-6f726e102dc3/volume/markupsafe_1594371638608/work -matplotlib @ file:///opt/concourse/worker/volumes/live/f7797860-f8aa-410c-4a56-72315954816b/volume/matplotlib-base_1603378002957/work -mccabe==0.6.1 -mistune @ file:///opt/concourse/worker/volumes/live/95802d64-d39c-491b-74ce-b9326880ca54/volume/mistune_1594373201816/work -mkl-fft==1.2.0 -mkl-random==1.1.1 -mkl-service==2.3.0 -mock @ file:///tmp/build/80754af9/mock_1607622725907/work -more-itertools @ file:///tmp/build/80754af9/more-itertools_1605111547926/work -mpmath==1.1.0 -msgpack @ file:///opt/concourse/worker/volumes/live/72addd97-7a03-457a-46ee-3dd914587c9b/volume/msgpack-python_1607965805341/work -multipledispatch==0.6.0 -mypy-extensions==0.4.3 -navigator-updater==0.2.1 -nbclassic @ file:///home/conda/feedstock_root/build_artifacts/nbclassic_1608065786177/work -nbclient @ file:///tmp/build/80754af9/nbclient_1602783176460/work -nbconvert @ file:///opt/concourse/worker/volumes/live/2b9c1d93-d0fd-432f-7d93-66c93d81b614/volume/nbconvert_1601914875037/work -nbformat @ file:///tmp/build/80754af9/nbformat_1602783287752/work -nest-asyncio @ file:///tmp/build/80754af9/nest-asyncio_1606153767164/work -networkx @ file:///tmp/build/80754af9/networkx_1598376031484/work -nltk @ file:///tmp/build/80754af9/nltk_1592496090529/work -nose @ file:///tmp/build/80754af9/nose_1606773131901/work -notebook @ file:///opt/concourse/worker/volumes/live/d85c0794-1357-4fff-61be-761a5e60b85b/volume/notebook_1608835566278/work -numba @ file:///opt/concourse/worker/volumes/live/ae24c1ca-d916-4043-5919-a843fa33e451/volume/numba_1600084276085/work -numexpr @ file:///opt/concourse/worker/volumes/live/be23032a-004b-4311-7e19-5a695a9d966c/volume/numexpr_1609354650450/work -numpy @ file:///opt/concourse/worker/volumes/live/5572694e-967a-4c0c-52cf-b53d43e72de9/volume/numpy_and_numpy_base_1603491881791/work -numpydoc @ file:///tmp/build/80754af9/numpydoc_1605117425582/work -olefile==0.46 -openpyxl @ file:///tmp/build/80754af9/openpyxl_1598113097404/work -packaging @ file:///tmp/build/80754af9/packaging_1607971725249/work -pandas==1.2.0 -pandocfilters @ file:///opt/concourse/worker/volumes/live/c330e404-216d-466b-5327-8ce8fe854d3a/volume/pandocfilters_1605120442288/work -parso==0.7.0 -partd==1.1.0 -path @ file:///opt/concourse/worker/volumes/live/3a3c4803-ce4c-4e27-4391-6f53ea99aed9/volume/path_1607537225872/work -pathlib2 @ file:///opt/concourse/worker/volumes/live/cca4007b-e85e-4f77-430e-d30b2149548d/volume/pathlib2_1607024978319/work -pathspec==0.7.0 -pathtools==0.1.2 -patsy==0.5.1 -pep8==1.7.1 -pexpect @ file:///tmp/build/80754af9/pexpect_1605563209008/work -pickleshare @ file:///tmp/build/80754af9/pickleshare_1606932040724/work -Pillow @ file:///opt/concourse/worker/volumes/live/705be880-f90c-4fb3-489d-9ee685c52cbe/volume/pillow_1609786792428/work -pkginfo==1.6.1 -pluggy==0.13.1 -ply==3.11 -prometheus-client @ file:///tmp/build/80754af9/prometheus_client_1606344362066/work -prompt-toolkit @ file:///tmp/build/80754af9/prompt-toolkit_1602688806899/work -psutil @ file:///opt/concourse/worker/volumes/live/ff72f822-991c-4030-4f3a-8c41d3ac4e4f/volume/psutil_1598370232375/work -ptyprocess @ file:///tmp/build/80754af9/ptyprocess_1609355006118/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl -py @ file:///tmp/build/80754af9/py_1607971587848/work -pycodestyle==2.6.0 -pycosat==0.6.3 -pycparser @ file:///tmp/build/80754af9/pycparser_1594388511720/work -pycurl==7.43.0.6 -pydocstyle @ file:///tmp/build/80754af9/pydocstyle_1598885001695/work -pyerfa @ file:///opt/concourse/worker/volumes/live/5caffc18-53e2-4c2a-5220-6f94c6152218/volume/pyerfa_1606860213217/work -pyflakes==2.2.0 -Pygments @ file:///tmp/build/80754af9/pygments_1607368905949/work -pylint @ file:///opt/concourse/worker/volumes/live/ed0164b6-bcc7-4f6b-7dd4-ad89660b5dcb/volume/pylint_1598624018129/work -pyls-black @ file:///tmp/build/80754af9/pyls-black_1607553132291/work -pyls-spyder @ file:///tmp/build/80754af9/pyls-spyder_1608134179673/work -pyodbc===4.0.0-unsupported -pyOpenSSL @ file:///tmp/build/80754af9/pyopenssl_1608057966937/work -pypandoc @ file:///tmp/build/80754af9/pypandoc_1615748737525/work -pyparsing==2.4.7 -pyrsistent @ file:///opt/concourse/worker/volumes/live/ff11f3f0-615b-4508-471d-4d9f19fa6657/volume/pyrsistent_1600141727281/work -PySocks @ file:///opt/concourse/worker/volumes/live/85a5b906-0e08-41d9-6f59-084cee4e9492/volume/pysocks_1594394636991/work -pytest==0.0.0 -pytest-runner==5.2 +alembic==1.6.5 +Babel==2.9.1 +blinker==1.4 +click==8.0.1 +cracklib==2.9.3 +dnspython==2.1.0 +dominate==2.6.0 +email-validator==1.1.3 +Flask==2.0.1 +Flask-Babel==2.0.0 +Flask-Bootstrap==3.3.7.1 +Flask-Login==0.5.0 +Flask-Mail==0.9.1 +Flask-Migrate==3.0.1 +Flask-Moment==1.0.1 +Flask-SQLAlchemy==2.5.1 +Flask-WTF==0.15.1 +greenlet==1.1.0 +html2text==2020.1.16 +idna==3.2 +importlib-metadata==4.6.1 +itsdangerous==2.0.1 +Jinja2==3.0.1 +Mako==1.1.4 +MarkupSafe==2.0.1 +Pillow==8.3.1 +pkg-resources==0.0.0 +psycopg2==2.9.1 +PyJWT==2.1.0 python-dateutil==2.8.1 -python-jsonrpc-server @ file:///tmp/build/80754af9/python-jsonrpc-server_1600278539111/work -python-language-server @ file:///tmp/build/80754af9/python-language-server_1607972495879/work -pytz @ file:///tmp/build/80754af9/pytz_1608922264688/work -PyWavelets @ file:///opt/concourse/worker/volumes/live/ea36e10f-66e8-43ae-511e-c4092764493f/volume/pywavelets_1601658378672/work -PyYAML==5.3.1 -pyzmq==20.0.0 -QDarkStyle==2.8.1 -QtAwesome @ file:///tmp/build/80754af9/qtawesome_1602272867890/work -qtconsole @ file:///tmp/build/80754af9/qtconsole_1600870028330/work -QtPy==1.9.0 -regex @ file:///opt/concourse/worker/volumes/live/c84a6349-3315-46e4-634b-b5582dea058b/volume/regex_1606691109605/work -requests @ file:///tmp/build/80754af9/requests_1608241421344/work -rope @ file:///tmp/build/80754af9/rope_1602264064449/work -Rtree==0.9.4 -ruamel-yaml==0.15.87 -ruamel.yaml.clib @ file:///opt/concourse/worker/volumes/live/df50bfa6-7454-42af-5be1-83d220b01f4a/volume/ruamel.yaml.clib_1601999082457/work -scikit-image==0.17.2 -scikit-learn @ file:///opt/concourse/worker/volumes/live/111833a2-339b-4578-413b-7337bb8fe64a/volume/scikit-learn_1598376920601/work -scipy @ file:///opt/concourse/worker/volumes/live/851446f6-a052-41c4-4243-67bb78999b49/volume/scipy_1604596178167/work -seaborn @ file:///tmp/build/80754af9/seaborn_1608578541026/work -Send2Trash @ file:///tmp/build/80754af9/send2trash_1607525499227/work -simplegeneric==0.8.1 -singledispatch @ file:///tmp/build/80754af9/singledispatch_1602523705405/work -six @ file:///opt/concourse/worker/volumes/live/5b31cb27-1e37-4ca5-6e9f-86246eb206d2/volume/six_1605205320872/work -sniffio @ file:///Users/runner/miniforge3/conda-bld/sniffio_1606397282082/work -snowballstemmer==2.0.0 -sortedcollections==1.2.1 -sortedcontainers @ file:///tmp/build/80754af9/sortedcontainers_1606865132123/work -soupsieve @ file:///tmp/build/80754af9/soupsieve_1607965878077/work -Sphinx @ file:///tmp/build/80754af9/sphinx_1609787914168/work -sphinxcontrib-applehelp==1.0.2 -sphinxcontrib-devhelp==1.0.2 -sphinxcontrib-htmlhelp==1.0.3 -sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-qthelp==1.0.3 -sphinxcontrib-serializinghtml==1.1.4 -sphinxcontrib-websupport @ file:///tmp/build/80754af9/sphinxcontrib-websupport_1597081412696/work -spyder @ file:///opt/concourse/worker/volumes/live/4cd2785b-2e47-41ea-6cf3-3c3603232cc9/volume/spyder_1607704268636/work -spyder-kernels @ file:///opt/concourse/worker/volumes/live/7c9c73e2-5880-4362-7070-db12e0b89ed1/volume/spyder-kernels_1608578785269/work -SQLAlchemy @ file:///opt/concourse/worker/volumes/live/60740715-d446-4164-5b0a-2e0bf83d4185/volume/sqlalchemy_1608243739201/work -statsmodels @ file:///opt/concourse/worker/volumes/live/8cc21252-fe82-4d91-6eab-9ca11d929cbf/volume/statsmodels_1606865746867/work -sympy @ file:///opt/concourse/worker/volumes/live/ab9cbe52-d91b-473c-5b45-6d4f76d28709/volume/sympy_1608137677993/work -tables==3.6.1 -tblib @ file:///tmp/build/80754af9/tblib_1597928476713/work -terminado==0.9.2 -testpath==0.4.4 -threadpoolctl @ file:///tmp/tmp9twdgx9k/threadpoolctl-2.1.0-py3-none-any.whl -three-merge @ file:///tmp/build/80754af9/three-merge_1607553261110/work -tifffile @ file:///tmp/build/80754af9/tifffile_1607624018440/work -toml @ file:///tmp/build/80754af9/toml_1592853716807/work -toolz @ file:///tmp/build/80754af9/toolz_1601054250827/work -torch==1.7.1 -torchaudio==0.7.0a0+a853dff -torchvision==0.8.2 -tornado @ file:///opt/concourse/worker/volumes/live/05341796-4198-4ded-4a9a-332fde3cdfd1/volume/tornado_1606942323372/work -tqdm @ file:///tmp/build/80754af9/tqdm_1609788246169/work -traitlets @ file:///tmp/build/80754af9/traitlets_1602787416690/work -typed-ast==1.4.1 -typing-extensions @ file:///tmp/build/80754af9/typing_extensions_1598376058250/work -ujson @ file:///opt/concourse/worker/volumes/live/2fc9988c-ebca-4577-6c4b-7383ea76e8ee/volume/ujson_1602523306974/work -unicodecsv==0.14.1 -urllib3 @ file:///tmp/build/80754af9/urllib3_1606938623459/work -watchdog @ file:///opt/concourse/worker/volumes/live/4178155f-7c31-4cf0-463c-13c24817f979/volume/watchdog_1606939125879/work -wcwidth @ file:///tmp/build/80754af9/wcwidth_1593447189090/work -webencodings==0.5.1 -Werkzeug==1.0.1 -widgetsnbextension==3.5.1 -wrapt @ file:///opt/concourse/worker/volumes/live/4fd63656-ef78-4d7f-42f4-6ab83f3ac507/volume/wrapt_1607712512486/work -wurlitzer @ file:///opt/concourse/worker/volumes/live/01a17f3d-eafe-4806-57a1-4b9ef5d1815f/volume/wurlitzer_1594753845129/work -xlrd @ file:///tmp/build/80754af9/xlrd_1608072521494/work -XlsxWriter @ file:///tmp/build/80754af9/xlsxwriter_1602692860603/work -xlwings==0.21.4 -xlwt==1.3.0 -xmltodict==0.12.0 -yapf @ file:///tmp/build/80754af9/yapf_1593528177422/work -yellowbrick==1.1 -zict==2.0.0 -zipp @ file:///tmp/build/80754af9/zipp_1604001098328/work -zope.event==4.5.0 -zope.interface @ file:///opt/concourse/worker/volumes/live/c9794133-1f05-4285-7d7a-dcf7a4a55d28/volume/zope.interface_1606940337352/work +python-dotenv==0.18.0 +python-editor==1.0.4 +pytz==2021.1 +six==1.16.0 +SQLAlchemy==1.4.20 +typing-extensions==3.10.0.0 +visitor==0.1.3 +Werkzeug==2.0.1 +WTForms==2.3.3 +zipp==3.5.0