From 0f51b7975a184e52c99489c04ab8a9af0abf0112 Mon Sep 17 00:00:00 2001 From: c00lerxo Date: Tue, 11 Dec 2018 13:02:46 +0100 Subject: [PATCH] Remove redundant directory --- venv/bin/activate | 76 - venv/bin/activate.csh | 37 - venv/bin/activate.fish | 75 - venv/bin/chardetect | 11 - venv/bin/easy_install | 11 - venv/bin/easy_install-3.6 | 11 - venv/bin/flask | 11 - venv/bin/gunicorn | 11 - venv/bin/gunicorn_paster | 11 - venv/bin/pip | 11 - venv/bin/pip3 | 11 - venv/bin/pip3.6 | 11 - venv/bin/pyrsa-decrypt | 11 - venv/bin/pyrsa-encrypt | 11 - venv/bin/pyrsa-keygen | 11 - venv/bin/pyrsa-priv2pub | 11 - venv/bin/pyrsa-sign | 11 - venv/bin/pyrsa-verify | 11 - venv/bin/python | 1 - venv/bin/python3 | 1 - .../Click-7.0.dist-info/INSTALLER | 1 - .../Click-7.0.dist-info/LICENSE.txt | 39 - .../Click-7.0.dist-info/METADATA | 121 - .../site-packages/Click-7.0.dist-info/RECORD | 40 - .../site-packages/Click-7.0.dist-info/WHEEL | 6 - .../Click-7.0.dist-info/top_level.txt | 1 - .../Flask-1.0.2.dist-info/INSTALLER | 1 - .../Flask-1.0.2.dist-info/LICENSE.txt | 31 - .../Flask-1.0.2.dist-info/METADATA | 130 - .../Flask-1.0.2.dist-info/RECORD | 48 - .../site-packages/Flask-1.0.2.dist-info/WHEEL | 6 - .../Flask-1.0.2.dist-info/entry_points.txt | 3 - .../Flask-1.0.2.dist-info/top_level.txt | 1 - .../DESCRIPTION.rst | 21 - .../Flask_WTF-0.14.2.dist-info/INSTALLER | 1 - .../Flask_WTF-0.14.2.dist-info/LICENSE.txt | 32 - .../Flask_WTF-0.14.2.dist-info/METADATA | 52 - .../Flask_WTF-0.14.2.dist-info/RECORD | 30 - .../Flask_WTF-0.14.2.dist-info/WHEEL | 6 - .../Flask_WTF-0.14.2.dist-info/metadata.json | 1 - .../Flask_WTF-0.14.2.dist-info/top_level.txt | 1 - .../Jinja2-2.10.dist-info/DESCRIPTION.rst | 37 - .../Jinja2-2.10.dist-info/INSTALLER | 1 - .../Jinja2-2.10.dist-info/LICENSE.txt | 31 - .../Jinja2-2.10.dist-info/METADATA | 68 - .../Jinja2-2.10.dist-info/RECORD | 63 - .../site-packages/Jinja2-2.10.dist-info/WHEEL | 6 - .../Jinja2-2.10.dist-info/entry_points.txt | 4 - .../Jinja2-2.10.dist-info/metadata.json | 1 - .../Jinja2-2.10.dist-info/top_level.txt | 1 - .../MarkupSafe-1.1.0.dist-info/INSTALLER | 1 - .../MarkupSafe-1.1.0.dist-info/LICENSE.txt | 33 - .../MarkupSafe-1.1.0.dist-info/METADATA | 103 - .../MarkupSafe-1.1.0.dist-info/RECORD | 16 - .../MarkupSafe-1.1.0.dist-info/WHEEL | 5 - .../MarkupSafe-1.1.0.dist-info/top_level.txt | 1 - .../WTForms-2.2.1.dist-info/INSTALLER | 1 - .../WTForms-2.2.1.dist-info/METADATA | 101 - .../WTForms-2.2.1.dist-info/RECORD | 147 - .../WTForms-2.2.1.dist-info/WHEEL | 6 - .../WTForms-2.2.1.dist-info/top_level.txt | 1 - .../Werkzeug-0.14.1.dist-info/DESCRIPTION.rst | 80 - .../Werkzeug-0.14.1.dist-info/INSTALLER | 1 - .../Werkzeug-0.14.1.dist-info/LICENSE.txt | 31 - .../Werkzeug-0.14.1.dist-info/METADATA | 116 - .../Werkzeug-0.14.1.dist-info/RECORD | 97 - .../Werkzeug-0.14.1.dist-info/WHEEL | 6 - .../Werkzeug-0.14.1.dist-info/metadata.json | 1 - .../Werkzeug-0.14.1.dist-info/top_level.txt | 1 - .../__pycache__/easy_install.cpython-36.pyc | Bin 275 -> 0 bytes .../__pycache__/six.cpython-36.pyc | Bin 26448 -> 0 bytes .../DESCRIPTION.rst | 97 - .../cachetools-3.0.0.dist-info/INSTALLER | 1 - .../cachetools-3.0.0.dist-info/METADATA | 124 - .../cachetools-3.0.0.dist-info/RECORD | 25 - .../cachetools-3.0.0.dist-info/WHEEL | 6 - .../cachetools-3.0.0.dist-info/metadata.json | 1 - .../cachetools-3.0.0.dist-info/top_level.txt | 1 - .../site-packages/cachetools/__init__.py | 112 - .../__pycache__/__init__.cpython-36.pyc | Bin 3162 -> 0 bytes .../cachetools/__pycache__/abc.cpython-36.pyc | Bin 1409 -> 0 bytes .../__pycache__/cache.cpython-36.pyc | Bin 3274 -> 0 bytes .../__pycache__/func.cpython-36.pyc | Bin 4198 -> 0 bytes .../__pycache__/keys.cpython-36.pyc | Bin 1704 -> 0 bytes .../cachetools/__pycache__/lfu.cpython-36.pyc | Bin 1576 -> 0 bytes .../cachetools/__pycache__/lru.cpython-36.pyc | Bin 1949 -> 0 bytes .../cachetools/__pycache__/rr.cpython-36.pyc | Bin 1281 -> 0 bytes .../cachetools/__pycache__/ttl.cpython-36.pyc | Bin 7144 -> 0 bytes .../python3.6/site-packages/cachetools/abc.py | 48 - .../site-packages/cachetools/cache.py | 91 - .../site-packages/cachetools/func.py | 136 - .../site-packages/cachetools/keys.py | 43 - .../python3.6/site-packages/cachetools/lfu.py | 35 - .../python3.6/site-packages/cachetools/lru.py | 48 - .../python3.6/site-packages/cachetools/rr.py | 36 - .../python3.6/site-packages/cachetools/ttl.py | 216 - .../DESCRIPTION.rst | 45 - .../certifi-2018.11.29.dist-info/INSTALLER | 1 - .../certifi-2018.11.29.dist-info/LICENSE.txt | 21 - .../certifi-2018.11.29.dist-info/METADATA | 69 - .../certifi-2018.11.29.dist-info/RECORD | 15 - .../certifi-2018.11.29.dist-info/WHEEL | 6 - .../metadata.json | 1 - .../top_level.txt | 1 - .../site-packages/certifi/__init__.py | 3 - .../site-packages/certifi/__main__.py | 2 - .../__pycache__/__init__.cpython-36.pyc | Bin 199 -> 0 bytes .../__pycache__/__main__.cpython-36.pyc | Bin 190 -> 0 bytes .../certifi/__pycache__/core.cpython-36.pyc | Bin 460 -> 0 bytes .../site-packages/certifi/cacert.pem | 4512 --------- .../python3.6/site-packages/certifi/core.py | 20 - .../chardet-3.0.4.dist-info/DESCRIPTION.rst | 70 - .../chardet-3.0.4.dist-info/INSTALLER | 1 - .../chardet-3.0.4.dist-info/METADATA | 96 - .../chardet-3.0.4.dist-info/RECORD | 91 - .../chardet-3.0.4.dist-info/WHEEL | 6 - .../chardet-3.0.4.dist-info/entry_points.txt | 3 - .../chardet-3.0.4.dist-info/metadata.json | 1 - .../chardet-3.0.4.dist-info/top_level.txt | 1 - .../site-packages/chardet/__init__.py | 39 - .../__pycache__/__init__.cpython-36.pyc | Bin 786 -> 0 bytes .../__pycache__/big5freq.cpython-36.pyc | Bin 54673 -> 0 bytes .../__pycache__/big5prober.cpython-36.pyc | Bin 1062 -> 0 bytes .../chardistribution.cpython-36.pyc | Bin 6258 -> 0 bytes .../charsetgroupprober.cpython-36.pyc | Bin 2169 -> 0 bytes .../__pycache__/charsetprober.cpython-36.pyc | Bin 3395 -> 0 bytes .../codingstatemachine.cpython-36.pyc | Bin 2826 -> 0 bytes .../chardet/__pycache__/compat.cpython-36.pyc | Bin 302 -> 0 bytes .../__pycache__/cp949prober.cpython-36.pyc | Bin 1069 -> 0 bytes .../chardet/__pycache__/enums.cpython-36.pyc | Bin 2560 -> 0 bytes .../__pycache__/escprober.cpython-36.pyc | Bin 2551 -> 0 bytes .../chardet/__pycache__/escsm.cpython-36.pyc | Bin 7308 -> 0 bytes .../__pycache__/eucjpprober.cpython-36.pyc | Bin 2355 -> 0 bytes .../__pycache__/euckrfreq.cpython-36.pyc | Bin 24059 -> 0 bytes .../__pycache__/euckrprober.cpython-36.pyc | Bin 1070 -> 0 bytes .../__pycache__/euctwfreq.cpython-36.pyc | Bin 54682 -> 0 bytes .../__pycache__/euctwprober.cpython-36.pyc | Bin 1070 -> 0 bytes .../__pycache__/gb2312freq.cpython-36.pyc | Bin 38324 -> 0 bytes .../__pycache__/gb2312prober.cpython-36.pyc | Bin 1078 -> 0 bytes .../__pycache__/hebrewprober.cpython-36.pyc | Bin 2912 -> 0 bytes .../__pycache__/jisfreq.cpython-36.pyc | Bin 44468 -> 0 bytes .../chardet/__pycache__/jpcntx.cpython-36.pyc | Bin 38607 -> 0 bytes .../langbulgarianmodel.cpython-36.pyc | Bin 24822 -> 0 bytes .../langcyrillicmodel.cpython-36.pyc | Bin 30373 -> 0 bytes .../__pycache__/langgreekmodel.cpython-36.pyc | Bin 24500 -> 0 bytes .../langhebrewmodel.cpython-36.pyc | Bin 23354 -> 0 bytes .../langhungarianmodel.cpython-36.pyc | Bin 24796 -> 0 bytes .../__pycache__/langthaimodel.cpython-36.pyc | Bin 23333 -> 0 bytes .../langturkishmodel.cpython-36.pyc | Bin 23351 -> 0 bytes .../__pycache__/latin1prober.cpython-36.pyc | Bin 2883 -> 0 bytes .../mbcharsetprober.cpython-36.pyc | Bin 2174 -> 0 bytes .../mbcsgroupprober.cpython-36.pyc | Bin 1065 -> 0 bytes .../chardet/__pycache__/mbcssm.cpython-36.pyc | Bin 17518 -> 0 bytes .../sbcharsetprober.cpython-36.pyc | Bin 2927 -> 0 bytes .../sbcsgroupprober.cpython-36.pyc | Bin 1555 -> 0 bytes .../__pycache__/sjisprober.cpython-36.pyc | Bin 2381 -> 0 bytes .../universaldetector.cpython-36.pyc | Bin 5776 -> 0 bytes .../__pycache__/utf8prober.cpython-36.pyc | Bin 1912 -> 0 bytes .../__pycache__/version.cpython-36.pyc | Bin 381 -> 0 bytes .../site-packages/chardet/big5freq.py | 386 - .../site-packages/chardet/big5prober.py | 47 - .../site-packages/chardet/chardistribution.py | 233 - .../chardet/charsetgroupprober.py | 106 - .../site-packages/chardet/charsetprober.py | 145 - .../site-packages/chardet/cli/__init__.py | 1 - .../cli/__pycache__/__init__.cpython-36.pyc | Bin 138 -> 0 bytes .../cli/__pycache__/chardetect.cpython-36.pyc | Bin 3026 -> 0 bytes .../site-packages/chardet/cli/chardetect.py | 85 - .../chardet/codingstatemachine.py | 88 - .../python3.6/site-packages/chardet/compat.py | 34 - .../site-packages/chardet/cp949prober.py | 49 - .../python3.6/site-packages/chardet/enums.py | 76 - .../site-packages/chardet/escprober.py | 101 - .../python3.6/site-packages/chardet/escsm.py | 246 - .../site-packages/chardet/eucjpprober.py | 92 - .../site-packages/chardet/euckrfreq.py | 195 - .../site-packages/chardet/euckrprober.py | 47 - .../site-packages/chardet/euctwfreq.py | 387 - .../site-packages/chardet/euctwprober.py | 46 - .../site-packages/chardet/gb2312freq.py | 283 - .../site-packages/chardet/gb2312prober.py | 46 - .../site-packages/chardet/hebrewprober.py | 292 - .../site-packages/chardet/jisfreq.py | 325 - .../python3.6/site-packages/chardet/jpcntx.py | 233 - .../chardet/langbulgarianmodel.py | 228 - .../chardet/langcyrillicmodel.py | 333 - .../site-packages/chardet/langgreekmodel.py | 225 - .../site-packages/chardet/langhebrewmodel.py | 200 - .../chardet/langhungarianmodel.py | 225 - .../site-packages/chardet/langthaimodel.py | 199 - .../site-packages/chardet/langturkishmodel.py | 193 - .../site-packages/chardet/latin1prober.py | 145 - .../site-packages/chardet/mbcharsetprober.py | 91 - .../site-packages/chardet/mbcsgroupprober.py | 54 - .../python3.6/site-packages/chardet/mbcssm.py | 572 -- .../site-packages/chardet/sbcharsetprober.py | 132 - .../site-packages/chardet/sbcsgroupprober.py | 73 - .../site-packages/chardet/sjisprober.py | 92 - .../chardet/universaldetector.py | 286 - .../site-packages/chardet/utf8prober.py | 82 - .../site-packages/chardet/version.py | 9 - .../python3.6/site-packages/click/__init__.py | 97 - .../click/__pycache__/__init__.cpython-36.pyc | Bin 2618 -> 0 bytes .../__pycache__/_bashcomplete.cpython-36.pyc | Bin 9076 -> 0 bytes .../click/__pycache__/_compat.cpython-36.pyc | Bin 16749 -> 0 bytes .../__pycache__/_termui_impl.cpython-36.pyc | Bin 13984 -> 0 bytes .../__pycache__/_textwrap.cpython-36.pyc | Bin 1297 -> 0 bytes .../__pycache__/_unicodefun.cpython-36.pyc | Bin 3329 -> 0 bytes .../__pycache__/_winconsole.cpython-36.pyc | Bin 8741 -> 0 bytes .../click/__pycache__/core.cpython-36.pyc | Bin 59865 -> 0 bytes .../__pycache__/decorators.cpython-36.pyc | Bin 11570 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 8572 -> 0 bytes .../__pycache__/formatting.cpython-36.pyc | Bin 8515 -> 0 bytes .../click/__pycache__/globals.cpython-36.pyc | Bin 1844 -> 0 bytes .../click/__pycache__/parser.cpython-36.pyc | Bin 11433 -> 0 bytes .../click/__pycache__/termui.cpython-36.pyc | Bin 20782 -> 0 bytes .../click/__pycache__/testing.cpython-36.pyc | Bin 11586 -> 0 bytes .../click/__pycache__/types.cpython-36.pyc | Bin 21829 -> 0 bytes .../click/__pycache__/utils.cpython-36.pyc | Bin 15210 -> 0 bytes .../site-packages/click/_bashcomplete.py | 293 - .../python3.6/site-packages/click/_compat.py | 703 -- .../site-packages/click/_termui_impl.py | 621 -- .../site-packages/click/_textwrap.py | 38 - .../site-packages/click/_unicodefun.py | 125 - .../site-packages/click/_winconsole.py | 307 - .../lib/python3.6/site-packages/click/core.py | 1856 ---- .../site-packages/click/decorators.py | 311 - .../site-packages/click/exceptions.py | 235 - .../site-packages/click/formatting.py | 256 - .../python3.6/site-packages/click/globals.py | 48 - .../python3.6/site-packages/click/parser.py | 427 - .../python3.6/site-packages/click/termui.py | 606 -- .../python3.6/site-packages/click/testing.py | 374 - .../python3.6/site-packages/click/types.py | 668 -- .../python3.6/site-packages/click/utils.py | 440 - .../python3.6/site-packages/easy_install.py | 5 - .../python3.6/site-packages/flask/__init__.py | 49 - .../python3.6/site-packages/flask/__main__.py | 14 - .../flask/__pycache__/__init__.cpython-36.pyc | Bin 1792 -> 0 bytes .../flask/__pycache__/__main__.cpython-36.pyc | Bin 419 -> 0 bytes .../flask/__pycache__/_compat.cpython-36.pyc | Bin 3191 -> 0 bytes .../flask/__pycache__/app.cpython-36.pyc | Bin 70866 -> 0 bytes .../__pycache__/blueprints.cpython-36.pyc | Bin 20455 -> 0 bytes .../flask/__pycache__/cli.cpython-36.pyc | Bin 24832 -> 0 bytes .../flask/__pycache__/config.cpython-36.pyc | Bin 9958 -> 0 bytes .../flask/__pycache__/ctx.cpython-36.pyc | Bin 13928 -> 0 bytes .../__pycache__/debughelpers.cpython-36.pyc | Bin 6567 -> 0 bytes .../flask/__pycache__/globals.cpython-36.pyc | Bin 1719 -> 0 bytes .../flask/__pycache__/helpers.cpython-36.pyc | Bin 33027 -> 0 bytes .../flask/__pycache__/logging.cpython-36.pyc | Bin 2348 -> 0 bytes .../flask/__pycache__/sessions.cpython-36.pyc | Bin 12195 -> 0 bytes .../flask/__pycache__/signals.cpython-36.pyc | Bin 2380 -> 0 bytes .../__pycache__/templating.cpython-36.pyc | Bin 4929 -> 0 bytes .../flask/__pycache__/testing.cpython-36.pyc | Bin 7832 -> 0 bytes .../flask/__pycache__/views.cpython-36.pyc | Bin 4737 -> 0 bytes .../flask/__pycache__/wrappers.cpython-36.pyc | Bin 6738 -> 0 bytes .../python3.6/site-packages/flask/_compat.py | 99 - venv/lib/python3.6/site-packages/flask/app.py | 2315 ----- .../site-packages/flask/blueprints.py | 448 - venv/lib/python3.6/site-packages/flask/cli.py | 898 -- .../python3.6/site-packages/flask/config.py | 265 - venv/lib/python3.6/site-packages/flask/ctx.py | 457 - .../site-packages/flask/debughelpers.py | 168 - .../python3.6/site-packages/flask/globals.py | 61 - .../python3.6/site-packages/flask/helpers.py | 1044 --- .../site-packages/flask/json/__init__.py | 327 - .../json/__pycache__/__init__.cpython-36.pyc | Bin 10238 -> 0 bytes .../flask/json/__pycache__/tag.cpython-36.pyc | Bin 11040 -> 0 bytes .../python3.6/site-packages/flask/json/tag.py | 300 - .../python3.6/site-packages/flask/logging.py | 78 - .../python3.6/site-packages/flask/sessions.py | 385 - .../python3.6/site-packages/flask/signals.py | 57 - .../site-packages/flask/templating.py | 150 - .../python3.6/site-packages/flask/testing.py | 250 - .../python3.6/site-packages/flask/views.py | 158 - .../python3.6/site-packages/flask/wrappers.py | 216 - .../site-packages/flask_wtf/__init__.py | 19 - .../__pycache__/__init__.cpython-36.pyc | Bin 572 -> 0 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 1053 -> 0 bytes .../flask_wtf/__pycache__/csrf.cpython-36.pyc | Bin 11033 -> 0 bytes .../flask_wtf/__pycache__/file.cpython-36.pyc | Bin 3536 -> 0 bytes .../flask_wtf/__pycache__/form.cpython-36.pyc | Bin 5697 -> 0 bytes .../__pycache__/html5.cpython-36.pyc | Bin 459 -> 0 bytes .../flask_wtf/__pycache__/i18n.cpython-36.pyc | Bin 1735 -> 0 bytes .../site-packages/flask_wtf/_compat.py | 35 - .../python3.6/site-packages/flask_wtf/csrf.py | 364 - .../python3.6/site-packages/flask_wtf/file.py | 94 - .../python3.6/site-packages/flask_wtf/form.py | 158 - .../site-packages/flask_wtf/html5.py | 13 - .../python3.6/site-packages/flask_wtf/i18n.py | 69 - .../flask_wtf/recaptcha/__init__.py | 4 - .../__pycache__/__init__.cpython-36.pyc | Bin 212 -> 0 bytes .../__pycache__/fields.cpython-36.pyc | Bin 753 -> 0 bytes .../__pycache__/validators.cpython-36.pyc | Bin 2325 -> 0 bytes .../__pycache__/widgets.cpython-36.pyc | Bin 1600 -> 0 bytes .../flask_wtf/recaptcha/fields.py | 17 - .../flask_wtf/recaptcha/validators.py | 77 - .../flask_wtf/recaptcha/widgets.py | 42 - .../site-packages/google/api/__init__.py | 0 .../api/__pycache__/__init__.cpython-36.pyc | Bin 154 -> 0 bytes .../annotations_pb2.cpython-36.pyc | Bin 1891 -> 0 bytes .../api/__pycache__/auth_pb2.cpython-36.pyc | Bin 4986 -> 0 bytes .../__pycache__/backend_pb2.cpython-36.pyc | Bin 2762 -> 0 bytes .../__pycache__/billing_pb2.cpython-36.pyc | Bin 2813 -> 0 bytes .../config_change_pb2.cpython-36.pyc | Bin 3650 -> 0 bytes .../__pycache__/consumer_pb2.cpython-36.pyc | Bin 3233 -> 0 bytes .../__pycache__/context_pb2.cpython-36.pyc | Bin 2606 -> 0 bytes .../__pycache__/control_pb2.cpython-36.pyc | Bin 1990 -> 0 bytes .../distribution_pb2.cpython-36.pyc | Bin 6416 -> 0 bytes .../documentation_pb2.cpython-36.pyc | Bin 3906 -> 0 bytes .../__pycache__/endpoint_pb2.cpython-36.pyc | Bin 2603 -> 0 bytes .../api/__pycache__/http_pb2.cpython-36.pyc | Bin 4598 -> 0 bytes .../__pycache__/httpbody_pb2.cpython-36.pyc | Bin 2397 -> 0 bytes .../api/__pycache__/label_pb2.cpython-36.pyc | Bin 2762 -> 0 bytes .../api/__pycache__/log_pb2.cpython-36.pyc | Bin 2585 -> 0 bytes .../__pycache__/logging_pb2.cpython-36.pyc | Bin 3003 -> 0 bytes .../api/__pycache__/metric_pb2.cpython-36.pyc | Bin 5224 -> 0 bytes .../monitored_resource_pb2.cpython-36.pyc | Bin 5335 -> 0 bytes .../__pycache__/monitoring_pb2.cpython-36.pyc | Bin 3090 -> 0 bytes .../api/__pycache__/quota_pb2.cpython-36.pyc | Bin 5344 -> 0 bytes .../__pycache__/service_pb2.cpython-36.pyc | Bin 8136 -> 0 bytes .../source_info_pb2.cpython-36.pyc | Bin 2186 -> 0 bytes .../system_parameter_pb2.cpython-36.pyc | Bin 3333 -> 0 bytes .../api/__pycache__/usage_pb2.cpython-36.pyc | Bin 3106 -> 0 bytes .../google/api/annotations_pb2.py | 45 - .../site-packages/google/api/auth_pb2.py | 295 - .../site-packages/google/api/backend_pb2.py | 131 - .../site-packages/google/api/billing_pb2.py | 119 - .../google/api/config_change_pb2.py | 176 - .../site-packages/google/api/consumer_pb2.py | 161 - .../site-packages/google/api/context_pb2.py | 124 - .../site-packages/google/api/control_pb2.py | 70 - .../google/api/distribution_pb2.py | 368 - .../google/api/documentation_pb2.py | 207 - .../site-packages/google/api/endpoint_pb2.py | 100 - .../site-packages/google/api/http_pb2.py | 249 - .../site-packages/google/api/httpbody_pb2.py | 87 - .../site-packages/google/api/label_pb2.py | 113 - .../site-packages/google/api/log_pb2.py | 94 - .../site-packages/google/api/logging_pb2.py | 127 - .../site-packages/google/api/metric_pb2.py | 294 - .../google/api/monitored_resource_pb2.py | 291 - .../google/api/monitoring_pb2.py | 127 - .../site-packages/google/api/quota_pb2.py | 325 - .../site-packages/google/api/service_pb2.py | 281 - .../google/api/source_info_pb2.py | 73 - .../google/api/system_parameter_pb2.py | 171 - .../site-packages/google/api/usage_pb2.py | 140 - .../site-packages/google/api_core/__init__.py | 23 - .../__pycache__/__init__.cpython-36.pyc | Bin 370 -> 0 bytes .../api_core/__pycache__/bidi.cpython-36.pyc | Bin 17487 -> 0 bytes .../datetime_helpers.cpython-36.pyc | Bin 7061 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 15766 -> 0 bytes .../general_helpers.cpython-36.pyc | Bin 557 -> 0 bytes .../__pycache__/grpc_helpers.cpython-36.pyc | Bin 11867 -> 0 bytes .../api_core/__pycache__/iam.cpython-36.pyc | Bin 6478 -> 0 bytes .../__pycache__/operation.cpython-36.pyc | Bin 9887 -> 0 bytes .../__pycache__/page_iterator.cpython-36.pyc | Bin 17262 -> 0 bytes .../__pycache__/path_template.cpython-36.pyc | Bin 5111 -> 0 bytes .../protobuf_helpers.cpython-36.pyc | Bin 9044 -> 0 bytes .../api_core/__pycache__/retry.cpython-36.pyc | Bin 9560 -> 0 bytes .../__pycache__/timeout.cpython-36.pyc | Bin 6907 -> 0 bytes .../site-packages/google/api_core/bidi.py | 600 -- .../google/api_core/datetime_helpers.py | 265 - .../google/api_core/exceptions.py | 462 - .../google/api_core/future/__init__.py | 19 - .../__pycache__/__init__.cpython-36.pyc | Bin 303 -> 0 bytes .../__pycache__/_helpers.cpython-36.pyc | Bin 819 -> 0 bytes .../future/__pycache__/base.cpython-36.pyc | Bin 1792 -> 0 bytes .../future/__pycache__/polling.cpython-36.pyc | Bin 5665 -> 0 bytes .../google/api_core/future/_helpers.py | 39 - .../google/api_core/future/base.py | 67 - .../google/api_core/future/polling.py | 183 - .../google/api_core/gapic_v1/__init__.py | 20 - .../__pycache__/__init__.cpython-36.pyc | Bin 357 -> 0 bytes .../__pycache__/client_info.cpython-36.pyc | Bin 2688 -> 0 bytes .../__pycache__/config.cpython-36.pyc | Bin 4834 -> 0 bytes .../__pycache__/method.cpython-36.pyc | Bin 7341 -> 0 bytes .../__pycache__/routing_header.cpython-36.pyc | Bin 1461 -> 0 bytes .../google/api_core/gapic_v1/client_info.py | 94 - .../google/api_core/gapic_v1/config.py | 167 - .../google/api_core/gapic_v1/method.py | 242 - .../api_core/gapic_v1/routing_header.py | 62 - .../google/api_core/general_helpers.py | 32 - .../google/api_core/grpc_helpers.py | 384 - .../site-packages/google/api_core/iam.py | 248 - .../google/api_core/operation.py | 308 - .../google/api_core/operations_v1/__init__.py | 19 - .../__pycache__/__init__.cpython-36.pyc | Bin 363 -> 0 bytes .../operations_client.cpython-36.pyc | Bin 11392 -> 0 bytes .../operations_client_config.cpython-36.pyc | Bin 896 -> 0 bytes .../operations_v1/operations_client.py | 288 - .../operations_v1/operations_client_config.py | 59 - .../google/api_core/page_iterator.py | 549 -- .../google/api_core/path_template.py | 197 - .../google/api_core/protobuf_helpers.py | 359 - .../site-packages/google/api_core/retry.py | 340 - .../site-packages/google/api_core/timeout.py | 224 - .../site-packages/google/auth/__init__.py | 28 - .../auth/__pycache__/__init__.cpython-36.pyc | Bin 351 -> 0 bytes .../__pycache__/_cloud_sdk.cpython-36.pyc | Bin 2771 -> 0 bytes .../auth/__pycache__/_default.cpython-36.pyc | Bin 9166 -> 0 bytes .../auth/__pycache__/_helpers.cpython-36.pyc | Bin 5859 -> 0 bytes .../__pycache__/_oauth2client.cpython-36.pyc | Bin 4974 -> 0 bytes .../_service_account_info.cpython-36.pyc | Bin 1966 -> 0 bytes .../__pycache__/app_engine.cpython-36.pyc | Bin 4563 -> 0 bytes .../__pycache__/credentials.cpython-36.pyc | Bin 11675 -> 0 bytes .../environment_vars.cpython-36.pyc | Bin 442 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 1067 -> 0 bytes .../auth/__pycache__/iam.cpython-36.pyc | Bin 3248 -> 0 bytes .../impersonated_credentials.cpython-36.pyc | Bin 7725 -> 0 bytes .../auth/__pycache__/jwt.cpython-36.pyc | Bin 23506 -> 0 bytes .../site-packages/google/auth/_cloud_sdk.py | 126 - .../site-packages/google/auth/_default.py | 306 - .../site-packages/google/auth/_helpers.py | 217 - .../google/auth/_oauth2client.py | 171 - .../google/auth/_service_account_info.py | 73 - .../site-packages/google/auth/app_engine.py | 156 - .../google/auth/compute_engine/__init__.py | 24 - .../__pycache__/__init__.cpython-36.pyc | Bin 357 -> 0 bytes .../__pycache__/_metadata.cpython-36.pyc | Bin 5777 -> 0 bytes .../__pycache__/credentials.cpython-36.pyc | Bin 7893 -> 0 bytes .../google/auth/compute_engine/_metadata.py | 204 - .../google/auth/compute_engine/credentials.py | 239 - .../site-packages/google/auth/credentials.py | 322 - .../google/auth/crypt/__init__.py | 79 - .../crypt/__pycache__/__init__.cpython-36.pyc | Bin 1867 -> 0 bytes .../_cryptography_rsa.cpython-36.pyc | Bin 4787 -> 0 bytes .../crypt/__pycache__/_helpers.cpython-36.pyc | Bin 148 -> 0 bytes .../__pycache__/_python_rsa.cpython-36.pyc | Bin 5678 -> 0 bytes .../crypt/__pycache__/base.cpython-36.pyc | Bin 4084 -> 0 bytes .../auth/crypt/__pycache__/rsa.cpython-36.pyc | Bin 389 -> 0 bytes .../google/auth/crypt/_cryptography_rsa.py | 149 - .../google/auth/crypt/_helpers.py | 0 .../google/auth/crypt/_python_rsa.py | 176 - .../site-packages/google/auth/crypt/base.py | 131 - .../site-packages/google/auth/crypt/rsa.py | 30 - .../google/auth/environment_vars.py | 49 - .../site-packages/google/auth/exceptions.py | 32 - .../site-packages/google/auth/iam.py | 102 - .../google/auth/impersonated_credentials.py | 231 - .../site-packages/google/auth/jwt.py | 757 -- .../google/auth/transport/__init__.py | 96 - .../__pycache__/__init__.cpython-36.pyc | Bin 3106 -> 0 bytes .../__pycache__/_http_client.cpython-36.pyc | Bin 3392 -> 0 bytes .../transport/__pycache__/grpc.cpython-36.pyc | Bin 4273 -> 0 bytes .../__pycache__/requests.cpython-36.pyc | Bin 6574 -> 0 bytes .../__pycache__/urllib3.cpython-36.pyc | Bin 7364 -> 0 bytes .../google/auth/transport/_http_client.py | 113 - .../google/auth/transport/grpc.py | 135 - .../google/auth/transport/requests.py | 226 - .../google/auth/transport/urllib3.py | 266 - .../cloud/__pycache__/vision.cpython-36.pyc | Bin 427 -> 0 bytes .../site-packages/google/cloud/vision.py | 27 - .../google/cloud/vision_helpers/__init__.py | 82 - .../__pycache__/__init__.cpython-36.pyc | Bin 2868 -> 0 bytes .../__pycache__/decorators.cpython-36.pyc | Bin 2562 -> 0 bytes .../google/cloud/vision_helpers/decorators.py | 119 - .../google/cloud/vision_v1/__init__.py | 44 - .../__pycache__/__init__.cpython-36.pyc | Bin 1014 -> 0 bytes .../__pycache__/types.cpython-36.pyc | Bin 1454 -> 0 bytes .../google/cloud/vision_v1/gapic/__init__.py | 0 .../gapic/__pycache__/__init__.cpython-36.pyc | Bin 167 -> 0 bytes .../gapic/__pycache__/enums.cpython-36.pyc | Bin 10785 -> 0 bytes .../image_annotator_client.cpython-36.pyc | Bin 10691 -> 0 bytes ...age_annotator_client_config.cpython-36.pyc | Bin 776 -> 0 bytes .../product_search_client.cpython-36.pyc | Bin 57788 -> 0 bytes ...roduct_search_client_config.cpython-36.pyc | Bin 1328 -> 0 bytes .../google/cloud/vision_v1/gapic/enums.py | 247 - .../vision_v1/gapic/image_annotator_client.py | 313 - .../gapic/image_annotator_client_config.py | 33 - .../vision_v1/gapic/product_search_client.py | 1625 ---- .../gapic/product_search_client_config.py | 113 - .../vision_v1/gapic/transports/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 178 -> 0 bytes ...ge_annotator_grpc_transport.cpython-36.pyc | Bin 4582 -> 0 bytes ...oduct_search_grpc_transport.cpython-36.pyc | Bin 17056 -> 0 bytes .../image_annotator_grpc_transport.py | 145 - .../product_search_grpc_transport.py | 483 - .../google/cloud/vision_v1/proto/__init__.py | 0 .../proto/__pycache__/__init__.cpython-36.pyc | Bin 167 -> 0 bytes .../__pycache__/geometry_pb2.cpython-36.pyc | Bin 4692 -> 0 bytes .../geometry_pb2_grpc.cpython-36.pyc | Bin 192 -> 0 bytes .../image_annotator_pb2.cpython-36.pyc | Bin 56403 -> 0 bytes .../image_annotator_pb2_grpc.cpython-36.pyc | Bin 3365 -> 0 bytes .../product_search_pb2.cpython-36.pyc | Bin 8334 -> 0 bytes .../product_search_pb2_grpc.cpython-36.pyc | Bin 198 -> 0 bytes .../product_search_service_pb2.cpython-36.pyc | Bin 47349 -> 0 bytes ...uct_search_service_pb2_grpc.cpython-36.pyc | Bin 16309 -> 0 bytes .../text_annotation_pb2.cpython-36.pyc | Bin 16204 -> 0 bytes .../text_annotation_pb2_grpc.cpython-36.pyc | Bin 199 -> 0 bytes .../web_detection_pb2.cpython-36.pyc | Bin 8982 -> 0 bytes .../web_detection_pb2_grpc.cpython-36.pyc | Bin 197 -> 0 bytes .../cloud/vision_v1/proto/geometry_pb2.py | 267 - .../vision_v1/proto/geometry_pb2_grpc.py | 3 - .../vision_v1/proto/image_annotator_pb2.py | 2822 ------ .../proto/image_annotator_pb2_grpc.py | 73 - .../vision_v1/proto/product_search_pb2.py | 325 - .../proto/product_search_pb2_grpc.py | 3 - .../proto/product_search_service_pb2.py | 2186 ----- .../proto/product_search_service_pb2_grpc.py | 493 - .../vision_v1/proto/text_annotation_pb2.py | 791 -- .../proto/text_annotation_pb2_grpc.py | 3 - .../vision_v1/proto/web_detection_pb2.py | 406 - .../vision_v1/proto/web_detection_pb2_grpc.py | 3 - .../google/cloud/vision_v1/types.py | 75 - .../google/cloud/vision_v1p1beta1/__init__.py | 37 - .../__pycache__/__init__.cpython-36.pyc | Bin 805 -> 0 bytes .../__pycache__/types.cpython-36.pyc | Bin 1195 -> 0 bytes .../cloud/vision_v1p1beta1/gapic/__init__.py | 0 .../gapic/__pycache__/__init__.cpython-36.pyc | Bin 174 -> 0 bytes .../gapic/__pycache__/enums.cpython-36.pyc | Bin 8512 -> 0 bytes .../image_annotator_client.cpython-36.pyc | Bin 7359 -> 0 bytes ...age_annotator_client_config.cpython-36.pyc | Bin 749 -> 0 bytes .../cloud/vision_v1p1beta1/gapic/enums.py | 198 - .../gapic/image_annotator_client.py | 226 - .../gapic/image_annotator_client_config.py | 28 - .../gapic/transports/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 185 -> 0 bytes ...ge_annotator_grpc_transport.cpython-36.pyc | Bin 3574 -> 0 bytes .../image_annotator_grpc_transport.py | 120 - .../cloud/vision_v1p1beta1/proto/__init__.py | 0 .../proto/__pycache__/__init__.cpython-36.pyc | Bin 174 -> 0 bytes .../__pycache__/geometry_pb2.cpython-36.pyc | Bin 3908 -> 0 bytes .../geometry_pb2_grpc.cpython-36.pyc | Bin 199 -> 0 bytes .../image_annotator_pb2.cpython-36.pyc | Bin 41619 -> 0 bytes .../image_annotator_pb2_grpc.cpython-36.pyc | Bin 2414 -> 0 bytes .../text_annotation_pb2.cpython-36.pyc | Bin 16493 -> 0 bytes .../text_annotation_pb2_grpc.cpython-36.pyc | Bin 206 -> 0 bytes .../web_detection_pb2.cpython-36.pyc | Bin 9182 -> 0 bytes .../web_detection_pb2_grpc.cpython-36.pyc | Bin 204 -> 0 bytes .../vision_v1p1beta1/proto/geometry_pb2.py | 201 - .../proto/geometry_pb2_grpc.py | 3 - .../proto/image_annotator_pb2.py | 1986 ---- .../proto/image_annotator_pb2_grpc.py | 50 - .../proto/text_annotation_pb2.py | 788 -- .../proto/text_annotation_pb2_grpc.py | 3 - .../proto/web_detection_pb2.py | 405 - .../proto/web_detection_pb2_grpc.py | 3 - .../google/cloud/vision_v1p1beta1/types.py | 63 - .../google/cloud/vision_v1p2beta1/__init__.py | 37 - .../__pycache__/__init__.cpython-36.pyc | Bin 805 -> 0 bytes .../__pycache__/types.cpython-36.pyc | Bin 1334 -> 0 bytes .../cloud/vision_v1p2beta1/gapic/__init__.py | 0 .../gapic/__pycache__/__init__.cpython-36.pyc | Bin 174 -> 0 bytes .../gapic/__pycache__/enums.cpython-36.pyc | Bin 9531 -> 0 bytes .../image_annotator_client.cpython-36.pyc | Bin 10598 -> 0 bytes ...age_annotator_client_config.cpython-36.pyc | Bin 790 -> 0 bytes .../cloud/vision_v1p2beta1/gapic/enums.py | 221 - .../gapic/image_annotator_client.py | 309 - .../gapic/image_annotator_client_config.py | 33 - .../gapic/transports/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 185 -> 0 bytes ...ge_annotator_grpc_transport.cpython-36.pyc | Bin 4587 -> 0 bytes .../image_annotator_grpc_transport.py | 145 - .../cloud/vision_v1p2beta1/proto/__init__.py | 0 .../proto/__pycache__/__init__.cpython-36.pyc | Bin 174 -> 0 bytes .../__pycache__/geometry_pb2.cpython-36.pyc | Bin 4712 -> 0 bytes .../geometry_pb2_grpc.cpython-36.pyc | Bin 199 -> 0 bytes .../image_annotator_pb2.cpython-36.pyc | Bin 54533 -> 0 bytes .../image_annotator_pb2_grpc.cpython-36.pyc | Bin 3391 -> 0 bytes .../text_annotation_pb2.cpython-36.pyc | Bin 16704 -> 0 bytes .../text_annotation_pb2_grpc.cpython-36.pyc | Bin 206 -> 0 bytes .../web_detection_pb2.cpython-36.pyc | Bin 9182 -> 0 bytes .../web_detection_pb2_grpc.cpython-36.pyc | Bin 204 -> 0 bytes .../vision_v1p2beta1/proto/geometry_pb2.py | 265 - .../proto/geometry_pb2_grpc.py | 3 - .../proto/image_annotator_pb2.py | 2690 ------ .../proto/image_annotator_pb2_grpc.py | 73 - .../proto/text_annotation_pb2.py | 791 -- .../proto/text_annotation_pb2_grpc.py | 3 - .../proto/web_detection_pb2.py | 405 - .../proto/web_detection_pb2_grpc.py | 3 - .../google/cloud/vision_v1p2beta1/types.py | 69 - .../google/cloud/vision_v1p3beta1/__init__.py | 44 - .../__pycache__/__init__.cpython-36.pyc | Bin 1035 -> 0 bytes .../__pycache__/types.cpython-36.pyc | Bin 1475 -> 0 bytes .../cloud/vision_v1p3beta1/gapic/__init__.py | 0 .../gapic/__pycache__/__init__.cpython-36.pyc | Bin 174 -> 0 bytes .../gapic/__pycache__/enums.cpython-36.pyc | Bin 11790 -> 0 bytes .../image_annotator_client.cpython-36.pyc | Bin 10803 -> 0 bytes ...age_annotator_client_config.cpython-36.pyc | Bin 795 -> 0 bytes .../product_search_client.cpython-36.pyc | Bin 58832 -> 0 bytes ...roduct_search_client_config.cpython-36.pyc | Bin 1347 -> 0 bytes .../cloud/vision_v1p3beta1/gapic/enums.py | 275 - .../gapic/image_annotator_client.py | 313 - .../gapic/image_annotator_client_config.py | 33 - .../gapic/product_search_client.py | 1640 ---- .../gapic/product_search_client_config.py | 113 - .../gapic/transports/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 185 -> 0 bytes ...ge_annotator_grpc_transport.cpython-36.pyc | Bin 4603 -> 0 bytes ...oduct_search_grpc_transport.cpython-36.pyc | Bin 17058 -> 0 bytes .../image_annotator_grpc_transport.py | 145 - .../product_search_grpc_transport.py | 483 - .../cloud/vision_v1p3beta1/proto/__init__.py | 0 .../proto/__pycache__/__init__.cpython-36.pyc | Bin 174 -> 0 bytes .../__pycache__/geometry_pb2.cpython-36.pyc | Bin 5482 -> 0 bytes .../geometry_pb2_grpc.cpython-36.pyc | Bin 199 -> 0 bytes .../image_annotator_pb2.cpython-36.pyc | Bin 57806 -> 0 bytes .../image_annotator_pb2_grpc.cpython-36.pyc | Bin 3407 -> 0 bytes .../product_search_pb2.cpython-36.pyc | Bin 12193 -> 0 bytes .../product_search_pb2_grpc.cpython-36.pyc | Bin 205 -> 0 bytes .../product_search_service_pb2.cpython-36.pyc | Bin 48472 -> 0 bytes ...uct_search_service_pb2_grpc.cpython-36.pyc | Bin 16508 -> 0 bytes .../text_annotation_pb2.cpython-36.pyc | Bin 16704 -> 0 bytes .../text_annotation_pb2_grpc.cpython-36.pyc | Bin 206 -> 0 bytes .../web_detection_pb2.cpython-36.pyc | Bin 9182 -> 0 bytes .../web_detection_pb2_grpc.cpython-36.pyc | Bin 204 -> 0 bytes .../vision_v1p3beta1/proto/geometry_pb2.py | 315 - .../proto/geometry_pb2_grpc.py | 3 - .../proto/image_annotator_pb2.py | 2819 ------ .../proto/image_annotator_pb2_grpc.py | 73 - .../proto/product_search_pb2.py | 466 - .../proto/product_search_pb2_grpc.py | 3 - .../proto/product_search_service_pb2.py | 2180 ----- .../proto/product_search_service_pb2_grpc.py | 492 - .../proto/text_annotation_pb2.py | 791 -- .../proto/text_annotation_pb2_grpc.py | 3 - .../proto/web_detection_pb2.py | 405 - .../proto/web_detection_pb2_grpc.py | 3 - .../google/cloud/vision_v1p3beta1/types.py | 75 - .../google/logging/type/__init__.py | 0 .../type/__pycache__/__init__.cpython-36.pyc | Bin 163 -> 0 bytes .../http_request_pb2.cpython-36.pyc | Bin 4218 -> 0 bytes .../log_severity_pb2.cpython-36.pyc | Bin 2361 -> 0 bytes .../google/logging/type/http_request_pb2.py | 166 - .../google/logging/type/log_severity_pb2.py | 96 - .../google/longrunning/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 162 -> 0 bytes .../operations_grpc.cpython-36.pyc | Bin 274 -> 0 bytes .../operations_grpc_pb2.cpython-36.pyc | Bin 19169 -> 0 bytes .../__pycache__/operations_pb2.cpython-36.pyc | Bin 630 -> 0 bytes .../operations_proto.cpython-36.pyc | Bin 276 -> 0 bytes .../operations_proto_pb2.cpython-36.pyc | Bin 6441 -> 0 bytes .../google/longrunning/operations_grpc.py | 5 - .../google/longrunning/operations_grpc_pb2.py | 636 -- .../google/longrunning/operations_pb2.py | 27 - .../google/longrunning/operations_proto.py | 5 - .../longrunning/operations_proto_pb2.py | 340 - .../site-packages/google/oauth2/__init__.py | 15 - .../__pycache__/__init__.cpython-36.pyc | Bin 192 -> 0 bytes .../oauth2/__pycache__/_client.cpython-36.pyc | Bin 6713 -> 0 bytes .../__pycache__/credentials.cpython-36.pyc | Bin 6821 -> 0 bytes .../__pycache__/id_token.cpython-36.pyc | Bin 4891 -> 0 bytes .../service_account.cpython-36.pyc | Bin 18569 -> 0 bytes .../site-packages/google/oauth2/_client.py | 249 - .../google/oauth2/credentials.py | 194 - .../site-packages/google/oauth2/id_token.py | 159 - .../google/oauth2/service_account.py | 542 -- .../site-packages/google/protobuf/__init__.py | 39 - .../__pycache__/__init__.cpython-36.pyc | Bin 349 -> 0 bytes .../__pycache__/any_pb2.cpython-36.pyc | Bin 2090 -> 0 bytes .../__pycache__/any_test_pb2.cpython-36.pyc | Bin 2245 -> 0 bytes .../__pycache__/api_pb2.cpython-36.pyc | Bin 4796 -> 0 bytes .../__pycache__/descriptor.cpython-36.pyc | Bin 33172 -> 0 bytes .../descriptor_database.cpython-36.pyc | Bin 4450 -> 0 bytes .../__pycache__/descriptor_pb2.cpython-36.pyc | Bin 31490 -> 0 bytes .../descriptor_pool.cpython-36.pyc | Bin 28413 -> 0 bytes .../__pycache__/duration_pb2.cpython-36.pyc | Bin 2129 -> 0 bytes .../__pycache__/empty_pb2.cpython-36.pyc | Bin 1686 -> 0 bytes .../__pycache__/field_mask_pb2.cpython-36.pyc | Bin 2049 -> 0 bytes .../__pycache__/json_format.cpython-36.pyc | Bin 21078 -> 0 bytes .../map_proto2_unittest_pb2.cpython-36.pyc | Bin 18034 -> 0 bytes .../map_unittest_pb2.cpython-36.pyc | Bin 38773 -> 0 bytes .../__pycache__/message.cpython-36.pyc | Bin 10758 -> 0 bytes .../message_factory.cpython-36.pyc | Bin 4058 -> 0 bytes .../__pycache__/proto_builder.cpython-36.pyc | Bin 2773 -> 0 bytes .../__pycache__/reflection.cpython-36.pyc | Bin 2747 -> 0 bytes .../__pycache__/service.cpython-36.pyc | Bin 8791 -> 0 bytes .../service_reflection.cpython-36.pyc | Bin 10020 -> 0 bytes .../source_context_pb2.cpython-36.pyc | Bin 2148 -> 0 bytes .../__pycache__/struct_pb2.cpython-36.pyc | Bin 5040 -> 0 bytes .../symbol_database.cpython-36.pyc | Bin 5474 -> 0 bytes .../test_messages_proto2_pb2.cpython-36.pyc | Bin 38643 -> 0 bytes .../test_messages_proto3_pb2.cpython-36.pyc | Bin 43324 -> 0 bytes .../__pycache__/text_encoding.cpython-36.pyc | Bin 3161 -> 0 bytes .../__pycache__/text_format.cpython-36.pyc | Bin 39950 -> 0 bytes .../__pycache__/timestamp_pb2.cpython-36.pyc | Bin 2143 -> 0 bytes .../__pycache__/type_pb2.cpython-36.pyc | Bin 8651 -> 0 bytes .../unittest_arena_pb2.cpython-36.pyc | Bin 2779 -> 0 bytes ...unittest_custom_options_pb2.cpython-36.pyc | Bin 32085 -> 0 bytes .../unittest_import_pb2.cpython-36.pyc | Bin 3138 -> 0 bytes .../unittest_import_public_pb2.cpython-36.pyc | Bin 1929 -> 0 bytes .../unittest_mset_pb2.cpython-36.pyc | Bin 4518 -> 0 bytes ...ittest_mset_wire_format_pb2.cpython-36.pyc | Bin 2473 -> 0 bytes ...nittest_no_arena_import_pb2.cpython-36.pyc | Bin 1882 -> 0 bytes .../unittest_no_arena_pb2.cpython-36.pyc | Bin 20273 -> 0 bytes ...est_no_generic_services_pb2.cpython-36.pyc | Bin 3316 -> 0 bytes .../__pycache__/unittest_pb2.cpython-36.pyc | Bin 130672 -> 0 bytes .../unittest_proto3_arena_pb2.cpython-36.pyc | Bin 20297 -> 0 bytes .../__pycache__/wrappers_pb2.cpython-36.pyc | Bin 4641 -> 0 bytes .../site-packages/google/protobuf/any_pb2.py | 77 - .../google/protobuf/any_test_pb2.py | 87 - .../site-packages/google/protobuf/api_pb2.py | 249 - .../google/protobuf/compiler/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 152 -> 0 bytes .../__pycache__/plugin_pb2.cpython-36.pyc | Bin 4904 -> 0 bytes .../google/protobuf/compiler/plugin_pb2.py | 255 - .../google/protobuf/descriptor.py | 1076 --- .../google/protobuf/descriptor_database.py | 162 - .../google/protobuf/descriptor_pb2.py | 2033 ---- .../google/protobuf/descriptor_pool.py | 1057 --- .../google/protobuf/duration_pb2.py | 77 - .../google/protobuf/empty_pb2.py | 63 - .../google/protobuf/field_mask_pb2.py | 70 - .../google/protobuf/internal/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 152 -> 0 bytes .../__pycache__/_parameterized.cpython-36.pyc | Bin 13707 -> 0 bytes .../__pycache__/any_test_pb2.cpython-36.pyc | Bin 3583 -> 0 bytes .../api_implementation.cpython-36.pyc | Bin 2529 -> 0 bytes .../__pycache__/containers.cpython-36.pyc | Bin 20329 -> 0 bytes .../__pycache__/decoder.cpython-36.pyc | Bin 21111 -> 0 bytes .../descriptor_database_test.cpython-36.pyc | Bin 2890 -> 0 bytes .../descriptor_pool_test.cpython-36.pyc | Bin 30353 -> 0 bytes .../descriptor_pool_test1_pb2.cpython-36.pyc | Bin 8707 -> 0 bytes .../descriptor_pool_test2_pb2.cpython-36.pyc | Bin 6115 -> 0 bytes .../descriptor_test.cpython-36.pyc | Bin 30166 -> 0 bytes .../__pycache__/encoder.cpython-36.pyc | Bin 24222 -> 0 bytes .../enum_type_wrapper.cpython-36.pyc | Bin 2755 -> 0 bytes .../factory_test1_pb2.cpython-36.pyc | Bin 4380 -> 0 bytes .../factory_test2_pb2.cpython-36.pyc | Bin 10797 -> 0 bytes .../file_options_test_pb2.cpython-36.pyc | Bin 2395 -> 0 bytes .../__pycache__/generator_test.cpython-36.pyc | Bin 10810 -> 0 bytes .../json_format_test.cpython-36.pyc | Bin 29211 -> 0 bytes .../message_factory_test.cpython-36.pyc | Bin 5506 -> 0 bytes .../message_listener.cpython-36.pyc | Bin 2324 -> 0 bytes .../message_set_extensions_pb2.cpython-36.pyc | Bin 4104 -> 0 bytes .../__pycache__/message_test.cpython-36.pyc | Bin 60628 -> 0 bytes .../missing_enum_values_pb2.cpython-36.pyc | Bin 4613 -> 0 bytes ...more_extensions_dynamic_pb2.cpython-36.pyc | Bin 3187 -> 0 bytes .../more_extensions_pb2.cpython-36.pyc | Bin 3921 -> 0 bytes .../more_messages_pb2.cpython-36.pyc | Bin 2782 -> 0 bytes .../__pycache__/no_package_pb2.cpython-36.pyc | Bin 2352 -> 0 bytes .../packed_field_test_pb2.cpython-36.pyc | Bin 7374 -> 0 bytes .../proto_builder_test.cpython-36.pyc | Bin 2349 -> 0 bytes .../__pycache__/python_message.cpython-36.pyc | Bin 42444 -> 0 bytes .../reflection_test.cpython-36.pyc | Bin 80408 -> 0 bytes .../service_reflection_test.cpython-36.pyc | Bin 4193 -> 0 bytes .../symbol_database_test.cpython-36.pyc | Bin 3774 -> 0 bytes .../test_bad_identifiers_pb2.cpython-36.pyc | Bin 3511 -> 0 bytes .../__pycache__/test_util.cpython-36.pyc | Bin 25403 -> 0 bytes .../testing_refleaks.cpython-36.pyc | Bin 3064 -> 0 bytes .../text_encoding_test.cpython-36.pyc | Bin 1403 -> 0 bytes .../text_format_test.cpython-36.pyc | Bin 49952 -> 0 bytes .../__pycache__/type_checkers.cpython-36.pyc | Bin 9189 -> 0 bytes .../unknown_fields_test.cpython-36.pyc | Bin 9190 -> 0 bytes .../well_known_types.cpython-36.pyc | Bin 26185 -> 0 bytes .../well_known_types_test.cpython-36.pyc | Bin 21001 -> 0 bytes .../__pycache__/wire_format.cpython-36.pyc | Bin 6459 -> 0 bytes .../wire_format_test.cpython-36.pyc | Bin 5601 -> 0 bytes ...ementation.cpython-36m-x86_64-linux-gnu.so | Bin 5408 -> 0 bytes .../protobuf/internal/_parameterized.py | 442 - .../google/protobuf/internal/any_test_pb2.py | 182 - .../protobuf/internal/api_implementation.py | 173 - .../google/protobuf/internal/containers.py | 630 -- .../google/protobuf/internal/decoder.py | 854 -- .../internal/descriptor_database_test.py | 124 - .../protobuf/internal/descriptor_pool_test.py | 1055 --- .../internal/descriptor_pool_test1_pb2.py | 474 - .../internal/descriptor_pool_test2_pb2.py | 266 - .../protobuf/internal/descriptor_test.py | 1036 --- .../google/protobuf/internal/encoder.py | 828 -- .../protobuf/internal/enum_type_wrapper.py | 89 - .../protobuf/internal/factory_test1_pb2.py | 190 - .../protobuf/internal/factory_test2_pb2.py | 517 -- .../internal/file_options_test_pb2.py | 82 - .../protobuf/internal/generator_test.py | 349 - .../internal/import_test_package/__init__.py | 33 - .../__pycache__/__init__.cpython-36.pyc | Bin 327 -> 0 bytes .../__pycache__/inner_pb2.cpython-36.pyc | Bin 1959 -> 0 bytes .../__pycache__/outer_pb2.cpython-36.pyc | Bin 2292 -> 0 bytes .../internal/import_test_package/inner_pb2.py | 69 - .../internal/import_test_package/outer_pb2.py | 72 - .../protobuf/internal/json_format_test.py | 1038 --- .../protobuf/internal/message_factory_test.py | 222 - .../protobuf/internal/message_listener.py | 78 - .../internal/message_set_extensions_pb2.py | 209 - .../google/protobuf/internal/message_test.py | 2203 ----- .../internal/missing_enum_values_pb2.py | 227 - .../internal/more_extensions_dynamic_pb2.py | 103 - .../protobuf/internal/more_extensions_pb2.py | 183 - .../protobuf/internal/more_messages_pb2.py | 103 - .../protobuf/internal/no_package_pb2.py | 97 - .../internal/packed_field_test_pb2.py | 334 - .../protobuf/internal/proto_builder_test.py | 96 - .../protobuf/internal/python_message.py | 1559 ---- .../protobuf/internal/reflection_test.py | 3106 ------- .../internal/service_reflection_test.py | 144 - .../protobuf/internal/symbol_database_test.py | 138 - .../internal/test_bad_identifiers_pb2.py | 163 - .../google/protobuf/internal/test_util.py | 868 -- .../protobuf/internal/testing_refleaks.py | 126 - .../protobuf/internal/text_encoding_test.py | 72 - .../protobuf/internal/text_format_test.py | 1656 ---- .../google/protobuf/internal/type_checkers.py | 353 - .../protobuf/internal/unknown_fields_test.py | 336 - .../protobuf/internal/well_known_types.py | 839 -- .../internal/well_known_types_test.py | 927 -- .../google/protobuf/internal/wire_format.py | 268 - .../protobuf/internal/wire_format_test.py | 257 - .../google/protobuf/json_format.py | 785 -- .../protobuf/map_proto2_unittest_pb2.py | 1312 --- .../google/protobuf/map_unittest_pb2.py | 2813 ------ .../site-packages/google/protobuf/message.py | 308 - .../google/protobuf/message_factory.py | 151 - .../google/protobuf/proto_builder.py | 130 - .../google/protobuf/pyext/__init__.py | 4 - .../pyext/__pycache__/__init__.cpython-36.pyc | Bin 309 -> 0 bytes .../__pycache__/cpp_message.cpython-36.pyc | Bin 1428 -> 0 bytes .../__pycache__/python_pb2.cpython-36.pyc | Bin 4663 -> 0 bytes .../_message.cpython-36m-x86_64-linux-gnu.so | Bin 2253432 -> 0 bytes .../google/protobuf/pyext/cpp_message.py | 65 - .../google/protobuf/pyext/python_pb2.py | 233 - .../google/protobuf/reflection.py | 121 - .../site-packages/google/protobuf/service.py | 226 - .../google/protobuf/service_reflection.py | 284 - .../google/protobuf/source_context_pb2.py | 70 - .../google/protobuf/struct_pb2.py | 279 - .../google/protobuf/symbol_database.py | 189 - .../protobuf/test_messages_proto2_pb2.py | 1990 ---- .../protobuf/test_messages_proto3_pb2.py | 2044 ---- .../google/protobuf/text_encoding.py | 107 - .../google/protobuf/text_format.py | 1593 ---- .../google/protobuf/timestamp_pb2.py | 77 - .../site-packages/google/protobuf/type_pb2.py | 540 -- .../google/protobuf/unittest_arena_pb2.py | 120 - .../protobuf/unittest_custom_options_pb2.py | 1845 ---- .../google/protobuf/unittest_import_pb2.py | 137 - .../protobuf/unittest_import_public_pb2.py | 70 - .../google/protobuf/unittest_mset_pb2.py | 255 - .../protobuf/unittest_mset_wire_format_pb2.py | 104 - .../protobuf/unittest_no_arena_import_pb2.py | 69 - .../google/protobuf/unittest_no_arena_pb2.py | 911 -- .../unittest_no_generic_services_pb2.py | 125 - .../google/protobuf/unittest_pb2.py | 7082 -------------- .../protobuf/unittest_proto3_arena_pb2.py | 999 -- .../google/protobuf/util/__init__.py | 0 .../util/__pycache__/__init__.cpython-36.pyc | Bin 148 -> 0 bytes .../json_format_proto3_pb2.cpython-36.pyc | Bin 25947 -> 0 bytes .../protobuf/util/json_format_proto3_pb2.py | 1895 ---- .../google/protobuf/wrappers_pb2.py | 382 - .../site-packages/google/rpc/__init__.py | 0 .../rpc/__pycache__/__init__.cpython-36.pyc | Bin 154 -> 0 bytes .../rpc/__pycache__/code_pb2.cpython-36.pyc | Bin 2768 -> 0 bytes .../error_details_pb2.cpython-36.pyc | Bin 7991 -> 0 bytes .../rpc/__pycache__/status_pb2.cpython-36.pyc | Bin 2336 -> 0 bytes .../site-packages/google/rpc/code_pb2.py | 133 - .../google/rpc/error_details_pb2.py | 622 -- .../site-packages/google/rpc/status_pb2.py | 87 - .../site-packages/google/type/__init__.py | 0 .../type/__pycache__/__init__.cpython-36.pyc | Bin 155 -> 0 bytes .../type/__pycache__/color_pb2.cpython-36.pyc | Bin 2441 -> 0 bytes .../type/__pycache__/date_pb2.cpython-36.pyc | Bin 2090 -> 0 bytes .../__pycache__/dayofweek_pb2.cpython-36.pyc | Bin 2133 -> 0 bytes .../__pycache__/latlng_pb2.cpython-36.pyc | Bin 2059 -> 0 bytes .../type/__pycache__/money_pb2.cpython-36.pyc | Bin 2164 -> 0 bytes .../postal_address_pb2.cpython-36.pyc | Bin 3473 -> 0 bytes .../__pycache__/timeofday_pb2.cpython-36.pyc | Bin 2298 -> 0 bytes .../site-packages/google/type/color_pb2.py | 94 - .../site-packages/google/type/date_pb2.py | 84 - .../google/type/dayofweek_pb2.py | 88 - .../site-packages/google/type/latlng_pb2.py | 77 - .../site-packages/google/type/money_pb2.py | 84 - .../google/type/postal_address_pb2.py | 140 - .../google/type/timeofday_pb2.py | 91 - .../google_api_core-1.6.0-py3.6-nspkg.pth | 1 - .../google_api_core-1.6.0.dist-info/INSTALLER | 1 - .../google_api_core-1.6.0.dist-info/LICENSE | 202 - .../google_api_core-1.6.0.dist-info/METADATA | 52 - .../google_api_core-1.6.0.dist-info/RECORD | 58 - .../google_api_core-1.6.0.dist-info/WHEEL | 6 - .../namespace_packages.txt | 1 - .../top_level.txt | 1 - .../google_auth-1.6.1-py3.7-nspkg.pth | 1 - .../google_auth-1.6.1.dist-info/INSTALLER | 1 - .../google_auth-1.6.1.dist-info/METADATA | 86 - .../google_auth-1.6.1.dist-info/RECORD | 71 - .../google_auth-1.6.1.dist-info/WHEEL | 6 - .../namespace_packages.txt | 1 - .../google_auth-1.6.1.dist-info/top_level.txt | 1 - ...google_cloud_vision-0.35.1-py3.6-nspkg.pth | 3 - .../INSTALLER | 1 - .../LICENSE | 201 - .../METADATA | 129 - .../RECORD | 178 - .../WHEEL | 6 - .../namespace_packages.txt | 2 - .../top_level.txt | 1 - .../googleapis_common_protos-1.5.5-nspkg.pth | 3 - .../DESCRIPTION.rst | 10 - .../INSTALLER | 1 - .../METADATA | 34 - .../RECORD | 101 - .../WHEEL | 5 - .../metadata.json | 1 - .../namespace_packages.txt | 2 - .../top_level.txt | 1 - .../python3.6/site-packages/grpc/__init__.py | 1814 ---- .../grpc/__pycache__/__init__.cpython-36.pyc | Bin 66992 -> 0 bytes .../grpc/__pycache__/_auth.cpython-36.pyc | Bin 2468 -> 0 bytes .../grpc/__pycache__/_channel.cpython-36.pyc | Bin 27940 -> 0 bytes .../grpc/__pycache__/_common.cpython-36.pyc | Bin 2563 -> 0 bytes .../_grpcio_metadata.cpython-36.pyc | Bin 160 -> 0 bytes .../__pycache__/_interceptor.cpython-36.pyc | Bin 16619 -> 0 bytes .../_plugin_wrapping.cpython-36.pyc | Bin 2877 -> 0 bytes .../grpc/__pycache__/_server.cpython-36.pyc | Bin 23234 -> 0 bytes .../__pycache__/_utilities.cpython-36.pyc | Bin 5076 -> 0 bytes .../lib/python3.6/site-packages/grpc/_auth.py | 75 - .../python3.6/site-packages/grpc/_channel.py | 1056 --- .../python3.6/site-packages/grpc/_common.py | 98 - .../site-packages/grpc/_cython/__init__.py | 13 - .../__pycache__/__init__.cpython-36.pyc | Bin 138 -> 0 bytes .../grpc/_cython/_credentials/roots.pem | 4342 --------- .../grpc/_cython/_cygrpc/__init__.py | 13 - .../__pycache__/__init__.cpython-36.pyc | Bin 146 -> 0 bytes .../cygrpc.cpython-36m-x86_64-linux-gnu.so | Bin 4643920 -> 0 bytes .../site-packages/grpc/_grpcio_metadata.py | 1 - .../site-packages/grpc/_interceptor.py | 516 -- .../site-packages/grpc/_plugin_wrapping.py | 102 - .../python3.6/site-packages/grpc/_server.py | 838 -- .../site-packages/grpc/_utilities.py | 166 - .../site-packages/grpc/beta/__init__.py | 13 - .../beta/__pycache__/__init__.cpython-36.pyc | Bin 135 -> 0 bytes .../_client_adaptations.cpython-36.pyc | Bin 17985 -> 0 bytes .../beta/__pycache__/_metadata.cpython-36.pyc | Bin 1328 -> 0 bytes .../_server_adaptations.cpython-36.pyc | Bin 11822 -> 0 bytes .../implementations.cpython-36.pyc | Bin 10020 -> 0 bytes .../__pycache__/interfaces.cpython-36.pyc | Bin 6211 -> 0 bytes .../beta/__pycache__/utilities.cpython-36.pyc | Bin 4326 -> 0 bytes .../grpc/beta/_client_adaptations.py | 696 -- .../site-packages/grpc/beta/_metadata.py | 52 - .../grpc/beta/_server_adaptations.py | 389 - .../grpc/beta/implementations.py | 310 - .../site-packages/grpc/beta/interfaces.py | 165 - .../site-packages/grpc/beta/utilities.py | 149 - .../grpc/experimental/__init__.py | 17 - .../__pycache__/__init__.cpython-36.pyc | Bin 253 -> 0 bytes .../__pycache__/gevent.cpython-36.pyc | Bin 627 -> 0 bytes .../__pycache__/session_cache.cpython-36.pyc | Bin 1460 -> 0 bytes .../site-packages/grpc/experimental/gevent.py | 27 - .../grpc/experimental/session_cache.py | 45 - .../site-packages/grpc/framework/__init__.py | 13 - .../__pycache__/__init__.cpython-36.pyc | Bin 140 -> 0 bytes .../grpc/framework/common/__init__.py | 13 - .../__pycache__/__init__.cpython-36.pyc | Bin 147 -> 0 bytes .../__pycache__/cardinality.cpython-36.pyc | Bin 708 -> 0 bytes .../common/__pycache__/style.cpython-36.pyc | Bin 538 -> 0 bytes .../grpc/framework/common/cardinality.py | 26 - .../grpc/framework/common/style.py | 24 - .../grpc/framework/foundation/__init__.py | 13 - .../__pycache__/__init__.cpython-36.pyc | Bin 151 -> 0 bytes .../__pycache__/abandonment.cpython-36.pyc | Bin 589 -> 0 bytes .../__pycache__/callable_util.cpython-36.pyc | Bin 3088 -> 0 bytes .../__pycache__/future.cpython-36.pyc | Bin 7080 -> 0 bytes .../__pycache__/logging_pool.cpython-36.pyc | Bin 2425 -> 0 bytes .../__pycache__/stream.cpython-36.pyc | Bin 1254 -> 0 bytes .../__pycache__/stream_util.cpython-36.pyc | Bin 4510 -> 0 bytes .../grpc/framework/foundation/abandonment.py | 22 - .../framework/foundation/callable_util.py | 96 - .../grpc/framework/foundation/future.py | 221 - .../grpc/framework/foundation/logging_pool.py | 71 - .../grpc/framework/foundation/stream.py | 45 - .../grpc/framework/foundation/stream_util.py | 148 - .../grpc/framework/interfaces/__init__.py | 13 - .../__pycache__/__init__.cpython-36.pyc | Bin 151 -> 0 bytes .../framework/interfaces/base/__init__.py | 13 - .../base/__pycache__/__init__.cpython-36.pyc | Bin 156 -> 0 bytes .../base/__pycache__/base.cpython-36.pyc | Bin 13045 -> 0 bytes .../base/__pycache__/utilities.cpython-36.pyc | Bin 1947 -> 0 bytes .../grpc/framework/interfaces/base/base.py | 330 - .../framework/interfaces/base/utilities.py | 71 - .../framework/interfaces/face/__init__.py | 13 - .../face/__pycache__/__init__.cpython-36.pyc | Bin 156 -> 0 bytes .../face/__pycache__/face.cpython-36.pyc | Bin 39709 -> 0 bytes .../face/__pycache__/utilities.cpython-36.pyc | Bin 5250 -> 0 bytes .../grpc/framework/interfaces/face/face.py | 1052 --- .../framework/interfaces/face/utilities.py | 168 - .../grpcio-1.17.0.dist-info/INSTALLER | 1 - .../grpcio-1.17.0.dist-info/METADATA | 128 - .../grpcio-1.17.0.dist-info/RECORD | 85 - .../grpcio-1.17.0.dist-info/WHEEL | 5 - .../grpcio-1.17.0.dist-info/top_level.txt | 1 - .../gunicorn-19.9.0.dist-info/INSTALLER | 1 - .../gunicorn-19.9.0.dist-info/LICENSE.txt | 23 - .../gunicorn-19.9.0.dist-info/METADATA | 111 - .../gunicorn-19.9.0.dist-info/RECORD | 89 - .../gunicorn-19.9.0.dist-info/WHEEL | 6 - .../entry_points.txt | 8 - .../gunicorn-19.9.0.dist-info/top_level.txt | 1 - .../site-packages/gunicorn/__init__.py | 8 - .../__pycache__/__init__.cpython-36.pyc | Bin 377 -> 0 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 7674 -> 0 bytes .../__pycache__/arbiter.cpython-36.pyc | Bin 16647 -> 0 bytes .../argparse_compat.cpython-36.pyc | Bin 58933 -> 0 bytes .../__pycache__/config.cpython-36.pyc | Bin 60003 -> 0 bytes .../gunicorn/__pycache__/debug.cpython-36.pyc | Bin 1961 -> 0 bytes .../__pycache__/errors.cpython-36.pyc | Bin 1015 -> 0 bytes .../__pycache__/glogging.cpython-36.pyc | Bin 11425 -> 0 bytes .../__pycache__/pidfile.cpython-36.pyc | Bin 2234 -> 0 bytes .../__pycache__/reloader.cpython-36.pyc | Bin 3956 -> 0 bytes .../__pycache__/selectors.cpython-36.pyc | Bin 17390 -> 0 bytes .../gunicorn/__pycache__/six.cpython-36.pyc | Bin 22115 -> 0 bytes .../gunicorn/__pycache__/sock.cpython-36.pyc | Bin 5886 -> 0 bytes .../__pycache__/systemd.cpython-36.pyc | Bin 1351 -> 0 bytes .../gunicorn/__pycache__/util.cpython-36.pyc | Bin 11847 -> 0 bytes .../site-packages/gunicorn/_compat.py | 298 - .../site-packages/gunicorn/app/__init__.py | 4 - .../app/__pycache__/__init__.cpython-36.pyc | Bin 140 -> 0 bytes .../app/__pycache__/base.cpython-36.pyc | Bin 6021 -> 0 bytes .../app/__pycache__/pasterapp.cpython-36.pyc | Bin 5614 -> 0 bytes .../app/__pycache__/wsgiapp.cpython-36.pyc | Bin 1997 -> 0 bytes .../site-packages/gunicorn/app/base.py | 223 - .../site-packages/gunicorn/app/pasterapp.py | 209 - .../site-packages/gunicorn/app/wsgiapp.py | 65 - .../site-packages/gunicorn/arbiter.py | 646 -- .../site-packages/gunicorn/argparse_compat.py | 2362 ----- .../site-packages/gunicorn/config.py | 1950 ---- .../python3.6/site-packages/gunicorn/debug.py | 69 - .../site-packages/gunicorn/errors.py | 29 - .../site-packages/gunicorn/glogging.py | 478 - .../site-packages/gunicorn/http/__init__.py | 9 - .../http/__pycache__/__init__.cpython-36.pyc | Bin 306 -> 0 bytes .../http/__pycache__/_sendfile.cpython-36.pyc | Bin 1338 -> 0 bytes .../http/__pycache__/body.cpython-36.pyc | Bin 6417 -> 0 bytes .../http/__pycache__/errors.cpython-36.pyc | Bin 5836 -> 0 bytes .../http/__pycache__/message.cpython-36.pyc | Bin 8703 -> 0 bytes .../http/__pycache__/parser.cpython-36.pyc | Bin 1301 -> 0 bytes .../http/__pycache__/unreader.cpython-36.pyc | Bin 2423 -> 0 bytes .../http/__pycache__/wsgi.cpython-36.pyc | Bin 9232 -> 0 bytes .../site-packages/gunicorn/http/_sendfile.py | 67 - .../site-packages/gunicorn/http/body.py | 259 - .../site-packages/gunicorn/http/errors.py | 120 - .../site-packages/gunicorn/http/message.py | 363 - .../site-packages/gunicorn/http/parser.py | 51 - .../site-packages/gunicorn/http/unreader.py | 80 - .../site-packages/gunicorn/http/wsgi.py | 411 - .../gunicorn/instrument/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 147 -> 0 bytes .../__pycache__/statsd.cpython-36.pyc | Bin 4469 -> 0 bytes .../gunicorn/instrument/statsd.py | 123 - .../site-packages/gunicorn/pidfile.py | 86 - .../site-packages/gunicorn/reloader.py | 132 - .../site-packages/gunicorn/selectors.py | 592 -- .../python3.6/site-packages/gunicorn/six.py | 762 -- .../python3.6/site-packages/gunicorn/sock.py | 209 - .../site-packages/gunicorn/systemd.py | 45 - .../python3.6/site-packages/gunicorn/util.py | 557 -- .../gunicorn/workers/__init__.py | 22 - .../__pycache__/__init__.cpython-36.pyc | Bin 634 -> 0 bytes .../__pycache__/_gaiohttp.cpython-36.pyc | Bin 4881 -> 0 bytes .../workers/__pycache__/base.cpython-36.pyc | Bin 7495 -> 0 bytes .../__pycache__/base_async.cpython-36.pyc | Bin 3844 -> 0 bytes .../__pycache__/gaiohttp.cpython-36.pyc | Bin 726 -> 0 bytes .../__pycache__/geventlet.cpython-36.pyc | Bin 4626 -> 0 bytes .../__pycache__/ggevent.cpython-36.pyc | Bin 6662 -> 0 bytes .../__pycache__/gthread.cpython-36.pyc | Bin 8753 -> 0 bytes .../__pycache__/gtornado.cpython-36.pyc | Bin 4059 -> 0 bytes .../workers/__pycache__/sync.cpython-36.pyc | Bin 5077 -> 0 bytes .../__pycache__/workertmp.cpython-36.pyc | Bin 1724 -> 0 bytes .../gunicorn/workers/_gaiohttp.py | 168 - .../site-packages/gunicorn/workers/base.py | 264 - .../gunicorn/workers/base_async.py | 147 - .../gunicorn/workers/gaiohttp.py | 27 - .../gunicorn/workers/geventlet.py | 148 - .../site-packages/gunicorn/workers/ggevent.py | 246 - .../site-packages/gunicorn/workers/gthread.py | 367 - .../gunicorn/workers/gtornado.py | 146 - .../site-packages/gunicorn/workers/sync.py | 208 - .../gunicorn/workers/workertmp.py | 56 - .../idna-2.8.dist-info/INSTALLER | 1 - .../idna-2.8.dist-info/LICENSE.rst | 80 - .../site-packages/idna-2.8.dist-info/METADATA | 239 - .../site-packages/idna-2.8.dist-info/RECORD | 22 - .../site-packages/idna-2.8.dist-info/WHEEL | 6 - .../idna-2.8.dist-info/top_level.txt | 1 - .../python3.6/site-packages/idna/__init__.py | 2 - .../idna/__pycache__/__init__.cpython-36.pyc | Bin 197 -> 0 bytes .../idna/__pycache__/codec.cpython-36.pyc | Bin 3044 -> 0 bytes .../idna/__pycache__/compat.cpython-36.pyc | Bin 557 -> 0 bytes .../idna/__pycache__/core.cpython-36.pyc | Bin 9097 -> 0 bytes .../idna/__pycache__/idnadata.cpython-36.pyc | Bin 29736 -> 0 bytes .../idna/__pycache__/intranges.cpython-36.pyc | Bin 1758 -> 0 bytes .../__pycache__/package_data.cpython-36.pyc | Bin 151 -> 0 bytes .../idna/__pycache__/uts46data.cpython-36.pyc | Bin 241746 -> 0 bytes .../lib/python3.6/site-packages/idna/codec.py | 118 - .../python3.6/site-packages/idna/compat.py | 12 - venv/lib/python3.6/site-packages/idna/core.py | 396 - .../python3.6/site-packages/idna/idnadata.py | 1979 ---- .../python3.6/site-packages/idna/intranges.py | 53 - .../site-packages/idna/package_data.py | 2 - .../python3.6/site-packages/idna/uts46data.py | 8205 ----------------- .../itsdangerous-1.1.0.dist-info/INSTALLER | 1 - .../itsdangerous-1.1.0.dist-info/LICENSE.rst | 47 - .../itsdangerous-1.1.0.dist-info/METADATA | 98 - .../itsdangerous-1.1.0.dist-info/RECORD | 26 - .../itsdangerous-1.1.0.dist-info/WHEEL | 6 - .../top_level.txt | 1 - .../site-packages/itsdangerous/__init__.py | 22 - .../__pycache__/__init__.cpython-36.pyc | Bin 972 -> 0 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 1134 -> 0 bytes .../__pycache__/_json.cpython-36.pyc | Bin 827 -> 0 bytes .../__pycache__/encoding.cpython-36.pyc | Bin 1599 -> 0 bytes .../__pycache__/exc.cpython-36.pyc | Bin 3188 -> 0 bytes .../__pycache__/jws.cpython-36.pyc | Bin 6647 -> 0 bytes .../__pycache__/serializer.cpython-36.pyc | Bin 8002 -> 0 bytes .../__pycache__/signer.cpython-36.pyc | Bin 5763 -> 0 bytes .../__pycache__/timed.cpython-36.pyc | Bin 4529 -> 0 bytes .../__pycache__/url_safe.cpython-36.pyc | Bin 2518 -> 0 bytes .../site-packages/itsdangerous/_compat.py | 46 - .../site-packages/itsdangerous/_json.py | 18 - .../site-packages/itsdangerous/encoding.py | 49 - .../site-packages/itsdangerous/exc.py | 98 - .../site-packages/itsdangerous/jws.py | 218 - .../site-packages/itsdangerous/serializer.py | 233 - .../site-packages/itsdangerous/signer.py | 179 - .../site-packages/itsdangerous/timed.py | 147 - .../site-packages/itsdangerous/url_safe.py | 65 - .../site-packages/jinja2/__init__.py | 83 - .../__pycache__/__init__.cpython-36.pyc | Bin 2496 -> 0 bytes .../jinja2/__pycache__/_compat.cpython-36.pyc | Bin 3306 -> 0 bytes .../__pycache__/_identifier.cpython-36.pyc | Bin 1809 -> 0 bytes .../__pycache__/asyncfilters.cpython-36.pyc | Bin 4761 -> 0 bytes .../__pycache__/asyncsupport.cpython-36.pyc | Bin 8110 -> 0 bytes .../jinja2/__pycache__/bccache.cpython-36.pyc | Bin 12682 -> 0 bytes .../__pycache__/compiler.cpython-36.pyc | Bin 46863 -> 0 bytes .../__pycache__/constants.cpython-36.pyc | Bin 1672 -> 0 bytes .../jinja2/__pycache__/debug.cpython-36.pyc | Bin 9305 -> 0 bytes .../__pycache__/defaults.cpython-36.pyc | Bin 1422 -> 0 bytes .../__pycache__/environment.cpython-36.pyc | Bin 43233 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 4982 -> 0 bytes .../jinja2/__pycache__/ext.cpython-36.pyc | Bin 20073 -> 0 bytes .../jinja2/__pycache__/filters.cpython-36.pyc | Bin 34380 -> 0 bytes .../__pycache__/idtracking.cpython-36.pyc | Bin 9911 -> 0 bytes .../jinja2/__pycache__/lexer.cpython-36.pyc | Bin 18535 -> 0 bytes .../jinja2/__pycache__/loaders.cpython-36.pyc | Bin 16542 -> 0 bytes .../jinja2/__pycache__/meta.cpython-36.pyc | Bin 3633 -> 0 bytes .../__pycache__/nativetypes.cpython-36.pyc | Bin 5096 -> 0 bytes .../jinja2/__pycache__/nodes.cpython-36.pyc | Bin 36630 -> 0 bytes .../__pycache__/optimizer.cpython-36.pyc | Bin 2002 -> 0 bytes .../jinja2/__pycache__/parser.cpython-36.pyc | Bin 25307 -> 0 bytes .../jinja2/__pycache__/runtime.cpython-36.pyc | Bin 24572 -> 0 bytes .../jinja2/__pycache__/sandbox.cpython-36.pyc | Bin 13959 -> 0 bytes .../jinja2/__pycache__/tests.cpython-36.pyc | Bin 4378 -> 0 bytes .../jinja2/__pycache__/utils.cpython-36.pyc | Bin 20835 -> 0 bytes .../jinja2/__pycache__/visitor.cpython-36.pyc | Bin 3318 -> 0 bytes .../python3.6/site-packages/jinja2/_compat.py | 99 - .../site-packages/jinja2/_identifier.py | 2 - .../site-packages/jinja2/asyncfilters.py | 146 - .../site-packages/jinja2/asyncsupport.py | 256 - .../python3.6/site-packages/jinja2/bccache.py | 362 - .../site-packages/jinja2/compiler.py | 1721 ---- .../site-packages/jinja2/constants.py | 32 - .../python3.6/site-packages/jinja2/debug.py | 372 - .../site-packages/jinja2/defaults.py | 56 - .../site-packages/jinja2/environment.py | 1276 --- .../site-packages/jinja2/exceptions.py | 146 - .../lib/python3.6/site-packages/jinja2/ext.py | 627 -- .../python3.6/site-packages/jinja2/filters.py | 1190 --- .../site-packages/jinja2/idtracking.py | 286 - .../python3.6/site-packages/jinja2/lexer.py | 739 -- .../python3.6/site-packages/jinja2/loaders.py | 481 - .../python3.6/site-packages/jinja2/meta.py | 106 - .../site-packages/jinja2/nativetypes.py | 220 - .../python3.6/site-packages/jinja2/nodes.py | 999 -- .../site-packages/jinja2/optimizer.py | 49 - .../python3.6/site-packages/jinja2/parser.py | 903 -- .../python3.6/site-packages/jinja2/runtime.py | 813 -- .../python3.6/site-packages/jinja2/sandbox.py | 475 - .../python3.6/site-packages/jinja2/tests.py | 175 - .../python3.6/site-packages/jinja2/utils.py | 647 -- .../python3.6/site-packages/jinja2/visitor.py | 87 - .../site-packages/markupsafe/__init__.py | 327 - .../__pycache__/__init__.cpython-36.pyc | Bin 10974 -> 0 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 766 -> 0 bytes .../__pycache__/_constants.cpython-36.pyc | Bin 4266 -> 0 bytes .../__pycache__/_native.cpython-36.pyc | Bin 2118 -> 0 bytes .../site-packages/markupsafe/_compat.py | 33 - .../site-packages/markupsafe/_constants.py | 264 - .../site-packages/markupsafe/_native.py | 69 - .../site-packages/markupsafe/_speedups.c | 420 - .../_speedups.cpython-36m-x86_64-linux-gnu.so | Bin 38555 -> 0 bytes .../pip-9.0.1.dist-info/DESCRIPTION.rst | 39 - .../pip-9.0.1.dist-info/INSTALLER | 1 - .../pip-9.0.1.dist-info/METADATA | 70 - .../site-packages/pip-9.0.1.dist-info/RECORD | 123 - .../site-packages/pip-9.0.1.dist-info/WHEEL | 6 - .../pip-9.0.1.dist-info/entry_points.txt | 5 - .../pip-9.0.1.dist-info/metadata.json | 1 - .../pip-9.0.1.dist-info/top_level.txt | 1 - .../python3.6/site-packages/pip/__init__.py | 338 - .../python3.6/site-packages/pip/__main__.py | 19 - .../pip/__pycache__/__init__.cpython-36.pyc | Bin 8498 -> 0 bytes .../pip/__pycache__/__main__.cpython-36.pyc | Bin 374 -> 0 bytes .../__pycache__/basecommand.cpython-36.pyc | Bin 7210 -> 0 bytes .../pip/__pycache__/baseparser.cpython-36.pyc | Bin 9271 -> 0 bytes .../pip/__pycache__/cmdoptions.cpython-36.pyc | Bin 12929 -> 0 bytes .../pip/__pycache__/download.cpython-36.pyc | Bin 20310 -> 0 bytes .../pip/__pycache__/exceptions.cpython-36.pyc | Bin 10483 -> 0 bytes .../pip/__pycache__/index.cpython-36.pyc | Bin 30233 -> 0 bytes .../pip/__pycache__/locations.cpython-36.pyc | Bin 3869 -> 0 bytes .../pip/__pycache__/pep425tags.cpython-36.pyc | Bin 7464 -> 0 bytes .../__pycache__/status_codes.cpython-36.pyc | Bin 338 -> 0 bytes .../pip/__pycache__/wheel.cpython-36.pyc | Bin 21655 -> 0 bytes .../site-packages/pip/_vendor/__init__.py | 111 - .../__pycache__/__init__.cpython-36.pyc | Bin 2797 -> 0 bytes .../site-packages/pip/basecommand.py | 337 - .../python3.6/site-packages/pip/baseparser.py | 293 - .../python3.6/site-packages/pip/cmdoptions.py | 633 -- .../site-packages/pip/commands/__init__.py | 86 - .../__pycache__/__init__.cpython-36.pyc | Bin 2028 -> 0 bytes .../commands/__pycache__/check.cpython-36.pyc | Bin 1269 -> 0 bytes .../__pycache__/completion.cpython-36.pyc | Bin 2600 -> 0 bytes .../__pycache__/download.cpython-36.pyc | Bin 5385 -> 0 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 2582 -> 0 bytes .../commands/__pycache__/hash.cpython-36.pyc | Bin 1923 -> 0 bytes .../commands/__pycache__/help.cpython-36.pyc | Bin 1074 -> 0 bytes .../__pycache__/install.cpython-36.pyc | Bin 10221 -> 0 bytes .../commands/__pycache__/list.cpython-36.pyc | Bin 9685 -> 0 bytes .../__pycache__/search.cpython-36.pyc | Bin 4164 -> 0 bytes .../commands/__pycache__/show.cpython-36.pyc | Bin 5335 -> 0 bytes .../__pycache__/uninstall.cpython-36.pyc | Bin 2560 -> 0 bytes .../commands/__pycache__/wheel.cpython-36.pyc | Bin 5422 -> 0 bytes .../site-packages/pip/commands/check.py | 39 - .../site-packages/pip/commands/completion.py | 81 - .../site-packages/pip/commands/download.py | 212 - .../site-packages/pip/commands/freeze.py | 87 - .../site-packages/pip/commands/hash.py | 57 - .../site-packages/pip/commands/help.py | 35 - .../site-packages/pip/commands/install.py | 455 - .../site-packages/pip/commands/list.py | 337 - .../site-packages/pip/commands/search.py | 133 - .../site-packages/pip/commands/show.py | 154 - .../site-packages/pip/commands/uninstall.py | 76 - .../site-packages/pip/commands/wheel.py | 208 - .../site-packages/pip/compat/__init__.py | 164 - .../__pycache__/__init__.cpython-36.pyc | Bin 3957 -> 0 bytes .../__pycache__/dictconfig.cpython-36.pyc | Bin 13604 -> 0 bytes .../site-packages/pip/compat/dictconfig.py | 565 -- .../python3.6/site-packages/pip/download.py | 906 -- .../python3.6/site-packages/pip/exceptions.py | 244 - venv/lib/python3.6/site-packages/pip/index.py | 1102 --- .../python3.6/site-packages/pip/locations.py | 182 - .../site-packages/pip/models/__init__.py | 4 - .../__pycache__/__init__.cpython-36.pyc | Bin 223 -> 0 bytes .../models/__pycache__/index.cpython-36.pyc | Bin 827 -> 0 bytes .../site-packages/pip/models/index.py | 16 - .../site-packages/pip/operations/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 137 -> 0 bytes .../__pycache__/check.cpython-36.pyc | Bin 1424 -> 0 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 2881 -> 0 bytes .../site-packages/pip/operations/check.py | 49 - .../site-packages/pip/operations/freeze.py | 132 - .../python3.6/site-packages/pip/pep425tags.py | 324 - .../site-packages/pip/req/__init__.py | 10 - .../req/__pycache__/__init__.cpython-36.pyc | Bin 404 -> 0 bytes .../req/__pycache__/req_file.cpython-36.pyc | Bin 8419 -> 0 bytes .../__pycache__/req_install.cpython-36.pyc | Bin 30120 -> 0 bytes .../req/__pycache__/req_set.cpython-36.pyc | Bin 20967 -> 0 bytes .../__pycache__/req_uninstall.cpython-36.pyc | Bin 6282 -> 0 bytes .../site-packages/pip/req/req_file.py | 342 - .../site-packages/pip/req/req_install.py | 1204 --- .../site-packages/pip/req/req_set.py | 798 -- .../site-packages/pip/req/req_uninstall.py | 195 - .../site-packages/pip/status_codes.py | 8 - .../site-packages/pip/utils/__init__.py | 870 -- .../utils/__pycache__/__init__.cpython-36.pyc | Bin 22743 -> 0 bytes .../utils/__pycache__/appdirs.cpython-36.pyc | Bin 7701 -> 0 bytes .../utils/__pycache__/build.cpython-36.pyc | Bin 1315 -> 0 bytes .../__pycache__/deprecation.cpython-36.pyc | Bin 1728 -> 0 bytes .../utils/__pycache__/encoding.cpython-36.pyc | Bin 1018 -> 0 bytes .../__pycache__/filesystem.cpython-36.pyc | Bin 583 -> 0 bytes .../utils/__pycache__/glibc.cpython-36.pyc | Bin 1366 -> 0 bytes .../utils/__pycache__/hashes.cpython-36.pyc | Bin 3242 -> 0 bytes .../utils/__pycache__/logging.cpython-36.pyc | Bin 3898 -> 0 bytes .../utils/__pycache__/outdated.cpython-36.pyc | Bin 4223 -> 0 bytes .../__pycache__/packaging.cpython-36.pyc | Bin 1986 -> 0 bytes .../setuptools_build.cpython-36.pyc | Bin 327 -> 0 bytes .../pip/utils/__pycache__/ui.cpython-36.pyc | Bin 9583 -> 0 bytes .../site-packages/pip/utils/appdirs.py | 248 - .../site-packages/pip/utils/build.py | 42 - .../site-packages/pip/utils/deprecation.py | 76 - .../site-packages/pip/utils/encoding.py | 31 - .../site-packages/pip/utils/filesystem.py | 28 - .../site-packages/pip/utils/glibc.py | 81 - .../site-packages/pip/utils/hashes.py | 92 - .../site-packages/pip/utils/logging.py | 130 - .../site-packages/pip/utils/outdated.py | 162 - .../site-packages/pip/utils/packaging.py | 63 - .../pip/utils/setuptools_build.py | 8 - .../python3.6/site-packages/pip/utils/ui.py | 344 - .../site-packages/pip/vcs/__init__.py | 366 - .../vcs/__pycache__/__init__.cpython-36.pyc | Bin 11102 -> 0 bytes .../pip/vcs/__pycache__/bazaar.cpython-36.pyc | Bin 3655 -> 0 bytes .../pip/vcs/__pycache__/git.cpython-36.pyc | Bin 8795 -> 0 bytes .../vcs/__pycache__/mercurial.cpython-36.pyc | Bin 3568 -> 0 bytes .../vcs/__pycache__/subversion.cpython-36.pyc | Bin 7107 -> 0 bytes .../python3.6/site-packages/pip/vcs/bazaar.py | 116 - .../python3.6/site-packages/pip/vcs/git.py | 300 - .../site-packages/pip/vcs/mercurial.py | 103 - .../site-packages/pip/vcs/subversion.py | 269 - venv/lib/python3.6/site-packages/pip/wheel.py | 853 -- .../DESCRIPTION.rst | 3 - .../pkg_resources-0.0.0.dist-info/INSTALLER | 1 - .../pkg_resources-0.0.0.dist-info/METADATA | 13 - .../pkg_resources-0.0.0.dist-info/RECORD | 38 - .../pkg_resources-0.0.0.dist-info/WHEEL | 6 - .../metadata.json | 1 - .../site-packages/pkg_resources/__init__.py | 3125 ------- .../__pycache__/__init__.cpython-36.pyc | Bin 95310 -> 0 bytes .../__pycache__/py31compat.cpython-36.pyc | Bin 657 -> 0 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 154 -> 0 bytes .../__pycache__/appdirs.cpython-36.pyc | Bin 18580 -> 0 bytes .../__pycache__/pyparsing.cpython-36.pyc | Bin 201076 -> 0 bytes .../_vendor/__pycache__/six.cpython-36.pyc | Bin 24451 -> 0 bytes .../pkg_resources/_vendor/appdirs.py | 552 -- .../_vendor/packaging/__about__.py | 21 - .../_vendor/packaging/__init__.py | 14 - .../__pycache__/__about__.cpython-36.pyc | Bin 690 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 528 -> 0 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 975 -> 0 bytes .../__pycache__/_structures.cpython-36.pyc | Bin 2832 -> 0 bytes .../__pycache__/markers.cpython-36.pyc | Bin 8855 -> 0 bytes .../__pycache__/requirements.cpython-36.pyc | Bin 3851 -> 0 bytes .../__pycache__/specifiers.cpython-36.pyc | Bin 19794 -> 0 bytes .../__pycache__/utils.cpython-36.pyc | Bin 459 -> 0 bytes .../__pycache__/version.cpython-36.pyc | Bin 10569 -> 0 bytes .../_vendor/packaging/_compat.py | 30 - .../_vendor/packaging/_structures.py | 68 - .../_vendor/packaging/markers.py | 301 - .../_vendor/packaging/requirements.py | 127 - .../_vendor/packaging/specifiers.py | 774 -- .../pkg_resources/_vendor/packaging/utils.py | 14 - .../_vendor/packaging/version.py | 393 - .../pkg_resources/_vendor/pyparsing.py | 5696 ------------ .../pkg_resources/_vendor/six.py | 868 -- .../pkg_resources/extern/__init__.py | 73 - .../__pycache__/__init__.cpython-36.pyc | Bin 2385 -> 0 bytes .../site-packages/pkg_resources/py31compat.py | 22 - .../protobuf-3.6.1-py3.6-nspkg.pth | 1 - .../protobuf-3.6.1.dist-info/INSTALLER | 1 - .../protobuf-3.6.1.dist-info/METADATA | 22 - .../protobuf-3.6.1.dist-info/RECORD | 199 - .../protobuf-3.6.1.dist-info/WHEEL | 5 - .../namespace_packages.txt | 1 - .../protobuf-3.6.1.dist-info/top_level.txt | 1 - .../pyasn1-0.4.4.dist-info/DESCRIPTION.rst | 3 - .../pyasn1-0.4.4.dist-info/INSTALLER | 1 - .../pyasn1-0.4.4.dist-info/LICENSE.txt | 24 - .../pyasn1-0.4.4.dist-info/METADATA | 37 - .../pyasn1-0.4.4.dist-info/RECORD | 81 - .../pyasn1-0.4.4.dist-info/WHEEL | 6 - .../pyasn1-0.4.4.dist-info/metadata.json | 1 - .../pyasn1-0.4.4.dist-info/top_level.txt | 1 - .../pyasn1-0.4.4.dist-info/zip-safe | 1 - .../site-packages/pyasn1/__init__.py | 7 - .../__pycache__/__init__.cpython-36.pyc | Bin 290 -> 0 bytes .../pyasn1/__pycache__/debug.cpython-36.pyc | Bin 4061 -> 0 bytes .../pyasn1/__pycache__/error.cpython-36.pyc | Bin 1017 -> 0 bytes .../site-packages/pyasn1/codec/__init__.py | 1 - .../codec/__pycache__/__init__.cpython-36.pyc | Bin 138 -> 0 bytes .../pyasn1/codec/ber/__init__.py | 1 - .../ber/__pycache__/__init__.cpython-36.pyc | Bin 142 -> 0 bytes .../ber/__pycache__/decoder.cpython-36.pyc | Bin 27110 -> 0 bytes .../ber/__pycache__/encoder.cpython-36.pyc | Bin 13839 -> 0 bytes .../codec/ber/__pycache__/eoo.cpython-36.pyc | Bin 743 -> 0 bytes .../site-packages/pyasn1/codec/ber/decoder.py | 1379 --- .../site-packages/pyasn1/codec/ber/encoder.py | 721 -- .../site-packages/pyasn1/codec/ber/eoo.py | 28 - .../pyasn1/codec/cer/__init__.py | 1 - .../cer/__pycache__/__init__.cpython-36.pyc | Bin 142 -> 0 bytes .../cer/__pycache__/decoder.cpython-36.pyc | Bin 1573 -> 0 bytes .../cer/__pycache__/encoder.cpython-36.pyc | Bin 6154 -> 0 bytes .../site-packages/pyasn1/codec/cer/decoder.py | 114 - .../site-packages/pyasn1/codec/cer/encoder.py | 296 - .../pyasn1/codec/der/__init__.py | 1 - .../der/__pycache__/__init__.cpython-36.pyc | Bin 142 -> 0 bytes .../der/__pycache__/decoder.cpython-36.pyc | Bin 1065 -> 0 bytes .../der/__pycache__/encoder.cpython-36.pyc | Bin 1571 -> 0 bytes .../site-packages/pyasn1/codec/der/decoder.py | 94 - .../site-packages/pyasn1/codec/der/encoder.py | 107 - .../pyasn1/codec/native/__init__.py | 1 - .../__pycache__/__init__.cpython-36.pyc | Bin 145 -> 0 bytes .../native/__pycache__/decoder.cpython-36.pyc | Bin 4500 -> 0 bytes .../native/__pycache__/encoder.cpython-36.pyc | Bin 6753 -> 0 bytes .../pyasn1/codec/native/decoder.py | 214 - .../pyasn1/codec/native/encoder.py | 255 - .../site-packages/pyasn1/compat/__init__.py | 1 - .../__pycache__/__init__.cpython-36.pyc | Bin 139 -> 0 bytes .../compat/__pycache__/binary.cpython-36.pyc | Bin 539 -> 0 bytes .../compat/__pycache__/calling.cpython-36.pyc | Bin 430 -> 0 bytes .../__pycache__/dateandtime.cpython-36.pyc | Bin 550 -> 0 bytes .../compat/__pycache__/integer.cpython-36.pyc | Bin 2263 -> 0 bytes .../compat/__pycache__/octets.cpython-36.pyc | Bin 1900 -> 0 bytes .../compat/__pycache__/string.cpython-36.pyc | Bin 538 -> 0 bytes .../site-packages/pyasn1/compat/binary.py | 33 - .../site-packages/pyasn1/compat/calling.py | 20 - .../pyasn1/compat/dateandtime.py | 22 - .../site-packages/pyasn1/compat/integer.py | 110 - .../site-packages/pyasn1/compat/octets.py | 46 - .../site-packages/pyasn1/compat/string.py | 26 - .../python3.6/site-packages/pyasn1/debug.py | 145 - .../python3.6/site-packages/pyasn1/error.py | 29 - .../site-packages/pyasn1/type/__init__.py | 1 - .../type/__pycache__/__init__.cpython-36.pyc | Bin 137 -> 0 bytes .../type/__pycache__/base.cpython-36.pyc | Bin 21493 -> 0 bytes .../type/__pycache__/char.cpython-36.pyc | Bin 7995 -> 0 bytes .../__pycache__/constraint.cpython-36.pyc | Bin 17672 -> 0 bytes .../type/__pycache__/error.cpython-36.pyc | Bin 347 -> 0 bytes .../type/__pycache__/namedtype.cpython-36.pyc | Bin 19085 -> 0 bytes .../type/__pycache__/namedval.cpython-36.pyc | Bin 5496 -> 0 bytes .../type/__pycache__/opentype.cpython-36.pyc | Bin 2331 -> 0 bytes .../type/__pycache__/tag.cpython-36.pyc | Bin 10322 -> 0 bytes .../type/__pycache__/tagmap.cpython-36.pyc | Bin 3282 -> 0 bytes .../type/__pycache__/univ.cpython-36.pyc | Bin 88602 -> 0 bytes .../type/__pycache__/useful.cpython-36.pyc | Bin 4639 -> 0 bytes .../site-packages/pyasn1/type/base.py | 643 -- .../site-packages/pyasn1/type/char.py | 321 - .../site-packages/pyasn1/type/constraint.py | 556 -- .../site-packages/pyasn1/type/error.py | 11 - .../site-packages/pyasn1/type/namedtype.py | 559 -- .../site-packages/pyasn1/type/namedval.py | 191 - .../site-packages/pyasn1/type/opentype.py | 75 - .../site-packages/pyasn1/type/tag.py | 333 - .../site-packages/pyasn1/type/tagmap.py | 96 - .../site-packages/pyasn1/type/univ.py | 3061 ------ .../site-packages/pyasn1/type/useful.py | 191 - .../DESCRIPTION.rst | 3 - .../pyasn1_modules-0.2.2.dist-info/INSTALLER | 1 - .../LICENSE.txt | 24 - .../pyasn1_modules-0.2.2.dist-info/METADATA | 39 - .../pyasn1_modules-0.2.2.dist-info/RECORD | 65 - .../pyasn1_modules-0.2.2.dist-info/WHEEL | 6 - .../metadata.json | 1 - .../top_level.txt | 1 - .../pyasn1_modules-0.2.2.dist-info/zip-safe | 1 - .../site-packages/pyasn1_modules/__init__.py | 2 - .../__pycache__/__init__.cpython-36.pyc | Bin 169 -> 0 bytes .../__pycache__/pem.cpython-36.pyc | Bin 2095 -> 0 bytes .../__pycache__/rfc1155.cpython-36.pyc | Bin 2866 -> 0 bytes .../__pycache__/rfc1157.cpython-36.pyc | Bin 4188 -> 0 bytes .../__pycache__/rfc1901.cpython-36.pyc | Bin 643 -> 0 bytes .../__pycache__/rfc1902.cpython-36.pyc | Bin 3973 -> 0 bytes .../__pycache__/rfc1905.cpython-36.pyc | Bin 4923 -> 0 bytes .../__pycache__/rfc2251.cpython-36.pyc | Bin 20458 -> 0 bytes .../__pycache__/rfc2314.cpython-36.pyc | Bin 1592 -> 0 bytes .../__pycache__/rfc2315.cpython-36.pyc | Bin 9822 -> 0 bytes .../__pycache__/rfc2437.cpython-36.pyc | Bin 2157 -> 0 bytes .../__pycache__/rfc2459.cpython-36.pyc | Bin 42184 -> 0 bytes .../__pycache__/rfc2511.cpython-36.pyc | Bin 8966 -> 0 bytes .../__pycache__/rfc2560.cpython-36.pyc | Bin 7843 -> 0 bytes .../__pycache__/rfc2986.cpython-36.pyc | Bin 3184 -> 0 bytes .../__pycache__/rfc3279.cpython-36.pyc | Bin 6359 -> 0 bytes .../__pycache__/rfc3280.cpython-36.pyc | Bin 35091 -> 0 bytes .../__pycache__/rfc3281.cpython-36.pyc | Bin 7408 -> 0 bytes .../__pycache__/rfc3412.cpython-36.pyc | Bin 1690 -> 0 bytes .../__pycache__/rfc3414.cpython-36.pyc | Bin 892 -> 0 bytes .../__pycache__/rfc3447.cpython-36.pyc | Bin 1406 -> 0 bytes .../__pycache__/rfc3852.cpython-36.pyc | Bin 16436 -> 0 bytes .../__pycache__/rfc4210.cpython-36.pyc | Bin 23615 -> 0 bytes .../__pycache__/rfc4211.cpython-36.pyc | Bin 8971 -> 0 bytes .../__pycache__/rfc5208.cpython-36.pyc | Bin 1972 -> 0 bytes .../__pycache__/rfc5280.cpython-36.pyc | Bin 36098 -> 0 bytes .../__pycache__/rfc5652.cpython-36.pyc | Bin 16436 -> 0 bytes .../__pycache__/rfc6402.cpython-36.pyc | Bin 12101 -> 0 bytes .../site-packages/pyasn1_modules/pem.py | 65 - .../site-packages/pyasn1_modules/rfc1155.py | 96 - .../site-packages/pyasn1_modules/rfc1157.py | 126 - .../site-packages/pyasn1_modules/rfc1901.py | 22 - .../site-packages/pyasn1_modules/rfc1902.py | 129 - .../site-packages/pyasn1_modules/rfc1905.py | 135 - .../site-packages/pyasn1_modules/rfc2251.py | 563 -- .../site-packages/pyasn1_modules/rfc2314.py | 48 - .../site-packages/pyasn1_modules/rfc2315.py | 294 - .../site-packages/pyasn1_modules/rfc2437.py | 69 - .../site-packages/pyasn1_modules/rfc2459.py | 1337 --- .../site-packages/pyasn1_modules/rfc2511.py | 258 - .../site-packages/pyasn1_modules/rfc2560.py | 225 - .../site-packages/pyasn1_modules/rfc2986.py | 124 - .../site-packages/pyasn1_modules/rfc3279.py | 233 - .../site-packages/pyasn1_modules/rfc3280.py | 1543 ---- .../site-packages/pyasn1_modules/rfc3281.py | 331 - .../site-packages/pyasn1_modules/rfc3412.py | 53 - .../site-packages/pyasn1_modules/rfc3414.py | 28 - .../site-packages/pyasn1_modules/rfc3447.py | 45 - .../site-packages/pyasn1_modules/rfc3852.py | 706 -- .../site-packages/pyasn1_modules/rfc4210.py | 797 -- .../site-packages/pyasn1_modules/rfc4211.py | 396 - .../site-packages/pyasn1_modules/rfc5208.py | 56 - .../site-packages/pyasn1_modules/rfc5280.py | 1617 ---- .../site-packages/pyasn1_modules/rfc5652.py | 706 -- .../site-packages/pyasn1_modules/rfc6402.py | 567 -- .../pytz-2018.7.dist-info/DESCRIPTION.rst | 589 -- .../pytz-2018.7.dist-info/INSTALLER | 1 - .../pytz-2018.7.dist-info/LICENSE.txt | 19 - .../pytz-2018.7.dist-info/METADATA | 623 -- .../pytz-2018.7.dist-info/RECORD | 619 -- .../site-packages/pytz-2018.7.dist-info/WHEEL | 6 - .../pytz-2018.7.dist-info/metadata.json | 1 - .../pytz-2018.7.dist-info/top_level.txt | 1 - .../pytz-2018.7.dist-info/zip-safe | 1 - .../python3.6/site-packages/pytz/__init__.py | 1527 --- .../pytz/__pycache__/__init__.cpython-36.pyc | Bin 28978 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 1816 -> 0 bytes .../pytz/__pycache__/lazy.cpython-36.pyc | Bin 5234 -> 0 bytes .../pytz/__pycache__/reference.cpython-36.pyc | Bin 3853 -> 0 bytes .../pytz/__pycache__/tzfile.cpython-36.pyc | Bin 3089 -> 0 bytes .../pytz/__pycache__/tzinfo.cpython-36.pyc | Bin 14911 -> 0 bytes .../site-packages/pytz/exceptions.py | 48 - venv/lib/python3.6/site-packages/pytz/lazy.py | 172 - .../python3.6/site-packages/pytz/reference.py | 140 - .../python3.6/site-packages/pytz/tzfile.py | 134 - .../python3.6/site-packages/pytz/tzinfo.py | 577 -- .../pytz/zoneinfo/Africa/Abidjan | Bin 156 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Accra | Bin 828 -> 0 bytes .../pytz/zoneinfo/Africa/Addis_Ababa | Bin 271 -> 0 bytes .../pytz/zoneinfo/Africa/Algiers | Bin 751 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Asmara | Bin 271 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Asmera | Bin 271 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Bamako | Bin 156 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Bangui | Bin 157 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Banjul | Bin 156 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Bissau | Bin 194 -> 0 bytes .../pytz/zoneinfo/Africa/Blantyre | Bin 157 -> 0 bytes .../pytz/zoneinfo/Africa/Brazzaville | Bin 157 -> 0 bytes .../pytz/zoneinfo/Africa/Bujumbura | Bin 157 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Cairo | Bin 1963 -> 0 bytes .../pytz/zoneinfo/Africa/Casablanca | Bin 969 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Ceuta | Bin 2050 -> 0 bytes .../pytz/zoneinfo/Africa/Conakry | Bin 156 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Dakar | Bin 156 -> 0 bytes .../pytz/zoneinfo/Africa/Dar_es_Salaam | Bin 271 -> 0 bytes .../pytz/zoneinfo/Africa/Djibouti | Bin 271 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Douala | Bin 157 -> 0 bytes .../pytz/zoneinfo/Africa/El_Aaiun | Bin 839 -> 0 bytes .../pytz/zoneinfo/Africa/Freetown | Bin 156 -> 0 bytes .../pytz/zoneinfo/Africa/Gaborone | Bin 157 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Harare | Bin 157 -> 0 bytes .../pytz/zoneinfo/Africa/Johannesburg | Bin 262 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Juba | Bin 669 -> 0 bytes .../pytz/zoneinfo/Africa/Kampala | Bin 271 -> 0 bytes .../pytz/zoneinfo/Africa/Khartoum | Bin 699 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Kigali | Bin 157 -> 0 bytes .../pytz/zoneinfo/Africa/Kinshasa | Bin 157 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Lagos | Bin 157 -> 0 bytes .../pytz/zoneinfo/Africa/Libreville | Bin 157 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Lome | Bin 156 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Luanda | Bin 157 -> 0 bytes .../pytz/zoneinfo/Africa/Lubumbashi | Bin 157 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Lusaka | Bin 157 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Malabo | Bin 157 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Maputo | Bin 157 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Maseru | Bin 262 -> 0 bytes .../pytz/zoneinfo/Africa/Mbabane | Bin 262 -> 0 bytes .../pytz/zoneinfo/Africa/Mogadishu | Bin 271 -> 0 bytes .../pytz/zoneinfo/Africa/Monrovia | Bin 224 -> 0 bytes .../pytz/zoneinfo/Africa/Nairobi | Bin 271 -> 0 bytes .../pytz/zoneinfo/Africa/Ndjamena | Bin 211 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Niamey | Bin 157 -> 0 bytes .../pytz/zoneinfo/Africa/Nouakchott | Bin 156 -> 0 bytes .../pytz/zoneinfo/Africa/Ouagadougou | Bin 156 -> 0 bytes .../pytz/zoneinfo/Africa/Porto-Novo | Bin 157 -> 0 bytes .../pytz/zoneinfo/Africa/Sao_Tome | Bin 225 -> 0 bytes .../pytz/zoneinfo/Africa/Timbuktu | Bin 156 -> 0 bytes .../pytz/zoneinfo/Africa/Tripoli | Bin 641 -> 0 bytes .../site-packages/pytz/zoneinfo/Africa/Tunis | Bin 701 -> 0 bytes .../pytz/zoneinfo/Africa/Windhoek | Bin 979 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Adak | Bin 2356 -> 0 bytes .../pytz/zoneinfo/America/Anchorage | Bin 2371 -> 0 bytes .../pytz/zoneinfo/America/Anguilla | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Antigua | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Araguaina | Bin 896 -> 0 bytes .../zoneinfo/America/Argentina/Buenos_Aires | Bin 1100 -> 0 bytes .../pytz/zoneinfo/America/Argentina/Catamarca | Bin 1100 -> 0 bytes .../zoneinfo/America/Argentina/ComodRivadavia | Bin 1100 -> 0 bytes .../pytz/zoneinfo/America/Argentina/Cordoba | Bin 1100 -> 0 bytes .../pytz/zoneinfo/America/Argentina/Jujuy | Bin 1072 -> 0 bytes .../pytz/zoneinfo/America/Argentina/La_Rioja | Bin 1114 -> 0 bytes .../pytz/zoneinfo/America/Argentina/Mendoza | Bin 1100 -> 0 bytes .../zoneinfo/America/Argentina/Rio_Gallegos | Bin 1100 -> 0 bytes .../pytz/zoneinfo/America/Argentina/Salta | Bin 1072 -> 0 bytes .../pytz/zoneinfo/America/Argentina/San_Juan | Bin 1114 -> 0 bytes .../pytz/zoneinfo/America/Argentina/San_Luis | Bin 1130 -> 0 bytes .../pytz/zoneinfo/America/Argentina/Tucuman | Bin 1128 -> 0 bytes .../pytz/zoneinfo/America/Argentina/Ushuaia | Bin 1100 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Aruba | Bin 198 -> 0 bytes .../pytz/zoneinfo/America/Asuncion | Bin 2068 -> 0 bytes .../pytz/zoneinfo/America/Atikokan | Bin 336 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Atka | Bin 2356 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Bahia | Bin 1036 -> 0 bytes .../pytz/zoneinfo/America/Bahia_Banderas | Bin 1574 -> 0 bytes .../pytz/zoneinfo/America/Barbados | Bin 330 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Belem | Bin 588 -> 0 bytes .../pytz/zoneinfo/America/Belize | Bin 964 -> 0 bytes .../pytz/zoneinfo/America/Blanc-Sablon | Bin 298 -> 0 bytes .../pytz/zoneinfo/America/Boa_Vista | Bin 644 -> 0 bytes .../pytz/zoneinfo/America/Bogota | Bin 262 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Boise | Bin 2394 -> 0 bytes .../pytz/zoneinfo/America/Buenos_Aires | Bin 1100 -> 0 bytes .../pytz/zoneinfo/America/Cambridge_Bay | Bin 2084 -> 0 bytes .../pytz/zoneinfo/America/Campo_Grande | Bin 2002 -> 0 bytes .../pytz/zoneinfo/America/Cancun | Bin 802 -> 0 bytes .../pytz/zoneinfo/America/Caracas | Bin 280 -> 0 bytes .../pytz/zoneinfo/America/Catamarca | Bin 1100 -> 0 bytes .../pytz/zoneinfo/America/Cayenne | Bin 210 -> 0 bytes .../pytz/zoneinfo/America/Cayman | Bin 194 -> 0 bytes .../pytz/zoneinfo/America/Chicago | Bin 3576 -> 0 bytes .../pytz/zoneinfo/America/Chihuahua | Bin 1508 -> 0 bytes .../pytz/zoneinfo/America/Coral_Harbour | Bin 336 -> 0 bytes .../pytz/zoneinfo/America/Cordoba | Bin 1100 -> 0 bytes .../pytz/zoneinfo/America/Costa_Rica | Bin 332 -> 0 bytes .../pytz/zoneinfo/America/Creston | Bin 224 -> 0 bytes .../pytz/zoneinfo/America/Cuiaba | Bin 1974 -> 0 bytes .../pytz/zoneinfo/America/Curacao | Bin 198 -> 0 bytes .../pytz/zoneinfo/America/Danmarkshavn | Bin 698 -> 0 bytes .../pytz/zoneinfo/America/Dawson | Bin 2084 -> 0 bytes .../pytz/zoneinfo/America/Dawson_Creek | Bin 1050 -> 0 bytes .../pytz/zoneinfo/America/Denver | Bin 2444 -> 0 bytes .../pytz/zoneinfo/America/Detroit | Bin 2174 -> 0 bytes .../pytz/zoneinfo/America/Dominica | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Edmonton | Bin 2388 -> 0 bytes .../pytz/zoneinfo/America/Eirunepe | Bin 676 -> 0 bytes .../pytz/zoneinfo/America/El_Salvador | Bin 236 -> 0 bytes .../pytz/zoneinfo/America/Ensenada | Bin 2342 -> 0 bytes .../pytz/zoneinfo/America/Fort_Nelson | Bin 2240 -> 0 bytes .../pytz/zoneinfo/America/Fort_Wayne | Bin 1666 -> 0 bytes .../pytz/zoneinfo/America/Fortaleza | Bin 728 -> 0 bytes .../pytz/zoneinfo/America/Glace_Bay | Bin 2192 -> 0 bytes .../pytz/zoneinfo/America/Godthab | Bin 1878 -> 0 bytes .../pytz/zoneinfo/America/Goose_Bay | Bin 3210 -> 0 bytes .../pytz/zoneinfo/America/Grand_Turk | Bin 1872 -> 0 bytes .../pytz/zoneinfo/America/Grenada | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Guadeloupe | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Guatemala | Bin 292 -> 0 bytes .../pytz/zoneinfo/America/Guayaquil | Bin 262 -> 0 bytes .../pytz/zoneinfo/America/Guyana | Bin 252 -> 0 bytes .../pytz/zoneinfo/America/Halifax | Bin 3424 -> 0 bytes .../pytz/zoneinfo/America/Havana | Bin 2428 -> 0 bytes .../pytz/zoneinfo/America/Hermosillo | Bin 440 -> 0 bytes .../zoneinfo/America/Indiana/Indianapolis | Bin 1666 -> 0 bytes .../pytz/zoneinfo/America/Indiana/Knox | Bin 2428 -> 0 bytes .../pytz/zoneinfo/America/Indiana/Marengo | Bin 1722 -> 0 bytes .../pytz/zoneinfo/America/Indiana/Petersburg | Bin 1904 -> 0 bytes .../pytz/zoneinfo/America/Indiana/Tell_City | Bin 1726 -> 0 bytes .../pytz/zoneinfo/America/Indiana/Vevay | Bin 1414 -> 0 bytes .../pytz/zoneinfo/America/Indiana/Vincennes | Bin 1694 -> 0 bytes .../pytz/zoneinfo/America/Indiana/Winamac | Bin 1778 -> 0 bytes .../pytz/zoneinfo/America/Indianapolis | Bin 1666 -> 0 bytes .../pytz/zoneinfo/America/Inuvik | Bin 1914 -> 0 bytes .../pytz/zoneinfo/America/Iqaluit | Bin 2032 -> 0 bytes .../pytz/zoneinfo/America/Jamaica | Bin 498 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Jujuy | Bin 1072 -> 0 bytes .../pytz/zoneinfo/America/Juneau | Bin 2353 -> 0 bytes .../pytz/zoneinfo/America/Kentucky/Louisville | Bin 2772 -> 0 bytes .../pytz/zoneinfo/America/Kentucky/Monticello | Bin 2352 -> 0 bytes .../pytz/zoneinfo/America/Knox_IN | Bin 2428 -> 0 bytes .../pytz/zoneinfo/America/Kralendijk | Bin 198 -> 0 bytes .../pytz/zoneinfo/America/La_Paz | Bin 248 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Lima | Bin 422 -> 0 bytes .../pytz/zoneinfo/America/Los_Angeles | Bin 2836 -> 0 bytes .../pytz/zoneinfo/America/Louisville | Bin 2772 -> 0 bytes .../pytz/zoneinfo/America/Lower_Princes | Bin 198 -> 0 bytes .../pytz/zoneinfo/America/Maceio | Bin 756 -> 0 bytes .../pytz/zoneinfo/America/Managua | Bin 454 -> 0 bytes .../pytz/zoneinfo/America/Manaus | Bin 616 -> 0 bytes .../pytz/zoneinfo/America/Marigot | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Martinique | Bin 248 -> 0 bytes .../pytz/zoneinfo/America/Matamoros | Bin 1402 -> 0 bytes .../pytz/zoneinfo/America/Mazatlan | Bin 1550 -> 0 bytes .../pytz/zoneinfo/America/Mendoza | Bin 1100 -> 0 bytes .../pytz/zoneinfo/America/Menominee | Bin 2274 -> 0 bytes .../pytz/zoneinfo/America/Merida | Bin 1442 -> 0 bytes .../pytz/zoneinfo/America/Metlakatla | Bin 1409 -> 0 bytes .../pytz/zoneinfo/America/Mexico_City | Bin 1604 -> 0 bytes .../pytz/zoneinfo/America/Miquelon | Bin 1682 -> 0 bytes .../pytz/zoneinfo/America/Moncton | Bin 3154 -> 0 bytes .../pytz/zoneinfo/America/Monterrey | Bin 1402 -> 0 bytes .../pytz/zoneinfo/America/Montevideo | Bin 1550 -> 0 bytes .../pytz/zoneinfo/America/Montreal | Bin 3494 -> 0 bytes .../pytz/zoneinfo/America/Montserrat | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Nassau | Bin 2270 -> 0 bytes .../pytz/zoneinfo/America/New_York | Bin 3536 -> 0 bytes .../pytz/zoneinfo/America/Nipigon | Bin 2122 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Nome | Bin 2367 -> 0 bytes .../pytz/zoneinfo/America/Noronha | Bin 728 -> 0 bytes .../pytz/zoneinfo/America/North_Dakota/Beulah | Bin 2380 -> 0 bytes .../pytz/zoneinfo/America/North_Dakota/Center | Bin 2380 -> 0 bytes .../zoneinfo/America/North_Dakota/New_Salem | Bin 2380 -> 0 bytes .../pytz/zoneinfo/America/Ojinaga | Bin 1508 -> 0 bytes .../pytz/zoneinfo/America/Panama | Bin 194 -> 0 bytes .../pytz/zoneinfo/America/Pangnirtung | Bin 2094 -> 0 bytes .../pytz/zoneinfo/America/Paramaribo | Bin 282 -> 0 bytes .../pytz/zoneinfo/America/Phoenix | Bin 344 -> 0 bytes .../pytz/zoneinfo/America/Port-au-Prince | Bin 1446 -> 0 bytes .../pytz/zoneinfo/America/Port_of_Spain | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Porto_Acre | Bin 648 -> 0 bytes .../pytz/zoneinfo/America/Porto_Velho | Bin 588 -> 0 bytes .../pytz/zoneinfo/America/Puerto_Rico | Bin 246 -> 0 bytes .../pytz/zoneinfo/America/Punta_Arenas | Bin 1902 -> 0 bytes .../pytz/zoneinfo/America/Rainy_River | Bin 2122 -> 0 bytes .../pytz/zoneinfo/America/Rankin_Inlet | Bin 1916 -> 0 bytes .../pytz/zoneinfo/America/Recife | Bin 728 -> 0 bytes .../pytz/zoneinfo/America/Regina | Bin 980 -> 0 bytes .../pytz/zoneinfo/America/Resolute | Bin 1916 -> 0 bytes .../pytz/zoneinfo/America/Rio_Branco | Bin 648 -> 0 bytes .../pytz/zoneinfo/America/Rosario | Bin 1100 -> 0 bytes .../pytz/zoneinfo/America/Santa_Isabel | Bin 2342 -> 0 bytes .../pytz/zoneinfo/America/Santarem | Bin 618 -> 0 bytes .../pytz/zoneinfo/America/Santiago | Bin 2529 -> 0 bytes .../pytz/zoneinfo/America/Santo_Domingo | Bin 482 -> 0 bytes .../pytz/zoneinfo/America/Sao_Paulo | Bin 2002 -> 0 bytes .../pytz/zoneinfo/America/Scoresbysund | Bin 1916 -> 0 bytes .../pytz/zoneinfo/America/Shiprock | Bin 2444 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Sitka | Bin 2329 -> 0 bytes .../pytz/zoneinfo/America/St_Barthelemy | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/St_Johns | Bin 3655 -> 0 bytes .../pytz/zoneinfo/America/St_Kitts | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/St_Lucia | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/St_Thomas | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/St_Vincent | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Swift_Current | Bin 560 -> 0 bytes .../pytz/zoneinfo/America/Tegucigalpa | Bin 264 -> 0 bytes .../site-packages/pytz/zoneinfo/America/Thule | Bin 1514 -> 0 bytes .../pytz/zoneinfo/America/Thunder_Bay | Bin 2202 -> 0 bytes .../pytz/zoneinfo/America/Tijuana | Bin 2342 -> 0 bytes .../pytz/zoneinfo/America/Toronto | Bin 3494 -> 0 bytes .../pytz/zoneinfo/America/Tortola | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Vancouver | Bin 2892 -> 0 bytes .../pytz/zoneinfo/America/Virgin | Bin 156 -> 0 bytes .../pytz/zoneinfo/America/Whitehorse | Bin 2084 -> 0 bytes .../pytz/zoneinfo/America/Winnipeg | Bin 2882 -> 0 bytes .../pytz/zoneinfo/America/Yakutat | Bin 2305 -> 0 bytes .../pytz/zoneinfo/America/Yellowknife | Bin 1966 -> 0 bytes .../pytz/zoneinfo/Antarctica/Casey | Bin 297 -> 0 bytes .../pytz/zoneinfo/Antarctica/Davis | Bin 297 -> 0 bytes .../pytz/zoneinfo/Antarctica/DumontDUrville | Bin 202 -> 0 bytes .../pytz/zoneinfo/Antarctica/Macquarie | Bin 1534 -> 0 bytes .../pytz/zoneinfo/Antarctica/Mawson | Bin 211 -> 0 bytes .../pytz/zoneinfo/Antarctica/McMurdo | Bin 2451 -> 0 bytes .../pytz/zoneinfo/Antarctica/Palmer | Bin 1418 -> 0 bytes .../pytz/zoneinfo/Antarctica/Rothera | Bin 172 -> 0 bytes .../pytz/zoneinfo/Antarctica/South_Pole | Bin 2451 -> 0 bytes .../pytz/zoneinfo/Antarctica/Syowa | Bin 173 -> 0 bytes .../pytz/zoneinfo/Antarctica/Troll | Bin 1162 -> 0 bytes .../pytz/zoneinfo/Antarctica/Vostok | Bin 173 -> 0 bytes .../pytz/zoneinfo/Arctic/Longyearbyen | Bin 2242 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Aden | Bin 173 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Almaty | Bin 1017 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Amman | Bin 1863 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Anadyr | Bin 1208 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Aqtau | Bin 1003 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Aqtobe | Bin 1033 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Ashgabat | Bin 637 -> 0 bytes .../pytz/zoneinfo/Asia/Ashkhabad | Bin 637 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Atyrau | Bin 1011 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Baghdad | Bin 995 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Bahrain | Bin 211 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Baku | Bin 1255 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Bangkok | Bin 211 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Barnaul | Bin 1241 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Beirut | Bin 2166 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Bishkek | Bin 999 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Brunei | Bin 215 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Calcutta | Bin 303 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Chita | Bin 1243 -> 0 bytes .../pytz/zoneinfo/Asia/Choibalsan | Bin 977 -> 0 bytes .../pytz/zoneinfo/Asia/Chongqing | Bin 545 -> 0 bytes .../pytz/zoneinfo/Asia/Chungking | Bin 545 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Colombo | Bin 404 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Dacca | Bin 361 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Damascus | Bin 2306 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Dhaka | Bin 361 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Dili | Bin 239 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Dubai | Bin 173 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Dushanbe | Bin 607 -> 0 bytes .../pytz/zoneinfo/Asia/Famagusta | Bin 2028 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Gaza | Bin 2286 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Harbin | Bin 545 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Hebron | Bin 2314 -> 0 bytes .../pytz/zoneinfo/Asia/Ho_Chi_Minh | Bin 375 -> 0 bytes .../pytz/zoneinfo/Asia/Hong_Kong | Bin 1175 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Hovd | Bin 907 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Irkutsk | Bin 1267 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Istanbul | Bin 2157 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Jakarta | Bin 383 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Jayapura | Bin 237 -> 0 bytes .../pytz/zoneinfo/Asia/Jerusalem | Bin 2256 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Kabul | Bin 220 -> 0 bytes .../pytz/zoneinfo/Asia/Kamchatka | Bin 1184 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Karachi | Bin 403 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Kashgar | Bin 173 -> 0 bytes .../pytz/zoneinfo/Asia/Kathmandu | Bin 224 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Katmandu | Bin 224 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Khandyga | Bin 1297 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Kolkata | Bin 303 -> 0 bytes .../pytz/zoneinfo/Asia/Krasnoyarsk | Bin 1229 -> 0 bytes .../pytz/zoneinfo/Asia/Kuala_Lumpur | Bin 415 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Kuching | Bin 507 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Kuwait | Bin 173 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Macao | Bin 1241 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Macau | Bin 1241 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Magadan | Bin 1244 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Makassar | Bin 274 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Manila | Bin 350 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Muscat | Bin 173 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Nicosia | Bin 2002 -> 0 bytes .../pytz/zoneinfo/Asia/Novokuznetsk | Bin 1183 -> 0 bytes .../pytz/zoneinfo/Asia/Novosibirsk | Bin 1241 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Omsk | Bin 1229 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Oral | Bin 1025 -> 0 bytes .../pytz/zoneinfo/Asia/Phnom_Penh | Bin 211 -> 0 bytes .../pytz/zoneinfo/Asia/Pontianak | Bin 381 -> 0 bytes .../pytz/zoneinfo/Asia/Pyongyang | Bin 253 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Qatar | Bin 211 -> 0 bytes .../pytz/zoneinfo/Asia/Qyzylorda | Bin 1017 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Rangoon | Bin 288 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Riyadh | Bin 173 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Saigon | Bin 375 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Sakhalin | Bin 1220 -> 0 bytes .../pytz/zoneinfo/Asia/Samarkand | Bin 605 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Seoul | Bin 517 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Shanghai | Bin 545 -> 0 bytes .../pytz/zoneinfo/Asia/Singapore | Bin 415 -> 0 bytes .../pytz/zoneinfo/Asia/Srednekolymsk | Bin 1230 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Taipei | Bin 781 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Tashkent | Bin 621 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Tbilisi | Bin 1071 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Tehran | Bin 1704 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Tel_Aviv | Bin 2256 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Thimbu | Bin 215 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Thimphu | Bin 215 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Tokyo | Bin 309 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Tomsk | Bin 1241 -> 0 bytes .../pytz/zoneinfo/Asia/Ujung_Pandang | Bin 274 -> 0 bytes .../pytz/zoneinfo/Asia/Ulaanbaatar | Bin 907 -> 0 bytes .../pytz/zoneinfo/Asia/Ulan_Bator | Bin 907 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Urumqi | Bin 173 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Ust-Nera | Bin 1276 -> 0 bytes .../pytz/zoneinfo/Asia/Vientiane | Bin 211 -> 0 bytes .../pytz/zoneinfo/Asia/Vladivostok | Bin 1230 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Yakutsk | Bin 1229 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Yangon | Bin 288 -> 0 bytes .../pytz/zoneinfo/Asia/Yekaterinburg | Bin 1267 -> 0 bytes .../site-packages/pytz/zoneinfo/Asia/Yerevan | Bin 1199 -> 0 bytes .../pytz/zoneinfo/Atlantic/Azores | Bin 3484 -> 0 bytes .../pytz/zoneinfo/Atlantic/Bermuda | Bin 1990 -> 0 bytes .../pytz/zoneinfo/Atlantic/Canary | Bin 1897 -> 0 bytes .../pytz/zoneinfo/Atlantic/Cape_Verde | Bin 270 -> 0 bytes .../pytz/zoneinfo/Atlantic/Faeroe | Bin 1815 -> 0 bytes .../pytz/zoneinfo/Atlantic/Faroe | Bin 1815 -> 0 bytes .../pytz/zoneinfo/Atlantic/Jan_Mayen | Bin 2242 -> 0 bytes .../pytz/zoneinfo/Atlantic/Madeira | Bin 3475 -> 0 bytes .../pytz/zoneinfo/Atlantic/Reykjavik | Bin 1174 -> 0 bytes .../pytz/zoneinfo/Atlantic/South_Georgia | Bin 172 -> 0 bytes .../pytz/zoneinfo/Atlantic/St_Helena | Bin 156 -> 0 bytes .../pytz/zoneinfo/Atlantic/Stanley | Bin 1242 -> 0 bytes .../site-packages/pytz/zoneinfo/Australia/ACT | Bin 2214 -> 0 bytes .../pytz/zoneinfo/Australia/Adelaide | Bin 2233 -> 0 bytes .../pytz/zoneinfo/Australia/Brisbane | Bin 443 -> 0 bytes .../pytz/zoneinfo/Australia/Broken_Hill | Bin 2269 -> 0 bytes .../pytz/zoneinfo/Australia/Canberra | Bin 2214 -> 0 bytes .../pytz/zoneinfo/Australia/Currie | Bin 2214 -> 0 bytes .../pytz/zoneinfo/Australia/Darwin | Bin 318 -> 0 bytes .../pytz/zoneinfo/Australia/Eucla | Bin 494 -> 0 bytes .../pytz/zoneinfo/Australia/Hobart | Bin 2326 -> 0 bytes .../site-packages/pytz/zoneinfo/Australia/LHI | Bin 1880 -> 0 bytes .../pytz/zoneinfo/Australia/Lindeman | Bin 513 -> 0 bytes .../pytz/zoneinfo/Australia/Lord_Howe | Bin 1880 -> 0 bytes .../pytz/zoneinfo/Australia/Melbourne | Bin 2214 -> 0 bytes .../site-packages/pytz/zoneinfo/Australia/NSW | Bin 2214 -> 0 bytes .../pytz/zoneinfo/Australia/North | Bin 318 -> 0 bytes .../pytz/zoneinfo/Australia/Perth | Bin 470 -> 0 bytes .../pytz/zoneinfo/Australia/Queensland | Bin 443 -> 0 bytes .../pytz/zoneinfo/Australia/South | Bin 2233 -> 0 bytes .../pytz/zoneinfo/Australia/Sydney | Bin 2214 -> 0 bytes .../pytz/zoneinfo/Australia/Tasmania | Bin 2326 -> 0 bytes .../pytz/zoneinfo/Australia/Victoria | Bin 2214 -> 0 bytes .../pytz/zoneinfo/Australia/West | Bin 470 -> 0 bytes .../pytz/zoneinfo/Australia/Yancowinna | Bin 2269 -> 0 bytes .../site-packages/pytz/zoneinfo/Brazil/Acre | Bin 648 -> 0 bytes .../pytz/zoneinfo/Brazil/DeNoronha | Bin 728 -> 0 bytes .../site-packages/pytz/zoneinfo/Brazil/East | Bin 2002 -> 0 bytes .../site-packages/pytz/zoneinfo/Brazil/West | Bin 616 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/CET | Bin 2102 -> 0 bytes .../site-packages/pytz/zoneinfo/CST6CDT | Bin 2294 -> 0 bytes .../pytz/zoneinfo/Canada/Atlantic | Bin 3424 -> 0 bytes .../pytz/zoneinfo/Canada/Central | Bin 2882 -> 0 bytes .../pytz/zoneinfo/Canada/Eastern | Bin 3494 -> 0 bytes .../pytz/zoneinfo/Canada/Mountain | Bin 2388 -> 0 bytes .../pytz/zoneinfo/Canada/Newfoundland | Bin 3655 -> 0 bytes .../pytz/zoneinfo/Canada/Pacific | Bin 2892 -> 0 bytes .../pytz/zoneinfo/Canada/Saskatchewan | Bin 980 -> 0 bytes .../site-packages/pytz/zoneinfo/Canada/Yukon | Bin 2084 -> 0 bytes .../pytz/zoneinfo/Chile/Continental | Bin 2529 -> 0 bytes .../pytz/zoneinfo/Chile/EasterIsland | Bin 2233 -> 0 bytes .../site-packages/pytz/zoneinfo/Cuba | Bin 2428 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/EET | Bin 1876 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/EST | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/EST5EDT | Bin 2294 -> 0 bytes .../site-packages/pytz/zoneinfo/Egypt | Bin 1963 -> 0 bytes .../site-packages/pytz/zoneinfo/Eire | Bin 3522 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+0 | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+1 | Bin 120 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+10 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+11 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+12 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+2 | Bin 120 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+3 | Bin 120 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+4 | Bin 120 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+5 | Bin 120 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+6 | Bin 120 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+7 | Bin 120 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+8 | Bin 120 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT+9 | Bin 120 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-0 | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-1 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-10 | Bin 122 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-11 | Bin 122 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-12 | Bin 122 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-13 | Bin 122 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-14 | Bin 122 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-2 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-3 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-4 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-5 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-6 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-7 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-8 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT-9 | Bin 121 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/GMT0 | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/Greenwich | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/UCT | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/UTC | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/Universal | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Etc/Zulu | Bin 118 -> 0 bytes .../pytz/zoneinfo/Europe/Amsterdam | Bin 2940 -> 0 bytes .../pytz/zoneinfo/Europe/Andorra | Bin 1742 -> 0 bytes .../pytz/zoneinfo/Europe/Astrakhan | Bin 1183 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Athens | Bin 2262 -> 0 bytes .../pytz/zoneinfo/Europe/Belfast | Bin 3678 -> 0 bytes .../pytz/zoneinfo/Europe/Belgrade | Bin 1948 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Berlin | Bin 2326 -> 0 bytes .../pytz/zoneinfo/Europe/Bratislava | Bin 2329 -> 0 bytes .../pytz/zoneinfo/Europe/Brussels | Bin 2961 -> 0 bytes .../pytz/zoneinfo/Europe/Bucharest | Bin 2212 -> 0 bytes .../pytz/zoneinfo/Europe/Budapest | Bin 2396 -> 0 bytes .../pytz/zoneinfo/Europe/Busingen | Bin 1909 -> 0 bytes .../pytz/zoneinfo/Europe/Chisinau | Bin 2436 -> 0 bytes .../pytz/zoneinfo/Europe/Copenhagen | Bin 2151 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Dublin | Bin 3522 -> 0 bytes .../pytz/zoneinfo/Europe/Gibraltar | Bin 3052 -> 0 bytes .../pytz/zoneinfo/Europe/Guernsey | Bin 3678 -> 0 bytes .../pytz/zoneinfo/Europe/Helsinki | Bin 1900 -> 0 bytes .../pytz/zoneinfo/Europe/Isle_of_Man | Bin 3678 -> 0 bytes .../pytz/zoneinfo/Europe/Istanbul | Bin 2157 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Jersey | Bin 3678 -> 0 bytes .../pytz/zoneinfo/Europe/Kaliningrad | Bin 1509 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Kiev | Bin 2088 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Kirov | Bin 1153 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Lisbon | Bin 3469 -> 0 bytes .../pytz/zoneinfo/Europe/Ljubljana | Bin 1948 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/London | Bin 3678 -> 0 bytes .../pytz/zoneinfo/Europe/Luxembourg | Bin 2960 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Madrid | Bin 2628 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Malta | Bin 2620 -> 0 bytes .../pytz/zoneinfo/Europe/Mariehamn | Bin 1900 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Minsk | Bin 1361 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Monaco | Bin 2944 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Moscow | Bin 1535 -> 0 bytes .../pytz/zoneinfo/Europe/Nicosia | Bin 2002 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Oslo | Bin 2242 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Paris | Bin 2962 -> 0 bytes .../pytz/zoneinfo/Europe/Podgorica | Bin 1948 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Prague | Bin 2329 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Riga | Bin 2226 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Rome | Bin 2683 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Samara | Bin 1215 -> 0 bytes .../pytz/zoneinfo/Europe/San_Marino | Bin 2683 -> 0 bytes .../pytz/zoneinfo/Europe/Sarajevo | Bin 1948 -> 0 bytes .../pytz/zoneinfo/Europe/Saratov | Bin 1183 -> 0 bytes .../pytz/zoneinfo/Europe/Simferopol | Bin 1481 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Skopje | Bin 1948 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Sofia | Bin 2121 -> 0 bytes .../pytz/zoneinfo/Europe/Stockholm | Bin 1909 -> 0 bytes .../pytz/zoneinfo/Europe/Tallinn | Bin 2178 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Tirane | Bin 2084 -> 0 bytes .../pytz/zoneinfo/Europe/Tiraspol | Bin 2436 -> 0 bytes .../pytz/zoneinfo/Europe/Ulyanovsk | Bin 1267 -> 0 bytes .../pytz/zoneinfo/Europe/Uzhgorod | Bin 2094 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Vaduz | Bin 1909 -> 0 bytes .../pytz/zoneinfo/Europe/Vatican | Bin 2683 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Vienna | Bin 2228 -> 0 bytes .../pytz/zoneinfo/Europe/Vilnius | Bin 2190 -> 0 bytes .../pytz/zoneinfo/Europe/Volgograd | Bin 1183 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Warsaw | Bin 2696 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Zagreb | Bin 1948 -> 0 bytes .../pytz/zoneinfo/Europe/Zaporozhye | Bin 2106 -> 0 bytes .../site-packages/pytz/zoneinfo/Europe/Zurich | Bin 1909 -> 0 bytes .../site-packages/pytz/zoneinfo/Factory | Bin 120 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/GB | Bin 3678 -> 0 bytes .../site-packages/pytz/zoneinfo/GB-Eire | Bin 3678 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/GMT | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/GMT+0 | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/GMT-0 | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/GMT0 | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Greenwich | Bin 118 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/HST | Bin 119 -> 0 bytes .../site-packages/pytz/zoneinfo/Hongkong | Bin 1175 -> 0 bytes .../site-packages/pytz/zoneinfo/Iceland | Bin 1174 -> 0 bytes .../pytz/zoneinfo/Indian/Antananarivo | Bin 271 -> 0 bytes .../site-packages/pytz/zoneinfo/Indian/Chagos | Bin 211 -> 0 bytes .../pytz/zoneinfo/Indian/Christmas | Bin 173 -> 0 bytes .../site-packages/pytz/zoneinfo/Indian/Cocos | Bin 182 -> 0 bytes .../site-packages/pytz/zoneinfo/Indian/Comoro | Bin 271 -> 0 bytes .../pytz/zoneinfo/Indian/Kerguelen | Bin 173 -> 0 bytes .../site-packages/pytz/zoneinfo/Indian/Mahe | Bin 173 -> 0 bytes .../pytz/zoneinfo/Indian/Maldives | Bin 211 -> 0 bytes .../pytz/zoneinfo/Indian/Mauritius | Bin 253 -> 0 bytes .../pytz/zoneinfo/Indian/Mayotte | Bin 271 -> 0 bytes .../pytz/zoneinfo/Indian/Reunion | Bin 173 -> 0 bytes .../site-packages/pytz/zoneinfo/Iran | Bin 1704 -> 0 bytes .../site-packages/pytz/zoneinfo/Israel | Bin 2256 -> 0 bytes .../site-packages/pytz/zoneinfo/Jamaica | Bin 498 -> 0 bytes .../site-packages/pytz/zoneinfo/Japan | Bin 309 -> 0 bytes .../site-packages/pytz/zoneinfo/Kwajalein | Bin 250 -> 0 bytes .../site-packages/pytz/zoneinfo/Libya | Bin 641 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/MET | Bin 2102 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/MST | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/MST7MDT | Bin 2294 -> 0 bytes .../pytz/zoneinfo/Mexico/BajaNorte | Bin 2342 -> 0 bytes .../pytz/zoneinfo/Mexico/BajaSur | Bin 1550 -> 0 bytes .../pytz/zoneinfo/Mexico/General | Bin 1604 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/NZ | Bin 2451 -> 0 bytes .../site-packages/pytz/zoneinfo/NZ-CHAT | Bin 2078 -> 0 bytes .../site-packages/pytz/zoneinfo/Navajo | Bin 2444 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/PRC | Bin 545 -> 0 bytes .../site-packages/pytz/zoneinfo/PST8PDT | Bin 2294 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Apia | Bin 1125 -> 0 bytes .../pytz/zoneinfo/Pacific/Auckland | Bin 2451 -> 0 bytes .../pytz/zoneinfo/Pacific/Bougainville | Bin 286 -> 0 bytes .../pytz/zoneinfo/Pacific/Chatham | Bin 2078 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Chuuk | Bin 174 -> 0 bytes .../pytz/zoneinfo/Pacific/Easter | Bin 2233 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Efate | Bin 478 -> 0 bytes .../pytz/zoneinfo/Pacific/Enderbury | Bin 250 -> 0 bytes .../pytz/zoneinfo/Pacific/Fakaofo | Bin 212 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Fiji | Bin 1090 -> 0 bytes .../pytz/zoneinfo/Pacific/Funafuti | Bin 174 -> 0 bytes .../pytz/zoneinfo/Pacific/Galapagos | Bin 254 -> 0 bytes .../pytz/zoneinfo/Pacific/Gambier | Bin 172 -> 0 bytes .../pytz/zoneinfo/Pacific/Guadalcanal | Bin 174 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Guam | Bin 216 -> 0 bytes .../pytz/zoneinfo/Pacific/Honolulu | Bin 329 -> 0 bytes .../pytz/zoneinfo/Pacific/Johnston | Bin 329 -> 0 bytes .../pytz/zoneinfo/Pacific/Kiritimati | Bin 254 -> 0 bytes .../pytz/zoneinfo/Pacific/Kosrae | Bin 242 -> 0 bytes .../pytz/zoneinfo/Pacific/Kwajalein | Bin 250 -> 0 bytes .../pytz/zoneinfo/Pacific/Majuro | Bin 212 -> 0 bytes .../pytz/zoneinfo/Pacific/Marquesas | Bin 181 -> 0 bytes .../pytz/zoneinfo/Pacific/Midway | Bin 187 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Nauru | Bin 268 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Niue | Bin 257 -> 0 bytes .../pytz/zoneinfo/Pacific/Norfolk | Bin 314 -> 0 bytes .../pytz/zoneinfo/Pacific/Noumea | Bin 314 -> 0 bytes .../pytz/zoneinfo/Pacific/Pago_Pago | Bin 187 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Palau | Bin 173 -> 0 bytes .../pytz/zoneinfo/Pacific/Pitcairn | Bin 214 -> 0 bytes .../pytz/zoneinfo/Pacific/Pohnpei | Bin 174 -> 0 bytes .../pytz/zoneinfo/Pacific/Ponape | Bin 174 -> 0 bytes .../pytz/zoneinfo/Pacific/Port_Moresby | Bin 196 -> 0 bytes .../pytz/zoneinfo/Pacific/Rarotonga | Bin 593 -> 0 bytes .../pytz/zoneinfo/Pacific/Saipan | Bin 216 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Samoa | Bin 187 -> 0 bytes .../pytz/zoneinfo/Pacific/Tahiti | Bin 173 -> 0 bytes .../pytz/zoneinfo/Pacific/Tarawa | Bin 174 -> 0 bytes .../pytz/zoneinfo/Pacific/Tongatapu | Bin 384 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Truk | Bin 174 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Wake | Bin 174 -> 0 bytes .../pytz/zoneinfo/Pacific/Wallis | Bin 174 -> 0 bytes .../site-packages/pytz/zoneinfo/Pacific/Yap | Bin 174 -> 0 bytes .../site-packages/pytz/zoneinfo/Poland | Bin 2696 -> 0 bytes .../site-packages/pytz/zoneinfo/Portugal | Bin 3469 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/ROC | Bin 781 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/ROK | Bin 517 -> 0 bytes .../site-packages/pytz/zoneinfo/Singapore | Bin 415 -> 0 bytes .../site-packages/pytz/zoneinfo/Turkey | Bin 2157 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/UCT | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Alaska | Bin 2371 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Aleutian | Bin 2356 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Arizona | Bin 344 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Central | Bin 3576 -> 0 bytes .../pytz/zoneinfo/US/East-Indiana | Bin 1666 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Eastern | Bin 3536 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Hawaii | Bin 329 -> 0 bytes .../pytz/zoneinfo/US/Indiana-Starke | Bin 2428 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Michigan | Bin 2174 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Mountain | Bin 2444 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Pacific | Bin 2836 -> 0 bytes .../site-packages/pytz/zoneinfo/US/Samoa | Bin 187 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/UTC | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/Universal | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/W-SU | Bin 1535 -> 0 bytes .../python3.6/site-packages/pytz/zoneinfo/WET | Bin 1873 -> 0 bytes .../site-packages/pytz/zoneinfo/Zulu | Bin 118 -> 0 bytes .../site-packages/pytz/zoneinfo/iso3166.tab | 274 - .../site-packages/pytz/zoneinfo/leapseconds | 66 - .../site-packages/pytz/zoneinfo/posixrules | Bin 3536 -> 0 bytes .../site-packages/pytz/zoneinfo/tzdata.zi | 4177 --------- .../site-packages/pytz/zoneinfo/zone.tab | 448 - .../site-packages/pytz/zoneinfo/zone1970.tab | 382 - .../requests-2.21.0.dist-info/INSTALLER | 1 - .../requests-2.21.0.dist-info/LICENSE | 13 - .../requests-2.21.0.dist-info/METADATA | 146 - .../requests-2.21.0.dist-info/RECORD | 42 - .../requests-2.21.0.dist-info/WHEEL | 6 - .../requests-2.21.0.dist-info/top_level.txt | 1 - .../site-packages/requests/__init__.py | 131 - .../__pycache__/__init__.cpython-36.pyc | Bin 3308 -> 0 bytes .../__pycache__/__version__.cpython-36.pyc | Bin 494 -> 0 bytes .../_internal_utils.cpython-36.pyc | Bin 1252 -> 0 bytes .../__pycache__/adapters.cpython-36.pyc | Bin 16771 -> 0 bytes .../requests/__pycache__/api.cpython-36.pyc | Bin 6435 -> 0 bytes .../requests/__pycache__/auth.cpython-36.pyc | Bin 8286 -> 0 bytes .../requests/__pycache__/certs.cpython-36.pyc | Bin 565 -> 0 bytes .../__pycache__/compat.cpython-36.pyc | Bin 1599 -> 0 bytes .../__pycache__/cookies.cpython-36.pyc | Bin 18731 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 5439 -> 0 bytes .../requests/__pycache__/help.cpython-36.pyc | Bin 2572 -> 0 bytes .../requests/__pycache__/hooks.cpython-36.pyc | Bin 924 -> 0 bytes .../__pycache__/models.cpython-36.pyc | Bin 24034 -> 0 bytes .../__pycache__/packages.cpython-36.pyc | Bin 376 -> 0 bytes .../__pycache__/sessions.cpython-36.pyc | Bin 19370 -> 0 bytes .../__pycache__/status_codes.cpython-36.pyc | Bin 4722 -> 0 bytes .../__pycache__/structures.cpython-36.pyc | Bin 4323 -> 0 bytes .../requests/__pycache__/utils.cpython-36.pyc | Bin 22104 -> 0 bytes .../site-packages/requests/__version__.py | 14 - .../site-packages/requests/_internal_utils.py | 42 - .../site-packages/requests/adapters.py | 533 -- .../python3.6/site-packages/requests/api.py | 158 - .../python3.6/site-packages/requests/auth.py | 305 - .../python3.6/site-packages/requests/certs.py | 18 - .../site-packages/requests/compat.py | 70 - .../site-packages/requests/cookies.py | 549 -- .../site-packages/requests/exceptions.py | 126 - .../python3.6/site-packages/requests/help.py | 119 - .../python3.6/site-packages/requests/hooks.py | 34 - .../site-packages/requests/models.py | 953 -- .../site-packages/requests/packages.py | 14 - .../site-packages/requests/sessions.py | 770 -- .../site-packages/requests/status_codes.py | 120 - .../site-packages/requests/structures.py | 103 - .../python3.6/site-packages/requests/utils.py | 977 -- .../rsa-4.0.dist-info/DESCRIPTION.rst | 45 - .../site-packages/rsa-4.0.dist-info/INSTALLER | 1 - .../rsa-4.0.dist-info/LICENSE.txt | 13 - .../site-packages/rsa-4.0.dist-info/METADATA | 76 - .../site-packages/rsa-4.0.dist-info/RECORD | 47 - .../site-packages/rsa-4.0.dist-info/WHEEL | 6 - .../rsa-4.0.dist-info/entry_points.txt | 8 - .../rsa-4.0.dist-info/metadata.json | 1 - .../rsa-4.0.dist-info/top_level.txt | 1 - .../python3.6/site-packages/rsa/__init__.py | 42 - .../rsa/__pycache__/__init__.cpython-36.pyc | Bin 1040 -> 0 bytes .../rsa/__pycache__/_compat.cpython-36.pyc | Bin 3826 -> 0 bytes .../rsa/__pycache__/asn1.cpython-36.pyc | Bin 1360 -> 0 bytes .../rsa/__pycache__/cli.cpython-36.pyc | Bin 8118 -> 0 bytes .../rsa/__pycache__/common.cpython-36.pyc | Bin 3929 -> 0 bytes .../rsa/__pycache__/core.cpython-36.pyc | Bin 1188 -> 0 bytes .../rsa/__pycache__/key.cpython-36.pyc | Bin 22937 -> 0 bytes .../__pycache__/machine_size.cpython-36.pyc | Bin 1435 -> 0 bytes .../rsa/__pycache__/parallel.cpython-36.pyc | Bin 1822 -> 0 bytes .../rsa/__pycache__/pem.cpython-36.pyc | Bin 2324 -> 0 bytes .../rsa/__pycache__/pkcs1.cpython-36.pyc | Bin 11714 -> 0 bytes .../rsa/__pycache__/pkcs1_v2.cpython-36.pyc | Bin 2543 -> 0 bytes .../rsa/__pycache__/prime.cpython-36.pyc | Bin 3742 -> 0 bytes .../rsa/__pycache__/randnum.cpython-36.pyc | Bin 1657 -> 0 bytes .../rsa/__pycache__/transform.cpython-36.pyc | Bin 4985 -> 0 bytes .../rsa/__pycache__/util.cpython-36.pyc | Bin 1954 -> 0 bytes .../python3.6/site-packages/rsa/_compat.py | 162 - venv/lib/python3.6/site-packages/rsa/asn1.py | 53 - venv/lib/python3.6/site-packages/rsa/cli.py | 288 - .../lib/python3.6/site-packages/rsa/common.py | 188 - venv/lib/python3.6/site-packages/rsa/core.py | 57 - venv/lib/python3.6/site-packages/rsa/key.py | 791 -- .../site-packages/rsa/machine_size.py | 74 - .../python3.6/site-packages/rsa/parallel.py | 101 - venv/lib/python3.6/site-packages/rsa/pem.py | 126 - venv/lib/python3.6/site-packages/rsa/pkcs1.py | 439 - .../python3.6/site-packages/rsa/pkcs1_v2.py | 103 - venv/lib/python3.6/site-packages/rsa/prime.py | 201 - .../python3.6/site-packages/rsa/randnum.py | 98 - .../python3.6/site-packages/rsa/transform.py | 215 - venv/lib/python3.6/site-packages/rsa/util.py | 79 - .../DESCRIPTION.rst | 36 - .../setuptools-39.0.1.dist-info/INSTALLER | 1 - .../setuptools-39.0.1.dist-info/METADATA | 67 - .../setuptools-39.0.1.dist-info/RECORD | 155 - .../setuptools-39.0.1.dist-info/WHEEL | 6 - .../dependency_links.txt | 2 - .../entry_points.txt | 64 - .../setuptools-39.0.1.dist-info/metadata.json | 1 - .../setuptools-39.0.1.dist-info/top_level.txt | 3 - .../setuptools-39.0.1.dist-info/zip-safe | 1 - .../site-packages/setuptools/__init__.py | 180 - .../__pycache__/__init__.cpython-36.pyc | Bin 6246 -> 0 bytes .../__pycache__/archive_util.cpython-36.pyc | Bin 5094 -> 0 bytes .../__pycache__/build_meta.cpython-36.pyc | Bin 5867 -> 0 bytes .../__pycache__/config.cpython-36.pyc | Bin 14323 -> 0 bytes .../__pycache__/dep_util.cpython-36.pyc | Bin 813 -> 0 bytes .../__pycache__/depends.cpython-36.pyc | Bin 5239 -> 0 bytes .../__pycache__/dist.cpython-36.pyc | Bin 36818 -> 0 bytes .../__pycache__/extension.cpython-36.pyc | Bin 1933 -> 0 bytes .../__pycache__/glibc.cpython-36.pyc | Bin 1503 -> 0 bytes .../__pycache__/glob.cpython-36.pyc | Bin 3801 -> 0 bytes .../__pycache__/launch.cpython-36.pyc | Bin 812 -> 0 bytes .../__pycache__/lib2to3_ex.cpython-36.pyc | Bin 2391 -> 0 bytes .../__pycache__/monkey.cpython-36.pyc | Bin 5133 -> 0 bytes .../__pycache__/msvc.cpython-36.pyc | Bin 34498 -> 0 bytes .../__pycache__/namespaces.cpython-36.pyc | Bin 3636 -> 0 bytes .../__pycache__/package_index.cpython-36.pyc | Bin 32218 -> 0 bytes .../__pycache__/pep425tags.cpython-36.pyc | Bin 7296 -> 0 bytes .../__pycache__/py27compat.cpython-36.pyc | Bin 769 -> 0 bytes .../__pycache__/py31compat.cpython-36.pyc | Bin 1508 -> 0 bytes .../__pycache__/py33compat.cpython-36.pyc | Bin 1361 -> 0 bytes .../__pycache__/py36compat.cpython-36.pyc | Bin 2165 -> 0 bytes .../__pycache__/sandbox.cpython-36.pyc | Bin 15681 -> 0 bytes .../__pycache__/site-patch.cpython-36.pyc | Bin 1464 -> 0 bytes .../__pycache__/ssl_support.cpython-36.pyc | Bin 6744 -> 0 bytes .../__pycache__/unicode_utils.cpython-36.pyc | Bin 1127 -> 0 bytes .../__pycache__/version.cpython-36.pyc | Bin 286 -> 0 bytes .../__pycache__/wheel.cpython-36.pyc | Bin 5781 -> 0 bytes .../windows_support.cpython-36.pyc | Bin 969 -> 0 bytes .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 148 -> 0 bytes .../__pycache__/pyparsing.cpython-36.pyc | Bin 201070 -> 0 bytes .../_vendor/__pycache__/six.cpython-36.pyc | Bin 24445 -> 0 bytes .../setuptools/_vendor/packaging/__about__.py | 21 - .../setuptools/_vendor/packaging/__init__.py | 14 - .../__pycache__/__about__.cpython-36.pyc | Bin 684 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 522 -> 0 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 969 -> 0 bytes .../__pycache__/_structures.cpython-36.pyc | Bin 2826 -> 0 bytes .../__pycache__/markers.cpython-36.pyc | Bin 8846 -> 0 bytes .../__pycache__/requirements.cpython-36.pyc | Bin 3839 -> 0 bytes .../__pycache__/specifiers.cpython-36.pyc | Bin 19788 -> 0 bytes .../__pycache__/utils.cpython-36.pyc | Bin 453 -> 0 bytes .../__pycache__/version.cpython-36.pyc | Bin 10563 -> 0 bytes .../setuptools/_vendor/packaging/_compat.py | 30 - .../_vendor/packaging/_structures.py | 68 - .../setuptools/_vendor/packaging/markers.py | 301 - .../_vendor/packaging/requirements.py | 127 - .../_vendor/packaging/specifiers.py | 774 -- .../setuptools/_vendor/packaging/utils.py | 14 - .../setuptools/_vendor/packaging/version.py | 393 - .../setuptools/_vendor/pyparsing.py | 5696 ------------ .../site-packages/setuptools/_vendor/six.py | 868 -- .../site-packages/setuptools/archive_util.py | 173 - .../site-packages/setuptools/build_meta.py | 172 - .../site-packages/setuptools/cli-32.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/cli-64.exe | Bin 74752 -> 0 bytes .../site-packages/setuptools/cli.exe | Bin 65536 -> 0 bytes .../setuptools/command/__init__.py | 18 - .../__pycache__/__init__.cpython-36.pyc | Bin 699 -> 0 bytes .../command/__pycache__/alias.cpython-36.pyc | Bin 2392 -> 0 bytes .../__pycache__/bdist_egg.cpython-36.pyc | Bin 14373 -> 0 bytes .../__pycache__/bdist_rpm.cpython-36.pyc | Bin 1735 -> 0 bytes .../__pycache__/bdist_wininst.cpython-36.pyc | Bin 936 -> 0 bytes .../__pycache__/build_clib.cpython-36.pyc | Bin 2407 -> 0 bytes .../__pycache__/build_ext.cpython-36.pyc | Bin 10006 -> 0 bytes .../__pycache__/build_py.cpython-36.pyc | Bin 8531 -> 0 bytes .../__pycache__/develop.cpython-36.pyc | Bin 6385 -> 0 bytes .../__pycache__/dist_info.cpython-36.pyc | Bin 1352 -> 0 bytes .../__pycache__/easy_install.cpython-36.pyc | Bin 66239 -> 0 bytes .../__pycache__/egg_info.cpython-36.pyc | Bin 20935 -> 0 bytes .../__pycache__/install.cpython-36.pyc | Bin 3932 -> 0 bytes .../install_egg_info.cpython-36.pyc | Bin 2916 -> 0 bytes .../__pycache__/install_lib.cpython-36.pyc | Bin 5050 -> 0 bytes .../install_scripts.cpython-36.pyc | Bin 2237 -> 0 bytes .../__pycache__/py36compat.cpython-36.pyc | Bin 4582 -> 0 bytes .../__pycache__/register.cpython-36.pyc | Bin 552 -> 0 bytes .../command/__pycache__/rotate.cpython-36.pyc | Bin 2538 -> 0 bytes .../__pycache__/saveopts.cpython-36.pyc | Bin 883 -> 0 bytes .../command/__pycache__/sdist.cpython-36.pyc | Bin 6347 -> 0 bytes .../command/__pycache__/setopt.cpython-36.pyc | Bin 4561 -> 0 bytes .../command/__pycache__/test.cpython-36.pyc | Bin 8120 -> 0 bytes .../command/__pycache__/upload.cpython-36.pyc | Bin 1350 -> 0 bytes .../__pycache__/upload_docs.cpython-36.pyc | Bin 6059 -> 0 bytes .../site-packages/setuptools/command/alias.py | 80 - .../setuptools/command/bdist_egg.py | 502 - .../setuptools/command/bdist_rpm.py | 43 - .../setuptools/command/bdist_wininst.py | 21 - .../setuptools/command/build_clib.py | 98 - .../setuptools/command/build_ext.py | 331 - .../setuptools/command/build_py.py | 270 - .../setuptools/command/develop.py | 216 - .../setuptools/command/dist_info.py | 36 - .../setuptools/command/easy_install.py | 2389 ----- .../setuptools/command/egg_info.py | 696 -- .../setuptools/command/install.py | 125 - .../setuptools/command/install_egg_info.py | 82 - .../setuptools/command/install_lib.py | 148 - .../setuptools/command/install_scripts.py | 65 - .../setuptools/command/launcher manifest.xml | 15 - .../setuptools/command/py36compat.py | 136 - .../setuptools/command/register.py | 10 - .../setuptools/command/rotate.py | 66 - .../setuptools/command/saveopts.py | 22 - .../site-packages/setuptools/command/sdist.py | 200 - .../setuptools/command/setopt.py | 149 - .../site-packages/setuptools/command/test.py | 268 - .../setuptools/command/upload.py | 42 - .../setuptools/command/upload_docs.py | 206 - .../site-packages/setuptools/config.py | 556 -- .../site-packages/setuptools/dep_util.py | 23 - .../site-packages/setuptools/depends.py | 186 - .../site-packages/setuptools/dist.py | 1070 --- .../site-packages/setuptools/extension.py | 57 - .../setuptools/extern/__init__.py | 73 - .../__pycache__/__init__.cpython-36.pyc | Bin 2387 -> 0 bytes .../site-packages/setuptools/glibc.py | 86 - .../site-packages/setuptools/glob.py | 176 - .../site-packages/setuptools/gui-32.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/gui-64.exe | Bin 75264 -> 0 bytes .../site-packages/setuptools/gui.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/launch.py | 35 - .../site-packages/setuptools/lib2to3_ex.py | 62 - .../site-packages/setuptools/monkey.py | 197 - .../site-packages/setuptools/msvc.py | 1302 --- .../site-packages/setuptools/namespaces.py | 107 - .../site-packages/setuptools/package_index.py | 1119 --- .../site-packages/setuptools/pep425tags.py | 316 - .../site-packages/setuptools/py27compat.py | 28 - .../site-packages/setuptools/py31compat.py | 41 - .../site-packages/setuptools/py33compat.py | 54 - .../site-packages/setuptools/py36compat.py | 82 - .../site-packages/setuptools/sandbox.py | 491 - .../setuptools/script (dev).tmpl | 5 - .../site-packages/setuptools/script.tmpl | 3 - .../site-packages/setuptools/site-patch.py | 74 - .../site-packages/setuptools/ssl_support.py | 260 - .../site-packages/setuptools/unicode_utils.py | 44 - .../site-packages/setuptools/version.py | 6 - .../site-packages/setuptools/wheel.py | 163 - .../setuptools/windows_support.py | 29 - .../six-1.12.0.dist-info/INSTALLER | 1 - .../six-1.12.0.dist-info/LICENSE | 18 - .../six-1.12.0.dist-info/METADATA | 52 - .../site-packages/six-1.12.0.dist-info/RECORD | 8 - .../site-packages/six-1.12.0.dist-info/WHEEL | 6 - .../six-1.12.0.dist-info/top_level.txt | 1 - venv/lib/python3.6/site-packages/six.py | 952 -- .../urllib3-1.24.1.dist-info/INSTALLER | 1 - .../urllib3-1.24.1.dist-info/LICENSE.txt | 19 - .../urllib3-1.24.1.dist-info/METADATA | 1111 --- .../urllib3-1.24.1.dist-info/RECORD | 78 - .../urllib3-1.24.1.dist-info/WHEEL | 6 - .../urllib3-1.24.1.dist-info/top_level.txt | 1 - .../site-packages/urllib3/__init__.py | 92 - .../__pycache__/__init__.cpython-36.pyc | Bin 2144 -> 0 bytes .../__pycache__/_collections.cpython-36.pyc | Bin 10631 -> 0 bytes .../__pycache__/connection.cpython-36.pyc | Bin 10084 -> 0 bytes .../__pycache__/connectionpool.cpython-36.pyc | Bin 23606 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 10343 -> 0 bytes .../urllib3/__pycache__/fields.cpython-36.pyc | Bin 5813 -> 0 bytes .../__pycache__/filepost.cpython-36.pyc | Bin 2703 -> 0 bytes .../__pycache__/poolmanager.cpython-36.pyc | Bin 12910 -> 0 bytes .../__pycache__/request.cpython-36.pyc | Bin 5525 -> 0 bytes .../__pycache__/response.cpython-36.pyc | Bin 18725 -> 0 bytes .../site-packages/urllib3/_collections.py | 329 - .../site-packages/urllib3/connection.py | 391 - .../site-packages/urllib3/connectionpool.py | 896 -- .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 142 -> 0 bytes .../_appengine_environ.cpython-36.pyc | Bin 1038 -> 0 bytes .../__pycache__/appengine.cpython-36.pyc | Bin 8233 -> 0 bytes .../__pycache__/ntlmpool.cpython-36.pyc | Bin 3184 -> 0 bytes .../__pycache__/pyopenssl.cpython-36.pyc | Bin 14449 -> 0 bytes .../securetransport.cpython-36.pyc | Bin 17837 -> 0 bytes .../contrib/__pycache__/socks.cpython-36.pyc | Bin 4848 -> 0 bytes .../urllib3/contrib/_appengine_environ.py | 30 - .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 159 -> 0 bytes .../__pycache__/bindings.cpython-36.pyc | Bin 10374 -> 0 bytes .../__pycache__/low_level.cpython-36.pyc | Bin 7435 -> 0 bytes .../contrib/_securetransport/bindings.py | 593 -- .../contrib/_securetransport/low_level.py | 346 - .../urllib3/contrib/appengine.py | 289 - .../site-packages/urllib3/contrib/ntlmpool.py | 111 - .../urllib3/contrib/pyopenssl.py | 466 - .../urllib3/contrib/securetransport.py | 804 -- .../site-packages/urllib3/contrib/socks.py | 192 - .../site-packages/urllib3/exceptions.py | 246 - .../python3.6/site-packages/urllib3/fields.py | 178 - .../site-packages/urllib3/filepost.py | 98 - .../urllib3/packages/__init__.py | 5 - .../__pycache__/__init__.cpython-36.pyc | Bin 268 -> 0 bytes .../packages/__pycache__/six.cpython-36.pyc | Bin 24440 -> 0 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 153 -> 0 bytes .../__pycache__/makefile.cpython-36.pyc | Bin 1247 -> 0 bytes .../urllib3/packages/backports/makefile.py | 53 - .../site-packages/urllib3/packages/six.py | 868 -- .../packages/ssl_match_hostname/__init__.py | 19 - .../__pycache__/__init__.cpython-36.pyc | Bin 529 -> 0 bytes .../_implementation.cpython-36.pyc | Bin 3232 -> 0 bytes .../ssl_match_hostname/_implementation.py | 156 - .../site-packages/urllib3/poolmanager.py | 450 - .../site-packages/urllib3/request.py | 150 - .../site-packages/urllib3/response.py | 705 -- .../site-packages/urllib3/util/__init__.py | 54 - .../util/__pycache__/__init__.cpython-36.pyc | Bin 1072 -> 0 bytes .../__pycache__/connection.cpython-36.pyc | Bin 3109 -> 0 bytes .../util/__pycache__/queue.cpython-36.pyc | Bin 983 -> 0 bytes .../util/__pycache__/request.cpython-36.pyc | Bin 3164 -> 0 bytes .../util/__pycache__/response.cpython-36.pyc | Bin 1912 -> 0 bytes .../util/__pycache__/retry.cpython-36.pyc | Bin 12598 -> 0 bytes .../util/__pycache__/ssl_.cpython-36.pyc | Bin 9466 -> 0 bytes .../util/__pycache__/timeout.cpython-36.pyc | Bin 8713 -> 0 bytes .../util/__pycache__/url.cpython-36.pyc | Bin 5132 -> 0 bytes .../util/__pycache__/wait.cpython-36.pyc | Bin 3093 -> 0 bytes .../site-packages/urllib3/util/connection.py | 134 - .../site-packages/urllib3/util/queue.py | 21 - .../site-packages/urllib3/util/request.py | 118 - .../site-packages/urllib3/util/response.py | 87 - .../site-packages/urllib3/util/retry.py | 411 - .../site-packages/urllib3/util/ssl_.py | 381 - .../site-packages/urllib3/util/timeout.py | 242 - .../site-packages/urllib3/util/url.py | 230 - .../site-packages/urllib3/util/wait.py | 150 - .../site-packages/werkzeug/__init__.py | 151 - .../__pycache__/__init__.cpython-36.pyc | Bin 4696 -> 0 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 7099 -> 0 bytes .../__pycache__/_internal.cpython-36.pyc | Bin 12585 -> 0 bytes .../__pycache__/_reloader.cpython-36.pyc | Bin 8849 -> 0 bytes .../__pycache__/datastructures.cpython-36.pyc | Bin 100036 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 22930 -> 0 bytes .../__pycache__/filesystem.cpython-36.pyc | Bin 2207 -> 0 bytes .../__pycache__/formparser.cpython-36.pyc | Bin 16153 -> 0 bytes .../werkzeug/__pycache__/http.cpython-36.pyc | Bin 33459 -> 0 bytes .../werkzeug/__pycache__/local.cpython-36.pyc | Bin 18676 -> 0 bytes .../__pycache__/posixemulation.cpython-36.pyc | Bin 2768 -> 0 bytes .../__pycache__/routing.cpython-36.pyc | Bin 60150 -> 0 bytes .../__pycache__/script.cpython-36.pyc | Bin 10066 -> 0 bytes .../__pycache__/security.cpython-36.pyc | Bin 8518 -> 0 bytes .../__pycache__/serving.cpython-36.pyc | Bin 26502 -> 0 bytes .../werkzeug/__pycache__/test.cpython-36.pyc | Bin 31036 -> 0 bytes .../__pycache__/testapp.cpython-36.pyc | Bin 9425 -> 0 bytes .../werkzeug/__pycache__/urls.cpython-36.pyc | Bin 33310 -> 0 bytes .../__pycache__/useragents.cpython-36.pyc | Bin 6042 -> 0 bytes .../werkzeug/__pycache__/utils.cpython-36.pyc | Bin 21163 -> 0 bytes .../__pycache__/websocket.cpython-36.pyc | Bin 8205 -> 0 bytes .../__pycache__/wrappers.cpython-36.pyc | Bin 76410 -> 0 bytes .../werkzeug/__pycache__/wsgi.cpython-36.pyc | Bin 44665 -> 0 bytes .../site-packages/werkzeug/_compat.py | 206 - .../site-packages/werkzeug/_internal.py | 419 - .../site-packages/werkzeug/_reloader.py | 277 - .../werkzeug/contrib/__init__.py | 16 - .../__pycache__/__init__.cpython-36.pyc | Bin 751 -> 0 bytes .../contrib/__pycache__/atom.cpython-36.pyc | Bin 14063 -> 0 bytes .../contrib/__pycache__/cache.cpython-36.pyc | Bin 32376 -> 0 bytes .../contrib/__pycache__/fixers.cpython-36.pyc | Bin 10068 -> 0 bytes .../contrib/__pycache__/iterio.cpython-36.pyc | Bin 10950 -> 0 bytes .../__pycache__/jsrouting.cpython-36.pyc | Bin 8259 -> 0 bytes .../__pycache__/limiter.cpython-36.pyc | Bin 1722 -> 0 bytes .../contrib/__pycache__/lint.cpython-36.pyc | Bin 11886 -> 0 bytes .../__pycache__/profiler.cpython-36.pyc | Bin 5248 -> 0 bytes .../__pycache__/securecookie.cpython-36.pyc | Bin 10300 -> 0 bytes .../__pycache__/sessions.cpython-36.pyc | Bin 12888 -> 0 bytes .../__pycache__/testtools.cpython-36.pyc | Bin 2634 -> 0 bytes .../__pycache__/wrappers.cpython-36.pyc | Bin 10379 -> 0 bytes .../site-packages/werkzeug/contrib/atom.py | 355 - .../site-packages/werkzeug/contrib/cache.py | 913 -- .../site-packages/werkzeug/contrib/fixers.py | 254 - .../site-packages/werkzeug/contrib/iterio.py | 352 - .../werkzeug/contrib/jsrouting.py | 264 - .../site-packages/werkzeug/contrib/limiter.py | 41 - .../site-packages/werkzeug/contrib/lint.py | 343 - .../werkzeug/contrib/profiler.py | 147 - .../werkzeug/contrib/securecookie.py | 323 - .../werkzeug/contrib/sessions.py | 352 - .../werkzeug/contrib/testtools.py | 73 - .../werkzeug/contrib/wrappers.py | 284 - .../site-packages/werkzeug/datastructures.py | 2762 ------ .../site-packages/werkzeug/debug/__init__.py | 470 - .../debug/__pycache__/__init__.cpython-36.pyc | Bin 12711 -> 0 bytes .../debug/__pycache__/console.cpython-36.pyc | Bin 7325 -> 0 bytes .../debug/__pycache__/repr.cpython-36.pyc | Bin 8629 -> 0 bytes .../debug/__pycache__/tbtools.cpython-36.pyc | Bin 15647 -> 0 bytes .../site-packages/werkzeug/debug/console.py | 215 - .../site-packages/werkzeug/debug/repr.py | 280 - .../werkzeug/debug/shared/FONT_LICENSE | 96 - .../werkzeug/debug/shared/console.png | Bin 507 -> 0 bytes .../werkzeug/debug/shared/debugger.js | 205 - .../werkzeug/debug/shared/jquery.js | 5 - .../werkzeug/debug/shared/less.png | Bin 191 -> 0 bytes .../werkzeug/debug/shared/more.png | Bin 200 -> 0 bytes .../werkzeug/debug/shared/source.png | Bin 818 -> 0 bytes .../werkzeug/debug/shared/style.css | 143 - .../werkzeug/debug/shared/ubuntu.ttf | Bin 70220 -> 0 bytes .../site-packages/werkzeug/debug/tbtools.py | 556 -- .../site-packages/werkzeug/exceptions.py | 719 -- .../site-packages/werkzeug/filesystem.py | 66 - .../site-packages/werkzeug/formparser.py | 534 -- .../python3.6/site-packages/werkzeug/http.py | 1158 --- .../python3.6/site-packages/werkzeug/local.py | 420 - .../site-packages/werkzeug/posixemulation.py | 106 - .../site-packages/werkzeug/routing.py | 1792 ---- .../site-packages/werkzeug/script.py | 318 - .../site-packages/werkzeug/security.py | 270 - .../site-packages/werkzeug/serving.py | 862 -- .../python3.6/site-packages/werkzeug/test.py | 948 -- .../site-packages/werkzeug/testapp.py | 230 - .../python3.6/site-packages/werkzeug/urls.py | 1007 -- .../site-packages/werkzeug/useragents.py | 212 - .../python3.6/site-packages/werkzeug/utils.py | 628 -- .../site-packages/werkzeug/websocket.py | 337 - .../site-packages/werkzeug/wrappers.py | 2028 ---- .../python3.6/site-packages/werkzeug/wsgi.py | 1364 --- .../site-packages/wtforms/__init__.py | 16 - .../__pycache__/__init__.cpython-36.pyc | Bin 571 -> 0 bytes .../wtforms/__pycache__/compat.cpython-36.pyc | Bin 925 -> 0 bytes .../wtforms/__pycache__/form.cpython-36.pyc | Bin 11497 -> 0 bytes .../wtforms/__pycache__/i18n.cpython-36.pyc | Bin 2764 -> 0 bytes .../wtforms/__pycache__/meta.cpython-36.pyc | Bin 3804 -> 0 bytes .../wtforms/__pycache__/utils.cpython-36.pyc | Bin 2549 -> 0 bytes .../__pycache__/validators.cpython-36.pyc | Bin 20433 -> 0 bytes .../python3.6/site-packages/wtforms/compat.py | 32 - .../site-packages/wtforms/csrf/__init__.py | 0 .../csrf/__pycache__/__init__.cpython-36.pyc | Bin 139 -> 0 bytes .../csrf/__pycache__/core.cpython-36.pyc | Bin 3926 -> 0 bytes .../csrf/__pycache__/session.cpython-36.pyc | Bin 3291 -> 0 bytes .../site-packages/wtforms/csrf/core.py | 98 - .../site-packages/wtforms/csrf/session.py | 88 - .../site-packages/wtforms/ext/__init__.py | 0 .../ext/__pycache__/__init__.cpython-36.pyc | Bin 138 -> 0 bytes .../wtforms/ext/appengine/__init__.py | 8 - .../__pycache__/__init__.cpython-36.pyc | Bin 404 -> 0 bytes .../appengine/__pycache__/db.cpython-36.pyc | Bin 18665 -> 0 bytes .../__pycache__/fields.cpython-36.pyc | Bin 8158 -> 0 bytes .../appengine/__pycache__/ndb.cpython-36.pyc | Bin 17752 -> 0 bytes .../site-packages/wtforms/ext/appengine/db.py | 464 - .../wtforms/ext/appengine/fields.py | 215 - .../wtforms/ext/appengine/ndb.py | 418 - .../wtforms/ext/csrf/__init__.py | 1 - .../csrf/__pycache__/__init__.cpython-36.pyc | Bin 199 -> 0 bytes .../csrf/__pycache__/fields.cpython-36.pyc | Bin 822 -> 0 bytes .../ext/csrf/__pycache__/form.cpython-36.pyc | Bin 2300 -> 0 bytes .../csrf/__pycache__/session.cpython-36.pyc | Bin 2596 -> 0 bytes .../site-packages/wtforms/ext/csrf/fields.py | 18 - .../site-packages/wtforms/ext/csrf/form.py | 53 - .../site-packages/wtforms/ext/csrf/session.py | 71 - .../wtforms/ext/dateutil/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 147 -> 0 bytes .../__pycache__/fields.cpython-36.pyc | Bin 3074 -> 0 bytes .../wtforms/ext/dateutil/fields.py | 97 - .../wtforms/ext/django/__init__.py | 8 - .../__pycache__/__init__.cpython-36.pyc | Bin 391 -> 0 bytes .../django/__pycache__/fields.cpython-36.pyc | Bin 5085 -> 0 bytes .../django/__pycache__/i18n.cpython-36.pyc | Bin 1226 -> 0 bytes .../ext/django/__pycache__/orm.cpython-36.pyc | Bin 6612 -> 0 bytes .../wtforms/ext/django/fields.py | 133 - .../site-packages/wtforms/ext/django/i18n.py | 24 - .../site-packages/wtforms/ext/django/orm.py | 168 - .../ext/django/templatetags/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 158 -> 0 bytes .../__pycache__/wtforms.cpython-36.pyc | Bin 2907 -> 0 bytes .../ext/django/templatetags/wtforms.py | 80 - .../wtforms/ext/i18n/__init__.py | 0 .../i18n/__pycache__/__init__.cpython-36.pyc | Bin 143 -> 0 bytes .../ext/i18n/__pycache__/form.cpython-36.pyc | Bin 1872 -> 0 bytes .../ext/i18n/__pycache__/utils.cpython-36.pyc | Bin 679 -> 0 bytes .../site-packages/wtforms/ext/i18n/form.py | 45 - .../site-packages/wtforms/ext/i18n/utils.py | 15 - .../wtforms/ext/sqlalchemy/__init__.py | 10 - .../__pycache__/__init__.cpython-36.pyc | Bin 555 -> 0 bytes .../__pycache__/fields.cpython-36.pyc | Bin 7343 -> 0 bytes .../sqlalchemy/__pycache__/orm.cpython-36.pyc | Bin 9897 -> 0 bytes .../wtforms/ext/sqlalchemy/fields.py | 190 - .../wtforms/ext/sqlalchemy/orm.py | 304 - .../site-packages/wtforms/fields/__init__.py | 7 - .../__pycache__/__init__.cpython-36.pyc | Bin 359 -> 0 bytes .../fields/__pycache__/core.cpython-36.pyc | Bin 36047 -> 0 bytes .../fields/__pycache__/html5.cpython-36.pyc | Bin 3215 -> 0 bytes .../fields/__pycache__/simple.cpython-36.pyc | Bin 3227 -> 0 bytes .../site-packages/wtforms/fields/core.py | 1007 -- .../site-packages/wtforms/fields/html5.py | 95 - .../site-packages/wtforms/fields/simple.py | 84 - .../python3.6/site-packages/wtforms/form.py | 310 - .../python3.6/site-packages/wtforms/i18n.py | 75 - .../site-packages/wtforms/locale/README.md | 22 - .../wtforms/locale/ar/LC_MESSAGES/wtforms.mo | Bin 4530 -> 0 bytes .../wtforms/locale/ar/LC_MESSAGES/wtforms.po | 188 - .../wtforms/locale/bg/LC_MESSAGES/wtforms.mo | Bin 4297 -> 0 bytes .../wtforms/locale/bg/LC_MESSAGES/wtforms.po | 181 - .../wtforms/locale/ca/LC_MESSAGES/wtforms.mo | Bin 3425 -> 0 bytes .../wtforms/locale/ca/LC_MESSAGES/wtforms.po | 179 - .../locale/cs_CZ/LC_MESSAGES/wtforms.mo | Bin 3618 -> 0 bytes .../locale/cs_CZ/LC_MESSAGES/wtforms.po | 181 - .../wtforms/locale/cy/LC_MESSAGES/wtforms.mo | Bin 3371 -> 0 bytes .../wtforms/locale/cy/LC_MESSAGES/wtforms.po | 181 - .../wtforms/locale/de/LC_MESSAGES/wtforms.mo | Bin 3412 -> 0 bytes .../wtforms/locale/de/LC_MESSAGES/wtforms.po | 181 - .../locale/de_CH/LC_MESSAGES/wtforms.mo | Bin 3418 -> 0 bytes .../locale/de_CH/LC_MESSAGES/wtforms.po | 181 - .../wtforms/locale/el/LC_MESSAGES/wtforms.mo | Bin 4307 -> 0 bytes .../wtforms/locale/el/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/en/LC_MESSAGES/wtforms.mo | Bin 3285 -> 0 bytes .../wtforms/locale/en/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/es/LC_MESSAGES/wtforms.mo | Bin 3394 -> 0 bytes .../wtforms/locale/es/LC_MESSAGES/wtforms.po | 181 - .../wtforms/locale/et/LC_MESSAGES/wtforms.mo | Bin 3456 -> 0 bytes .../wtforms/locale/et/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/fa/LC_MESSAGES/wtforms.mo | Bin 4137 -> 0 bytes .../wtforms/locale/fa/LC_MESSAGES/wtforms.po | 178 - .../wtforms/locale/fi/LC_MESSAGES/wtforms.mo | Bin 3416 -> 0 bytes .../wtforms/locale/fi/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/fr/LC_MESSAGES/wtforms.mo | Bin 3484 -> 0 bytes .../wtforms/locale/fr/LC_MESSAGES/wtforms.po | 181 - .../wtforms/locale/he/LC_MESSAGES/wtforms.mo | Bin 3649 -> 0 bytes .../wtforms/locale/he/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/hu/LC_MESSAGES/wtforms.mo | Bin 3544 -> 0 bytes .../wtforms/locale/hu/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/it/LC_MESSAGES/wtforms.mo | Bin 3510 -> 0 bytes .../wtforms/locale/it/LC_MESSAGES/wtforms.po | 181 - .../wtforms/locale/ja/LC_MESSAGES/wtforms.mo | Bin 3736 -> 0 bytes .../wtforms/locale/ja/LC_MESSAGES/wtforms.po | 177 - .../wtforms/locale/ko/LC_MESSAGES/wtforms.mo | Bin 3851 -> 0 bytes .../wtforms/locale/ko/LC_MESSAGES/wtforms.po | 177 - .../wtforms/locale/nb/LC_MESSAGES/wtforms.mo | Bin 3337 -> 0 bytes .../wtforms/locale/nb/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/nl/LC_MESSAGES/wtforms.mo | Bin 3350 -> 0 bytes .../wtforms/locale/nl/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/pl/LC_MESSAGES/wtforms.mo | Bin 3610 -> 0 bytes .../wtforms/locale/pl/LC_MESSAGES/wtforms.po | 182 - .../wtforms/locale/pt/LC_MESSAGES/wtforms.mo | Bin 3438 -> 0 bytes .../wtforms/locale/pt/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/ru/LC_MESSAGES/wtforms.mo | Bin 4406 -> 0 bytes .../wtforms/locale/ru/LC_MESSAGES/wtforms.po | 184 - .../wtforms/locale/sk/LC_MESSAGES/wtforms.mo | Bin 3548 -> 0 bytes .../wtforms/locale/sk/LC_MESSAGES/wtforms.po | 181 - .../wtforms/locale/sv/LC_MESSAGES/wtforms.mo | Bin 3376 -> 0 bytes .../wtforms/locale/sv/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/tr/LC_MESSAGES/wtforms.mo | Bin 3391 -> 0 bytes .../wtforms/locale/tr/LC_MESSAGES/wtforms.po | 179 - .../wtforms/locale/uk/LC_MESSAGES/wtforms.mo | Bin 4451 -> 0 bytes .../wtforms/locale/uk/LC_MESSAGES/wtforms.po | 182 - .../site-packages/wtforms/locale/wtforms.pot | 178 - .../wtforms/locale/zh/LC_MESSAGES/wtforms.mo | Bin 3362 -> 0 bytes .../wtforms/locale/zh/LC_MESSAGES/wtforms.po | 179 - .../locale/zh_TW/LC_MESSAGES/wtforms.mo | Bin 3204 -> 0 bytes .../locale/zh_TW/LC_MESSAGES/wtforms.po | 177 - .../python3.6/site-packages/wtforms/meta.py | 121 - .../python3.6/site-packages/wtforms/utils.py | 54 - .../site-packages/wtforms/validators.py | 582 -- .../site-packages/wtforms/widgets/__init__.py | 4 - .../__pycache__/__init__.cpython-36.pyc | Bin 250 -> 0 bytes .../widgets/__pycache__/core.cpython-36.pyc | Bin 12480 -> 0 bytes .../widgets/__pycache__/html5.cpython-36.pyc | Bin 3906 -> 0 bytes .../site-packages/wtforms/widgets/core.py | 348 - .../site-packages/wtforms/widgets/html5.py | 124 - venv/lib64 | 1 - venv/pyvenv.cfg | 3 - .../CacheControl-0.11.7-py2.py3-none-any.whl | Bin 18720 -> 0 bytes .../appdirs-1.4.3-py2.py3-none-any.whl | Bin 12139 -> 0 bytes .../certifi-2018.1.18-py2.py3-none-any.whl | Bin 150807 -> 0 bytes .../chardet-3.0.4-py2.py3-none-any.whl | Bin 133328 -> 0 bytes .../colorama-0.3.7-py2.py3-none-any.whl | Bin 19915 -> 0 bytes .../distlib-0.2.6-py2.py3-none-any.whl | Bin 141707 -> 0 bytes .../distro-1.0.1-py2.py3-none-any.whl | Bin 11733 -> 0 bytes .../html5lib-0.999999999-py2.py3-none-any.whl | Bin 112620 -> 0 bytes .../idna-2.6-py2.py3-none-any.whl | Bin 56485 -> 0 bytes .../ipaddress-0.0.0-py2.py3-none-any.whl | Bin 17503 -> 0 bytes .../lockfile-0.12.2-py2.py3-none-any.whl | Bin 13506 -> 0 bytes .../packaging-17.1-py2.py3-none-any.whl | Bin 24058 -> 0 bytes .../pip-9.0.1-py2.py3-none-any.whl | Bin 159149 -> 0 bytes .../pkg_resources-0.0.0-py2.py3-none-any.whl | Bin 115663 -> 0 bytes .../progress-1.2-py2.py3-none-any.whl | Bin 9606 -> 0 bytes .../pyparsing-2.2.0-py2.py3-none-any.whl | Bin 56411 -> 0 bytes .../requests-2.18.4-py2.py3-none-any.whl | Bin 88576 -> 0 bytes .../retrying-1.3.3-py2.py3-none-any.whl | Bin 9480 -> 0 bytes .../setuptools-39.0.1-py2.py3-none-any.whl | Bin 455758 -> 0 bytes .../six-1.11.0-py2.py3-none-any.whl | Bin 10720 -> 0 bytes .../urllib3-1.22-py2.py3-none-any.whl | Bin 124700 -> 0 bytes .../webencodings-0.5-py2.py3-none-any.whl | Bin 11646 -> 0 bytes .../wheel-0.30.0-py2.py3-none-any.whl | Bin 48886 -> 0 bytes 2687 files changed, 320004 deletions(-) delete mode 100644 venv/bin/activate delete mode 100644 venv/bin/activate.csh delete mode 100644 venv/bin/activate.fish delete mode 100755 venv/bin/chardetect delete mode 100755 venv/bin/easy_install delete mode 100755 venv/bin/easy_install-3.6 delete mode 100755 venv/bin/flask delete mode 100755 venv/bin/gunicorn delete mode 100755 venv/bin/gunicorn_paster delete mode 100755 venv/bin/pip delete mode 100755 venv/bin/pip3 delete mode 100755 venv/bin/pip3.6 delete mode 100755 venv/bin/pyrsa-decrypt delete mode 100755 venv/bin/pyrsa-encrypt delete mode 100755 venv/bin/pyrsa-keygen delete mode 100755 venv/bin/pyrsa-priv2pub delete mode 100755 venv/bin/pyrsa-sign delete mode 100755 venv/bin/pyrsa-verify delete mode 120000 venv/bin/python delete mode 120000 venv/bin/python3 delete mode 100644 venv/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools-3.0.0.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/cachetools-3.0.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/cachetools-3.0.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/cachetools-3.0.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/cachetools-3.0.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/cachetools-3.0.0.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/cachetools-3.0.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__pycache__/abc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__pycache__/cache.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__pycache__/func.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__pycache__/keys.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__pycache__/lfu.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__pycache__/lru.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__pycache__/rr.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools/__pycache__/ttl.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/cachetools/abc.py delete mode 100644 venv/lib/python3.6/site-packages/cachetools/cache.py delete mode 100644 venv/lib/python3.6/site-packages/cachetools/func.py delete mode 100644 venv/lib/python3.6/site-packages/cachetools/keys.py delete mode 100644 venv/lib/python3.6/site-packages/cachetools/lfu.py delete mode 100644 venv/lib/python3.6/site-packages/cachetools/lru.py delete mode 100644 venv/lib/python3.6/site-packages/cachetools/rr.py delete mode 100644 venv/lib/python3.6/site-packages/cachetools/ttl.py delete mode 100644 venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/certifi/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/certifi/__main__.py delete mode 100644 venv/lib/python3.6/site-packages/certifi/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/certifi/__pycache__/__main__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/certifi/__pycache__/core.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/certifi/cacert.pem delete mode 100644 venv/lib/python3.6/site-packages/certifi/core.py delete mode 100644 venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/chardet/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/big5freq.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/big5prober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/chardistribution.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/charsetprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/cp949prober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/enums.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/escprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/escsm.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/eucjpprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/euckrfreq.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/euckrprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/euctwfreq.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/euctwprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/gb2312freq.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/gb2312prober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/hebrewprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/jisfreq.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/jpcntx.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/langthaimodel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/langturkishmodel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/latin1prober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/mbcharsetprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/mbcssm.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/sjisprober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/universaldetector.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/utf8prober.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/__pycache__/version.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/big5freq.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/big5prober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/chardistribution.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/charsetgroupprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/charsetprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/cli/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/cli/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/cli/__pycache__/chardetect.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/chardet/cli/chardetect.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/codingstatemachine.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/compat.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/cp949prober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/enums.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/escprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/escsm.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/eucjpprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/euckrfreq.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/euckrprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/euctwfreq.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/euctwprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/gb2312freq.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/gb2312prober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/hebrewprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/jisfreq.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/jpcntx.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/langbulgarianmodel.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/langcyrillicmodel.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/langgreekmodel.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/langhebrewmodel.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/langhungarianmodel.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/langthaimodel.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/langturkishmodel.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/latin1prober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/mbcharsetprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/mbcsgroupprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/mbcssm.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/sbcharsetprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/sbcsgroupprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/sjisprober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/universaldetector.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/utf8prober.py delete mode 100644 venv/lib/python3.6/site-packages/chardet/version.py delete mode 100644 venv/lib/python3.6/site-packages/click/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/_bashcomplete.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/_termui_impl.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/_textwrap.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/_unicodefun.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/_winconsole.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/core.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/decorators.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/exceptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/formatting.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/globals.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/parser.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/termui.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/testing.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/types.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/__pycache__/utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/click/_bashcomplete.py delete mode 100644 venv/lib/python3.6/site-packages/click/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/click/_termui_impl.py delete mode 100644 venv/lib/python3.6/site-packages/click/_textwrap.py delete mode 100644 venv/lib/python3.6/site-packages/click/_unicodefun.py delete mode 100644 venv/lib/python3.6/site-packages/click/_winconsole.py delete mode 100644 venv/lib/python3.6/site-packages/click/core.py delete mode 100644 venv/lib/python3.6/site-packages/click/decorators.py delete mode 100644 venv/lib/python3.6/site-packages/click/exceptions.py delete mode 100644 venv/lib/python3.6/site-packages/click/formatting.py delete mode 100644 venv/lib/python3.6/site-packages/click/globals.py delete mode 100644 venv/lib/python3.6/site-packages/click/parser.py delete mode 100644 venv/lib/python3.6/site-packages/click/termui.py delete mode 100644 venv/lib/python3.6/site-packages/click/testing.py delete mode 100644 venv/lib/python3.6/site-packages/click/types.py delete mode 100644 venv/lib/python3.6/site-packages/click/utils.py delete mode 100644 venv/lib/python3.6/site-packages/easy_install.py delete mode 100644 venv/lib/python3.6/site-packages/flask/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/flask/__main__.py delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/__main__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/app.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/blueprints.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/cli.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/ctx.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/debughelpers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/globals.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/helpers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/logging.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/sessions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/signals.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/templating.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/testing.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/views.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/__pycache__/wrappers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/flask/app.py delete mode 100644 venv/lib/python3.6/site-packages/flask/blueprints.py delete mode 100644 venv/lib/python3.6/site-packages/flask/cli.py delete mode 100644 venv/lib/python3.6/site-packages/flask/config.py delete mode 100644 venv/lib/python3.6/site-packages/flask/ctx.py delete mode 100644 venv/lib/python3.6/site-packages/flask/debughelpers.py delete mode 100644 venv/lib/python3.6/site-packages/flask/globals.py delete mode 100644 venv/lib/python3.6/site-packages/flask/helpers.py delete mode 100644 venv/lib/python3.6/site-packages/flask/json/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/flask/json/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/json/__pycache__/tag.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask/json/tag.py delete mode 100644 venv/lib/python3.6/site-packages/flask/logging.py delete mode 100644 venv/lib/python3.6/site-packages/flask/sessions.py delete mode 100644 venv/lib/python3.6/site-packages/flask/signals.py delete mode 100644 venv/lib/python3.6/site-packages/flask/templating.py delete mode 100644 venv/lib/python3.6/site-packages/flask/testing.py delete mode 100644 venv/lib/python3.6/site-packages/flask/views.py delete mode 100644 venv/lib/python3.6/site-packages/flask/wrappers.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/__pycache__/csrf.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/__pycache__/file.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/__pycache__/form.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/__pycache__/html5.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/__pycache__/i18n.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/csrf.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/file.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/form.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/html5.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/i18n.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/recaptcha/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/recaptcha/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/recaptcha/__pycache__/fields.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/recaptcha/__pycache__/validators.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/recaptcha/__pycache__/widgets.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/recaptcha/fields.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/recaptcha/validators.py delete mode 100644 venv/lib/python3.6/site-packages/flask_wtf/recaptcha/widgets.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/annotations_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/auth_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/backend_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/billing_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/config_change_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/consumer_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/context_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/control_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/distribution_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/documentation_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/endpoint_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/http_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/httpbody_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/label_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/log_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/logging_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/metric_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/monitored_resource_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/monitoring_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/quota_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/service_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/source_info_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/system_parameter_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/__pycache__/usage_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api/annotations_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/auth_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/backend_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/billing_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/config_change_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/consumer_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/context_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/control_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/distribution_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/documentation_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/endpoint_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/http_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/httpbody_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/label_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/log_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/logging_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/metric_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/monitored_resource_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/monitoring_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/quota_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/service_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/source_info_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/system_parameter_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api/usage_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/bidi.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/datetime_helpers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/exceptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/general_helpers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/grpc_helpers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/iam.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/operation.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/page_iterator.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/path_template.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/protobuf_helpers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/retry.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/__pycache__/timeout.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/bidi.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/datetime_helpers.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/exceptions.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/future/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/_helpers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/base.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/polling.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/future/_helpers.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/future/base.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/future/polling.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/__pycache__/client_info.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/__pycache__/config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/__pycache__/method.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/__pycache__/routing_header.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/client_info.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/config.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/method.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/gapic_v1/routing_header.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/general_helpers.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/grpc_helpers.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/iam.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/operation.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/operations_v1/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/operations_v1/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/operations_v1/__pycache__/operations_client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/operations_v1/__pycache__/operations_client_config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/operations_v1/operations_client.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/operations_v1/operations_client_config.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/page_iterator.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/path_template.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/protobuf_helpers.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/retry.py delete mode 100644 venv/lib/python3.6/site-packages/google/api_core/timeout.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/_cloud_sdk.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/_default.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/_helpers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/_oauth2client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/_service_account_info.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/app_engine.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/credentials.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/environment_vars.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/exceptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/iam.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/impersonated_credentials.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/__pycache__/jwt.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/_cloud_sdk.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/_default.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/_helpers.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/_oauth2client.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/_service_account_info.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/app_engine.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/compute_engine/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/compute_engine/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/compute_engine/__pycache__/_metadata.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/compute_engine/__pycache__/credentials.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/compute_engine/_metadata.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/compute_engine/credentials.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/credentials.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/__pycache__/_cryptography_rsa.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/__pycache__/_helpers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/__pycache__/_python_rsa.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/__pycache__/base.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/__pycache__/rsa.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/_cryptography_rsa.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/_helpers.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/_python_rsa.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/base.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/crypt/rsa.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/environment_vars.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/exceptions.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/iam.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/impersonated_credentials.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/jwt.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/__pycache__/_http_client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/__pycache__/grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/__pycache__/requests.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/__pycache__/urllib3.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/_http_client.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/requests.py delete mode 100644 venv/lib/python3.6/site-packages/google/auth/transport/urllib3.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/__pycache__/vision.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_helpers/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_helpers/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_helpers/__pycache__/decorators.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_helpers/decorators.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/__pycache__/types.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/__pycache__/enums.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/__pycache__/image_annotator_client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/__pycache__/image_annotator_client_config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/__pycache__/product_search_client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/__pycache__/product_search_client_config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/enums.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/image_annotator_client.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/image_annotator_client_config.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/product_search_client.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/product_search_client_config.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/transports/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/transports/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/transports/__pycache__/image_annotator_grpc_transport.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/transports/__pycache__/product_search_grpc_transport.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/transports/image_annotator_grpc_transport.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/gapic/transports/product_search_grpc_transport.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/geometry_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/geometry_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/image_annotator_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/image_annotator_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/product_search_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/product_search_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/product_search_service_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/product_search_service_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/text_annotation_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/text_annotation_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/web_detection_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/__pycache__/web_detection_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/geometry_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/geometry_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/image_annotator_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/image_annotator_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/product_search_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/product_search_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/product_search_service_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/product_search_service_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/text_annotation_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/text_annotation_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/web_detection_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/proto/web_detection_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1/types.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/__pycache__/types.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/__pycache__/enums.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/__pycache__/image_annotator_client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/__pycache__/image_annotator_client_config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/enums.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/image_annotator_client.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/image_annotator_client_config.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/transports/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/transports/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/transports/__pycache__/image_annotator_grpc_transport.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/gapic/transports/image_annotator_grpc_transport.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__pycache__/geometry_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__pycache__/geometry_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__pycache__/image_annotator_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__pycache__/image_annotator_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__pycache__/text_annotation_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__pycache__/text_annotation_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__pycache__/web_detection_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/__pycache__/web_detection_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/geometry_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/geometry_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/image_annotator_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/image_annotator_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/text_annotation_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/text_annotation_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/web_detection_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/proto/web_detection_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p1beta1/types.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/__pycache__/types.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/__pycache__/enums.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/__pycache__/image_annotator_client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/__pycache__/image_annotator_client_config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/enums.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/image_annotator_client.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/image_annotator_client_config.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/transports/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/transports/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/transports/__pycache__/image_annotator_grpc_transport.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/gapic/transports/image_annotator_grpc_transport.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__pycache__/geometry_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__pycache__/geometry_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__pycache__/image_annotator_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__pycache__/image_annotator_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__pycache__/text_annotation_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__pycache__/text_annotation_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__pycache__/web_detection_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/__pycache__/web_detection_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/geometry_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/geometry_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/image_annotator_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/image_annotator_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/text_annotation_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/text_annotation_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/web_detection_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/proto/web_detection_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p2beta1/types.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/__pycache__/types.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/__pycache__/enums.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/__pycache__/image_annotator_client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/__pycache__/image_annotator_client_config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/__pycache__/product_search_client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/__pycache__/product_search_client_config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/enums.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/image_annotator_client.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/image_annotator_client_config.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/product_search_client.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/product_search_client_config.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/transports/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/transports/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/transports/__pycache__/image_annotator_grpc_transport.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/transports/__pycache__/product_search_grpc_transport.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/transports/image_annotator_grpc_transport.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/gapic/transports/product_search_grpc_transport.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/geometry_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/geometry_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/image_annotator_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/image_annotator_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/product_search_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/product_search_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/product_search_service_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/product_search_service_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/text_annotation_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/text_annotation_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/web_detection_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/__pycache__/web_detection_pb2_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/geometry_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/geometry_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/image_annotator_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/image_annotator_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/product_search_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/product_search_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/product_search_service_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/product_search_service_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/text_annotation_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/text_annotation_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/web_detection_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/proto/web_detection_pb2_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/cloud/vision_v1p3beta1/types.py delete mode 100644 venv/lib/python3.6/site-packages/google/logging/type/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/logging/type/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/logging/type/__pycache__/http_request_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/logging/type/__pycache__/log_severity_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/logging/type/http_request_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/logging/type/log_severity_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/__pycache__/operations_grpc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/__pycache__/operations_grpc_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/__pycache__/operations_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/__pycache__/operations_proto.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/__pycache__/operations_proto_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/operations_grpc.py delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/operations_grpc_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/operations_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/operations_proto.py delete mode 100644 venv/lib/python3.6/site-packages/google/longrunning/operations_proto_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/__pycache__/_client.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/__pycache__/credentials.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/__pycache__/id_token.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/__pycache__/service_account.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/_client.py delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/credentials.py delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/id_token.py delete mode 100644 venv/lib/python3.6/site-packages/google/oauth2/service_account.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/any_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/any_test_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/api_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/descriptor.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/descriptor_database.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/descriptor_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/descriptor_pool.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/duration_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/empty_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/field_mask_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/json_format.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/map_proto2_unittest_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/map_unittest_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/message.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/message_factory.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/proto_builder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/reflection.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/service.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/service_reflection.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/source_context_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/struct_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/symbol_database.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/test_messages_proto2_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/test_messages_proto3_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/text_encoding.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/text_format.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/timestamp_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/type_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_arena_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_custom_options_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_import_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_import_public_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_mset_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_mset_wire_format_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_no_arena_import_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_no_arena_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_no_generic_services_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/unittest_proto3_arena_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/__pycache__/wrappers_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/any_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/any_test_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/api_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/compiler/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/compiler/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/compiler/__pycache__/plugin_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/compiler/plugin_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/descriptor.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/descriptor_database.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/descriptor_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/descriptor_pool.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/duration_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/empty_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/field_mask_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/_parameterized.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/any_test_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/api_implementation.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/containers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/decoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/descriptor_database_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/descriptor_pool_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/descriptor_pool_test1_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/descriptor_pool_test2_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/descriptor_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/encoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/enum_type_wrapper.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/factory_test1_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/factory_test2_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/file_options_test_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/generator_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/json_format_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/message_factory_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/message_listener.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/message_set_extensions_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/message_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/missing_enum_values_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/more_extensions_dynamic_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/more_extensions_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/more_messages_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/no_package_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/packed_field_test_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/proto_builder_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/python_message.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/reflection_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/service_reflection_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/symbol_database_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/test_bad_identifiers_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/test_util.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/testing_refleaks.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/text_encoding_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/text_format_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/type_checkers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/unknown_fields_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/well_known_types.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/well_known_types_test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/wire_format.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/__pycache__/wire_format_test.cpython-36.pyc delete mode 100755 venv/lib/python3.6/site-packages/google/protobuf/internal/_api_implementation.cpython-36m-x86_64-linux-gnu.so delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/_parameterized.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/any_test_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/api_implementation.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/containers.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/decoder.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/descriptor_database_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/descriptor_pool_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/descriptor_pool_test1_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/descriptor_pool_test2_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/descriptor_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/encoder.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/enum_type_wrapper.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/factory_test1_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/factory_test2_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/file_options_test_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/generator_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/import_test_package/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/import_test_package/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/import_test_package/__pycache__/inner_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/import_test_package/__pycache__/outer_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/import_test_package/inner_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/import_test_package/outer_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/json_format_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/message_factory_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/message_listener.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/message_set_extensions_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/message_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/missing_enum_values_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/more_extensions_dynamic_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/more_extensions_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/more_messages_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/no_package_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/packed_field_test_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/proto_builder_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/python_message.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/reflection_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/service_reflection_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/symbol_database_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/test_bad_identifiers_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/test_util.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/testing_refleaks.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/text_encoding_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/text_format_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/type_checkers.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/unknown_fields_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/well_known_types.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/well_known_types_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/wire_format.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/internal/wire_format_test.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/json_format.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/map_proto2_unittest_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/map_unittest_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/message.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/message_factory.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/proto_builder.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/pyext/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/pyext/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/pyext/__pycache__/cpp_message.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/pyext/__pycache__/python_pb2.cpython-36.pyc delete mode 100755 venv/lib/python3.6/site-packages/google/protobuf/pyext/_message.cpython-36m-x86_64-linux-gnu.so delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/pyext/cpp_message.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/pyext/python_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/reflection.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/service.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/service_reflection.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/source_context_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/struct_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/symbol_database.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/test_messages_proto2_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/test_messages_proto3_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/text_encoding.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/text_format.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/timestamp_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/type_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_arena_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_custom_options_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_import_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_import_public_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_mset_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_mset_wire_format_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_no_arena_import_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_no_arena_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_no_generic_services_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/unittest_proto3_arena_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/util/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/util/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/util/__pycache__/json_format_proto3_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/util/json_format_proto3_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/protobuf/wrappers_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/rpc/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/rpc/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/rpc/__pycache__/code_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/rpc/__pycache__/error_details_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/rpc/__pycache__/status_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/rpc/code_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/rpc/error_details_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/rpc/status_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/type/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/google/type/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/type/__pycache__/color_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/type/__pycache__/date_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/type/__pycache__/dayofweek_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/type/__pycache__/latlng_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/type/__pycache__/money_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/type/__pycache__/postal_address_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/type/__pycache__/timeofday_pb2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/google/type/color_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/type/date_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/type/dayofweek_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/type/latlng_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/type/money_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/type/postal_address_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google/type/timeofday_pb2.py delete mode 100644 venv/lib/python3.6/site-packages/google_api_core-1.6.0-py3.6-nspkg.pth delete mode 100644 venv/lib/python3.6/site-packages/google_api_core-1.6.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/google_api_core-1.6.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.6/site-packages/google_api_core-1.6.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/google_api_core-1.6.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/google_api_core-1.6.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/google_api_core-1.6.0.dist-info/namespace_packages.txt delete mode 100644 venv/lib/python3.6/site-packages/google_api_core-1.6.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/google_auth-1.6.1-py3.7-nspkg.pth delete mode 100644 venv/lib/python3.6/site-packages/google_auth-1.6.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/google_auth-1.6.1.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/google_auth-1.6.1.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/google_auth-1.6.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/google_auth-1.6.1.dist-info/namespace_packages.txt delete mode 100644 venv/lib/python3.6/site-packages/google_auth-1.6.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/google_cloud_vision-0.35.1-py3.6-nspkg.pth delete mode 100644 venv/lib/python3.6/site-packages/google_cloud_vision-0.35.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/google_cloud_vision-0.35.1.dist-info/LICENSE delete mode 100644 venv/lib/python3.6/site-packages/google_cloud_vision-0.35.1.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/google_cloud_vision-0.35.1.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/google_cloud_vision-0.35.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/google_cloud_vision-0.35.1.dist-info/namespace_packages.txt delete mode 100644 venv/lib/python3.6/site-packages/google_cloud_vision-0.35.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/googleapis_common_protos-1.5.5-nspkg.pth delete mode 100644 venv/lib/python3.6/site-packages/googleapis_common_protos-1.5.5.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/googleapis_common_protos-1.5.5.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/googleapis_common_protos-1.5.5.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/googleapis_common_protos-1.5.5.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/googleapis_common_protos-1.5.5.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/googleapis_common_protos-1.5.5.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/googleapis_common_protos-1.5.5.dist-info/namespace_packages.txt delete mode 100644 venv/lib/python3.6/site-packages/googleapis_common_protos-1.5.5.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/grpc/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/__pycache__/_auth.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/__pycache__/_channel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/__pycache__/_common.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/__pycache__/_grpcio_metadata.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/__pycache__/_interceptor.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/__pycache__/_plugin_wrapping.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/__pycache__/_server.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/__pycache__/_utilities.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/_auth.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/_channel.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/_common.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/_cython/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/_cython/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/_cython/_credentials/roots.pem delete mode 100644 venv/lib/python3.6/site-packages/grpc/_cython/_cygrpc/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/_cython/_cygrpc/__pycache__/__init__.cpython-36.pyc delete mode 100755 venv/lib/python3.6/site-packages/grpc/_cython/cygrpc.cpython-36m-x86_64-linux-gnu.so delete mode 100644 venv/lib/python3.6/site-packages/grpc/_grpcio_metadata.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/_interceptor.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/_plugin_wrapping.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/_server.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/_utilities.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/__pycache__/_client_adaptations.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/__pycache__/_metadata.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/__pycache__/_server_adaptations.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/__pycache__/implementations.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/__pycache__/interfaces.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/__pycache__/utilities.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/_client_adaptations.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/_metadata.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/_server_adaptations.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/implementations.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/interfaces.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/beta/utilities.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/experimental/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/experimental/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/experimental/__pycache__/gevent.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/experimental/__pycache__/session_cache.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/experimental/gevent.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/experimental/session_cache.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/common/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/common/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/common/__pycache__/cardinality.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/common/__pycache__/style.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/common/cardinality.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/common/style.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/__pycache__/abandonment.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/__pycache__/callable_util.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/__pycache__/future.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/__pycache__/logging_pool.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/__pycache__/stream.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/__pycache__/stream_util.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/abandonment.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/callable_util.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/future.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/logging_pool.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/stream.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/foundation/stream_util.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/base/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/base/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/base/__pycache__/base.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/base/__pycache__/utilities.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/base/base.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/base/utilities.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/face/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/face/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/face/__pycache__/face.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/face/__pycache__/utilities.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/face/face.py delete mode 100644 venv/lib/python3.6/site-packages/grpc/framework/interfaces/face/utilities.py delete mode 100644 venv/lib/python3.6/site-packages/grpcio-1.17.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/grpcio-1.17.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/grpcio-1.17.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/grpcio-1.17.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/grpcio-1.17.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/gunicorn-19.9.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/gunicorn-19.9.0.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/gunicorn-19.9.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/gunicorn-19.9.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/gunicorn-19.9.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/gunicorn-19.9.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.6/site-packages/gunicorn-19.9.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/arbiter.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/argparse_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/debug.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/errors.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/glogging.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/pidfile.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/reloader.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/selectors.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/six.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/sock.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/systemd.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/__pycache__/util.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/app/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/app/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/app/__pycache__/base.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/app/__pycache__/pasterapp.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/app/__pycache__/wsgiapp.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/app/base.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/app/pasterapp.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/arbiter.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/argparse_compat.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/config.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/debug.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/errors.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/glogging.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/__pycache__/_sendfile.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/__pycache__/body.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/__pycache__/errors.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/__pycache__/message.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/__pycache__/parser.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/__pycache__/unreader.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/__pycache__/wsgi.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/_sendfile.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/body.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/errors.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/message.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/parser.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/unreader.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/http/wsgi.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/instrument/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/instrument/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/instrument/__pycache__/statsd.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/instrument/statsd.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/pidfile.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/reloader.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/selectors.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/six.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/sock.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/systemd.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/util.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/_gaiohttp.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/base.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/base_async.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/gaiohttp.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/geventlet.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/ggevent.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/gthread.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/gtornado.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/sync.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/__pycache__/workertmp.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/_gaiohttp.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/base.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/base_async.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/gaiohttp.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/geventlet.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/ggevent.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/gthread.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/gtornado.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/sync.py delete mode 100644 venv/lib/python3.6/site-packages/gunicorn/workers/workertmp.py delete mode 100644 venv/lib/python3.6/site-packages/idna-2.8.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/idna-2.8.dist-info/LICENSE.rst delete mode 100644 venv/lib/python3.6/site-packages/idna-2.8.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/idna-2.8.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/idna-2.8.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/idna-2.8.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/idna/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/idna/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/idna/__pycache__/codec.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/idna/__pycache__/compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/idna/__pycache__/core.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/idna/__pycache__/idnadata.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/idna/__pycache__/intranges.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/idna/__pycache__/package_data.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/idna/__pycache__/uts46data.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/idna/codec.py delete mode 100644 venv/lib/python3.6/site-packages/idna/compat.py delete mode 100644 venv/lib/python3.6/site-packages/idna/core.py delete mode 100644 venv/lib/python3.6/site-packages/idna/idnadata.py delete mode 100644 venv/lib/python3.6/site-packages/idna/intranges.py delete mode 100644 venv/lib/python3.6/site-packages/idna/package_data.py delete mode 100644 venv/lib/python3.6/site-packages/idna/uts46data.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/LICENSE.rst delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/_json.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/encoding.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/exc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/jws.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/serializer.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/signer.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/timed.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/__pycache__/url_safe.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/_json.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/encoding.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/exc.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/jws.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/serializer.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/signer.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/timed.py delete mode 100644 venv/lib/python3.6/site-packages/itsdangerous/url_safe.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/_identifier.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/asyncfilters.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/asyncsupport.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/bccache.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/compiler.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/constants.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/debug.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/defaults.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/environment.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/exceptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/ext.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/filters.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/idtracking.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/lexer.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/loaders.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/meta.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/nativetypes.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/nodes.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/optimizer.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/parser.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/runtime.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/sandbox.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/tests.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/__pycache__/visitor.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/jinja2/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/_identifier.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/asyncfilters.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/asyncsupport.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/bccache.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/compiler.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/constants.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/debug.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/defaults.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/environment.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/exceptions.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/ext.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/filters.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/idtracking.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/lexer.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/loaders.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/meta.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/nativetypes.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/nodes.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/optimizer.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/parser.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/runtime.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/sandbox.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/tests.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/utils.py delete mode 100644 venv/lib/python3.6/site-packages/jinja2/visitor.py delete mode 100644 venv/lib/python3.6/site-packages/markupsafe/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/markupsafe/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/markupsafe/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/markupsafe/__pycache__/_constants.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/markupsafe/__pycache__/_native.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/markupsafe/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/markupsafe/_constants.py delete mode 100644 venv/lib/python3.6/site-packages/markupsafe/_native.py delete mode 100644 venv/lib/python3.6/site-packages/markupsafe/_speedups.c delete mode 100755 venv/lib/python3.6/site-packages/markupsafe/_speedups.cpython-36m-x86_64-linux-gnu.so delete mode 100644 venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/pip/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/__main__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/__main__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/basecommand.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/baseparser.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/cmdoptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/download.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/exceptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/index.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/locations.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/pep425tags.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/status_codes.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/__pycache__/wheel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/_vendor/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/_vendor/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/basecommand.py delete mode 100644 venv/lib/python3.6/site-packages/pip/baseparser.py delete mode 100644 venv/lib/python3.6/site-packages/pip/cmdoptions.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/check.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/completion.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/download.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/freeze.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/hash.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/help.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/install.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/list.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/search.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/show.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/uninstall.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/__pycache__/wheel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/check.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/completion.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/download.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/freeze.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/hash.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/help.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/install.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/list.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/search.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/show.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/uninstall.py delete mode 100644 venv/lib/python3.6/site-packages/pip/commands/wheel.py delete mode 100644 venv/lib/python3.6/site-packages/pip/compat/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/compat/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/compat/__pycache__/dictconfig.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/compat/dictconfig.py delete mode 100644 venv/lib/python3.6/site-packages/pip/download.py delete mode 100644 venv/lib/python3.6/site-packages/pip/exceptions.py delete mode 100644 venv/lib/python3.6/site-packages/pip/index.py delete mode 100644 venv/lib/python3.6/site-packages/pip/locations.py delete mode 100644 venv/lib/python3.6/site-packages/pip/models/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/models/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/models/__pycache__/index.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/models/index.py delete mode 100644 venv/lib/python3.6/site-packages/pip/operations/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/operations/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/operations/__pycache__/check.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/operations/__pycache__/freeze.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/operations/check.py delete mode 100644 venv/lib/python3.6/site-packages/pip/operations/freeze.py delete mode 100644 venv/lib/python3.6/site-packages/pip/pep425tags.py delete mode 100644 venv/lib/python3.6/site-packages/pip/req/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/req/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/req/__pycache__/req_file.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/req/__pycache__/req_install.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/req/__pycache__/req_set.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/req/__pycache__/req_uninstall.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/req/req_file.py delete mode 100644 venv/lib/python3.6/site-packages/pip/req/req_install.py delete mode 100644 venv/lib/python3.6/site-packages/pip/req/req_set.py delete mode 100644 venv/lib/python3.6/site-packages/pip/req/req_uninstall.py delete mode 100644 venv/lib/python3.6/site-packages/pip/status_codes.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/appdirs.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/build.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/deprecation.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/encoding.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/filesystem.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/glibc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/hashes.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/logging.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/outdated.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/packaging.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/setuptools_build.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/__pycache__/ui.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/appdirs.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/build.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/deprecation.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/encoding.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/filesystem.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/glibc.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/hashes.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/logging.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/outdated.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/packaging.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/setuptools_build.py delete mode 100644 venv/lib/python3.6/site-packages/pip/utils/ui.py delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/__pycache__/bazaar.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/__pycache__/git.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/__pycache__/mercurial.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/__pycache__/subversion.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/bazaar.py delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/git.py delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/mercurial.py delete mode 100644 venv/lib/python3.6/site-packages/pip/vcs/subversion.py delete mode 100644 venv/lib/python3.6/site-packages/pip/wheel.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/__pycache__/py31compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/appdirs.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__about__.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_structures.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/markers.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/specifiers.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/utils.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/version.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/_vendor/six.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/extern/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pkg_resources/py31compat.py delete mode 100644 venv/lib/python3.6/site-packages/protobuf-3.6.1-py3.6-nspkg.pth delete mode 100644 venv/lib/python3.6/site-packages/protobuf-3.6.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/protobuf-3.6.1.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/protobuf-3.6.1.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/protobuf-3.6.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/protobuf-3.6.1.dist-info/namespace_packages.txt delete mode 100644 venv/lib/python3.6/site-packages/protobuf-3.6.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/pyasn1-0.4.4.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/pyasn1-0.4.4.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/pyasn1-0.4.4.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/pyasn1-0.4.4.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/pyasn1-0.4.4.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/pyasn1-0.4.4.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/pyasn1-0.4.4.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/pyasn1-0.4.4.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/pyasn1-0.4.4.dist-info/zip-safe delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/__pycache__/debug.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/__pycache__/error.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/ber/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/ber/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/ber/__pycache__/decoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/ber/__pycache__/encoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/ber/__pycache__/eoo.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/ber/decoder.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/ber/encoder.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/ber/eoo.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/cer/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/cer/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/cer/__pycache__/decoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/cer/__pycache__/encoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/cer/decoder.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/cer/encoder.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/der/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/der/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/der/__pycache__/decoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/der/__pycache__/encoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/der/decoder.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/der/encoder.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/native/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/native/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/native/__pycache__/decoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/native/__pycache__/encoder.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/native/decoder.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/codec/native/encoder.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/__pycache__/binary.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/__pycache__/calling.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/__pycache__/dateandtime.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/__pycache__/integer.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/__pycache__/octets.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/__pycache__/string.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/binary.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/calling.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/dateandtime.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/integer.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/octets.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/compat/string.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/debug.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/error.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/base.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/char.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/constraint.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/error.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/namedtype.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/namedval.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/opentype.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/tag.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/tagmap.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/univ.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/__pycache__/useful.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/base.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/char.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/constraint.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/error.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/namedtype.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/namedval.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/opentype.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/tag.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/tagmap.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/univ.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1/type/useful.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules-0.2.2.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules-0.2.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules-0.2.2.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules-0.2.2.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules-0.2.2.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules-0.2.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules-0.2.2.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules-0.2.2.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules-0.2.2.dist-info/zip-safe delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/pem.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc1155.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc1157.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc1901.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc1902.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc1905.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc2251.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc2314.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc2315.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc2437.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc2459.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc2511.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc2560.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc2986.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc3279.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc3280.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc3281.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc3412.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc3414.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc3447.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc3852.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc4210.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc4211.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc5208.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc5280.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc5652.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/__pycache__/rfc6402.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/pem.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc1155.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc1157.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc1901.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc1902.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc1905.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc2251.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc2314.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc2315.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc2437.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc2459.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc2511.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc2560.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc2986.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc3279.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc3280.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc3281.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc3412.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc3414.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc3447.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc3852.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc4210.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc4211.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc5208.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc5280.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc5652.py delete mode 100644 venv/lib/python3.6/site-packages/pyasn1_modules/rfc6402.py delete mode 100644 venv/lib/python3.6/site-packages/pytz-2018.7.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/pytz-2018.7.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/pytz-2018.7.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/pytz-2018.7.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/pytz-2018.7.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/pytz-2018.7.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/pytz-2018.7.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/pytz-2018.7.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/pytz-2018.7.dist-info/zip-safe delete mode 100644 venv/lib/python3.6/site-packages/pytz/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/pytz/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pytz/__pycache__/exceptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pytz/__pycache__/lazy.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pytz/__pycache__/reference.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pytz/__pycache__/tzfile.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pytz/__pycache__/tzinfo.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/pytz/exceptions.py delete mode 100644 venv/lib/python3.6/site-packages/pytz/lazy.py delete mode 100644 venv/lib/python3.6/site-packages/pytz/reference.py delete mode 100644 venv/lib/python3.6/site-packages/pytz/tzfile.py delete mode 100644 venv/lib/python3.6/site-packages/pytz/tzinfo.py delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Abidjan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Accra delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Addis_Ababa delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Algiers delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmara delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmera delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bamako delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bangui delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Banjul delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bissau delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Blantyre delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Brazzaville delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bujumbura delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Cairo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Casablanca delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ceuta delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Conakry delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dakar delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dar_es_Salaam delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Djibouti delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Douala delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/El_Aaiun delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Freetown delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Gaborone delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Harare delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Johannesburg delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Juba delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kampala delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Khartoum delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kigali delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kinshasa delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lagos delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Libreville delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lome delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Luanda delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lubumbashi delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lusaka delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Malabo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maputo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maseru delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mbabane delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mogadishu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Monrovia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nairobi delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ndjamena delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Niamey delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nouakchott delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ouagadougou delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Porto-Novo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Sao_Tome delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Timbuktu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tripoli delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tunis delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Windhoek delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Adak delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Anchorage delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Anguilla delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Antigua delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Araguaina delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Buenos_Aires delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Catamarca delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/ComodRivadavia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Cordoba delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Jujuy delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/La_Rioja delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Mendoza delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Rio_Gallegos delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Salta delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Juan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Luis delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Tucuman delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Ushuaia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Aruba delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Asuncion delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Atikokan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Atka delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia_Banderas delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Barbados delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Belem delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Belize delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Blanc-Sablon delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Boa_Vista delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Bogota delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Boise delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Buenos_Aires delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Cambridge_Bay delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Campo_Grande delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Cancun delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Caracas delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Catamarca delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayenne delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayman delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Chicago delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Chihuahua delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Coral_Harbour delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Cordoba delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Costa_Rica delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Creston delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Cuiaba delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Curacao delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Danmarkshavn delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson_Creek delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Denver delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Detroit delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Dominica delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Edmonton delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Eirunepe delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/El_Salvador delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Ensenada delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Nelson delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Wayne delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Fortaleza delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Glace_Bay delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Godthab delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Goose_Bay delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Grand_Turk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Grenada delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Guadeloupe delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Guatemala delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Guayaquil delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Guyana delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Halifax delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Havana delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Hermosillo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Indianapolis delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Knox delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Marengo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Petersburg delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Tell_City delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vevay delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vincennes delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Winamac delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Indianapolis delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Inuvik delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Iqaluit delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Jamaica delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Jujuy delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Juneau delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Louisville delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Monticello delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Knox_IN delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Kralendijk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/La_Paz delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Lima delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Los_Angeles delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Louisville delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Lower_Princes delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Maceio delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Managua delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Manaus delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Marigot delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Martinique delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Matamoros delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Mazatlan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Mendoza delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Menominee delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Merida delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Metlakatla delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Mexico_City delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Miquelon delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Moncton delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Monterrey delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Montevideo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Montreal delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Montserrat delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Nassau delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/New_York delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Nipigon delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Nome delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Noronha delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Beulah delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Center delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/New_Salem delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Ojinaga delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Panama delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Pangnirtung delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Paramaribo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Phoenix delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Port-au-Prince delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Port_of_Spain delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Acre delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Velho delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Puerto_Rico delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Punta_Arenas delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Rainy_River delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Rankin_Inlet delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Recife delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Regina delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Resolute delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Rio_Branco delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Rosario delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Santa_Isabel delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Santarem delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Santiago delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Santo_Domingo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Sao_Paulo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Scoresbysund delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Shiprock delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Sitka delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Barthelemy delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Johns delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Kitts delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Lucia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Thomas delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Vincent delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Swift_Current delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Tegucigalpa delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Thule delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Thunder_Bay delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Tijuana delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Toronto delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Tortola delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Vancouver delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Virgin delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Whitehorse delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Winnipeg delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Yakutat delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/America/Yellowknife delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Casey delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Davis delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/DumontDUrville delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Macquarie delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Mawson delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/McMurdo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Palmer delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Rothera delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/South_Pole delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Syowa delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Troll delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Vostok delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Arctic/Longyearbyen delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aden delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Almaty delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Amman delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Anadyr delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtau delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtobe delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashgabat delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashkhabad delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Atyrau delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baghdad delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bahrain delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baku delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bangkok delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Barnaul delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Beirut delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bishkek delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Brunei delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Calcutta delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chita delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Choibalsan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chongqing delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chungking delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Colombo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dacca delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Damascus delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dhaka delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dili delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dubai delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dushanbe delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Famagusta delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Gaza delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Harbin delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hebron delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ho_Chi_Minh delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hong_Kong delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hovd delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Irkutsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Istanbul delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jakarta delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jayapura delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jerusalem delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kabul delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kamchatka delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Karachi delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kashgar delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kathmandu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Katmandu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Khandyga delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kolkata delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Krasnoyarsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuala_Lumpur delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuching delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuwait delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macao delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macau delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Magadan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Makassar delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Manila delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Muscat delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Nicosia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novokuznetsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novosibirsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Omsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Oral delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Phnom_Penh delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pontianak delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pyongyang delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qatar delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qyzylorda delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Rangoon delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Riyadh delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Saigon delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Sakhalin delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Samarkand delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Seoul delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Shanghai delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Singapore delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Srednekolymsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Taipei delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tashkent delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tbilisi delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tehran delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tel_Aviv delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimbu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimphu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tokyo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tomsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ujung_Pandang delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulaanbaatar delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulan_Bator delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Urumqi delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ust-Nera delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vientiane delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vladivostok delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yakutsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yangon delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yekaterinburg delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yerevan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Azores delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Bermuda delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Canary delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Cape_Verde delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faeroe delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faroe delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Jan_Mayen delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Madeira delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Reykjavik delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/South_Georgia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/St_Helena delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Stanley delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/ACT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Adelaide delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Brisbane delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Broken_Hill delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Canberra delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Currie delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Darwin delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Eucla delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Hobart delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/LHI delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lindeman delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lord_Howe delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Melbourne delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/NSW delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/North delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Perth delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Queensland delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/South delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Sydney delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Tasmania delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Victoria delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/West delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Yancowinna delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/Acre delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/DeNoronha delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/East delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/West delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/CET delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/CST6CDT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Atlantic delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Central delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Eastern delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Mountain delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Newfoundland delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Pacific delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Saskatchewan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Yukon delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Chile/Continental delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Chile/EasterIsland delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Cuba delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/EET delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/EST delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/EST5EDT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Egypt delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Eire delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+0 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+1 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+10 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+11 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+12 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+2 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+3 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+4 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+5 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+6 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+7 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+8 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+9 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-0 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-1 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-10 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-11 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-12 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-13 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-14 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-2 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-3 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-4 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-5 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-6 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-7 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-8 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-9 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT0 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Greenwich delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UCT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UTC delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Universal delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Zulu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Amsterdam delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Andorra delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Astrakhan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Athens delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belfast delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belgrade delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Berlin delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bratislava delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Brussels delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bucharest delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Budapest delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Busingen delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Chisinau delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Copenhagen delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Dublin delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Gibraltar delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Guernsey delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Helsinki delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Isle_of_Man delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Istanbul delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Jersey delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kaliningrad delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kiev delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kirov delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Lisbon delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ljubljana delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/London delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Luxembourg delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Madrid delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Malta delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Mariehamn delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Minsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Monaco delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Moscow delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Nicosia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Oslo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Paris delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Podgorica delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Prague delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Riga delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Rome delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Samara delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/San_Marino delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sarajevo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Saratov delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Simferopol delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Skopje delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sofia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Stockholm delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tallinn delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tirane delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tiraspol delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ulyanovsk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Uzhgorod delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vaduz delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vatican delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vienna delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vilnius delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Volgograd delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Warsaw delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zagreb delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zaporozhye delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zurich delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Factory delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/GB delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/GB-Eire delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/GMT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/GMT+0 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/GMT-0 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/GMT0 delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Greenwich delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/HST delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Hongkong delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Iceland delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Antananarivo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Chagos delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Christmas delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Cocos delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Comoro delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Kerguelen delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mahe delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Maldives delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mauritius delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mayotte delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Reunion delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Iran delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Israel delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Jamaica delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Japan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Kwajalein delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Libya delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/MET delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/MST delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/MST7MDT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaNorte delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaSur delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/General delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/NZ delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/NZ-CHAT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Navajo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/PRC delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/PST8PDT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Apia delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Auckland delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Bougainville delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chatham delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chuuk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Easter delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Efate delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Enderbury delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fakaofo delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fiji delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Funafuti delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Galapagos delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Gambier delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guadalcanal delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guam delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Honolulu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Johnston delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kiritimati delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kosrae delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kwajalein delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Majuro delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Marquesas delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Midway delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Nauru delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Niue delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Norfolk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Noumea delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pago_Pago delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Palau delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pitcairn delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pohnpei delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Ponape delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Port_Moresby delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Rarotonga delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Saipan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Samoa delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tahiti delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tarawa delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tongatapu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Truk delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wake delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wallis delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Yap delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Poland delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Portugal delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/ROC delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/ROK delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Singapore delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Turkey delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/UCT delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Alaska delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Aleutian delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Arizona delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Central delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/East-Indiana delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Eastern delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Hawaii delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Indiana-Starke delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Michigan delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Mountain delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Pacific delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/US/Samoa delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/UTC delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Universal delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/W-SU delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/WET delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/Zulu delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/iso3166.tab delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/leapseconds delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/posixrules delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/tzdata.zi delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/zone.tab delete mode 100644 venv/lib/python3.6/site-packages/pytz/zoneinfo/zone1970.tab delete mode 100644 venv/lib/python3.6/site-packages/requests-2.21.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/requests-2.21.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.6/site-packages/requests-2.21.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/requests-2.21.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/requests-2.21.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/requests-2.21.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/requests/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/__version__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/_internal_utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/adapters.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/api.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/auth.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/certs.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/cookies.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/exceptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/help.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/hooks.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/models.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/packages.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/sessions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/status_codes.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/structures.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__pycache__/utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/requests/__version__.py delete mode 100644 venv/lib/python3.6/site-packages/requests/_internal_utils.py delete mode 100644 venv/lib/python3.6/site-packages/requests/adapters.py delete mode 100644 venv/lib/python3.6/site-packages/requests/api.py delete mode 100644 venv/lib/python3.6/site-packages/requests/auth.py delete mode 100644 venv/lib/python3.6/site-packages/requests/certs.py delete mode 100644 venv/lib/python3.6/site-packages/requests/compat.py delete mode 100644 venv/lib/python3.6/site-packages/requests/cookies.py delete mode 100644 venv/lib/python3.6/site-packages/requests/exceptions.py delete mode 100644 venv/lib/python3.6/site-packages/requests/help.py delete mode 100644 venv/lib/python3.6/site-packages/requests/hooks.py delete mode 100644 venv/lib/python3.6/site-packages/requests/models.py delete mode 100644 venv/lib/python3.6/site-packages/requests/packages.py delete mode 100644 venv/lib/python3.6/site-packages/requests/sessions.py delete mode 100644 venv/lib/python3.6/site-packages/requests/status_codes.py delete mode 100644 venv/lib/python3.6/site-packages/requests/structures.py delete mode 100644 venv/lib/python3.6/site-packages/requests/utils.py delete mode 100644 venv/lib/python3.6/site-packages/rsa-4.0.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/rsa-4.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/rsa-4.0.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/rsa-4.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/rsa-4.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/rsa-4.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/rsa-4.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.6/site-packages/rsa-4.0.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/rsa-4.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/rsa/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/asn1.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/cli.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/common.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/core.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/key.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/machine_size.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/parallel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/pem.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/pkcs1.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/pkcs1_v2.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/prime.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/randnum.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/transform.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/__pycache__/util.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/rsa/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/asn1.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/cli.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/common.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/core.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/key.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/machine_size.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/parallel.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/pem.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/pkcs1.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/pkcs1_v2.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/prime.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/randnum.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/transform.py delete mode 100644 venv/lib/python3.6/site-packages/rsa/util.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/DESCRIPTION.rst delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/dependency_links.txt delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/metadata.json delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/zip-safe delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/build_meta.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/config.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/dep_util.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/glibc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/pep425tags.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/py33compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/py36compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/wheel.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/six.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__about__.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/_structures.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/markers.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/requirements.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/specifiers.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/utils.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/version.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/pyparsing.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/_vendor/six.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/archive_util.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/build_meta.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/cli-32.exe delete mode 100644 venv/lib/python3.6/site-packages/setuptools/cli-64.exe delete mode 100644 venv/lib/python3.6/site-packages/setuptools/cli.exe delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/build_clib.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/dist_info.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/alias.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/bdist_egg.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/bdist_rpm.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/bdist_wininst.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/build_clib.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/build_ext.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/build_py.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/develop.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/dist_info.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/easy_install.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/egg_info.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/install.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/install_egg_info.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/install_lib.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/install_scripts.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/launcher manifest.xml delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/py36compat.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/register.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/rotate.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/saveopts.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/sdist.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/setopt.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/test.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/upload.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/command/upload_docs.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/config.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/dep_util.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/depends.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/dist.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/extension.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/extern/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/setuptools/glibc.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/glob.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/gui-32.exe delete mode 100644 venv/lib/python3.6/site-packages/setuptools/gui-64.exe delete mode 100644 venv/lib/python3.6/site-packages/setuptools/gui.exe delete mode 100644 venv/lib/python3.6/site-packages/setuptools/launch.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/lib2to3_ex.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/monkey.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/msvc.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/namespaces.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/package_index.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/pep425tags.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/py27compat.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/py31compat.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/py33compat.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/py36compat.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/sandbox.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/script (dev).tmpl delete mode 100644 venv/lib/python3.6/site-packages/setuptools/script.tmpl delete mode 100644 venv/lib/python3.6/site-packages/setuptools/site-patch.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/ssl_support.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/unicode_utils.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/version.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/wheel.py delete mode 100644 venv/lib/python3.6/site-packages/setuptools/windows_support.py delete mode 100644 venv/lib/python3.6/site-packages/six-1.12.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/six-1.12.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.6/site-packages/six-1.12.0.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/six-1.12.0.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/six-1.12.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/six-1.12.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/six.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3-1.24.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.6/site-packages/urllib3-1.24.1.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.6/site-packages/urllib3-1.24.1.dist-info/METADATA delete mode 100644 venv/lib/python3.6/site-packages/urllib3-1.24.1.dist-info/RECORD delete mode 100644 venv/lib/python3.6/site-packages/urllib3-1.24.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.6/site-packages/urllib3-1.24.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/_collections.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/connection.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/connectionpool.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/exceptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/fields.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/filepost.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/poolmanager.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/request.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/__pycache__/response.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/_collections.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/connection.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/connectionpool.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/__pycache__/_appengine_environ.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/_appengine_environ.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/_securetransport/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/_securetransport/bindings.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/_securetransport/low_level.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/appengine.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/ntlmpool.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/securetransport.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/contrib/socks.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/exceptions.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/fields.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/filepost.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/__pycache__/six.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/backports/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/backports/__pycache__/makefile.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/backports/makefile.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/six.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/ssl_match_hostname/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/packages/ssl_match_hostname/_implementation.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/poolmanager.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/request.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/response.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/connection.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/queue.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/request.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/response.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/retry.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/timeout.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/url.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/__pycache__/wait.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/connection.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/queue.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/request.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/response.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/retry.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/ssl_.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/timeout.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/url.py delete mode 100644 venv/lib/python3.6/site-packages/urllib3/util/wait.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/_compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/_internal.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/_reloader.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/datastructures.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/exceptions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/filesystem.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/formparser.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/http.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/local.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/posixemulation.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/routing.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/script.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/security.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/serving.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/test.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/testapp.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/urls.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/useragents.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/websocket.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/wrappers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/__pycache__/wsgi.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/_compat.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/_internal.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/_reloader.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/atom.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/cache.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/fixers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/iterio.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/jsrouting.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/limiter.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/lint.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/profiler.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/securecookie.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/sessions.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/testtools.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/wrappers.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/atom.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/cache.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/fixers.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/iterio.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/jsrouting.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/limiter.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/lint.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/profiler.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/securecookie.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/sessions.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/testtools.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/contrib/wrappers.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/datastructures.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/__pycache__/console.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/__pycache__/repr.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/__pycache__/tbtools.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/console.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/repr.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/shared/FONT_LICENSE delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/shared/console.png delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/shared/debugger.js delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/shared/jquery.js delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/shared/less.png delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/shared/more.png delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/shared/source.png delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/shared/style.css delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/shared/ubuntu.ttf delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/debug/tbtools.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/exceptions.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/filesystem.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/formparser.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/http.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/local.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/posixemulation.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/routing.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/script.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/security.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/serving.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/test.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/testapp.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/urls.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/useragents.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/utils.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/websocket.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/wrappers.py delete mode 100644 venv/lib/python3.6/site-packages/werkzeug/wsgi.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/__pycache__/compat.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/__pycache__/form.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/__pycache__/i18n.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/__pycache__/meta.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/__pycache__/utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/__pycache__/validators.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/compat.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/csrf/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/csrf/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/csrf/__pycache__/core.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/csrf/__pycache__/session.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/csrf/core.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/csrf/session.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/appengine/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/appengine/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/appengine/__pycache__/db.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/appengine/__pycache__/fields.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/appengine/__pycache__/ndb.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/appengine/db.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/appengine/fields.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/appengine/ndb.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/csrf/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/csrf/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/csrf/__pycache__/fields.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/csrf/__pycache__/form.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/csrf/__pycache__/session.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/csrf/fields.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/csrf/form.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/csrf/session.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/dateutil/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/dateutil/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/dateutil/__pycache__/fields.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/dateutil/fields.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/__pycache__/fields.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/__pycache__/i18n.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/__pycache__/orm.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/fields.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/i18n.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/orm.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/templatetags/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/templatetags/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/templatetags/__pycache__/wtforms.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/django/templatetags/wtforms.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/i18n/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/i18n/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/i18n/__pycache__/form.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/i18n/__pycache__/utils.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/i18n/form.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/i18n/utils.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/sqlalchemy/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/sqlalchemy/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/sqlalchemy/__pycache__/fields.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/sqlalchemy/__pycache__/orm.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/sqlalchemy/fields.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/ext/sqlalchemy/orm.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/fields/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/fields/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/fields/__pycache__/core.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/fields/__pycache__/html5.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/fields/__pycache__/simple.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/fields/core.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/fields/html5.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/fields/simple.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/form.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/i18n.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/README.md delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ar/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ar/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/bg/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/bg/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ca/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ca/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/cs_CZ/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/cs_CZ/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/cy/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/cy/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/de/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/de/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/de_CH/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/de_CH/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/el/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/el/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/en/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/en/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/es/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/es/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/et/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/et/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/fa/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/fa/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/fi/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/fi/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/fr/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/fr/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/he/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/he/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/hu/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/hu/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/it/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/it/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ja/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ja/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ko/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ko/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/nb/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/nb/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/nl/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/nl/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/pl/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/pl/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/pt/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/pt/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ru/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/ru/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/sk/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/sk/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/sv/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/sv/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/tr/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/tr/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/uk/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/uk/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/wtforms.pot delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/zh/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/zh/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/zh_TW/LC_MESSAGES/wtforms.mo delete mode 100644 venv/lib/python3.6/site-packages/wtforms/locale/zh_TW/LC_MESSAGES/wtforms.po delete mode 100644 venv/lib/python3.6/site-packages/wtforms/meta.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/utils.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/validators.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/widgets/__init__.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/widgets/__pycache__/__init__.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/widgets/__pycache__/core.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/widgets/__pycache__/html5.cpython-36.pyc delete mode 100644 venv/lib/python3.6/site-packages/wtforms/widgets/core.py delete mode 100644 venv/lib/python3.6/site-packages/wtforms/widgets/html5.py delete mode 120000 venv/lib64 delete mode 100644 venv/pyvenv.cfg delete mode 100644 venv/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/certifi-2018.1.18-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/chardet-3.0.4-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/colorama-0.3.7-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/distlib-0.2.6-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/distro-1.0.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/html5lib-0.999999999-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/idna-2.6-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/ipaddress-0.0.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/packaging-17.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/pip-9.0.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/progress-1.2-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/pyparsing-2.2.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/requests-2.18.4-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/setuptools-39.0.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/six-1.11.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/urllib3-1.22-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/webencodings-0.5-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/wheel-0.30.0-py2.py3-none-any.whl diff --git a/venv/bin/activate b/venv/bin/activate deleted file mode 100644 index 3359957..0000000 --- a/venv/bin/activate +++ /dev/null @@ -1,76 +0,0 @@ -# This file must be used with "source bin/activate" *from bash* -# you cannot run it directly - -deactivate () { - # reset old environment variables - if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then - PATH="${_OLD_VIRTUAL_PATH:-}" - export PATH - unset _OLD_VIRTUAL_PATH - fi - if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then - PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" - export PYTHONHOME - unset _OLD_VIRTUAL_PYTHONHOME - fi - - # This should detect bash and zsh, which have a hash command that must - # be called to get it to forget past commands. Without forgetting - # past commands the $PATH changes we made may not be respected - if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then - hash -r - fi - - if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then - PS1="${_OLD_VIRTUAL_PS1:-}" - export PS1 - unset _OLD_VIRTUAL_PS1 - fi - - unset VIRTUAL_ENV - if [ ! "$1" = "nondestructive" ] ; then - # Self destruct! - unset -f deactivate - fi -} - -# unset irrelevant variables -deactivate nondestructive - -VIRTUAL_ENV="/home/c00ler/cat_or_not/venv" -export VIRTUAL_ENV - -_OLD_VIRTUAL_PATH="$PATH" -PATH="$VIRTUAL_ENV/bin:$PATH" -export PATH - -# unset PYTHONHOME if set -# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) -# could use `if (set -u; : $PYTHONHOME) ;` in bash -if [ -n "${PYTHONHOME:-}" ] ; then - _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" - unset PYTHONHOME -fi - -if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then - _OLD_VIRTUAL_PS1="${PS1:-}" - if [ "x(venv) " != x ] ; then - PS1="(venv) ${PS1:-}" - else - if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then - # special case for Aspen magic directories - # see http://www.zetadev.com/software/aspen/ - PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1" - else - PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" - fi - fi - export PS1 -fi - -# This should detect bash and zsh, which have a hash command that must -# be called to get it to forget past commands. Without forgetting -# past commands the $PATH changes we made may not be respected -if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then - hash -r -fi diff --git a/venv/bin/activate.csh b/venv/bin/activate.csh deleted file mode 100644 index b9d5152..0000000 --- a/venv/bin/activate.csh +++ /dev/null @@ -1,37 +0,0 @@ -# This file must be used with "source bin/activate.csh" *from csh*. -# You cannot run it directly. -# Created by Davide Di Blasi . -# Ported to Python 3.3 venv by Andrew Svetlov - -alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate' - -# Unset irrelevant variables. -deactivate nondestructive - -setenv VIRTUAL_ENV "/home/c00ler/cat_or_not/venv" - -set _OLD_VIRTUAL_PATH="$PATH" -setenv PATH "$VIRTUAL_ENV/bin:$PATH" - - -set _OLD_VIRTUAL_PROMPT="$prompt" - -if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then - if ("venv" != "") then - set env_name = "venv" - else - if (`basename "VIRTUAL_ENV"` == "__") then - # special case for Aspen magic directories - # see http://www.zetadev.com/software/aspen/ - set env_name = `basename \`dirname "$VIRTUAL_ENV"\`` - else - set env_name = `basename "$VIRTUAL_ENV"` - endif - endif - set prompt = "[$env_name] $prompt" - unset env_name -endif - -alias pydoc python -m pydoc - -rehash diff --git a/venv/bin/activate.fish b/venv/bin/activate.fish deleted file mode 100644 index c072b55..0000000 --- a/venv/bin/activate.fish +++ /dev/null @@ -1,75 +0,0 @@ -# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org) -# you cannot run it directly - -function deactivate -d "Exit virtualenv and return to normal shell environment" - # reset old environment variables - if test -n "$_OLD_VIRTUAL_PATH" - set -gx PATH $_OLD_VIRTUAL_PATH - set -e _OLD_VIRTUAL_PATH - end - if test -n "$_OLD_VIRTUAL_PYTHONHOME" - set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME - set -e _OLD_VIRTUAL_PYTHONHOME - end - - if test -n "$_OLD_FISH_PROMPT_OVERRIDE" - functions -e fish_prompt - set -e _OLD_FISH_PROMPT_OVERRIDE - functions -c _old_fish_prompt fish_prompt - functions -e _old_fish_prompt - end - - set -e VIRTUAL_ENV - if test "$argv[1]" != "nondestructive" - # Self destruct! - functions -e deactivate - end -end - -# unset irrelevant variables -deactivate nondestructive - -set -gx VIRTUAL_ENV "/home/c00ler/cat_or_not/venv" - -set -gx _OLD_VIRTUAL_PATH $PATH -set -gx PATH "$VIRTUAL_ENV/bin" $PATH - -# unset PYTHONHOME if set -if set -q PYTHONHOME - set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME - set -e PYTHONHOME -end - -if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" - # fish uses a function instead of an env var to generate the prompt. - - # save the current fish_prompt function as the function _old_fish_prompt - functions -c fish_prompt _old_fish_prompt - - # with the original prompt function renamed, we can override with our own. - function fish_prompt - # Save the return status of the last command - set -l old_status $status - - # Prompt override? - if test -n "(venv) " - printf "%s%s" "(venv) " (set_color normal) - else - # ...Otherwise, prepend env - set -l _checkbase (basename "$VIRTUAL_ENV") - if test $_checkbase = "__" - # special case for Aspen magic directories - # see http://www.zetadev.com/software/aspen/ - printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) - else - printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) - end - end - - # Restore the return status of the previous command. - echo "exit $old_status" | . - _old_fish_prompt - end - - set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" -end diff --git a/venv/bin/chardetect b/venv/bin/chardetect deleted file mode 100755 index 4616470..0000000 --- a/venv/bin/chardetect +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from chardet.cli.chardetect import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/easy_install b/venv/bin/easy_install deleted file mode 100755 index 96f35b9..0000000 --- a/venv/bin/easy_install +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from setuptools.command.easy_install import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/easy_install-3.6 b/venv/bin/easy_install-3.6 deleted file mode 100755 index 96f35b9..0000000 --- a/venv/bin/easy_install-3.6 +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from setuptools.command.easy_install import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/flask b/venv/bin/flask deleted file mode 100755 index 75c643d..0000000 --- a/venv/bin/flask +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from flask.cli import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/gunicorn b/venv/bin/gunicorn deleted file mode 100755 index 4f91070..0000000 --- a/venv/bin/gunicorn +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from gunicorn.app.wsgiapp import run - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(run()) diff --git a/venv/bin/gunicorn_paster b/venv/bin/gunicorn_paster deleted file mode 100755 index df4251e..0000000 --- a/venv/bin/gunicorn_paster +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from gunicorn.app.pasterapp import run - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(run()) diff --git a/venv/bin/pip b/venv/bin/pip deleted file mode 100755 index 1d7ab5e..0000000 --- a/venv/bin/pip +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from pip import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pip3 b/venv/bin/pip3 deleted file mode 100755 index 1d7ab5e..0000000 --- a/venv/bin/pip3 +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from pip import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pip3.6 b/venv/bin/pip3.6 deleted file mode 100755 index 1d7ab5e..0000000 --- a/venv/bin/pip3.6 +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from pip import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pyrsa-decrypt b/venv/bin/pyrsa-decrypt deleted file mode 100755 index 3874a61..0000000 --- a/venv/bin/pyrsa-decrypt +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from rsa.cli import decrypt - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(decrypt()) diff --git a/venv/bin/pyrsa-encrypt b/venv/bin/pyrsa-encrypt deleted file mode 100755 index 7040382..0000000 --- a/venv/bin/pyrsa-encrypt +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from rsa.cli import encrypt - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(encrypt()) diff --git a/venv/bin/pyrsa-keygen b/venv/bin/pyrsa-keygen deleted file mode 100755 index d47dc27..0000000 --- a/venv/bin/pyrsa-keygen +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from rsa.cli import keygen - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(keygen()) diff --git a/venv/bin/pyrsa-priv2pub b/venv/bin/pyrsa-priv2pub deleted file mode 100755 index ec75a7e..0000000 --- a/venv/bin/pyrsa-priv2pub +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from rsa.util import private_to_public - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(private_to_public()) diff --git a/venv/bin/pyrsa-sign b/venv/bin/pyrsa-sign deleted file mode 100755 index d3aedcd..0000000 --- a/venv/bin/pyrsa-sign +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from rsa.cli import sign - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(sign()) diff --git a/venv/bin/pyrsa-verify b/venv/bin/pyrsa-verify deleted file mode 100755 index 4e9be65..0000000 --- a/venv/bin/pyrsa-verify +++ /dev/null @@ -1,11 +0,0 @@ -#!/home/c00ler/cat_or_not/venv/bin/python3 - -# -*- coding: utf-8 -*- -import re -import sys - -from rsa.cli import verify - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(verify()) diff --git a/venv/bin/python b/venv/bin/python deleted file mode 120000 index b8a0adb..0000000 --- a/venv/bin/python +++ /dev/null @@ -1 +0,0 @@ -python3 \ No newline at end of file diff --git a/venv/bin/python3 b/venv/bin/python3 deleted file mode 120000 index ae65fda..0000000 --- a/venv/bin/python3 +++ /dev/null @@ -1 +0,0 @@ -/usr/bin/python3 \ No newline at end of file diff --git a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER b/venv/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt b/venv/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt deleted file mode 100644 index 87ce152..0000000 --- a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt +++ /dev/null @@ -1,39 +0,0 @@ -Copyright © 2014 by the Pallets team. - -Some rights reserved. - -Redistribution and use in source and binary forms of the software as -well as documentation, with or without modification, are permitted -provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -- Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - ----- - -Click uses parts of optparse written by Gregory P. Ward and maintained -by the Python Software Foundation. This is limited to code in parser.py. - -Copyright © 2001-2006 Gregory P. Ward. All rights reserved. -Copyright © 2002-2006 Python Software Foundation. All rights reserved. diff --git a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA b/venv/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA deleted file mode 100644 index 625bdad..0000000 --- a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA +++ /dev/null @@ -1,121 +0,0 @@ -Metadata-Version: 2.1 -Name: Click -Version: 7.0 -Summary: Composable command line interface toolkit -Home-page: https://palletsprojects.com/p/click/ -Author: Armin Ronacher -Author-email: armin.ronacher@active-4.com -Maintainer: Pallets Team -Maintainer-email: contact@palletsprojects.com -License: BSD -Project-URL: Documentation, https://click.palletsprojects.com/ -Project-URL: Code, https://github.com/pallets/click -Project-URL: Issue tracker, https://github.com/pallets/click/issues -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* - -\$ click\_ -========== - -Click is a Python package for creating beautiful command line interfaces -in a composable way with as little code as necessary. It's the "Command -Line Interface Creation Kit". It's highly configurable but comes with -sensible defaults out of the box. - -It aims to make the process of writing command line tools quick and fun -while also preventing any frustration caused by the inability to -implement an intended CLI API. - -Click in three points: - -- Arbitrary nesting of commands -- Automatic help page generation -- Supports lazy loading of subcommands at runtime - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - $ pip install click - -Click supports Python 3.4 and newer, Python 2.7, and PyPy. - -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - -A Simple Example ----------------- - -What does it look like? Here is an example of a simple Click program: - -.. code-block:: python - - import click - - @click.command() - @click.option("--count", default=1, help="Number of greetings.") - @click.option("--name", prompt="Your name", - help="The person to greet.") - def hello(count, name): - """Simple program that greets NAME for a total of COUNT times.""" - for _ in range(count): - click.echo("Hello, %s!" % name) - - if __name__ == '__main__': - hello() - -And what it looks like when run: - -.. code-block:: text - - $ python hello.py --count=3 - Your name: Click - Hello, Click! - Hello, Click! - Hello, Click! - - -Donate ------- - -The Pallets organization develops and supports Click and other popular -packages. In order to grow the community of contributors and users, and -allow the maintainers to devote more time to the projects, `please -donate today`_. - -.. _please donate today: https://palletsprojects.com/donate - - -Links ------ - -* Website: https://palletsprojects.com/p/click/ -* Documentation: https://click.palletsprojects.com/ -* License: `BSD `_ -* Releases: https://pypi.org/project/click/ -* Code: https://github.com/pallets/click -* Issue tracker: https://github.com/pallets/click/issues -* Test status: - - * Linux, Mac: https://travis-ci.org/pallets/click - * Windows: https://ci.appveyor.com/project/pallets/click - -* Test coverage: https://codecov.io/gh/pallets/click - - diff --git a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD b/venv/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD deleted file mode 100644 index 41d00e2..0000000 --- a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD +++ /dev/null @@ -1,40 +0,0 @@ -Click-7.0.dist-info/LICENSE.txt,sha256=4hIxn676T0Wcisk3_chVcECjyrivKTZsoqSNI5AlIlw,1876 -Click-7.0.dist-info/METADATA,sha256=-r8jeke3Zer4diRvT1MjFZuiJ6yTT_qFP39svLqdaLI,3516 -Click-7.0.dist-info/RECORD,, -Click-7.0.dist-info/WHEEL,sha256=gduuPyBvFJQSQ0zdyxF7k0zynDXbIbvg5ZBHoXum5uk,110 -Click-7.0.dist-info/top_level.txt,sha256=J1ZQogalYS4pphY_lPECoNMfw0HzTSrZglC4Yfwo4xA,6 -click/__init__.py,sha256=HjGThQ7tef9kkwCV371TBnrf0SAi6fKfU_jtEnbYTvQ,2789 -click/_bashcomplete.py,sha256=iaNUmtxag0YPfxba3TDYCNietiTMQIrvhRLj-H8okFU,11014 -click/_compat.py,sha256=vYmvoj4opPxo-c-2GMQQjYT_r_QkOKybkfGoeVrt0dA,23399 -click/_termui_impl.py,sha256=xHmLtOJhKUCVD6168yucJ9fknUJPAMs0eUTPgVUO-GQ,19611 -click/_textwrap.py,sha256=gwS4m7bdQiJnzaDG8osFcRb-5vn4t4l2qSCy-5csCEc,1198 -click/_unicodefun.py,sha256=QHy2_5jYlX-36O-JVrTHNnHOqg8tquUR0HmQFev7Ics,4364 -click/_winconsole.py,sha256=PPWVak8Iikm_gAPsxMrzwsVFCvHgaW3jPaDWZ1JBl3U,8965 -click/core.py,sha256=q8FLcDZsagBGSRe5Y9Hi_FGvAeZvusNfoO5EkhkSQ8Y,75305 -click/decorators.py,sha256=idKt6duLUUfAFftrHoREi8MJSd39XW36pUVHthdglwk,11226 -click/exceptions.py,sha256=CNpAjBAE7qjaV4WChxQeak95e5yUOau8AsvT-8m6wss,7663 -click/formatting.py,sha256=eh-cypTUAhpI3HD-K4ZpR3vCiURIO62xXvKkR3tNUTM,8889 -click/globals.py,sha256=oQkou3ZQ5DgrbVM6BwIBirwiqozbjfirzsLGAlLRRdg,1514 -click/parser.py,sha256=m-nGZz4VwprM42_qtFlWFGo7yRJQxkBlRcZodoH593Y,15510 -click/termui.py,sha256=o_ZXB2jyvL2Rce7P_bFGq452iyBq9ykJyRApIPMCZO0,23207 -click/testing.py,sha256=aYGqY_iWLu2p4k7lkuJ6t3fqpf6aPGqTsyLzNY_ngKg,13062 -click/types.py,sha256=2Q929p-aBP_ZYuMFJqJR-Ipucofv3fmDc5JzBDPmzJU,23287 -click/utils.py,sha256=6-D0WkAxvv9FkgHXSHwDIv0l9Gdx9Mm6Z5vuKNLIfZI,15763 -Click-7.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -click/__pycache__/testing.cpython-36.pyc,, -click/__pycache__/_termui_impl.cpython-36.pyc,, -click/__pycache__/parser.cpython-36.pyc,, -click/__pycache__/_bashcomplete.cpython-36.pyc,, -click/__pycache__/_winconsole.cpython-36.pyc,, -click/__pycache__/_compat.cpython-36.pyc,, -click/__pycache__/types.cpython-36.pyc,, -click/__pycache__/termui.cpython-36.pyc,, -click/__pycache__/__init__.cpython-36.pyc,, -click/__pycache__/exceptions.cpython-36.pyc,, -click/__pycache__/globals.cpython-36.pyc,, -click/__pycache__/utils.cpython-36.pyc,, -click/__pycache__/core.cpython-36.pyc,, -click/__pycache__/_unicodefun.cpython-36.pyc,, -click/__pycache__/decorators.cpython-36.pyc,, -click/__pycache__/formatting.cpython-36.pyc,, -click/__pycache__/_textwrap.cpython-36.pyc,, diff --git a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL b/venv/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL deleted file mode 100644 index 1316c41..0000000 --- a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.31.1) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt b/venv/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt deleted file mode 100644 index dca9a90..0000000 --- a/venv/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -click diff --git a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/INSTALLER b/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/LICENSE.txt b/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/LICENSE.txt deleted file mode 100644 index 8f9252f..0000000 --- a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/LICENSE.txt +++ /dev/null @@ -1,31 +0,0 @@ -Copyright © 2010 by the Pallets team. - -Some rights reserved. - -Redistribution and use in source and binary forms of the software as -well as documentation, with or without modification, are permitted -provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. diff --git a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/METADATA b/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/METADATA deleted file mode 100644 index c600e73..0000000 --- a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/METADATA +++ /dev/null @@ -1,130 +0,0 @@ -Metadata-Version: 2.1 -Name: Flask -Version: 1.0.2 -Summary: A simple framework for building complex web applications. -Home-page: https://www.palletsprojects.com/p/flask/ -Author: Armin Ronacher -Author-email: armin.ronacher@active-4.com -Maintainer: Pallets team -Maintainer-email: contact@palletsprojects.com -License: BSD -Project-URL: Documentation, http://flask.pocoo.org/docs/ -Project-URL: Code, https://github.com/pallets/flask -Project-URL: Issue tracker, https://github.com/pallets/flask/issues -Platform: any -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Framework :: Flask -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application -Classifier: Topic :: Software Development :: Libraries :: Application Frameworks -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Provides-Extra: dev -Provides-Extra: docs -Provides-Extra: dotenv -Requires-Dist: Werkzeug (>=0.14) -Requires-Dist: Jinja2 (>=2.10) -Requires-Dist: itsdangerous (>=0.24) -Requires-Dist: click (>=5.1) -Provides-Extra: dev -Requires-Dist: pytest (>=3); extra == 'dev' -Requires-Dist: coverage; extra == 'dev' -Requires-Dist: tox; extra == 'dev' -Requires-Dist: sphinx; extra == 'dev' -Requires-Dist: pallets-sphinx-themes; extra == 'dev' -Requires-Dist: sphinxcontrib-log-cabinet; extra == 'dev' -Provides-Extra: docs -Requires-Dist: sphinx; extra == 'docs' -Requires-Dist: pallets-sphinx-themes; extra == 'docs' -Requires-Dist: sphinxcontrib-log-cabinet; extra == 'docs' -Provides-Extra: dotenv -Requires-Dist: python-dotenv; extra == 'dotenv' - -Flask -===== - -Flask is a lightweight `WSGI`_ web application framework. It is designed -to make getting started quick and easy, with the ability to scale up to -complex applications. It began as a simple wrapper around `Werkzeug`_ -and `Jinja`_ and has become one of the most popular Python web -application frameworks. - -Flask offers suggestions, but doesn't enforce any dependencies or -project layout. It is up to the developer to choose the tools and -libraries they want to use. There are many extensions provided by the -community that make adding new functionality easy. - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - pip install -U Flask - - -A Simple Example ----------------- - -.. code-block:: python - - from flask import Flask - - app = Flask(__name__) - - @app.route('/') - def hello(): - return 'Hello, World!' - -.. code-block:: text - - $ FLASK_APP=hello.py flask run - * Serving Flask app "hello" - * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) - - -Donate ------- - -The Pallets organization develops and supports Flask and the libraries -it uses. In order to grow the community of contributors and users, and -allow the maintainers to devote more time to the projects, `please -donate today`_. - -.. _please donate today: https://psfmember.org/civicrm/contribute/transact?reset=1&id=20 - - -Links ------ - -* Website: https://www.palletsprojects.com/p/flask/ -* Documentation: http://flask.pocoo.org/docs/ -* License: `BSD `_ -* Releases: https://pypi.org/project/Flask/ -* Code: https://github.com/pallets/flask -* Issue tracker: https://github.com/pallets/flask/issues -* Test status: - - * Linux, Mac: https://travis-ci.org/pallets/flask - * Windows: https://ci.appveyor.com/project/pallets/flask - -* Test coverage: https://codecov.io/gh/pallets/flask - -.. _WSGI: https://wsgi.readthedocs.io -.. _Werkzeug: https://www.palletsprojects.com/p/werkzeug/ -.. _Jinja: https://www.palletsprojects.com/p/jinja/ -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - diff --git a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/RECORD b/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/RECORD deleted file mode 100644 index bb79ce8..0000000 --- a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/RECORD +++ /dev/null @@ -1,48 +0,0 @@ -Flask-1.0.2.dist-info/LICENSE.txt,sha256=ziEXA3AIuaiUn1qe4cd1XxCESWTYrk4TjN7Qb06J3l8,1575 -Flask-1.0.2.dist-info/METADATA,sha256=iA5tiNWzTtgCVe80aTZGNWsckj853fJyfvHs9U-WZRk,4182 -Flask-1.0.2.dist-info/RECORD,, -Flask-1.0.2.dist-info/WHEEL,sha256=J3CsTk7Mf2JNUyhImI-mjX-fmI4oDjyiXgWT4qgZiCE,110 -Flask-1.0.2.dist-info/entry_points.txt,sha256=gBLA1aKg0OYR8AhbAfg8lnburHtKcgJLDU52BBctN0k,42 -Flask-1.0.2.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6 -flask/__init__.py,sha256=qq8lK6QQbxJALf1igz7qsvUwOTAoKvFGfdLm7jPNsso,1673 -flask/__main__.py,sha256=pgIXrHhxM5MAMvgzAqWpw_t6AXZ1zG38us4JRgJKtxk,291 -flask/_compat.py,sha256=UDFGhosh6mOdNB-4evKPuneHum1OpcAlwTNJCRm0irQ,2892 -flask/app.py,sha256=ahpe3T8w98rQd_Er5d7uDxK57S1nnqGQx3V3hirBovU,94147 -flask/blueprints.py,sha256=Cyhl_x99tgwqEZPtNDJUFneAfVJxWfEU4bQA7zWS6VU,18331 -flask/cli.py,sha256=30QYAO10Do9LbZYCLgfI_xhKjASdLopL8wKKVUGS2oA,29442 -flask/config.py,sha256=kznUhj4DLYxsTF_4kfDG8GEHto1oZG_kqblyrLFtpqQ,9951 -flask/ctx.py,sha256=leFzS9fzmo0uaLCdxpHc5_iiJZ1H0X_Ig4yPCOvT--g,16224 -flask/debughelpers.py,sha256=1ceC-UyqZTd4KsJkf0OObHPsVt5R3T6vnmYhiWBjV-w,6479 -flask/globals.py,sha256=pGg72QW_-4xUfsI33I5L_y76c21AeqfSqXDcbd8wvXU,1649 -flask/helpers.py,sha256=YCl8D1plTO1evEYP4KIgaY3H8Izww5j4EdgRJ89oHTw,40106 -flask/logging.py,sha256=qV9h0vt7NIRkKM9OHDWndzO61E5CeBMlqPJyTt-W2Wc,2231 -flask/sessions.py,sha256=2XHV4ASREhSEZ8bsPQW6pNVNuFtbR-04BzfKg0AfvHo,14452 -flask/signals.py,sha256=BGQbVyCYXnzKK2DVCzppKFyWN1qmrtW1QMAYUs-1Nr8,2211 -flask/templating.py,sha256=FDfWMbpgpC3qObW8GGXRAVrkHFF8K4CHOJymB1wvULI,4914 -flask/testing.py,sha256=XD3gWNvLUV8dqVHwKd9tZzsj81fSHtjOphQ1wTNtlMs,9379 -flask/views.py,sha256=Wy-_WkUVtCfE2zCXYeJehNgHuEtviE4v3HYfJ--MpbY,5733 -flask/wrappers.py,sha256=1Z9hF5-hXQajn_58XITQFRY8efv3Vy3uZ0avBfZu6XI,7511 -flask/json/__init__.py,sha256=Ns1Hj805XIxuBMh2z0dYnMVfb_KUgLzDmP3WoUYaPhw,10729 -flask/json/tag.py,sha256=9ehzrmt5k7hxf7ZEK0NOs3swvQyU9fWNe-pnYe69N60,8223 -../../../bin/flask,sha256=1RmXXcG_g9i701ODWEGGhFA3KfN8lLFwp4CMSdYinIc,236 -Flask-1.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -flask/__pycache__/signals.cpython-36.pyc,, -flask/__pycache__/logging.cpython-36.pyc,, -flask/__pycache__/testing.cpython-36.pyc,, -flask/__pycache__/debughelpers.cpython-36.pyc,, -flask/__pycache__/_compat.cpython-36.pyc,, -flask/__pycache__/templating.cpython-36.pyc,, -flask/__pycache__/__init__.cpython-36.pyc,, -flask/__pycache__/wrappers.cpython-36.pyc,, -flask/__pycache__/globals.cpython-36.pyc,, -flask/__pycache__/app.cpython-36.pyc,, -flask/__pycache__/cli.cpython-36.pyc,, -flask/__pycache__/views.cpython-36.pyc,, -flask/__pycache__/blueprints.cpython-36.pyc,, -flask/__pycache__/helpers.cpython-36.pyc,, -flask/__pycache__/ctx.cpython-36.pyc,, -flask/__pycache__/sessions.cpython-36.pyc,, -flask/__pycache__/config.cpython-36.pyc,, -flask/__pycache__/__main__.cpython-36.pyc,, -flask/json/__pycache__/__init__.cpython-36.pyc,, -flask/json/__pycache__/tag.cpython-36.pyc,, diff --git a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/WHEEL b/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/WHEEL deleted file mode 100644 index f21b51c..0000000 --- a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.31.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/entry_points.txt b/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/entry_points.txt deleted file mode 100644 index 1eb0252..0000000 --- a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -flask = flask.cli:main - diff --git a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/top_level.txt b/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/top_level.txt deleted file mode 100644 index 7e10602..0000000 --- a/venv/lib/python3.6/site-packages/Flask-1.0.2.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -flask diff --git a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/DESCRIPTION.rst b/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/DESCRIPTION.rst deleted file mode 100644 index 7d7eef7..0000000 --- a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,21 +0,0 @@ -Flask-WTF -========= - -.. image:: https://travis-ci.org/lepture/flask-wtf.svg?branch=master - :target: https://travis-ci.org/lepture/flask-wtf - :alt: Travis CI Status -.. image:: https://coveralls.io/repos/lepture/flask-wtf/badge.svg?branch=master - :target: https://coveralls.io/r/lepture/flask-wtf - :alt: Coverage Status - -Simple integration of Flask and WTForms, including CSRF, file upload, -and reCAPTCHA. - -Links ------ - -* `Documentation `_ -* `PyPI `_ -* `GitHub `_ - - diff --git a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/INSTALLER b/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/LICENSE.txt b/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/LICENSE.txt deleted file mode 100644 index 5cbad1a..0000000 --- a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/LICENSE.txt +++ /dev/null @@ -1,32 +0,0 @@ -Copyright (c) 2010 by Dan Jacob. -Copyright (c) 2013 by Hsiaoming Yang. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - -* The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/METADATA b/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/METADATA deleted file mode 100644 index 8dd02a4..0000000 --- a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/METADATA +++ /dev/null @@ -1,52 +0,0 @@ -Metadata-Version: 2.0 -Name: Flask-WTF -Version: 0.14.2 -Summary: Simple integration of Flask and WTForms. -Home-page: https://github.com/lepture/flask-wtf -Author: Hsiaoming Yang -Author-email: me@lepture.com -License: BSD -Platform: any -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Framework :: Flask -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Requires-Dist: Flask -Requires-Dist: WTForms - -Flask-WTF -========= - -.. image:: https://travis-ci.org/lepture/flask-wtf.svg?branch=master - :target: https://travis-ci.org/lepture/flask-wtf - :alt: Travis CI Status -.. image:: https://coveralls.io/repos/lepture/flask-wtf/badge.svg?branch=master - :target: https://coveralls.io/r/lepture/flask-wtf - :alt: Coverage Status - -Simple integration of Flask and WTForms, including CSRF, file upload, -and reCAPTCHA. - -Links ------ - -* `Documentation `_ -* `PyPI `_ -* `GitHub `_ - - diff --git a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/RECORD b/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/RECORD deleted file mode 100644 index 39e63a7..0000000 --- a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/RECORD +++ /dev/null @@ -1,30 +0,0 @@ -Flask_WTF-0.14.2.dist-info/DESCRIPTION.rst,sha256=vyJWnOD4vgnZ6x2ERr5EH1l2uzLxXCBhr_O1L6Ell2E,584 -Flask_WTF-0.14.2.dist-info/LICENSE.txt,sha256=oHX42YrP2wXdmHFiQrniwbOrmHIpJrPEz2yRasFOg1A,1490 -Flask_WTF-0.14.2.dist-info/METADATA,sha256=M8ZfImxUciRZ5Av5r1x37JnEC3wG5sacQv346wmldHU,1846 -Flask_WTF-0.14.2.dist-info/RECORD,, -Flask_WTF-0.14.2.dist-info/WHEEL,sha256=5wvfB7GvgZAbKBSE9uX9Zbi6LCL-_KgezgHblXhCRnM,113 -Flask_WTF-0.14.2.dist-info/metadata.json,sha256=qGwhg5DSr2WilK8cvCcQsdrtDJ5NFgR1faLrO8YZCAY,1370 -Flask_WTF-0.14.2.dist-info/top_level.txt,sha256=zK3flQPSjYTkAMjB0V6Jhu3jyotC0biL1mMhzitYoog,10 -flask_wtf/__init__.py,sha256=zNLRzvfi7PLTc7jkqQT7pzgtsw9_9eN7BfO4fzwKxJc,406 -flask_wtf/_compat.py,sha256=4h1U_W5vbM9L8sJ4ZPFevuneM1TirnBTTVrsHRH3uUE,849 -flask_wtf/csrf.py,sha256=suKAZarzLIBuiJFqwP--RldEYabPj0DGfYkQA32Cc1E,11554 -flask_wtf/file.py,sha256=2UnODjSq47IjsFQMiu_z218vFA5pnQ9nL1FpX7hpK1M,2971 -flask_wtf/form.py,sha256=lpx-ItUnKjYOW8VxQpBAlbhoROJNd2PHi3v0loPPyYI,4948 -flask_wtf/html5.py,sha256=ReZHJto8DAZkO3BxUDdHnkyz5mM21KtqKYh0achJ5IM,372 -flask_wtf/i18n.py,sha256=xMB_jHCOaWfF1RXm7E6hsRHwPsUyVyKX2Rhy3tBOUgk,1790 -flask_wtf/recaptcha/__init__.py,sha256=q3TC7tZPSAZ3On3GApZKGn0EcydX4zprisbyTlhN3sQ,86 -flask_wtf/recaptcha/fields.py,sha256=kN_10iZYQcYg1EtxFp4B87BlFnnrJCktrh7bTykOVj4,453 -flask_wtf/recaptcha/validators.py,sha256=8UgjA72OxUyHVk_lm8-fGhPEvKgkMtsoFNt7yzjo0xw,2398 -flask_wtf/recaptcha/widgets.py,sha256=me-oaqMNPW2BLujNTuDHCXWcVhh6eI7wlm6_TIrIF_U,1267 -Flask_WTF-0.14.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -flask_wtf/recaptcha/__pycache__/fields.cpython-36.pyc,, -flask_wtf/recaptcha/__pycache__/__init__.cpython-36.pyc,, -flask_wtf/recaptcha/__pycache__/widgets.cpython-36.pyc,, -flask_wtf/recaptcha/__pycache__/validators.cpython-36.pyc,, -flask_wtf/__pycache__/_compat.cpython-36.pyc,, -flask_wtf/__pycache__/csrf.cpython-36.pyc,, -flask_wtf/__pycache__/__init__.cpython-36.pyc,, -flask_wtf/__pycache__/form.cpython-36.pyc,, -flask_wtf/__pycache__/i18n.cpython-36.pyc,, -flask_wtf/__pycache__/file.cpython-36.pyc,, -flask_wtf/__pycache__/html5.cpython-36.pyc,, diff --git a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/WHEEL b/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/WHEEL deleted file mode 100644 index 7bf9daa..0000000 --- a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.30.0.a0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/metadata.json b/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/metadata.json deleted file mode 100644 index d48bac6..0000000 --- a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Flask", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules"], "extensions": {"python.details": {"contacts": [{"email": "me@lepture.com", "name": "Hsiaoming Yang", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "https://github.com/lepture/flask-wtf"}}}, "extras": [], "generator": "bdist_wheel (0.30.0.a0)", "license": "BSD", "metadata_version": "2.0", "name": "Flask-WTF", "platform": "any", "run_requires": [{"requires": ["Flask", "WTForms"]}], "summary": "Simple integration of Flask and WTForms.", "version": "0.14.2"} \ No newline at end of file diff --git a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/top_level.txt b/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/top_level.txt deleted file mode 100644 index 716f422..0000000 --- a/venv/lib/python3.6/site-packages/Flask_WTF-0.14.2.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -flask_wtf diff --git a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst b/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst deleted file mode 100644 index 1594da5..0000000 --- a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,37 +0,0 @@ - -Jinja2 -~~~~~~ - -Jinja2 is a template engine written in pure Python. It provides a -`Django`_ inspired non-XML syntax but supports inline expressions and -an optional `sandboxed`_ environment. - -Nutshell --------- - -Here a small example of a Jinja template:: - - {% extends 'base.html' %} - {% block title %}Memberlist{% endblock %} - {% block content %} - - {% endblock %} - -Philosophy ----------- - -Application logic is for the controller but don't try to make the life -for the template designer too hard by giving him too few functionality. - -For more informations visit the new `Jinja2 webpage`_ and `documentation`_. - -.. _sandboxed: https://en.wikipedia.org/wiki/Sandbox_(computer_security) -.. _Django: https://www.djangoproject.com/ -.. _Jinja2 webpage: http://jinja.pocoo.org/ -.. _documentation: http://jinja.pocoo.org/2/documentation/ - - diff --git a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/INSTALLER b/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/LICENSE.txt b/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/LICENSE.txt deleted file mode 100644 index 10145a2..0000000 --- a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/LICENSE.txt +++ /dev/null @@ -1,31 +0,0 @@ -Copyright (c) 2009 by the Jinja Team, see AUTHORS for more details. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/METADATA b/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/METADATA deleted file mode 100644 index 40f2b46..0000000 --- a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/METADATA +++ /dev/null @@ -1,68 +0,0 @@ -Metadata-Version: 2.0 -Name: Jinja2 -Version: 2.10 -Summary: A small but fast and easy to use stand-alone template engine written in pure python. -Home-page: http://jinja.pocoo.org/ -Author: Armin Ronacher -Author-email: armin.ronacher@active-4.com -License: BSD -Description-Content-Type: UNKNOWN -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Text Processing :: Markup :: HTML -Requires-Dist: MarkupSafe (>=0.23) -Provides-Extra: i18n -Requires-Dist: Babel (>=0.8); extra == 'i18n' - - -Jinja2 -~~~~~~ - -Jinja2 is a template engine written in pure Python. It provides a -`Django`_ inspired non-XML syntax but supports inline expressions and -an optional `sandboxed`_ environment. - -Nutshell --------- - -Here a small example of a Jinja template:: - - {% extends 'base.html' %} - {% block title %}Memberlist{% endblock %} - {% block content %} - - {% endblock %} - -Philosophy ----------- - -Application logic is for the controller but don't try to make the life -for the template designer too hard by giving him too few functionality. - -For more informations visit the new `Jinja2 webpage`_ and `documentation`_. - -.. _sandboxed: https://en.wikipedia.org/wiki/Sandbox_(computer_security) -.. _Django: https://www.djangoproject.com/ -.. _Jinja2 webpage: http://jinja.pocoo.org/ -.. _documentation: http://jinja.pocoo.org/2/documentation/ - - diff --git a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/RECORD b/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/RECORD deleted file mode 100644 index 67f74a2..0000000 --- a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/RECORD +++ /dev/null @@ -1,63 +0,0 @@ -Jinja2-2.10.dist-info/DESCRIPTION.rst,sha256=b5ckFDoM7vVtz_mAsJD4OPteFKCqE7beu353g4COoYI,978 -Jinja2-2.10.dist-info/LICENSE.txt,sha256=JvzUNv3Io51EiWrAPm8d_SXjhJnEjyDYvB3Tvwqqils,1554 -Jinja2-2.10.dist-info/METADATA,sha256=18EgU8zR6-av-0-5y_gXebzK4GnBB_76lALUsl-6QHM,2258 -Jinja2-2.10.dist-info/RECORD,, -Jinja2-2.10.dist-info/WHEEL,sha256=kdsN-5OJAZIiHN-iO4Rhl82KyS0bDWf4uBwMbkNafr8,110 -Jinja2-2.10.dist-info/entry_points.txt,sha256=NdzVcOrqyNyKDxD09aERj__3bFx2paZhizFDsKmVhiA,72 -Jinja2-2.10.dist-info/metadata.json,sha256=NPUJ9TMBxVQAv_kTJzvU8HwmP-4XZvbK9mz6_4YUVl4,1473 -Jinja2-2.10.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7 -jinja2/__init__.py,sha256=xJHjaMoy51_KXn1wf0cysH6tUUifUxZCwSOfcJGEYZw,2614 -jinja2/_compat.py,sha256=xP60CE5Qr8FTYcDE1f54tbZLKGvMwYml4-8T7Q4KG9k,2596 -jinja2/_identifier.py,sha256=W1QBSY-iJsyt6oR_nKSuNNCzV95vLIOYgUNPUI1d5gU,1726 -jinja2/asyncfilters.py,sha256=cTDPvrS8Hp_IkwsZ1m9af_lr5nHysw7uTa5gV0NmZVE,4144 -jinja2/asyncsupport.py,sha256=UErQ3YlTLaSjFb94P4MVn08-aVD9jJxty2JVfMRb-1M,7878 -jinja2/bccache.py,sha256=nQldx0ZRYANMyfvOihRoYFKSlUdd5vJkS7BjxNwlOZM,12794 -jinja2/compiler.py,sha256=BqC5U6JxObSRhblyT_a6Tp5GtEU5z3US1a4jLQaxxgo,65386 -jinja2/constants.py,sha256=uwwV8ZUhHhacAuz5PTwckfsbqBaqM7aKfyJL7kGX5YQ,1626 -jinja2/debug.py,sha256=WTVeUFGUa4v6ReCsYv-iVPa3pkNB75OinJt3PfxNdXs,12045 -jinja2/defaults.py,sha256=Em-95hmsJxIenDCZFB1YSvf9CNhe9rBmytN3yUrBcWA,1400 -jinja2/environment.py,sha256=VnkAkqw8JbjZct4tAyHlpBrka2vqB-Z58RAP-32P1ZY,50849 -jinja2/exceptions.py,sha256=_Rj-NVi98Q6AiEjYQOsP8dEIdu5AlmRHzcSNOPdWix4,4428 -jinja2/ext.py,sha256=atMQydEC86tN1zUsdQiHw5L5cF62nDbqGue25Yiu3N4,24500 -jinja2/filters.py,sha256=yOAJk0MsH-_gEC0i0U6NweVQhbtYaC-uE8xswHFLF4w,36528 -jinja2/idtracking.py,sha256=2GbDSzIvGArEBGLkovLkqEfmYxmWsEf8c3QZwM4uNsw,9197 -jinja2/lexer.py,sha256=ySEPoXd1g7wRjsuw23uimS6nkGN5aqrYwcOKxCaVMBQ,28559 -jinja2/loaders.py,sha256=xiTuURKAEObyym0nU8PCIXu_Qp8fn0AJ5oIADUUm-5Q,17382 -jinja2/meta.py,sha256=fmKHxkmZYAOm9QyWWy8EMd6eefAIh234rkBMW2X4ZR8,4340 -jinja2/nativetypes.py,sha256=_sJhS8f-8Q0QMIC0dm1YEdLyxEyoO-kch8qOL5xUDfE,7308 -jinja2/nodes.py,sha256=L10L_nQDfubLhO3XjpF9qz46FSh2clL-3e49ogVlMmA,30853 -jinja2/optimizer.py,sha256=MsdlFACJ0FRdPtjmCAdt7JQ9SGrXFaDNUaslsWQaG3M,1722 -jinja2/parser.py,sha256=lPzTEbcpTRBLw8ii6OYyExHeAhaZLMA05Hpv4ll3ULk,35875 -jinja2/runtime.py,sha256=DHdD38Pq8gj7uWQC5usJyWFoNWL317A9AvXOW_CLB34,27755 -jinja2/sandbox.py,sha256=TVyZHlNqqTzsv9fv2NvJNmSdWRHTguhyMHdxjWms32U,16708 -jinja2/tests.py,sha256=iJQLwbapZr-EKquTG_fVOVdwHUUKf3SX9eNkjQDF8oU,4237 -jinja2/utils.py,sha256=q24VupGZotQ-uOyrJxCaXtDWhZC1RgsQG7kcdmjck2Q,20629 -jinja2/visitor.py,sha256=JD1H1cANA29JcntFfN5fPyqQxB4bI4wC00BzZa-XHks,3316 -Jinja2-2.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -jinja2/__pycache__/sandbox.cpython-36.pyc,, -jinja2/__pycache__/parser.cpython-36.pyc,, -jinja2/__pycache__/nodes.cpython-36.pyc,, -jinja2/__pycache__/constants.cpython-36.pyc,, -jinja2/__pycache__/_compat.cpython-36.pyc,, -jinja2/__pycache__/environment.cpython-36.pyc,, -jinja2/__pycache__/__init__.cpython-36.pyc,, -jinja2/__pycache__/exceptions.cpython-36.pyc,, -jinja2/__pycache__/runtime.cpython-36.pyc,, -jinja2/__pycache__/nativetypes.cpython-36.pyc,, -jinja2/__pycache__/bccache.cpython-36.pyc,, -jinja2/__pycache__/loaders.cpython-36.pyc,, -jinja2/__pycache__/utils.cpython-36.pyc,, -jinja2/__pycache__/defaults.cpython-36.pyc,, -jinja2/__pycache__/_identifier.cpython-36.pyc,, -jinja2/__pycache__/tests.cpython-36.pyc,, -jinja2/__pycache__/asyncsupport.cpython-36.pyc,, -jinja2/__pycache__/debug.cpython-36.pyc,, -jinja2/__pycache__/meta.cpython-36.pyc,, -jinja2/__pycache__/asyncfilters.cpython-36.pyc,, -jinja2/__pycache__/filters.cpython-36.pyc,, -jinja2/__pycache__/compiler.cpython-36.pyc,, -jinja2/__pycache__/visitor.cpython-36.pyc,, -jinja2/__pycache__/optimizer.cpython-36.pyc,, -jinja2/__pycache__/idtracking.cpython-36.pyc,, -jinja2/__pycache__/lexer.cpython-36.pyc,, -jinja2/__pycache__/ext.cpython-36.pyc,, diff --git a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/WHEEL b/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/WHEEL deleted file mode 100644 index 7332a41..0000000 --- a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.30.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/entry_points.txt b/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/entry_points.txt deleted file mode 100644 index 32e6b75..0000000 --- a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/entry_points.txt +++ /dev/null @@ -1,4 +0,0 @@ - - [babel.extractors] - jinja2 = jinja2.ext:babel_extract[i18n] - \ No newline at end of file diff --git a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/metadata.json b/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/metadata.json deleted file mode 100644 index 7f5dc38..0000000 --- a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup :: HTML"], "description_content_type": "UNKNOWN", "extensions": {"python.details": {"contacts": [{"email": "armin.ronacher@active-4.com", "name": "Armin Ronacher", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "http://jinja.pocoo.org/"}}, "python.exports": {"babel.extractors": {"jinja2": "jinja2.ext:babel_extract [i18n]"}}}, "extras": ["i18n"], "generator": "bdist_wheel (0.30.0)", "license": "BSD", "metadata_version": "2.0", "name": "Jinja2", "run_requires": [{"extra": "i18n", "requires": ["Babel (>=0.8)"]}, {"requires": ["MarkupSafe (>=0.23)"]}], "summary": "A small but fast and easy to use stand-alone template engine written in pure python.", "version": "2.10"} \ No newline at end of file diff --git a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/top_level.txt b/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/top_level.txt deleted file mode 100644 index 7f7afbf..0000000 --- a/venv/lib/python3.6/site-packages/Jinja2-2.10.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -jinja2 diff --git a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/INSTALLER b/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/LICENSE.txt b/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/LICENSE.txt deleted file mode 100644 index 28c9258..0000000 --- a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/LICENSE.txt +++ /dev/null @@ -1,33 +0,0 @@ -`BSD 3-Clause `_ - -Copyright © 2010 by the Pallets team. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -- Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -- Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. diff --git a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/METADATA b/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/METADATA deleted file mode 100644 index e532eb0..0000000 --- a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/METADATA +++ /dev/null @@ -1,103 +0,0 @@ -Metadata-Version: 2.1 -Name: MarkupSafe -Version: 1.1.0 -Summary: Safely add untrusted strings to HTML/XML markup. -Home-page: https://www.palletsprojects.com/p/markupsafe/ -Author: Armin Ronacher -Author-email: armin.ronacher@active-4.com -Maintainer: Pallets Team -Maintainer-email: contact@palletsprojects.com -License: BSD -Project-URL: Documentation, https://markupsafe.palletsprojects.com/ -Project-URL: Code, https://github.com/pallets/markupsafe -Project-URL: Issue tracker, https://github.com/pallets/markupsafe/issues -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Text Processing :: Markup :: HTML -Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.* - -MarkupSafe -========== - -MarkupSafe implements a text object that escapes characters so it is -safe to use in HTML and XML. Characters that have special meanings are -replaced so that they display as the actual characters. This mitigates -injection attacks, meaning untrusted user input can safely be displayed -on a page. - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - pip install -U MarkupSafe - -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - -Examples --------- - -.. code-block:: pycon - - >>> from markupsafe import Markup, escape - >>> # escape replaces special characters and wraps in Markup - >>> escape('') - Markup(u'<script>alert(document.cookie);</script>') - >>> # wrap in Markup to mark text "safe" and prevent escaping - >>> Markup('Hello') - Markup('hello') - >>> escape(Markup('Hello')) - Markup('hello') - >>> # Markup is a text subclass (str on Python 3, unicode on Python 2) - >>> # methods and operators escape their arguments - >>> template = Markup("Hello %s") - >>> template % '"World"' - Markup('Hello "World"') - - -Donate ------- - -The Pallets organization develops and supports MarkupSafe and other -libraries that use it. In order to grow the community of contributors -and users, and allow the maintainers to devote more time to the -projects, `please donate today`_. - -.. _please donate today: https://psfmember.org/civicrm/contribute/transact?reset=1&id=20 - - -Links ------ - -* Website: https://www.palletsprojects.com/p/markupsafe/ -* Documentation: https://markupsafe.palletsprojects.com/ -* License: `BSD `_ -* Releases: https://pypi.org/project/MarkupSafe/ -* Code: https://github.com/pallets/markupsafe -* Issue tracker: https://github.com/pallets/markupsafe/issues -* Test status: - - * Linux, Mac: https://travis-ci.org/pallets/markupsafe - * Windows: https://ci.appveyor.com/project/pallets/markupsafe - -* Test coverage: https://codecov.io/gh/pallets/markupsafe - - diff --git a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/RECORD b/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/RECORD deleted file mode 100644 index afbc036..0000000 --- a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/RECORD +++ /dev/null @@ -1,16 +0,0 @@ -markupsafe/_compat.py,sha256=3oSvQpEFzsJ29NKVy-Fqk6ZlRxmlCB5k0G21aN0zNtQ,596 -markupsafe/_speedups.c,sha256=VfElhhq9oulHEd2wBZ2MX9A80r4jFovsVGQD2zxmVk0,9883 -markupsafe/_constants.py,sha256=ueEz1Jxdw5TKWBbhPr4Ad_2L2MSEh73AYiYe4l3cZy4,4728 -markupsafe/__init__.py,sha256=T5J4pS7LRx1xRqfV3xz-QN_D9pSmfVDJnTrc2cTO4Ro,10164 -markupsafe/_speedups.cpython-36m-x86_64-linux-gnu.so,sha256=BS7m4DA4L7J_sXAEFkmQeW3HJStGrC1yXYRifVOaTvc,38555 -markupsafe/_native.py,sha256=fUrjjbRXIpHM-8l9QXFJ2xg5rv_48U2aN99plyL0kfs,1911 -MarkupSafe-1.1.0.dist-info/LICENSE.txt,sha256=7V249lpOdvRv2m6SF9gCDtq_nsg8tFpdeTdsWWM_g9M,1614 -MarkupSafe-1.1.0.dist-info/WHEEL,sha256=d2ILPScH-y2UwGxsW1PeA2TT-KW0Git4AJ6LeOK8sQo,109 -MarkupSafe-1.1.0.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 -MarkupSafe-1.1.0.dist-info/METADATA,sha256=usFnBges7tmAH4_Yt5Ypb8Bco4R9uLUdD0V6YHbvhLw,3585 -MarkupSafe-1.1.0.dist-info/RECORD,, -MarkupSafe-1.1.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -markupsafe/__pycache__/_constants.cpython-36.pyc,, -markupsafe/__pycache__/_compat.cpython-36.pyc,, -markupsafe/__pycache__/__init__.cpython-36.pyc,, -markupsafe/__pycache__/_native.cpython-36.pyc,, diff --git a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/WHEEL b/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/WHEEL deleted file mode 100644 index 92946fe..0000000 --- a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.31.1) -Root-Is-Purelib: false -Tag: cp36-cp36m-manylinux1_x86_64 - diff --git a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/top_level.txt b/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/top_level.txt deleted file mode 100644 index 75bf729..0000000 --- a/venv/lib/python3.6/site-packages/MarkupSafe-1.1.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -markupsafe diff --git a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/INSTALLER b/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/METADATA b/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/METADATA deleted file mode 100644 index 8a77324..0000000 --- a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/METADATA +++ /dev/null @@ -1,101 +0,0 @@ -Metadata-Version: 2.1 -Name: WTForms -Version: 2.2.1 -Summary: A flexible forms validation and rendering library for Python web development. -Home-page: https://wtforms.readthedocs.io/ -Author: Thomas Johansson, James Crasta -Author-email: wtforms@simplecodes.com -Maintainer: WTForms team -Maintainer-email: davidism@gmail.com -License: BSD -Project-URL: Documentation, https://wtforms.readthedocs.io/ -Project-URL: Code, https://github.com/wtforms/wtforms -Project-URL: Issue tracker, https://github.com/wtforms/wtforms/issues -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Provides-Extra: locale -Requires-Dist: ordereddict; python_version=="2.6" -Provides-Extra: locale -Requires-Dist: Babel (>=1.3); extra == 'locale' - -WTForms -======= - -WTForms is a flexible forms validation and rendering library for Python -web development. It is `framework agnostic`_ and can work with whatever -web framework and template engine you choose. There are various -community libraries that provide closer integration with popular -frameworks. - -To get started using WTForms, we recommend reading the `crash course`_ -in the docs. - -.. _crash course: https://wtforms.readthedocs.io/en/stable/crash_course.html -.. _framework agnostic: https://wtforms.readthedocs.io/en/stable/faq.html#does-wtforms-work-with-library-here - - -Installation ------------- - -Install and update using pip:: - - pip install -U WTForms - - -Third-Party Library Integrations --------------------------------- - -WTForms is designed to work with any web framework and template engine. -There are a number of community-provided libraries that make integrating -with frameworks even better. - -- `Flask-WTF`_ integrates with the Flask framework. It can - automatically load data from the request, uses Flask-Babel to - translate based on user-selected locale, provides full-application - CSRF, and more. -- `WTForms-Alchemy`_ provides rich support for generating forms from - SQLAlchemy models, including an expanded set of fields and - validators. -- `WTForms-SQLAlchemy`_ provides ORM-backed fields and form generation - from SQLAlchemy models. -- `WTForms-AppEngine`_ provides ORM-backed fields and form generation - from AppEnding db/ndb schema -- `WTForms-AppEngine`_ provides ORM-backed fields and form generation - from Django models, as well as integration with Django's I18N - support. - -.. _Flask-WTF: https://flask-wtf.readthedocs.io/ -.. _WTForms-Alchemy: https://wtforms-alchemy.readthedocs.io/ -.. _WTForms-SQLAlchemy: https://github.com/wtforms/wtforms-sqlalchemy -.. _WTForms-AppEngine: https://github.com/wtforms/wtforms-appengine -.. _WTForms-Django: https://github.com/wtforms/wtforms-django - - -Links ------ - -- Documentation: https://wtforms.readthedocs.io/ -- License: `BSD `_ -- Releases: https://pypi.org/project/WTForms/ -- Code: https://github.com/wtforms/wtforms -- Issue tracker: https://github.com/wtforms/wtforms/issues -- Test status: - - - Linux: https://travis-ci.org/wtforms/wtforms - -- Test coverage: https://coveralls.io/github/wtforms/wtforms - - diff --git a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/RECORD b/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/RECORD deleted file mode 100644 index ac67d60..0000000 --- a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/RECORD +++ /dev/null @@ -1,147 +0,0 @@ -WTForms-2.2.1.dist-info/METADATA,sha256=Aqv5s_FPo1o3VxjnX-nclKn2dBPIVOpTwggPPH-DJs0,3771 -WTForms-2.2.1.dist-info/RECORD,, -WTForms-2.2.1.dist-info/WHEEL,sha256=gduuPyBvFJQSQ0zdyxF7k0zynDXbIbvg5ZBHoXum5uk,110 -WTForms-2.2.1.dist-info/top_level.txt,sha256=k5K62RAEkLEN23p118t3tRgvL6I_k56NiIU7Hk8Phv8,8 -wtforms/__init__.py,sha256=h4gmUHtk1Y9cGJ-l63rhrp-nC9REGdpcRPBGoJKP9hk,380 -wtforms/compat.py,sha256=buY-q7yLNO-2OlxA5QPAcdBO8urjZTtxvFnxg_1Euuo,589 -wtforms/form.py,sha256=ahME3_8CmTuvVsatV-AKqinBkOSEnLOE_nMeQLgrQEA,11608 -wtforms/i18n.py,sha256=RuMPdvfsxHGMqKySUy4DpMfEAzruPK_7gHe6GQTrekc,2175 -wtforms/meta.py,sha256=9yLQuKP4N_OiPBsPy3tBc7auldxhFryZweySDsKL8zI,3822 -wtforms/utils.py,sha256=Zg70vKv96pnHjrkSZ6KlzSo1noh20GV5IqfPy6FrOyA,1504 -wtforms/validators.py,sha256=niMtYGGRijIiZ2ruslYfRP7CTGDul_DHiR-iYen7zRg,19430 -wtforms/csrf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -wtforms/csrf/core.py,sha256=Ot8eOSAZ88qeDBlSUhRqiLfyWA13g3EFJ4zWZ7EGYnc,3157 -wtforms/csrf/session.py,sha256=baww8MJ5YObyYItXX0Vz5AjxZTdOfTqti3zsD3koka0,3056 -wtforms/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -wtforms/ext/appengine/__init__.py,sha256=xXkE1qkwzkkBw4o0YhWGZSZXcsV60DaLxX4fkxNcNe8,269 -wtforms/ext/appengine/db.py,sha256=IEJng34ztXLVSlLxneZ7M4kgGOZOPf9zR_6RTqv6Z1Q,18588 -wtforms/ext/appengine/fields.py,sha256=8Z2BJy7ft0fu_vZksneZ7xdVxdqHkWIMNjgnyfdKtho,7574 -wtforms/ext/appengine/ndb.py,sha256=szIwWA5FyD2lqZefayl__C2UsXMEAGQndqPYPhOH4Vk,17124 -wtforms/ext/csrf/__init__.py,sha256=bIQ48rbnoYrYPZkkGz04b_7PZ8leQY_CExEqYw8yitI,45 -wtforms/ext/csrf/fields.py,sha256=Ta3vLg9KQkpUTCnDF-7CP3IW11X0UqqhvL68sAopYTs,430 -wtforms/ext/csrf/form.py,sha256=ZxmvC3Um2qYeUncu6D390-W62mVQclzwPLP9_R7GedU,1785 -wtforms/ext/csrf/session.py,sha256=aKYb9_jgEmxIgvWuk0cdx9YAGTi9s3F4xy_0ibxyhbo,2627 -wtforms/ext/dateutil/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -wtforms/ext/dateutil/fields.py,sha256=RlupqB1WX_HiKJEYqi9IAxiCElxgbBDHHuXrGF4nbYs,3429 -wtforms/ext/django/__init__.py,sha256=OQ0wr3s5_cUmUU7htHXhobyxVWJS16Ve4qBK_PLs_rw,259 -wtforms/ext/django/fields.py,sha256=pEWxaAtMq5_p8QaJPOffWsX7U4LB5f8Bq8ZBw4fedxk,4580 -wtforms/ext/django/i18n.py,sha256=VLvzJ8lQOqs5Uxnhe4aOE5StGgPEvGhfBEHNrRQFtp0,626 -wtforms/ext/django/orm.py,sha256=Mme5i_o_bJTXGKkabRz03EJmGggPMejAg95XNhYtNUc,6096 -wtforms/ext/django/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -wtforms/ext/django/templatetags/wtforms.py,sha256=iCOicSMEkixm5bcJHz35Zx0h6xVwnz1H9JglB_hU69o,2826 -wtforms/ext/i18n/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -wtforms/ext/i18n/form.py,sha256=mfsavr4LGI1GhoFLsWSuSqVPHH6QNiyqoAfY94u-XP0,1608 -wtforms/ext/i18n/utils.py,sha256=rx9-pNYjIp8DLU-VQ9XxRSXHYZuFv4ktRejzVBPTDBg,530 -wtforms/ext/sqlalchemy/__init__.py,sha256=4U9BzeiFD_YF8pXRsTehei0ekP6jikt2bX4MN3GNT9s,431 -wtforms/ext/sqlalchemy/fields.py,sha256=XwOgJUJCcXvw-QGdF6q2w51m1CI4E_COq8GXb9blgI0,6846 -wtforms/ext/sqlalchemy/orm.py,sha256=6wJN-Zm4YB3st9xsXU5xJR5jQUsdSRqcbEZ7JvvGD9s,10671 -wtforms/fields/__init__.py,sha256=M-0pFfY9EEk-GoYzRkg3yvarM_iP_cRhPjpLEl5KgVU,219 -wtforms/fields/core.py,sha256=KevHc47k4mMJgRGe8Y07UrS_9o_nzXbn3U2HznpdMI0,34307 -wtforms/fields/html5.py,sha256=bwLHIBrEWICRcS80am_lBp6GitDCVIRvBdIWEPJeSz0,1995 -wtforms/fields/simple.py,sha256=dY7cYfb6PXMDjUefXcDeTDWpv3UGyr_BMlebJAeoRso,2218 -wtforms/locale/README.md,sha256=xL3Ain6UPZK3UdL8tMrIKwfodEsPT0IYCVDpI6do524,1062 -wtforms/locale/wtforms.pot,sha256=Sqe4LRpObVRUc30htYXgZuueKYfW7wt2lNVKtM_Jrr0,4170 -wtforms/locale/ar/LC_MESSAGES/wtforms.mo,sha256=r1DDYnBCr1hT7KwEG3NpQLR52i4j_-er5ENIVqT9Sbo,4530 -wtforms/locale/ar/LC_MESSAGES/wtforms.po,sha256=Qkhg_pS-ZEf7jEZz76mDC47UPpqWcU_8t7L88ALAPvk,6262 -wtforms/locale/bg/LC_MESSAGES/wtforms.mo,sha256=aPnglyINf0hH4FGUM3U5OJpqcJT_8XRx6GiaD4Jif3g,4297 -wtforms/locale/bg/LC_MESSAGES/wtforms.po,sha256=xflJaMOGUTNN7zbFMWL-FbMVjmj-Svmvkek84mJl5NI,6356 -wtforms/locale/ca/LC_MESSAGES/wtforms.mo,sha256=zBX48Ru44A2O82FXwC9CwzU3_FiFkUyb4KGNya4toSg,3425 -wtforms/locale/ca/LC_MESSAGES/wtforms.po,sha256=oT09ydRQNsmf0a1uwskao0wfbwQqAh2tKXjFqI_iscw,5465 -wtforms/locale/cs_CZ/LC_MESSAGES/wtforms.mo,sha256=MJQPoiMNPfdHYX5eQQ2OW7PmvQ9BFETva2qm3xmPSvo,3618 -wtforms/locale/cs_CZ/LC_MESSAGES/wtforms.po,sha256=MZ1Iv28-oX4dqzSPgGo65YU3iijeBmYBKZSGsl8YYS0,5596 -wtforms/locale/cy/LC_MESSAGES/wtforms.mo,sha256=8pJPG9dguZLej33ksWSwWmCOKIJ7VmpNVlaDMb30_lc,3371 -wtforms/locale/cy/LC_MESSAGES/wtforms.po,sha256=DTGkDUWJ1MsZqFPV8YhwHaBI1uJP6uXwiud7K3LW1yw,5415 -wtforms/locale/de/LC_MESSAGES/wtforms.mo,sha256=D4BRsJeeT_cKYagO7W1LHQ8YpwC2c7_0hbv3tDgk82E,3412 -wtforms/locale/de/LC_MESSAGES/wtforms.po,sha256=BF7F3vwQOAL_yaZTHi7x2KZnaCTzz3MNUNCtuc6e47A,5457 -wtforms/locale/de_CH/LC_MESSAGES/wtforms.mo,sha256=lBUgz2N_AlkXB4W-CxaNGuHdwhgTrYCPtwM9DWL-pP0,3418 -wtforms/locale/de_CH/LC_MESSAGES/wtforms.po,sha256=LiAqravsNbETdXHJiOi3vJD4o3hWrTRZWSHcLNvHjgc,5477 -wtforms/locale/el/LC_MESSAGES/wtforms.mo,sha256=r0_oQGB_KYBZdSmFsielQMCF0P7rgsLDCA28u37XAkw,4307 -wtforms/locale/el/LC_MESSAGES/wtforms.po,sha256=snlBcC-cjlFdpIbSG9pRGYlWFhl1EaQX72Umv2PWfp8,6345 -wtforms/locale/en/LC_MESSAGES/wtforms.mo,sha256=DCJnvT-_j_oec9za8vxn0FZSog4mm5PnaiWIpesctDE,3285 -wtforms/locale/en/LC_MESSAGES/wtforms.po,sha256=-GGpFQm9Sdz3Yg0EqltIGTEcOwnYqmepRSREkHV_UVU,5347 -wtforms/locale/es/LC_MESSAGES/wtforms.mo,sha256=U_oe-S3-i6A2VsBTVKxZ8N5QAEbpqXBlenSIaLnFupE,3394 -wtforms/locale/es/LC_MESSAGES/wtforms.po,sha256=P36kwWq3LZNjYHXTyoyMl86WziWpZYXxGFsFiqev1oU,5368 -wtforms/locale/et/LC_MESSAGES/wtforms.mo,sha256=Ugx0IpG1TJtP-DKpNZiVyo-L5F8ESrr_qCpPXR96pww,3456 -wtforms/locale/et/LC_MESSAGES/wtforms.po,sha256=doeYijsnPkyHy_JK4JRH6AQdHG8uaQTQWYwsCP6_Iuk,5497 -wtforms/locale/fa/LC_MESSAGES/wtforms.mo,sha256=exJzwjxXvOALqJhsQetN9Kcad4Lx62Exvnx2jtzja8Q,4137 -wtforms/locale/fa/LC_MESSAGES/wtforms.po,sha256=MHjVwlp-MHMV-TTUUkUYtuBdtbEjfV0jzVSgWHFv80Q,6149 -wtforms/locale/fi/LC_MESSAGES/wtforms.mo,sha256=NiodjvNOW25UkxEpuCioXdpvjbGwPoYmz0dfiMxE3S8,3416 -wtforms/locale/fi/LC_MESSAGES/wtforms.po,sha256=4uP6A6sfNoATdRR_8PlecqiiTsVzIp9qpcn9qe0jGMA,5456 -wtforms/locale/fr/LC_MESSAGES/wtforms.mo,sha256=BoZI4I1MK0-nipyLWOSG-s_55E9x9eG0WqYdz1qZ1KQ,3484 -wtforms/locale/fr/LC_MESSAGES/wtforms.po,sha256=60tb7Uyco3tdKc1Z4sdvwta46V_RGSmvXM9SdvuBvhg,5529 -wtforms/locale/he/LC_MESSAGES/wtforms.mo,sha256=UhetGKepgOnGXa5IsjZBdOi5IbPLCufpIugkkDuXkjQ,3649 -wtforms/locale/he/LC_MESSAGES/wtforms.po,sha256=GJy7zG0ik8U0YnubNlfjjl9iPT62w3XyaAP4kNCntkQ,5657 -wtforms/locale/hu/LC_MESSAGES/wtforms.mo,sha256=Z-qEeJI422dmm7-2qJIgCuCS1eyS2pJfoavPnGK2334,3544 -wtforms/locale/hu/LC_MESSAGES/wtforms.po,sha256=eiyNXYa4_XLQWRd-j4KmAXml27cYAPjIBhjjIv9WMbE,5492 -wtforms/locale/it/LC_MESSAGES/wtforms.mo,sha256=petuqW4x1p1S69sJax15WpLQryWoDRXW0uQjr58E9Jw,3510 -wtforms/locale/it/LC_MESSAGES/wtforms.po,sha256=EuI0Plf7nLfg5NcRPqQvfg3z7fpfIdRQGBmyq1ivpGE,5556 -wtforms/locale/ja/LC_MESSAGES/wtforms.mo,sha256=thfPsxKfihz2wNvb9LA7MzYb4PnfyXT81gaE_802AlM,3736 -wtforms/locale/ja/LC_MESSAGES/wtforms.po,sha256=ydUzTwxnk8sUQcPTeS7AuU7sgArIMWgbDzxFt85mhG8,5753 -wtforms/locale/ko/LC_MESSAGES/wtforms.mo,sha256=ZRJGcizRhJifuw4rElZ6Bb-hNdH3zqCYzxhwYJisCpU,3851 -wtforms/locale/ko/LC_MESSAGES/wtforms.po,sha256=9os2sRuqxoX0fTWHr47IvBwlkY_sDoLKdn3byS7MfjQ,5842 -wtforms/locale/nb/LC_MESSAGES/wtforms.mo,sha256=0YxYTElaTGBpIurcZqZHPU2lXslt3UNF_HOw575OAKM,3337 -wtforms/locale/nb/LC_MESSAGES/wtforms.po,sha256=NXrr3nrnoOo2x2t0g8UZXT2Jm9KQnkYdnieeoB7U9Yw,5387 -wtforms/locale/nl/LC_MESSAGES/wtforms.mo,sha256=8wLTkRK82jpG5oDkqM-jLNVLYHte4fRHYF6VAN7lB6U,3350 -wtforms/locale/nl/LC_MESSAGES/wtforms.po,sha256=9xSoztymVdIgFBA2vnzaHeSK4qEGTGbiPbfwjdcHN0k,5388 -wtforms/locale/pl/LC_MESSAGES/wtforms.mo,sha256=QUs5iz_IOoo6oCVmcpWWNNkXyqYA0X01wERmQYQiXYo,3610 -wtforms/locale/pl/LC_MESSAGES/wtforms.po,sha256=XrkwltOhyLHrOOgxYVvcmR2Hcw4LUN3_sZEdJofS5Vk,5652 -wtforms/locale/pt/LC_MESSAGES/wtforms.mo,sha256=PC5HRiM-QYt4GX3eMPapzG31jLKmo3zt6nKGVb_o174,3438 -wtforms/locale/pt/LC_MESSAGES/wtforms.po,sha256=cXIZJJZ4UDDR24yrQ-XYck3klonRZd9Ajt8A7dqqJc4,5481 -wtforms/locale/ru/LC_MESSAGES/wtforms.mo,sha256=ski71qWfnwGL9GtZEQZ1fksHBeZsePxi4ZN16AlLeZE,4406 -wtforms/locale/ru/LC_MESSAGES/wtforms.po,sha256=3eeI-CxivICl6FzYpKrqfYnz2rB68hMNCicC_9aM90s,6407 -wtforms/locale/sk/LC_MESSAGES/wtforms.mo,sha256=Lo_5eGNF_LnkJsJLOde_YNWE_F3UZtScFTFlO4v-EyU,3548 -wtforms/locale/sk/LC_MESSAGES/wtforms.po,sha256=ywPpnxYnHgEkD6Ab7LJgyqgC6dIj8cBmn6hB21aS3NI,5586 -wtforms/locale/sv/LC_MESSAGES/wtforms.mo,sha256=U7noK9cso_pRgaQcvF4duRQ69joI7SHN0XcHyd0mAVg,3376 -wtforms/locale/sv/LC_MESSAGES/wtforms.po,sha256=jMtpwUlQPbi4Xiut9KNfLjGhsjqmys1Y_iGZ3lJA4NQ,5416 -wtforms/locale/tr/LC_MESSAGES/wtforms.mo,sha256=kp3J8k2FVBaXVVJJclGnUmZTEUYHS6Hg1v2baGwtReo,3391 -wtforms/locale/tr/LC_MESSAGES/wtforms.po,sha256=PFo_e3vKCMgKtkcQSaXqNOlr-YgzxvgUtg8Ju5M-8f8,5431 -wtforms/locale/uk/LC_MESSAGES/wtforms.mo,sha256=5iZS-8LmCyeteqN3TXQ15byNTGJbjpsDa8AF3zh6L1o,4451 -wtforms/locale/uk/LC_MESSAGES/wtforms.po,sha256=fIijOGm8gXO-yZkdYoX6kWMPXZE6j9yALhekfQCK5KU,6520 -wtforms/locale/zh/LC_MESSAGES/wtforms.mo,sha256=yCzjCCwAf5yu80NhllpGqlk7V6PBFyJYfoZ6IF2dQnM,3362 -wtforms/locale/zh/LC_MESSAGES/wtforms.po,sha256=ZIh59O9rnjZMRpdKFfvrk59wouOAUHyjZS0f-TMsN6U,5378 -wtforms/locale/zh_TW/LC_MESSAGES/wtforms.mo,sha256=iha5oFUQDVs7wPBpcWLLAP_Jgm42Ea9n9xIlaCsUsNE,3204 -wtforms/locale/zh_TW/LC_MESSAGES/wtforms.po,sha256=a7q2T9fdwN_xESBCD4umHMfSptN7Qt-abjO9UFRWDBo,5218 -wtforms/widgets/__init__.py,sha256=nxI0oIsofuJCNgc4Oxwzf3_q3IiCYZTSiCoEuSRZeJM,124 -wtforms/widgets/core.py,sha256=X3I5PRFbPeX1nU3DrPpsJyglsObujdN1hMxHHFTkKOk,11150 -wtforms/widgets/html5.py,sha256=LDnNegNTx-LYpw4YkbymvS2TaA2V03p2rRdYN83skYQ,2440 -WTForms-2.2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -wtforms/__pycache__/__init__.cpython-36.pyc,, -wtforms/__pycache__/utils.cpython-36.pyc,, -wtforms/__pycache__/form.cpython-36.pyc,, -wtforms/__pycache__/i18n.cpython-36.pyc,, -wtforms/__pycache__/meta.cpython-36.pyc,, -wtforms/__pycache__/validators.cpython-36.pyc,, -wtforms/__pycache__/compat.cpython-36.pyc,, -wtforms/csrf/__pycache__/__init__.cpython-36.pyc,, -wtforms/csrf/__pycache__/core.cpython-36.pyc,, -wtforms/csrf/__pycache__/session.cpython-36.pyc,, -wtforms/widgets/__pycache__/__init__.cpython-36.pyc,, -wtforms/widgets/__pycache__/core.cpython-36.pyc,, -wtforms/widgets/__pycache__/html5.cpython-36.pyc,, -wtforms/fields/__pycache__/simple.cpython-36.pyc,, -wtforms/fields/__pycache__/__init__.cpython-36.pyc,, -wtforms/fields/__pycache__/core.cpython-36.pyc,, -wtforms/fields/__pycache__/html5.cpython-36.pyc,, -wtforms/ext/__pycache__/__init__.cpython-36.pyc,, -wtforms/ext/django/templatetags/__pycache__/__init__.cpython-36.pyc,, -wtforms/ext/django/templatetags/__pycache__/wtforms.cpython-36.pyc,, -wtforms/ext/django/__pycache__/fields.cpython-36.pyc,, -wtforms/ext/django/__pycache__/__init__.cpython-36.pyc,, -wtforms/ext/django/__pycache__/i18n.cpython-36.pyc,, -wtforms/ext/django/__pycache__/orm.cpython-36.pyc,, -wtforms/ext/csrf/__pycache__/fields.cpython-36.pyc,, -wtforms/ext/csrf/__pycache__/__init__.cpython-36.pyc,, -wtforms/ext/csrf/__pycache__/form.cpython-36.pyc,, -wtforms/ext/csrf/__pycache__/session.cpython-36.pyc,, -wtforms/ext/dateutil/__pycache__/fields.cpython-36.pyc,, -wtforms/ext/dateutil/__pycache__/__init__.cpython-36.pyc,, -wtforms/ext/i18n/__pycache__/__init__.cpython-36.pyc,, -wtforms/ext/i18n/__pycache__/utils.cpython-36.pyc,, -wtforms/ext/i18n/__pycache__/form.cpython-36.pyc,, -wtforms/ext/appengine/__pycache__/fields.cpython-36.pyc,, -wtforms/ext/appengine/__pycache__/__init__.cpython-36.pyc,, -wtforms/ext/appengine/__pycache__/db.cpython-36.pyc,, -wtforms/ext/appengine/__pycache__/ndb.cpython-36.pyc,, -wtforms/ext/sqlalchemy/__pycache__/fields.cpython-36.pyc,, -wtforms/ext/sqlalchemy/__pycache__/__init__.cpython-36.pyc,, -wtforms/ext/sqlalchemy/__pycache__/orm.cpython-36.pyc,, diff --git a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/WHEEL b/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/WHEEL deleted file mode 100644 index 1316c41..0000000 --- a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.31.1) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/top_level.txt b/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/top_level.txt deleted file mode 100644 index 26d80fd..0000000 --- a/venv/lib/python3.6/site-packages/WTForms-2.2.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -wtforms diff --git a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/DESCRIPTION.rst b/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/DESCRIPTION.rst deleted file mode 100644 index 675f08d..0000000 --- a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,80 +0,0 @@ -Werkzeug -======== - -Werkzeug is a comprehensive `WSGI`_ web application library. It began as -a simple collection of various utilities for WSGI applications and has -become one of the most advanced WSGI utility libraries. - -It includes: - -* An interactive debugger that allows inspecting stack traces and source - code in the browser with an interactive interpreter for any frame in - the stack. -* A full-featured request object with objects to interact with headers, - query args, form data, files, and cookies. -* A response object that can wrap other WSGI applications and handle - streaming data. -* A routing system for matching URLs to endpoints and generating URLs - for endpoints, with an extensible system for capturing variables from - URLs. -* HTTP utilities to handle entity tags, cache control, dates, user - agents, cookies, files, and more. -* A threaded WSGI server for use while developing applications locally. -* A test client for simulating HTTP requests during testing without - requiring running a server. - -Werkzeug is Unicode aware and doesn't enforce any dependencies. It is up -to the developer to choose a template engine, database adapter, and even -how to handle requests. It can be used to build all sorts of end user -applications such as blogs, wikis, or bulletin boards. - -`Flask`_ wraps Werkzeug, using it to handle the details of WSGI while -providing more structure and patterns for defining powerful -applications. - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - pip install -U Werkzeug - - -A Simple Example ----------------- - -.. code-block:: python - - from werkzeug.wrappers import Request, Response - - @Request.application - def application(request): - return Response('Hello, World!') - - if __name__ == '__main__': - from werkzeug.serving import run_simple - run_simple('localhost', 4000, application) - - -Links ------ - -* Website: https://www.palletsprojects.com/p/werkzeug/ -* Releases: https://pypi.org/project/Werkzeug/ -* Code: https://github.com/pallets/werkzeug -* Issue tracker: https://github.com/pallets/werkzeug/issues -* Test status: - - * Linux, Mac: https://travis-ci.org/pallets/werkzeug - * Windows: https://ci.appveyor.com/project/davidism/werkzeug - -* Test coverage: https://codecov.io/gh/pallets/werkzeug - -.. _WSGI: https://wsgi.readthedocs.io/en/latest/ -.. _Flask: https://www.palletsprojects.com/p/flask/ -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - diff --git a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/INSTALLER b/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/LICENSE.txt b/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/LICENSE.txt deleted file mode 100644 index 1cc75bb..0000000 --- a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/LICENSE.txt +++ /dev/null @@ -1,31 +0,0 @@ -Copyright © 2007 by the Pallets team. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. diff --git a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/METADATA b/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/METADATA deleted file mode 100644 index bfc3c4e..0000000 --- a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/METADATA +++ /dev/null @@ -1,116 +0,0 @@ -Metadata-Version: 2.0 -Name: Werkzeug -Version: 0.14.1 -Summary: The comprehensive WSGI web application library. -Home-page: https://www.palletsprojects.org/p/werkzeug/ -Author: Armin Ronacher -Author-email: armin.ronacher@active-4.com -License: BSD -Description-Content-Type: UNKNOWN -Platform: any -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Provides-Extra: dev -Requires-Dist: coverage; extra == 'dev' -Requires-Dist: pytest; extra == 'dev' -Requires-Dist: sphinx; extra == 'dev' -Requires-Dist: tox; extra == 'dev' -Provides-Extra: termcolor -Requires-Dist: termcolor; extra == 'termcolor' -Provides-Extra: watchdog -Requires-Dist: watchdog; extra == 'watchdog' - -Werkzeug -======== - -Werkzeug is a comprehensive `WSGI`_ web application library. It began as -a simple collection of various utilities for WSGI applications and has -become one of the most advanced WSGI utility libraries. - -It includes: - -* An interactive debugger that allows inspecting stack traces and source - code in the browser with an interactive interpreter for any frame in - the stack. -* A full-featured request object with objects to interact with headers, - query args, form data, files, and cookies. -* A response object that can wrap other WSGI applications and handle - streaming data. -* A routing system for matching URLs to endpoints and generating URLs - for endpoints, with an extensible system for capturing variables from - URLs. -* HTTP utilities to handle entity tags, cache control, dates, user - agents, cookies, files, and more. -* A threaded WSGI server for use while developing applications locally. -* A test client for simulating HTTP requests during testing without - requiring running a server. - -Werkzeug is Unicode aware and doesn't enforce any dependencies. It is up -to the developer to choose a template engine, database adapter, and even -how to handle requests. It can be used to build all sorts of end user -applications such as blogs, wikis, or bulletin boards. - -`Flask`_ wraps Werkzeug, using it to handle the details of WSGI while -providing more structure and patterns for defining powerful -applications. - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - pip install -U Werkzeug - - -A Simple Example ----------------- - -.. code-block:: python - - from werkzeug.wrappers import Request, Response - - @Request.application - def application(request): - return Response('Hello, World!') - - if __name__ == '__main__': - from werkzeug.serving import run_simple - run_simple('localhost', 4000, application) - - -Links ------ - -* Website: https://www.palletsprojects.com/p/werkzeug/ -* Releases: https://pypi.org/project/Werkzeug/ -* Code: https://github.com/pallets/werkzeug -* Issue tracker: https://github.com/pallets/werkzeug/issues -* Test status: - - * Linux, Mac: https://travis-ci.org/pallets/werkzeug - * Windows: https://ci.appveyor.com/project/davidism/werkzeug - -* Test coverage: https://codecov.io/gh/pallets/werkzeug - -.. _WSGI: https://wsgi.readthedocs.io/en/latest/ -.. _Flask: https://www.palletsprojects.com/p/flask/ -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - diff --git a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/RECORD b/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/RECORD deleted file mode 100644 index 3f720ae..0000000 --- a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/RECORD +++ /dev/null @@ -1,97 +0,0 @@ -Werkzeug-0.14.1.dist-info/DESCRIPTION.rst,sha256=rOCN36jwsWtWsTpqPG96z7FMilB5qI1CIARSKRuUmz8,2452 -Werkzeug-0.14.1.dist-info/LICENSE.txt,sha256=xndz_dD4m269AF9l_Xbl5V3tM1N3C1LoZC2PEPxWO-8,1534 -Werkzeug-0.14.1.dist-info/METADATA,sha256=FbfadrPdJNUWAxMOKxGUtHe5R3IDSBKYYmAz3FvI3uY,3872 -Werkzeug-0.14.1.dist-info/RECORD,, -Werkzeug-0.14.1.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110 -Werkzeug-0.14.1.dist-info/metadata.json,sha256=4489UTt6HBp2NQil95-pBkjU4Je93SMHvMxZ_rjOpqA,1452 -Werkzeug-0.14.1.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9 -werkzeug/__init__.py,sha256=NR0d4n_-U9BLVKlOISean3zUt2vBwhvK-AZE6M0sC0k,6842 -werkzeug/_compat.py,sha256=8c4U9o6A_TR9nKCcTbpZNxpqCXcXDVIbFawwKM2s92c,6311 -werkzeug/_internal.py,sha256=GhEyGMlsSz_tYjsDWO9TG35VN7304MM8gjKDrXLEdVc,13873 -werkzeug/_reloader.py,sha256=AyPphcOHPbu6qzW0UbrVvTDJdre5WgpxbhIJN_TqzUc,9264 -werkzeug/datastructures.py,sha256=3IgNKNqrz-ZjmAG7y3YgEYK-enDiMT_b652PsypWcYg,90080 -werkzeug/exceptions.py,sha256=3wp95Hqj9FqV8MdikV99JRcHse_fSMn27V8tgP5Hw2c,20505 -werkzeug/filesystem.py,sha256=hHWeWo_gqLMzTRfYt8-7n2wWcWUNTnDyudQDLOBEICE,2175 -werkzeug/formparser.py,sha256=mUuCwjzjb8_E4RzrAT2AioLuZSYpqR1KXTK6LScRYzA,21722 -werkzeug/http.py,sha256=RQg4MJuhRv2isNRiEh__Phh09ebpfT3Kuu_GfrZ54_c,40079 -werkzeug/local.py,sha256=QdQhWV5L8p1Y1CJ1CDStwxaUs24SuN5aebHwjVD08C8,14553 -werkzeug/posixemulation.py,sha256=xEF2Bxc-vUCPkiu4IbfWVd3LW7DROYAT-ExW6THqyzw,3519 -werkzeug/routing.py,sha256=2JVtdSgxKGeANy4Z_FP-dKESvKtkYGCZ1J2fARCLGCY,67214 -werkzeug/script.py,sha256=DwaVDcXdaOTffdNvlBdLitxWXjKaRVT32VbhDtljFPY,11365 -werkzeug/security.py,sha256=0m107exslz4QJLWQCpfQJ04z3re4eGHVggRvrQVAdWc,9193 -werkzeug/serving.py,sha256=A0flnIJHufdn2QJ9oeuHfrXwP3LzP8fn3rNW6hbxKUg,31926 -werkzeug/test.py,sha256=XmECSmnpASiYQTct4oMiWr0LT5jHWCtKqnpYKZd2ui8,36100 -werkzeug/testapp.py,sha256=3HQRW1sHZKXuAjCvFMet4KXtQG3loYTFnvn6LWt-4zI,9396 -werkzeug/urls.py,sha256=dUeLg2IeTm0WLmSvFeD4hBZWGdOs-uHudR5-t8n9zPo,36771 -werkzeug/useragents.py,sha256=BhYMf4cBTHyN4U0WsQedePIocmNlH_34C-UwqSThGCc,5865 -werkzeug/utils.py,sha256=BrY1j0DHQ8RTb0K1StIobKuMJhN9SQQkWEARbrh2qpk,22972 -werkzeug/websocket.py,sha256=PpSeDxXD_0UsPAa5hQhQNM6mxibeUgn8lA8eRqiS0vM,11344 -werkzeug/wrappers.py,sha256=kbyL_aFjxELwPgMwfNCYjKu-CR6kNkh-oO8wv3GXbk8,84511 -werkzeug/wsgi.py,sha256=1Nob-aeChWQf7MsiicO8RZt6J90iRzEcik44ev9Qu8s,49347 -werkzeug/contrib/__init__.py,sha256=f7PfttZhbrImqpr5Ezre8CXgwvcGUJK7zWNpO34WWrw,623 -werkzeug/contrib/atom.py,sha256=qqfJcfIn2RYY-3hO3Oz0aLq9YuNubcPQ_KZcNsDwVJo,15575 -werkzeug/contrib/cache.py,sha256=xBImHNj09BmX_7kC5NUCx8f_l4L8_O7zi0jCL21UZKE,32163 -werkzeug/contrib/fixers.py,sha256=gR06T-w71ur-tHQ_31kP_4jpOncPJ4Wc1dOqTvYusr8,10179 -werkzeug/contrib/iterio.py,sha256=RlqDvGhz0RneTpzE8dVc-yWCUv4nkPl1jEc_EDp2fH0,10814 -werkzeug/contrib/jsrouting.py,sha256=QTmgeDoKXvNK02KzXgx9lr3cAH6fAzpwF5bBdPNvJPs,8564 -werkzeug/contrib/limiter.py,sha256=iS8-ahPZ-JLRnmfIBzxpm7O_s3lPsiDMVWv7llAIDCI,1334 -werkzeug/contrib/lint.py,sha256=Mj9NeUN7s4zIUWeQOAVjrmtZIcl3Mm2yDe9BSIr9YGE,12558 -werkzeug/contrib/profiler.py,sha256=ISwCWvwVyGpDLRBRpLjo_qUWma6GXYBrTAco4PEQSHY,5151 -werkzeug/contrib/securecookie.py,sha256=uWMyHDHY3lkeBRiCSayGqWkAIy4a7xAbSE_Hln9ecqc,12196 -werkzeug/contrib/sessions.py,sha256=39LVNvLbm5JWpbxM79WC2l87MJFbqeISARjwYbkJatw,12577 -werkzeug/contrib/testtools.py,sha256=G9xN-qeihJlhExrIZMCahvQOIDxdL9NiX874jiiHFMs,2453 -werkzeug/contrib/wrappers.py,sha256=v7OYlz7wQtDlS9fey75UiRZ1IkUWqCpzbhsLy4k14Hw,10398 -werkzeug/debug/__init__.py,sha256=uSn9BqCZ5E3ySgpoZtundpROGsn-uYvZtSFiTfAX24M,17452 -werkzeug/debug/console.py,sha256=n3-dsKk1TsjnN-u4ZgmuWCU_HO0qw5IA7ttjhyyMM6I,5607 -werkzeug/debug/repr.py,sha256=bKqstDYGfECpeLerd48s_hxuqK4b6UWnjMu3d_DHO8I,9340 -werkzeug/debug/tbtools.py,sha256=rBudXCmkVdAKIcdhxANxgf09g6kQjJWW9_5bjSpr4OY,18451 -werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673 -werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507 -werkzeug/debug/shared/debugger.js,sha256=PKPVYuyO4SX1hkqLOwCLvmIEO5154WatFYaXE-zIfKI,6264 -werkzeug/debug/shared/jquery.js,sha256=7LkWEzqTdpEfELxcZZlS6wAx5Ff13zZ83lYO2_ujj7g,95957 -werkzeug/debug/shared/less.png,sha256=-4-kNRaXJSONVLahrQKUxMwXGm9R4OnZ9SxDGpHlIR4,191 -werkzeug/debug/shared/more.png,sha256=GngN7CioHQoV58rH6ojnkYi8c_qED2Aka5FO5UXrReY,200 -werkzeug/debug/shared/source.png,sha256=RoGcBTE4CyCB85GBuDGTFlAnUqxwTBiIfDqW15EpnUQ,818 -werkzeug/debug/shared/style.css,sha256=IEO0PC2pWmh2aEyGCaN--txuWsRCliuhlbEhPDFwh0A,6270 -werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220 -Werkzeug-0.14.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -werkzeug/debug/__pycache__/__init__.cpython-36.pyc,, -werkzeug/debug/__pycache__/console.cpython-36.pyc,, -werkzeug/debug/__pycache__/repr.cpython-36.pyc,, -werkzeug/debug/__pycache__/tbtools.cpython-36.pyc,, -werkzeug/__pycache__/routing.cpython-36.pyc,, -werkzeug/__pycache__/websocket.cpython-36.pyc,, -werkzeug/__pycache__/test.cpython-36.pyc,, -werkzeug/__pycache__/datastructures.cpython-36.pyc,, -werkzeug/__pycache__/formparser.cpython-36.pyc,, -werkzeug/__pycache__/_compat.cpython-36.pyc,, -werkzeug/__pycache__/__init__.cpython-36.pyc,, -werkzeug/__pycache__/exceptions.cpython-36.pyc,, -werkzeug/__pycache__/wrappers.cpython-36.pyc,, -werkzeug/__pycache__/http.cpython-36.pyc,, -werkzeug/__pycache__/filesystem.cpython-36.pyc,, -werkzeug/__pycache__/utils.cpython-36.pyc,, -werkzeug/__pycache__/serving.cpython-36.pyc,, -werkzeug/__pycache__/posixemulation.cpython-36.pyc,, -werkzeug/__pycache__/_internal.cpython-36.pyc,, -werkzeug/__pycache__/wsgi.cpython-36.pyc,, -werkzeug/__pycache__/testapp.cpython-36.pyc,, -werkzeug/__pycache__/script.cpython-36.pyc,, -werkzeug/__pycache__/security.cpython-36.pyc,, -werkzeug/__pycache__/useragents.cpython-36.pyc,, -werkzeug/__pycache__/local.cpython-36.pyc,, -werkzeug/__pycache__/urls.cpython-36.pyc,, -werkzeug/__pycache__/_reloader.cpython-36.pyc,, -werkzeug/contrib/__pycache__/lint.cpython-36.pyc,, -werkzeug/contrib/__pycache__/limiter.cpython-36.pyc,, -werkzeug/contrib/__pycache__/fixers.cpython-36.pyc,, -werkzeug/contrib/__pycache__/cache.cpython-36.pyc,, -werkzeug/contrib/__pycache__/__init__.cpython-36.pyc,, -werkzeug/contrib/__pycache__/testtools.cpython-36.pyc,, -werkzeug/contrib/__pycache__/iterio.cpython-36.pyc,, -werkzeug/contrib/__pycache__/wrappers.cpython-36.pyc,, -werkzeug/contrib/__pycache__/atom.cpython-36.pyc,, -werkzeug/contrib/__pycache__/jsrouting.cpython-36.pyc,, -werkzeug/contrib/__pycache__/sessions.cpython-36.pyc,, -werkzeug/contrib/__pycache__/profiler.cpython-36.pyc,, -werkzeug/contrib/__pycache__/securecookie.cpython-36.pyc,, diff --git a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/WHEEL b/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/WHEEL deleted file mode 100644 index 0de529b..0000000 --- a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.26.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/metadata.json b/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/metadata.json deleted file mode 100644 index bca8d12..0000000 --- a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"generator": "bdist_wheel (0.26.0)", "summary": "The comprehensive WSGI web application library.", "classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules"], "description_content_type": "UNKNOWN", "extensions": {"python.details": {"project_urls": {"Home": "https://www.palletsprojects.org/p/werkzeug/"}, "contacts": [{"email": "armin.ronacher@active-4.com", "name": "Armin Ronacher", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}}}, "license": "BSD", "metadata_version": "2.0", "name": "Werkzeug", "platform": "any", "extras": ["dev", "termcolor", "watchdog"], "run_requires": [{"requires": ["coverage", "pytest", "sphinx", "tox"], "extra": "dev"}, {"requires": ["termcolor"], "extra": "termcolor"}, {"requires": ["watchdog"], "extra": "watchdog"}], "version": "0.14.1"} \ No newline at end of file diff --git a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/top_level.txt b/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/top_level.txt deleted file mode 100644 index 6fe8da8..0000000 --- a/venv/lib/python3.6/site-packages/Werkzeug-0.14.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -werkzeug diff --git a/venv/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc b/venv/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc deleted file mode 100644 index 19829c478f7dea011a33b52097ae726b3110e685..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmXr!<>lJ8hcBj%fq~&M5W@izkmUfx#Y#XTg&~R|l`(}eo2f`Hg(-zOhbfmiikXoi zmARRLks*a8m_d`ZN;;@CPoX3uRlzl}xY9GPxFj(rMsH#ada5BUq<>Rxdr+KnFYE@rI|S?x_QQ_=EVh7X8H(|^pQ=_E2zB1VUwGm VQks)$#|Sj07-SX;69*#?BLK^5O$q=2 diff --git a/venv/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc b/venv/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc deleted file mode 100644 index fe448d1441918bd3294910f57c57d3b8c2b7fe53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26448 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 diff --git a/venv/lib/python3.6/site-packages/cachetools/__pycache__/abc.cpython-36.pyc b/venv/lib/python3.6/site-packages/cachetools/__pycache__/abc.cpython-36.pyc deleted file mode 100644 index 3ad1b248258242e64098b4fb7d5b636b2dec7b01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1409 zcmZvc&u`N(6vu5RP17{(#z3$Qi30~jCAJCJaiB^3I-pfZyG2M*8oOKC{F?0`Z3-8* ze};d_CnQe%3!Hc_-P*Oot)E})7yI+RdCBWu&s+P||N6xyD*P01(1ZQi;fyd~JAb!i2Ta3*cxUSd2uCIjaW>_P_AtVJVLq?Hz7 zl9h$jLzwHsoR(3nGoeol9%JZDv%ooou7+R)2`DE48NF!7OXYq@BW_7%DplvcSco`@|{e+dU+NJz86RFsnA7{s@rZf zig(L%cVA6IPQNu8xVe zV5C1lz9tdV4Z|!^3X%@Pfo>ZxY!Ar=~TTI&vNHw*a|@6dH6o zYz`k-3mVhrv!}R|jlQp+%2J04xONUS*kHY11K~yCF*5b-=eef^)6r#!Vi%Uo#s@rKSgDPCe6g6-{oy{i|S}68c*6=di4> z2$0W%M}D!jocZn|7Nvo|Z`?4I;AI$?ai^6O?1d}KQR&67r%WUS`e%o^#=6lWBpo19WN>>svBvydw z#zmUK{z;K5W5LVXK$!kfrK3?QuD=(}?Z%bjBvD#OWAg-%{=;D0gISty@vGA4T4d3AaEIxD^y!N>E#gq6%7CTD1})4}e-^RT^zPV_19bH8X2O zEawI1NAxfBFYQyMKJgd&)bGrCZ6^f8S~GLz;yJhPoHO5SY*gz1)cy?C82gv4d>-ig zXyz_D$s~{2fVVkk(vfcL4BWQM*{@7`(m!O3!g+2)u9{cqmdXsKr^JBxSMgIOIWep zf46U?gVC)~G`hJrj$(Oppuhg=WvJw>PS|;&(j|23Hz(b2l0F5rP1xOT0B>Ea_Z-$yft=$5!@ zy8tpF=@W}B4hZMiD$BAAfU!WX$qL3bxh|_1D{@2DFs{qGY+$U)O}T|}L!OeSG1gRF zo{?t{*^IXvpwG!|OK++zd0t+y^eO4Utrs)@0fB1r!=rH;?!~G($m5}zCQZ2cm1>5j z88!`q2b&gv%|y?Mz0hDS4vpE_JsC^4q3G1nm8mmjf=yYErM$=bYx+{^%rF=3eDoy8 z%%4(UDiCKwwVbU1)do?OboCbQ%RCu%Qn<)U4s2m-Ig?=;W{qO6GuGPf*Nc@w_?i~x zu+7Tzxju!PS3GNh3v5KgC>7!?HVyfnagUdHmBYgrCp9YqLMlJjA%W?mkq}|y=`#?d zU61v63On@N9^5^n6(6nC_0HxIHo1J&T)(Qngb%EY_lPbuz@*iJErhTJ7ed!@Z|233 zNj1rr`4ss^Z-dt7(6x9T8cVnqN@+FHLR`ifL(pd2u}XO>3gt(R1mZeQT7|v3-pn)6lPY?zd(?f2QGR(b!Pm)n|f2X@9AcW3^(I% zI3cd*_RHoDMvoMldVQv!zP^CDKlRQrd;T$Ir5V(F`Q0B-+y1Adhq!J2uWfeV4{`f} zPgw7{Q+^jW<-4F@B;4kIi!>|zIld=#n=TP*Niz=hbJZ&6-Xkn#mES3sT60KZ}adXDu=IV`y~Y*9ii^JBq+I?zdmX&4QS5I+%P zx{mS5Rsq4~_Q_nyEh+dC)(RVNO|ka@zPgG1U(gD63&by?=18tNq9eG$7ZiXLdU#>L zY&zHUy%~Xy2=Utr$7O1>TOZHPjn(i&+{!}Wgb)u`m~9l+v^z(5Q7W~;Or9Z_ky?{W zPhU`}dL0eM0~Du;Y9`%ginR_^vmK;9N`oh7KpP~x3-0b@&V8PBKbAWsW;IMt=Ki7l zTV(VnDmaTMgX z^gUY^fuI+=rXubCLNR^s&jcvQ$Ep`s9QdmuF{k;goU)eP88LT zEEwrzgm>h=b%(w|YgLnmY1A30^hF|%S7a-+eQVJpfMhTi(FNRdN={`h2!c}32z+{Z z(XZ-PefwP4Mb*U9t~-Xo@U+tuE14Vabu`&CDZLI$f#E+CC diff --git a/venv/lib/python3.6/site-packages/cachetools/__pycache__/func.cpython-36.pyc b/venv/lib/python3.6/site-packages/cachetools/__pycache__/func.cpython-36.pyc deleted file mode 100644 index 34d1c5a9b71f1de5569669b56135d9433d498661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4198 zcmcgvTW=f36`sqITvC)o%ko9Ou5+syKy;HdOFt#?KirClyP zyR<8UDgw}j{Ee0`7iV--hF#=(EpI(rcVC#eAl?5)qGuFF4UMlD@R9<2$x3`6b(y{qlYTloM5A z*LOMlhV?v$>FQq1Y;i`fovjtKzhOObpQ(~6M+`Hw zIuoz>E0(TBXX90W74!}NoR+)i)v{`+GipVhedLUVf8pm$t*Ud+m^!B~j-|hb{&{r) z{R?^({Y&aCwWcmT_D>Z-b|OS{+9#cipssYQ%jSC`dwUEVEY z%u$|N!kDMzSFHK&@TXhbgI<^=NtCuCGw6gtxTCkcFp2v?)_oXhFV=C=9d>(+(Ykl<+`CP? zSh_u~ymS5Rr@bJ&bf+?U!>Ldj=r%*j50mXj}b?)4rfgPyW` zZH6QoJ=6-6+bF4vDq|yjhi^CmAtT)*1X3Ms|BadRSn#ipZ)I`+R=?X{e>mtyYCSd| ze(*TZ>Q+eDScM!X3Hw%m->l%<8?*~;$Hegbi4(P^5;n`Z+v)UzSa&*kt<#AUHHe6= zcRG&;K~&6`GvJZCeUtRH$qMH7bjPX-SYpnix{8uIs9fO)JMwB6JuI2SsKhg7p_Iy* zKv@DT<-9RH_*B;+DS{qqODGo1iy$(#%SSAOQpSA5M`G;2br`sa&0KbS+f8YzSVj_e zd)*9DmbRlL$S{76#wCm-FJ;|Wo6~|_!~FM93OM<2?ewWyQ=TVuP5QRSBRuR;_@-su zv%aHB#2$TYXV)NBstU$r=IoY6@`#NQle6+jDt9c>-Vqzg zP6aBK9d{&9S4R}3s+)!Y4^iwx=c}XG^L+^7h`+eR*^zi44%h)dV!P}>pymhi8))ZO ztj+Gjd`66nXC%iCc)~Ab0Vv@C7r9MtN719{m}Lx^22~bvTG5nw$$Dn)Lpz z>U*3G>m=kDafbvf6mcX#vEPdg2s;;h;wKhBgrHIw>7eie$p1DNns=yrm#UdTC$H%0FLLht{~n8f6@UkA}ZTN)|B3Cttpn!TsC<$F1Q(kxkIbBBU< zE|K?M33BDB3Hk`Ux3NJ=Ue0*ULhQm|9KOUo^aV!FgD&&o`>z4}gk`?a=@g{ubec6o z-t4>CeqSq`#;@!I=?)!BVmzV)JS!MpZcvzoz7#xSTcVkKx8 zF6AQX*{gvV{^j%OrO3+?j{x+7`HksmH`_sfewRWJhyuD^WjjIUrNI-O);v6eK7GD5 zNe5e=(di({Qtx4qYUSbX6?k`bkY?T;qaP1+FN^lQdo*4v&+uT%Czi8&(-=JwOQ54Q>l9D1moUGG}xOn|ybE@rQHl%r>EW=CW( zGI6!PzcIK9SNosFDZ&Y=6aT_N8KmdyNMfa(|bZmqjl0D>6T`%t_YUa zAw3$P>-{UCUBtw>yD}t5<%Eqv{ zv_ByhGm(o3cG4Deccb|4`IN4YDdieR)P;*X8D1ffa+dgtsPoAy99iZ|PNUkW*4AtF IT79Md9ZH746951J diff --git a/venv/lib/python3.6/site-packages/cachetools/__pycache__/keys.cpython-36.pyc b/venv/lib/python3.6/site-packages/cachetools/__pycache__/keys.cpython-36.pyc deleted file mode 100644 index d7b99fa8523f5c7d81a5d478167158cbb0d4c69b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1704 zcmb7EQHvWl5SFy^dhOi#(valZBt7<}6c^%aT1rAVj?flbC|sc_eK0A@-b%i+z3cT! zyGhUNJ^7yVKl+#SROnOxLZ14K+;fa6lnOM`jI=Y~e45!WcXzvcfAn5Gk&OMxHU@O| z0@IREY{(Q>BIkt|3eHq_7<|W6ONG}=g<39yVM~WgHsZs!YOCOy4I>pPiM69TFIoTA z;?p1WWjv~9Sv4+aHXfBGE_6|j7vtGktaMhIv?`4q{Dp9=&)r^nYRkN?bTTgHrKw!| zJhkUjed(g=a;_D28C|^@0X8o%?Q;mth8&oM;=@48Noxe`K*fPlPC{r>wV(mH*Fx2X z)>a%yBe#=$k4RemT+efTk_q^uK>=ufgK1-khE3R&XoO|=dN zFX2~Tpo_%Mb)jdK9h~%A9)}BT zUAWMque5Tlait53H=DjGQZwxfC-I4O;q(oy+v!oAJR;mg3kxKFAl7-&**dSUp%C(h zzva{@6{mm5H7wsEnx>gn3}T%STAKGE8un}N ziUT9i{K7c9Kr`PouB2GtLJU54{Ph+I?>a|kdZvGyo8vw?BhQj89^U+#21j|BrMW#G ztnaN+5P~&|2P+hJUWqGk1SF{TEhOe4?x5$0bH@|&G1e_O<^VP-qkn+(rJ)GsE(uE1 z>_foEN3^GyEO`qq` ud{`<27nY|JomJ*TDDS;&#P$8-e;Luys{4-VwJf!n6gxr&w?Bx2sPi{lU3H@X diff --git a/venv/lib/python3.6/site-packages/cachetools/__pycache__/lfu.cpython-36.pyc b/venv/lib/python3.6/site-packages/cachetools/__pycache__/lfu.cpython-36.pyc deleted file mode 100644 index b97621de1d013b51f5f59511a0aa63da9f5b3bb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1576 zcmZux%Wm676rCB8B1JvyxPj23T@XbJgg|1$Z5Bn476y!_iyB(ANFRiO3Bwt+RQU1? z8AO7-iTpG9C9Vo|m0#$p_l`tGZcSk>?{F^Xo;f^6Uynxq!C&LcQ=5>#$=(HXat1>` zh9HQb8OdoxDdsF=5fhfMGb^_vo01=ha76Ehh@Q09R^$lwGYQ@I@Fodqdl0|WW!BV^ zr+HPXditJj7M$}q`BNrX)?F4PXE5{y1W6()2(+S+B}UlrhDNq@=Dis;4QbSanF}*l zc(CTe%!659_%QRtKn!n4)HiU(t#|S4x#_q(y^yi4gJ()!HL|F)Metlp5j=o`Fh~$o z08lfT!(v>gWpO-B5E)*0M{>?#=+7Y3WKLIPMOSQXQBt$HwI(aVZ9#wpIt?9#<*mng zTBJ4S?I0<$OeVOmZr$^;DQctFKP4Vku6{G3v6+^nRMnn&WDrdhqH1hDK`olOWX15jYj$m|$Q&|*TRu-I^O%>7JUN)S#KcUfpxpW`F$wgQaZeibXT%t6$!#&bTomaW0it>kkxO&Y8wS@ zX|xQD23Utl$P8(`1Jibe^N&AZ@^53>l_cm#ybuq{!eE+0vX~&2ITdtGFX<(_rq}FO zQhZ^9&R_ZJ2_^WeEdh#{+jD0^*7Pm?ofL<^A?sw`1D((r{2d6?g}prcN#^Bi8N`JM zl&l+71U0zr#RJgB!@!6kd=XS}s)EdTboRlc4S4j}2x~d`QU|FHWM0*aY3Lf6wS&CW zHFzh_%cAvvL1BHbRH<6;N4eN!eUM5PYYi?0KNfK=A+xHo3irruDgQ5_E|ehA=y#1` zCXCSu_-4YEhdV)Ti_rAGLf%`S^Sl&IhHZwNUo~;IZR&C^%7k-cMe`4#?!g=C2*XDh zKE;3@-wWst|}ue diff --git a/venv/lib/python3.6/site-packages/cachetools/__pycache__/lru.cpython-36.pyc b/venv/lib/python3.6/site-packages/cachetools/__pycache__/lru.cpython-36.pyc deleted file mode 100644 index ae4b1b9172434a2d2e8592ffa27973fe5343c789..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1949 zcma)7TaOzx6t+E+WOCi?Qmqh|Y90V}q&BOT6%S~sDiwr)YLT|8Xd{F>9XoW=xz%>6 zCQ4t({u$o+HGV?kseged&T%r?bhQE;*>gPSjQySOT=IFp-`V?f@be!HLjEEXE)z7XhX=wvn0g9}Bx5QFTt&y8*vAXc>DZTzX>&r|g>>A6 zT?=+C5rD1*y8w1=(Scncx}tYZ#%s_{8bJegMJ}K-S^8fLn)$Dm;DzPz^y=`>@m~^%~_B@HQIGuYvi7#@@T& zwkBI9k;N^Ohp?%c1pXY8UqSJ0cvNlBN1kKO0jn_ynIUsmVA^On#~^JmT_S92l3<16 zU@$Qi9AV#sFh4NFKu%BD3L^W4{zQsTd}6#89rXnz_%pshJyhu-S<&C<6H*KxBgtgi z!fcp8b8t21E$*JlynH3YxDcU|W~PeJKz%*E0jY2^bg_?~hE<%ZFmpAj>YAKEO^z1b zPj#5;Q0A4HpGJZ83;Ehu9|%y6AlrXv%IZ7Vx=OXd4|4vEQl+wONQx}h8cGg|uZVLA zl2?^g#4b3!OkxZ4NG?{k#+)UL(F3TDL$(-h^KN5gyXYD>C6|RrkVhQv@QJN;KE&8U zmvD6gY+eU88L&B8vne*QKOw*)d%Vp6&pD_*h9eXP^xtrUhwD=N3=DMu3!#h-FBkUO z=4z;4!Z-873#ce9=?U2ZeEh!ve+UQt7hrWAjBdi*Vm$<`*e?ePi`I5H&r31OFlar_ zU(Vue6T%kfqD(k?!r44{4)}? z(0EWleb(^@je$S#gLaR0nob`z5z}M_DGZntM%f*08?K+Nf#5+`-C%>0wKsRM>RdDH Jv4Hiwe*o*8r-%Rm diff --git a/venv/lib/python3.6/site-packages/cachetools/__pycache__/rr.cpython-36.pyc b/venv/lib/python3.6/site-packages/cachetools/__pycache__/rr.cpython-36.pyc deleted file mode 100644 index a6fe061441eec1c8708cec743b3c19ee0e447a15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 zcmZuwON$&g5SG->8PCoR1{+@jIwY`dytDX$PsSKbFiBt!6GM_FpzUpGygl2mRjZ9> z7+*5`XYz+~&?%6U|3XfwQqP*TiJ(-aM^}};@9U=r2jj!Pr@#N@5%LeYHGGI)fpsrn zl0?#yR5Ya&V^*@1Nl*HvSNW+Adw~qENgBK%GLrE%k+Jf3UK&dFGf76DAOlILJ2%%>axBOrAlYNJ=FE9BAq(e-%i!beLSzG*r=m$d0DLfJhn-SlDQ>aIf7QFWe*e zLbYXa=TWj{hONBISaaiV zi3sX&%g{?QpciWV*v3K>bzy|i0W5Wh6Ta8Z#J)kXMGtGqbmE*6&vL)+tE8^ zaMdgw>cfQS=?P3TunyTEbjrpwW}DeQ?fj~lKa;%?IkSQg`lW@8M`tO52|DeB-diE;;F32j}(j8sG58#ORHYW>J zHSZM%*11-u*EP@hAY^`abg9;l`1`EvRdUALtkCn#o$oqcbX--fS)V46d!hBqqBC~< zLoL;Z@3n5Ujek<>AsPW?W!7~<3yj{c4JE%GOMnx?ym0oJ-*-f z`&I3WtE<7e|P3RRp*WA{WoA!n$oVSH8pyM$=5!+IQnof09ID zcQ78wWcy1~KX9+NJNKdvhvmOQyi2$f87)&75UB=nR)r@j56qS$d{KR1v|JI06`Vcc zVzPSbhBv#z-PGQV_ERs~8+T=tI>Tr$Nu9BbKHcuv*&IAuIIiP}*U`+(nGqT@3oWL@ z$IR`fB|SWm6*Nsdb>gVMQ{MTbAy@F=zb{=&2IFhv?)b{xNw+Vq4CD*X-)~3aT8DZi zqftLz?j}k9>Ucl(!>~K-CSkaWZ^TsCFgot#vDX5@NZhv^61A+r&LQ8-)dUh+sz7X zIcyK04pkeB#H7!DEe!8Z+WqWFH4NkaD2bsvEiUV9*4UKRQ9YVS*^$yKiG0hk0>{_Z z?ci?lqvc-55pSU>aB2z*h*Y72v!jCsNL9fCq^clkRm6&@;khqX6>`1sPInN=j`9XR z$1{(@;~JoXFx3FHwxtRoD_zy^hGD`_q-*)*Fp87z@Dt#eI7nUfcu8TUE6wo~juM2~ z`;SIpAyW3F)pb_Yl%V*1D_`Ezy5o)<;6y-7aggZO!em@MKp;U}O z!wgK{nwE0u=LJA16G5tM^#VEssFLfHmdnAN(3+b=kMa?^4o6t8z{CKr32AL@P08;7 zw1vp>1aD*(bd&{4#He@zw4z}W$uPWtp)pNOf!8h1tTU|c&?zuxHs~u-zsa{Y&}34X zuPUi>8!CZJB~UJg9qn}vxsgE-?U7Kf@pH5YV!E`Lepbv);1r&u7Mf3X%$!Rs$%s@= zd$gNW1ku*{Tt^B;3j$G6WHS~1DQBCRi;TIfwDL)mw39^Y8FOSO5{B8>F#Oii z{2Rsm#pCT}Rg&8!c}~*AI`~hr_aqwvUvoi&z0$KK7tjtI8&h!K@*UsvecuKj@JR

OCngEG+qN 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 A_y7O^ diff --git a/venv/lib/python3.6/site-packages/cachetools/abc.py b/venv/lib/python3.6/site-packages/cachetools/abc.py deleted file mode 100644 index b663d96..0000000 --- a/venv/lib/python3.6/site-packages/cachetools/abc.py +++ /dev/null @@ -1,48 +0,0 @@ -from __future__ import absolute_import - -import collections -from abc import abstractmethod - - -class DefaultMapping(collections.MutableMapping): - - __slots__ = () - - @abstractmethod - def __contains__(self, key): # pragma: nocover - return False - - @abstractmethod - def __getitem__(self, key): # pragma: nocover - if hasattr(self.__class__, '__missing__'): - return self.__class__.__missing__(self, key) - else: - raise KeyError(key) - - def get(self, key, default=None): - if key in self: - return self[key] - else: - return default - - __marker = object() - - def pop(self, key, default=__marker): - if key in self: - value = self[key] - del self[key] - elif default is self.__marker: - raise KeyError(key) - else: - value = default - return value - - def setdefault(self, key, default=None): - if key in self: - value = self[key] - else: - self[key] = value = default - return value - - -DefaultMapping.register(dict) diff --git a/venv/lib/python3.6/site-packages/cachetools/cache.py b/venv/lib/python3.6/site-packages/cachetools/cache.py deleted file mode 100644 index 5cb8071..0000000 --- a/venv/lib/python3.6/site-packages/cachetools/cache.py +++ /dev/null @@ -1,91 +0,0 @@ -from __future__ import absolute_import - -from .abc import DefaultMapping - - -class _DefaultSize(object): - def __getitem__(self, _): - return 1 - - def __setitem__(self, _, value): - assert value == 1 - - def pop(self, _): - return 1 - - -class Cache(DefaultMapping): - """Mutable mapping to serve as a simple cache or cache base class.""" - - __size = _DefaultSize() - - def __init__(self, maxsize, getsizeof=None): - if getsizeof: - self.getsizeof = getsizeof - if self.getsizeof is not Cache.getsizeof: - self.__size = dict() - self.__data = dict() - self.__currsize = 0 - self.__maxsize = maxsize - - def __repr__(self): - return '%s(%r, maxsize=%r, currsize=%r)' % ( - self.__class__.__name__, - list(self.__data.items()), - self.__maxsize, - self.__currsize, - ) - - def __getitem__(self, key): - try: - return self.__data[key] - except KeyError: - return self.__missing__(key) - - def __setitem__(self, key, value): - maxsize = self.__maxsize - size = self.getsizeof(value) - if size > maxsize: - raise ValueError('value too large') - if key not in self.__data or self.__size[key] < size: - while self.__currsize + size > maxsize: - self.popitem() - if key in self.__data: - diffsize = size - self.__size[key] - else: - diffsize = size - self.__data[key] = value - self.__size[key] = size - self.__currsize += diffsize - - def __delitem__(self, key): - size = self.__size.pop(key) - del self.__data[key] - self.__currsize -= size - - def __contains__(self, key): - return key in self.__data - - def __missing__(self, key): - raise KeyError(key) - - def __iter__(self): - return iter(self.__data) - - def __len__(self): - return len(self.__data) - - @property - def maxsize(self): - """The maximum size of the cache.""" - return self.__maxsize - - @property - def currsize(self): - """The current size of the cache.""" - return self.__currsize - - @staticmethod - def getsizeof(value): - """Return the size of a cache element's value.""" - return 1 diff --git a/venv/lib/python3.6/site-packages/cachetools/func.py b/venv/lib/python3.6/site-packages/cachetools/func.py deleted file mode 100644 index 1b0b856..0000000 --- a/venv/lib/python3.6/site-packages/cachetools/func.py +++ /dev/null @@ -1,136 +0,0 @@ -"""`functools.lru_cache` compatible memoizing function decorators.""" - -from __future__ import absolute_import - -import collections -import functools -import random -import time - -try: - from threading import RLock -except ImportError: # pragma: no cover - from dummy_threading import RLock - -from . import keys -from .lfu import LFUCache -from .lru import LRUCache -from .rr import RRCache -from .ttl import TTLCache - -__all__ = ('lfu_cache', 'lru_cache', 'rr_cache', 'ttl_cache') - - -_CacheInfo = collections.namedtuple('CacheInfo', [ - 'hits', 'misses', 'maxsize', 'currsize' -]) - - -class _UnboundCache(dict): - - maxsize = None - - @property - def currsize(self): - return len(self) - - -class _UnboundTTLCache(TTLCache): - def __init__(self, ttl, timer): - TTLCache.__init__(self, float('inf'), ttl, timer) - - @property - def maxsize(self): - return None - - -def _cache(cache, typed=False): - def decorator(func): - key = keys.typedkey if typed else keys.hashkey - lock = RLock() - stats = [0, 0] - - def cache_info(): - with lock: - hits, misses = stats - maxsize = cache.maxsize - currsize = cache.currsize - return _CacheInfo(hits, misses, maxsize, currsize) - - def cache_clear(): - with lock: - try: - cache.clear() - finally: - stats[:] = [0, 0] - - def wrapper(*args, **kwargs): - k = key(*args, **kwargs) - with lock: - try: - v = cache[k] - stats[0] += 1 - return v - except KeyError: - stats[1] += 1 - v = func(*args, **kwargs) - try: - with lock: - cache[k] = v - except ValueError: - pass # value too large - return v - functools.update_wrapper(wrapper, func) - if not hasattr(wrapper, '__wrapped__'): - wrapper.__wrapped__ = func # Python 2.7 - wrapper.cache_info = cache_info - wrapper.cache_clear = cache_clear - return wrapper - return decorator - - -def lfu_cache(maxsize=128, typed=False): - """Decorator to wrap a function with a memoizing callable that saves - up to `maxsize` results based on a Least Frequently Used (LFU) - algorithm. - - """ - if maxsize is None: - return _cache(_UnboundCache(), typed) - else: - return _cache(LFUCache(maxsize), typed) - - -def lru_cache(maxsize=128, typed=False): - """Decorator to wrap a function with a memoizing callable that saves - up to `maxsize` results based on a Least Recently Used (LRU) - algorithm. - - """ - if maxsize is None: - return _cache(_UnboundCache(), typed) - else: - return _cache(LRUCache(maxsize), typed) - - -def rr_cache(maxsize=128, choice=random.choice, typed=False): - """Decorator to wrap a function with a memoizing callable that saves - up to `maxsize` results based on a Random Replacement (RR) - algorithm. - - """ - if maxsize is None: - return _cache(_UnboundCache(), typed) - else: - return _cache(RRCache(maxsize, choice), typed) - - -def ttl_cache(maxsize=128, ttl=600, timer=time.time, typed=False): - """Decorator to wrap a function with a memoizing callable that saves - up to `maxsize` results based on a Least Recently Used (LRU) - algorithm with a per-item time-to-live (TTL) value. - """ - if maxsize is None: - return _cache(_UnboundTTLCache(ttl, timer), typed) - else: - return _cache(TTLCache(maxsize, ttl, timer), typed) diff --git a/venv/lib/python3.6/site-packages/cachetools/keys.py b/venv/lib/python3.6/site-packages/cachetools/keys.py deleted file mode 100644 index adb9dad..0000000 --- a/venv/lib/python3.6/site-packages/cachetools/keys.py +++ /dev/null @@ -1,43 +0,0 @@ -"""Key functions for memoizing decorators.""" - -from __future__ import absolute_import - -__all__ = ('hashkey', 'typedkey') - - -class _HashedTuple(tuple): - - __hashvalue = None - - def __hash__(self, hash=tuple.__hash__): - hashvalue = self.__hashvalue - if hashvalue is None: - self.__hashvalue = hashvalue = hash(self) - return hashvalue - - def __add__(self, other, add=tuple.__add__): - return _HashedTuple(add(self, other)) - - def __radd__(self, other, add=tuple.__add__): - return _HashedTuple(add(other, self)) - - -_kwmark = (object(),) - - -def hashkey(*args, **kwargs): - """Return a cache key for the specified hashable arguments.""" - - if kwargs: - return _HashedTuple(args + sum(sorted(kwargs.items()), _kwmark)) - else: - return _HashedTuple(args) - - -def typedkey(*args, **kwargs): - """Return a typed cache key for the specified hashable arguments.""" - - key = hashkey(*args, **kwargs) - key += tuple(type(v) for v in args) - key += tuple(type(v) for _, v in sorted(kwargs.items())) - return key diff --git a/venv/lib/python3.6/site-packages/cachetools/lfu.py b/venv/lib/python3.6/site-packages/cachetools/lfu.py deleted file mode 100644 index 4857c4e..0000000 --- a/venv/lib/python3.6/site-packages/cachetools/lfu.py +++ /dev/null @@ -1,35 +0,0 @@ -from __future__ import absolute_import - -import collections - -from .cache import Cache - - -class LFUCache(Cache): - """Least Frequently Used (LFU) cache implementation.""" - - def __init__(self, maxsize, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - self.__counter = collections.Counter() - - def __getitem__(self, key, cache_getitem=Cache.__getitem__): - value = cache_getitem(self, key) - self.__counter[key] -= 1 - return value - - def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): - cache_setitem(self, key, value) - self.__counter[key] -= 1 - - def __delitem__(self, key, cache_delitem=Cache.__delitem__): - cache_delitem(self, key) - del self.__counter[key] - - def popitem(self): - """Remove and return the `(key, value)` pair least frequently used.""" - try: - (key, _), = self.__counter.most_common(1) - except ValueError: - raise KeyError('%s is empty' % self.__class__.__name__) - else: - return (key, self.pop(key)) diff --git a/venv/lib/python3.6/site-packages/cachetools/lru.py b/venv/lib/python3.6/site-packages/cachetools/lru.py deleted file mode 100644 index 44ec4f1..0000000 --- a/venv/lib/python3.6/site-packages/cachetools/lru.py +++ /dev/null @@ -1,48 +0,0 @@ -from __future__ import absolute_import - -import collections - -from .cache import Cache - - -class LRUCache(Cache): - """Least Recently Used (LRU) cache implementation.""" - - def __init__(self, maxsize, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - self.__order = collections.OrderedDict() - - def __getitem__(self, key, cache_getitem=Cache.__getitem__): - value = cache_getitem(self, key) - self.__update(key) - return value - - def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): - cache_setitem(self, key, value) - self.__update(key) - - def __delitem__(self, key, cache_delitem=Cache.__delitem__): - cache_delitem(self, key) - del self.__order[key] - - def popitem(self): - """Remove and return the `(key, value)` pair least recently used.""" - try: - key = next(iter(self.__order)) - except StopIteration: - raise KeyError('%s is empty' % self.__class__.__name__) - else: - return (key, self.pop(key)) - - if hasattr(collections.OrderedDict, 'move_to_end'): - def __update(self, key): - try: - self.__order.move_to_end(key) - except KeyError: - self.__order[key] = None - else: - def __update(self, key): - try: - self.__order[key] = self.__order.pop(key) - except KeyError: - self.__order[key] = None diff --git a/venv/lib/python3.6/site-packages/cachetools/rr.py b/venv/lib/python3.6/site-packages/cachetools/rr.py deleted file mode 100644 index 09ff770..0000000 --- a/venv/lib/python3.6/site-packages/cachetools/rr.py +++ /dev/null @@ -1,36 +0,0 @@ -from __future__ import absolute_import - -import random - -from .cache import Cache - - -# random.choice cannot be pickled in Python 2.7 -def _choice(seq): - return random.choice(seq) - - -class RRCache(Cache): - """Random Replacement (RR) cache implementation.""" - - def __init__(self, maxsize, choice=random.choice, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - # TODO: use None as default, assing to self.choice directly? - if choice is random.choice: - self.__choice = _choice - else: - self.__choice = choice - - @property - def choice(self): - """The `choice` function used by the cache.""" - return self.__choice - - def popitem(self): - """Remove and return a random `(key, value)` pair.""" - try: - key = self.__choice(list(self)) - except IndexError: - raise KeyError('%s is empty' % self.__class__.__name__) - else: - return (key, self.pop(key)) diff --git a/venv/lib/python3.6/site-packages/cachetools/ttl.py b/venv/lib/python3.6/site-packages/cachetools/ttl.py deleted file mode 100644 index 6884045..0000000 --- a/venv/lib/python3.6/site-packages/cachetools/ttl.py +++ /dev/null @@ -1,216 +0,0 @@ -from __future__ import absolute_import - -import collections -import time - -from .cache import Cache - - -class _Link(object): - - __slots__ = ('key', 'expire', 'next', 'prev') - - def __init__(self, key=None, expire=None): - self.key = key - self.expire = expire - - def __reduce__(self): - return _Link, (self.key, self.expire) - - def unlink(self): - next = self.next - prev = self.prev - prev.next = next - next.prev = prev - - -class _Timer(object): - - def __init__(self, timer): - self.__timer = timer - self.__nesting = 0 - - def __call__(self): - if self.__nesting == 0: - return self.__timer() - else: - return self.__time - - def __enter__(self): - if self.__nesting == 0: - self.__time = time = self.__timer() - else: - time = self.__time - self.__nesting += 1 - return time - - def __exit__(self, *exc): - self.__nesting -= 1 - - def __reduce__(self): - return _Timer, (self.__timer,) - - def __getattr__(self, name): - return getattr(self.__timer, name) - - -class TTLCache(Cache): - """LRU Cache implementation with per-item time-to-live (TTL) value.""" - - def __init__(self, maxsize, ttl, timer=time.time, getsizeof=None): - Cache.__init__(self, maxsize, getsizeof) - self.__root = root = _Link() - root.prev = root.next = root - self.__links = collections.OrderedDict() - self.__timer = _Timer(timer) - self.__ttl = ttl - - def __contains__(self, key): - try: - link = self.__links[key] # no reordering - except KeyError: - return False - else: - return not (link.expire < self.__timer()) - - def __getitem__(self, key, cache_getitem=Cache.__getitem__): - try: - link = self.__getlink(key) - except KeyError: - expired = False - else: - expired = link.expire < self.__timer() - if expired: - return self.__missing__(key) - else: - return cache_getitem(self, key) - - def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): - with self.__timer as time: - self.expire(time) - cache_setitem(self, key, value) - try: - link = self.__getlink(key) - except KeyError: - self.__links[key] = link = _Link(key) - else: - link.unlink() - link.expire = time + self.__ttl - link.next = root = self.__root - link.prev = prev = root.prev - prev.next = root.prev = link - - def __delitem__(self, key, cache_delitem=Cache.__delitem__): - cache_delitem(self, key) - link = self.__links.pop(key) - link.unlink() - if link.expire < self.__timer(): - raise KeyError(key) - - def __iter__(self): - root = self.__root - curr = root.next - while curr is not root: - # "freeze" time for iterator access - with self.__timer as time: - if not (curr.expire < time): - yield curr.key - curr = curr.next - - def __len__(self): - root = self.__root - curr = root.next - time = self.__timer() - count = len(self.__links) - while curr is not root and curr.expire < time: - count -= 1 - curr = curr.next - return count - - def __setstate__(self, state): - self.__dict__.update(state) - root = self.__root - root.prev = root.next = root - for link in sorted(self.__links.values(), key=lambda obj: obj.expire): - link.next = root - link.prev = prev = root.prev - prev.next = root.prev = link - self.expire(self.__timer()) - - def __repr__(self, cache_repr=Cache.__repr__): - with self.__timer as time: - self.expire(time) - return cache_repr(self) - - @property - def currsize(self): - with self.__timer as time: - self.expire(time) - return super(TTLCache, self).currsize - - @property - def timer(self): - """The timer function used by the cache.""" - return self.__timer - - @property - def ttl(self): - """The time-to-live value of the cache's items.""" - return self.__ttl - - def expire(self, time=None): - """Remove expired items from the cache.""" - if time is None: - time = self.__timer() - root = self.__root - curr = root.next - links = self.__links - cache_delitem = Cache.__delitem__ - while curr is not root and curr.expire < time: - cache_delitem(self, curr.key) - del links[curr.key] - next = curr.next - curr.unlink() - curr = next - - def clear(self): - with self.__timer as time: - self.expire(time) - Cache.clear(self) - - def get(self, *args, **kwargs): - with self.__timer: - return Cache.get(self, *args, **kwargs) - - def pop(self, *args, **kwargs): - with self.__timer: - return Cache.pop(self, *args, **kwargs) - - def setdefault(self, *args, **kwargs): - with self.__timer: - return Cache.setdefault(self, *args, **kwargs) - - def popitem(self): - """Remove and return the `(key, value)` pair least recently used that - has not already expired. - - """ - with self.__timer as time: - self.expire(time) - try: - key = next(iter(self.__links)) - except StopIteration: - raise KeyError('%s is empty' % self.__class__.__name__) - else: - return (key, self.pop(key)) - - if hasattr(collections.OrderedDict, 'move_to_end'): - def __getlink(self, key): - value = self.__links[key] - self.__links.move_to_end(key) - return value - else: - def __getlink(self, key): - value = self.__links.pop(key) - self.__links[key] = value - return value diff --git a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/DESCRIPTION.rst b/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/DESCRIPTION.rst deleted file mode 100644 index d584ce6..0000000 --- a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,45 +0,0 @@ -Certifi: Python SSL Certificates -================================ - -`Certifi`_ is a carefully curated collection of Root Certificates for -validating the trustworthiness of SSL certificates while verifying the identity -of TLS hosts. It has been extracted from the `Requests`_ project. - -Installation ------------- - -``certifi`` is available on PyPI. Simply install it with ``pip``:: - - $ pip install certifi - -Usage ------ - -To reference the installed certificate authority (CA) bundle, you can use the -built-in function:: - - >>> import certifi - - >>> certifi.where() - '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' - -Enjoy! - -1024-bit Root Certificates -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Browsers and certificate authorities have concluded that 1024-bit keys are -unacceptably weak for certificates, particularly root certificates. For this -reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its -bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key) -certificate from the same CA. Because Mozilla removed these certificates from -its bundle, ``certifi`` removed them as well. - -In previous versions, ``certifi`` provided the ``certifi.old_where()`` function -to intentionally re-add the 1024-bit roots back into your bundle. This was not -recommended in production and therefore was removed at the end of 2018. - -.. _`Certifi`: https://certifi.io/en/latest/ -.. _`Requests`: http://docs.python-requests.org/en/latest/ - - diff --git a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/INSTALLER b/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/LICENSE.txt b/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/LICENSE.txt deleted file mode 100644 index 802b53f..0000000 --- a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -This packge contains a modified version of ca-bundle.crt: - -ca-bundle.crt -- Bundle of CA Root Certificates - -Certificate data from Mozilla as of: Thu Nov 3 19:04:19 2011# -This is a bundle of X.509 certificates of public Certificate Authorities -(CA). These were automatically extracted from Mozilla's root certificates -file (certdata.txt). This file can be found in the mozilla source tree: -http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1# -It contains the certificates in PEM format and therefore -can be directly used with curl / libcurl / php_curl, or with -an Apache+mod_ssl webserver for SSL client authentication. -Just configure this file as the SSLCACertificateFile.# - -***** BEGIN LICENSE BLOCK ***** -This Source Code Form is subject to the terms of the Mozilla Public License, -v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain -one at http://mozilla.org/MPL/2.0/. - -***** END LICENSE BLOCK ***** -@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $ diff --git a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/METADATA b/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/METADATA deleted file mode 100644 index 165ee1a..0000000 --- a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/METADATA +++ /dev/null @@ -1,69 +0,0 @@ -Metadata-Version: 2.0 -Name: certifi -Version: 2018.11.29 -Summary: Python package for providing Mozilla's CA Bundle. -Home-page: https://certifi.io/ -Author: Kenneth Reitz -Author-email: me@kennethreitz.com -License: MPL-2.0 -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) -Classifier: Natural Language :: English -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 - -Certifi: Python SSL Certificates -================================ - -`Certifi`_ is a carefully curated collection of Root Certificates for -validating the trustworthiness of SSL certificates while verifying the identity -of TLS hosts. It has been extracted from the `Requests`_ project. - -Installation ------------- - -``certifi`` is available on PyPI. Simply install it with ``pip``:: - - $ pip install certifi - -Usage ------ - -To reference the installed certificate authority (CA) bundle, you can use the -built-in function:: - - >>> import certifi - - >>> certifi.where() - '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' - -Enjoy! - -1024-bit Root Certificates -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Browsers and certificate authorities have concluded that 1024-bit keys are -unacceptably weak for certificates, particularly root certificates. For this -reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its -bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key) -certificate from the same CA. Because Mozilla removed these certificates from -its bundle, ``certifi`` removed them as well. - -In previous versions, ``certifi`` provided the ``certifi.old_where()`` function -to intentionally re-add the 1024-bit roots back into your bundle. This was not -recommended in production and therefore was removed at the end of 2018. - -.. _`Certifi`: https://certifi.io/en/latest/ -.. _`Requests`: http://docs.python-requests.org/en/latest/ - - diff --git a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/RECORD b/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/RECORD deleted file mode 100644 index c682542..0000000 --- a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/RECORD +++ /dev/null @@ -1,15 +0,0 @@ -certifi/__init__.py,sha256=timLpLv3BNcGLLEz2s6gyA34hOhMb4AIPBz0zxOxna8,52 -certifi/__main__.py,sha256=FiOYt1Fltst7wk9DRa6GCoBr8qBUxlNQu_MKJf04E6s,41 -certifi/cacert.pem,sha256=zGy4Y1gu9Zy-6CGvg3apdC7kXMm3f1ELolJwNDnBRv0,275834 -certifi/core.py,sha256=K_VfM6GwSemTFisUgFWyk__w1m9pCGFRF5zTzO5bGv0,288 -certifi-2018.11.29.dist-info/DESCRIPTION.rst,sha256=zHkn1YEe408K2MGitHvHNrp17zRLM4tUVRv_8PJTRKc,1465 -certifi-2018.11.29.dist-info/LICENSE.txt,sha256=anCkv2sBABbVmmS4rkrY3H9e8W8ftFPMLs13HFo0ETE,1048 -certifi-2018.11.29.dist-info/METADATA,sha256=NPNIqL3Rn7OYSxKd9-eM_IG52qaoEYXzbLPQYAc7iEo,2408 -certifi-2018.11.29.dist-info/RECORD,, -certifi-2018.11.29.dist-info/WHEEL,sha256=5wvfB7GvgZAbKBSE9uX9Zbi6LCL-_KgezgHblXhCRnM,113 -certifi-2018.11.29.dist-info/metadata.json,sha256=qQMHCg3rKC0sNjQVdrpaQSXFC6azUQcgV1bA1PB1mLM,1049 -certifi-2018.11.29.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 -certifi-2018.11.29.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -certifi/__pycache__/__init__.cpython-36.pyc,, -certifi/__pycache__/core.cpython-36.pyc,, -certifi/__pycache__/__main__.cpython-36.pyc,, diff --git a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/WHEEL b/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/WHEEL deleted file mode 100644 index 7bf9daa..0000000 --- a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.30.0.a0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/metadata.json b/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/metadata.json deleted file mode 100644 index aff1843..0000000 --- a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7"], "extensions": {"python.details": {"contacts": [{"email": "me@kennethreitz.com", "name": "Kenneth Reitz", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "https://certifi.io/"}}}, "generator": "bdist_wheel (0.30.0.a0)", "license": "MPL-2.0", "metadata_version": "2.0", "name": "certifi", "summary": "Python package for providing Mozilla's CA Bundle.", "version": "2018.11.29"} \ No newline at end of file diff --git a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/top_level.txt b/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/top_level.txt deleted file mode 100644 index 963eac5..0000000 --- a/venv/lib/python3.6/site-packages/certifi-2018.11.29.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -certifi diff --git a/venv/lib/python3.6/site-packages/certifi/__init__.py b/venv/lib/python3.6/site-packages/certifi/__init__.py deleted file mode 100644 index ef71f3a..0000000 --- a/venv/lib/python3.6/site-packages/certifi/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .core import where - -__version__ = "2018.11.29" diff --git a/venv/lib/python3.6/site-packages/certifi/__main__.py b/venv/lib/python3.6/site-packages/certifi/__main__.py deleted file mode 100644 index 5f1da0d..0000000 --- a/venv/lib/python3.6/site-packages/certifi/__main__.py +++ /dev/null @@ -1,2 +0,0 @@ -from certifi import where -print(where()) diff --git a/venv/lib/python3.6/site-packages/certifi/__pycache__/__init__.cpython-36.pyc b/venv/lib/python3.6/site-packages/certifi/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 2efdfab90e581a9e8f73feffb7b4a5ec5da58bb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmXr!<>lgkz!zh}z`*brh~a<<$Z`PUVi6#b!jQt4!;s4u#mLBz!W6}n!W_(?$?}pB zD5c4Gi?uu>wJ5cU%gDgcLeJ1p&&bkGllc})a(+>25y+TZ-0|^csYS(^`FZj2D;bJd zfns3dm$80HZh?M5W`S-}X=YA}Zf=p0VPRrwihgoxQAuW6CY+9s&&lgkz!#&*z`*brh~a<<$Z`PUVksbz!jQt4!;s4u#mLBz%9P63%+L&Er7#6E zXfnS9$}?y(-eN7!NG(eB(`3HIo}5}#l9`rS1Ty0mYe7+FUdc*^B32*|O#Cv|FUc*? zFUTy=O)AaINzu(MGBPYoOij^;YJ}7A@wthadGYaj1(mlrY;yBcN^?@}7=h*#gN){3 F1OR9=E(`zw diff --git a/venv/lib/python3.6/site-packages/certifi/__pycache__/core.cpython-36.pyc b/venv/lib/python3.6/site-packages/certifi/__pycache__/core.cpython-36.pyc deleted file mode 100644 index 245dee270ee2772b48b2b5fe67e74d669b67684f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmYk2K}*9h6vvY^-D+@p_tcXxVJqrYMDV_gdMQGvO-eJ{rY0HUP%rh%_?3DRJoyzo z`LfBj2k-x02>jpgz4OtC9ey3$#~7h+v=apSD@c0+B2bD17No){7J;B2C?zrw;Uh7} zl1kE{4r3(94H^%YcPy92sX|TL7xumh#%@bx<64VFC1WGq!ZbE^rHoZ$T~<|@Q@V*O zov#~R#ChhOrmd`}><2K=EcfaIa8Uqx4QY=+9Gc@faY2XQ);)a%`_:: - - pip install chardet - -Documentation -------------- - -For users, docs are now available at https://chardet.readthedocs.io/. - -Command-line Tool ------------------ - -chardet comes with a command-line script which reports on the encodings of one -or more files:: - - % chardetect somefile someotherfile - somefile: windows-1252 with confidence 0.5 - someotherfile: ascii with confidence 1.0 - -About ------ - -This is a continuation of Mark Pilgrim's excellent chardet. Previously, two -versions needed to be maintained: one that supported python 2.x and one that -supported python 3.x. We've recently merged with `Ian Cordasco `_'s -`charade `_ fork, so now we have one -coherent version that works for Python 2.6+. - -:maintainer: Dan Blanchard - - diff --git a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/INSTALLER b/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/METADATA b/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/METADATA deleted file mode 100644 index 1427867..0000000 --- a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/METADATA +++ /dev/null @@ -1,96 +0,0 @@ -Metadata-Version: 2.0 -Name: chardet -Version: 3.0.4 -Summary: Universal encoding detector for Python 2 and 3 -Home-page: https://github.com/chardet/chardet -Author: Daniel Blanchard -Author-email: dan.blanchard@gmail.com -License: LGPL -Keywords: encoding,i18n,xml -Platform: UNKNOWN -Classifier: Development Status :: 4 - Beta -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Text Processing :: Linguistic - -Chardet: The Universal Character Encoding Detector --------------------------------------------------- - -.. image:: https://img.shields.io/travis/chardet/chardet/stable.svg - :alt: Build status - :target: https://travis-ci.org/chardet/chardet - -.. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg - :target: https://coveralls.io/r/chardet/chardet - -.. image:: https://img.shields.io/pypi/v/chardet.svg - :target: https://warehouse.python.org/project/chardet/ - :alt: Latest version on PyPI - -.. image:: https://img.shields.io/pypi/l/chardet.svg - :alt: License - - -Detects - - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants) - - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese) - - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese) - - EUC-KR, ISO-2022-KR (Korean) - - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic) - - ISO-8859-5, windows-1251 (Bulgarian) - - ISO-8859-1, windows-1252 (Western European languages) - - ISO-8859-7, windows-1253 (Greek) - - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) - - TIS-620 (Thai) - -.. note:: - Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily - disabled until we can retrain the models. - -Requires Python 2.6, 2.7, or 3.3+. - -Installation ------------- - -Install from `PyPI `_:: - - pip install chardet - -Documentation -------------- - -For users, docs are now available at https://chardet.readthedocs.io/. - -Command-line Tool ------------------ - -chardet comes with a command-line script which reports on the encodings of one -or more files:: - - % chardetect somefile someotherfile - somefile: windows-1252 with confidence 0.5 - someotherfile: ascii with confidence 1.0 - -About ------ - -This is a continuation of Mark Pilgrim's excellent chardet. Previously, two -versions needed to be maintained: one that supported python 2.x and one that -supported python 3.x. We've recently merged with `Ian Cordasco `_'s -`charade `_ fork, so now we have one -coherent version that works for Python 2.6+. - -:maintainer: Dan Blanchard - - diff --git a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/RECORD b/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/RECORD deleted file mode 100644 index b833882..0000000 --- a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/RECORD +++ /dev/null @@ -1,91 +0,0 @@ -chardet/__init__.py,sha256=YsP5wQlsHJ2auF1RZJfypiSrCA7_bQiRm3ES_NI76-Y,1559 -chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254 -chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757 -chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411 -chardet/charsetgroupprober.py,sha256=6bDu8YIiRuScX4ca9Igb0U69TA2PGXXDej6Cc4_9kO4,3787 -chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110 -chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590 -chardet/compat.py,sha256=PKTzHkSbtbHDqS9PyujMbX74q1a8mMpeQTDVsQhZMRw,1134 -chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855 -chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661 -chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950 -chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510 -chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749 -chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546 -chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748 -chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621 -chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747 -chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715 -chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754 -chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838 -chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777 -chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643 -chardet/langbulgarianmodel.py,sha256=1HqQS9Pbtnj1xQgxitJMvw8X6kKr5OockNCZWfEQrPE,12839 -chardet/langcyrillicmodel.py,sha256=LODajvsetH87yYDDQKA2CULXUH87tI223dhfjh9Zx9c,17948 -chardet/langgreekmodel.py,sha256=8YAW7bU8YwSJap0kIJSbPMw1BEqzGjWzqcqf0WgUKAA,12688 -chardet/langhebrewmodel.py,sha256=JSnqmE5E62tDLTPTvLpQsg5gOMO4PbdWRvV7Avkc0HA,11345 -chardet/langhungarianmodel.py,sha256=RhapYSG5l0ZaO-VV4Fan5sW0WRGQqhwBM61yx3yxyOA,12592 -chardet/langthaimodel.py,sha256=8l0173Gu_W6G8mxmQOTEF4ls2YdE7FxWf3QkSxEGXJQ,11290 -chardet/langturkishmodel.py,sha256=W22eRNJsqI6uWAfwXSKVWWnCerYqrI8dZQTm_M0lRFk,11102 -chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370 -chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413 -chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012 -chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481 -chardet/sbcharsetprober.py,sha256=LDSpCldDCFlYwUkGkwD2oFxLlPWIWXT09akH_2PiY74,5657 -chardet/sbcsgroupprober.py,sha256=1IprcCB_k1qfmnxGC6MBbxELlKqD3scW6S8YIwdeyXA,3546 -chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774 -chardet/universaldetector.py,sha256=qL0174lSZE442eB21nnktT9_VcAye07laFWUeUrjttY,12485 -chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766 -chardet/version.py,sha256=sp3B08mrDXB-pf3K9fqJ_zeDHOCLC8RrngQyDFap_7g,242 -chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 -chardet/cli/chardetect.py,sha256=YBO8L4mXo0WR6_-Fjh_8QxPBoEBNqB9oNxNrdc54AQs,2738 -chardet-3.0.4.dist-info/DESCRIPTION.rst,sha256=PQ4sBsMyKFZkjC6QpmbpLn0UtCNyeb-ZqvCGEgyZMGk,2174 -chardet-3.0.4.dist-info/METADATA,sha256=RV_2I4B1Z586DL8oVO5Kp7X5bUdQ5EuKAvNoAEF8wSw,3239 -chardet-3.0.4.dist-info/RECORD,, -chardet-3.0.4.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 -chardet-3.0.4.dist-info/entry_points.txt,sha256=fAMmhu5eJ-zAJ-smfqQwRClQ3-nozOCmvJ6-E8lgGJo,60 -chardet-3.0.4.dist-info/metadata.json,sha256=0htbRM18ujyGZDdfowgAqj6Hq2eQtwzwyhaEveKntgo,1375 -chardet-3.0.4.dist-info/top_level.txt,sha256=AowzBbZy4x8EirABDdJSLJZMkJ_53iIag8xfKR6D7kI,8 -../../../bin/chardetect,sha256=hcAzrlo5Bhx675drkesQoDsRBlBb1vzxwEvYbWz7Cqg,249 -chardet-3.0.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -chardet/cli/__pycache__/__init__.cpython-36.pyc,, -chardet/cli/__pycache__/chardetect.cpython-36.pyc,, -chardet/__pycache__/charsetprober.cpython-36.pyc,, -chardet/__pycache__/euckrfreq.cpython-36.pyc,, -chardet/__pycache__/codingstatemachine.cpython-36.pyc,, -chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, -chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, -chardet/__pycache__/euctwfreq.cpython-36.pyc,, -chardet/__pycache__/langcyrillicmodel.cpython-36.pyc,, -chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, -chardet/__pycache__/jpcntx.cpython-36.pyc,, -chardet/__pycache__/__init__.cpython-36.pyc,, -chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, -chardet/__pycache__/version.cpython-36.pyc,, -chardet/__pycache__/big5freq.cpython-36.pyc,, -chardet/__pycache__/langthaimodel.cpython-36.pyc,, -chardet/__pycache__/hebrewprober.cpython-36.pyc,, -chardet/__pycache__/sjisprober.cpython-36.pyc,, -chardet/__pycache__/jisfreq.cpython-36.pyc,, -chardet/__pycache__/gb2312freq.cpython-36.pyc,, -chardet/__pycache__/big5prober.cpython-36.pyc,, -chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, -chardet/__pycache__/universaldetector.cpython-36.pyc,, -chardet/__pycache__/chardistribution.cpython-36.pyc,, -chardet/__pycache__/euctwprober.cpython-36.pyc,, -chardet/__pycache__/euckrprober.cpython-36.pyc,, -chardet/__pycache__/mbcssm.cpython-36.pyc,, -chardet/__pycache__/utf8prober.cpython-36.pyc,, -chardet/__pycache__/escprober.cpython-36.pyc,, -chardet/__pycache__/eucjpprober.cpython-36.pyc,, -chardet/__pycache__/cp949prober.cpython-36.pyc,, -chardet/__pycache__/langgreekmodel.cpython-36.pyc,, -chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, -chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, -chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, -chardet/__pycache__/langturkishmodel.cpython-36.pyc,, -chardet/__pycache__/gb2312prober.cpython-36.pyc,, -chardet/__pycache__/compat.cpython-36.pyc,, -chardet/__pycache__/latin1prober.cpython-36.pyc,, -chardet/__pycache__/enums.cpython-36.pyc,, -chardet/__pycache__/escsm.cpython-36.pyc,, diff --git a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/WHEEL b/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/WHEEL deleted file mode 100644 index 8b6dd1b..0000000 --- a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.29.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/entry_points.txt b/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/entry_points.txt deleted file mode 100644 index a884269..0000000 --- a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -chardetect = chardet.cli.chardetect:main - diff --git a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/metadata.json b/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/metadata.json deleted file mode 100644 index 8cdf025..0000000 --- a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Linguistic"], "extensions": {"python.commands": {"wrap_console": {"chardetect": "chardet.cli.chardetect:main"}}, "python.details": {"contacts": [{"email": "dan.blanchard@gmail.com", "name": "Daniel Blanchard", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/chardet/chardet"}}, "python.exports": {"console_scripts": {"chardetect": "chardet.cli.chardetect:main"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["encoding", "i18n", "xml"], "license": "LGPL", "metadata_version": "2.0", "name": "chardet", "summary": "Universal encoding detector for Python 2 and 3", "test_requires": [{"requires": ["hypothesis", "pytest"]}], "version": "3.0.4"} \ No newline at end of file diff --git a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/top_level.txt b/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/top_level.txt deleted file mode 100644 index 79236f2..0000000 --- a/venv/lib/python3.6/site-packages/chardet-3.0.4.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -chardet diff --git a/venv/lib/python3.6/site-packages/chardet/__init__.py b/venv/lib/python3.6/site-packages/chardet/__init__.py deleted file mode 100644 index 0f9f820..0000000 --- a/venv/lib/python3.6/site-packages/chardet/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - - -from .compat import PY2, PY3 -from .universaldetector import UniversalDetector -from .version import __version__, VERSION - - -def detect(byte_str): - """ - Detect the encoding of the given byte string. - - :param byte_str: The byte sequence to examine. - :type byte_str: ``bytes`` or ``bytearray`` - """ - if not isinstance(byte_str, bytearray): - if not isinstance(byte_str, bytes): - raise TypeError('Expected object of type bytes or bytearray, got: ' - '{0}'.format(type(byte_str))) - else: - byte_str = bytearray(byte_str) - detector = UniversalDetector() - detector.feed(byte_str) - return detector.close() diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/__init__.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 55fcc543588b553e3d33bdd287dbdbf6419b98f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 786 zcmYjP&u`N(6t?rbfsGapaP*N%tQ{){R3U@}mEbZE8%RV*Ng8`ysyNOZ7p1Q!M?TaJb-$x1pxz1U`+qRd`)W^E_q0GN9S*OJ- zrdXzg1i-C0Hfy;k<5>G2C+|<*ygkkg+YIBzf%y_<{ThNoE2Qwost=pYg6yHPDV{sZ zU7-y&&o^8K3Y%(;l(#`^yux$e)EGe)Y!EoKu6~3BMr(zrb4FO137VHPBF>t625w6- zT`ERuC1GO_Hk5Id%9J-7F>H*D3^@gX7RoLbpu~t0gk7dQFWI1_sb$q-{n(mx}#6(IVwRa{YPnC9zJ88~ZJ7?jrAnG6kTwL}TkJY$=cIM)Z(B&Z1_~{W8j;52jd0g!1kbpji-J8jpQ#PD Ji*Mtu{ST)l*mwW{ diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/big5freq.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/big5freq.cpython-36.pyc deleted file mode 100644 index edbae173fc6e7686f110a7dddbb46328678d67bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54673 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 AN&o-= diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/chardistribution.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/chardistribution.cpython-36.pyc deleted file mode 100644 index 8b7058b44d95ee3794b5a6871b5b1800ee81adb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6258 zcmcIo&2JmW72i*CNs$uuVTrOGn|9p9YU6J>Y2zfeB+IrOn{p``O%_EL6lW#VA}M)x z1;?y}qOgk``UkX^egw#+EfBQ#9$K_O|Alr>E_%`__g>oHZ$ohmZ{QC84k9$6*R;Cs>UG04>ZWVzlo>UvZo76p z;U?-yH>qT1&8er{R6Xsc>wRvYl3BG(J?m!c{ceAKz#ULByOygDx`Xv0cc?z>4(r-& zO(aC}g(i~z$aB*@0^SiR@G1WY_)+j_(FeXy@nhgKA`3pN_&oT2F#vu*@#ElgVi5eG z;*WwK62st!6@N^O%xe=zwsb6S!i@4W52qKt=S|<4EO`ra-mTKicfGmN&6!e^i+dI( zr|!*o^RwV)EZYN}v2 z+LwXW4cx&!5MOh3p}B_8T~ipYB}~^AmYWc^NW9S8q(}+}Pe4Yb@l1(6k-;-9vZ5c) zJ~1G2cxJ>PwtXndPd_Tlo7Etc)y4I&y4sj*lxxp|YEadH{N=B1|Fb#r)z{aTe>lSC zi|bn^Y^V?{y!fPb)3}3+AVS;FyqLmDv<*c~MJ+|`4efE_Ii?B?7U;!^WHjtmV1*a1 zdP~xO;;l;I%c#!_%ZoMN3#v^&IvPG(t5(W2Pjr~-$ucaCY)`B<{3wI@Ax2PDfZ0k_ z%-GTo{BS~#tiZ1={YI0=VCuiGT?p%I7uKq4=N8wiHF2&kFJF36_QeHG5`MV*+40`< zYtJIb^Qw(%=y~V4^nMV{Oy~(4xB4|tP4{r@`R$qAy*LU@LRVfiKy^WC2ot`tnkUsl z3T3rNzI>-psrh9I{#hXi%b|a3i-r^@Oi49zj3f^-q06IebKNmH&ek}{hq!|Th-SfZ zqj{pI-Rj*H?msWaMYh$}e}cvaAh}}55p1uvp+DC*&4wiso92co%oSTMY+%Y`EayES z#?v=Uj5Ag=xgadGFlt;|v09_7)+kHZSaz~`ddc@ipgdL@p{V+yV?2-`<8zxcCv6OQni|QkX)PvHwjaLH<#Bpu zUiDGBV#;Exmohz1YK>^ev`u}3b8PstxS^{V^qkQ=EB$a?HVT#1#!^-Ijf!7bEC+Dr zYNOzP2258Q%LP#m%gSpLi5Js2)P4_hh|Xi+kj^XvA5Pw@Kb2d4q)EL4Jeen34FDEjglsyM6Hk;1!$!+0JX9YfHL7n0VnJznQ{9uChKy=x_;W zI~rFtN4JEv3l&t&Td5AU5MRf0R){p@CBh`Avz>@iksYkB`BGlO%-99o zzBp1)n^b{=yQsk50ub^_%JV9>K3~2OtV}TVJqM zAmIigU8wAE4(%wtRFwg~S46>%eO3$N-hYNWUXbk|>gA2*o4ps*4!Z~}%#-p02^SK3 zmkOh7%XbyOR@?TUvPzd%I8wcuJMsi~K<7JpCZYDI0;YY@S-k#VG<{q;Bs9s(utt7| zL_xu3OJyCV+Zanpwirm;Sc(_D^IdW3PjK%?QFp@+6GgwLwO2`Wl6Of8BzsXL-`kdU zd=K31pW@yRpB^juU*IFZz3WYI;|^%(`WJj*8#I(07&J%YL&c$@<{DR}P{ZI6qb9|c zia=?$UW=NaW7KZcyxH6G{jj0a_)Sey%|{?{@BuZ(k=8a1ly;~~5r*DHiD&UCY)Vu( zG7*ZbZlNfK&il|8<43`%Kvsb$uEiunkpfZF7x<_hM9+ZqON?wGYDmxNBS!PgD^__> zNO50&#y7ShMah97m7l6EUp-VneF!sSK=rYu!VoK_7*JWZUJIz-VbpFwo$6)xYvA+= zH1&kjgBG0L-w!8|7-M$Z4YMR+hO>s#%6X|c=f#=sORkK8YU>vy*GX=Gbi}Q_kdq&< zpJ?0@y#4@DK&NT;5ON>0->A_%-O~pL1snJ5w|r+CY?K@vZ1ec<;ZVUg1v6u?@n9T- zZGbHmy?AbVJ=p$?QG3AF%kKSPW2$Y(E(xY5*e)VsSvYE4+yT|5)p!fi1R`1q&m?+F zsyC6xUvXn7wlKmHeK=-W8;ou zNw$8(R-sK)G_-dLvpA(HXrAGqF8KT#u}@d}LBp;@hgk@0wS)e$BP0 zY^v%qoosTjZ0NBG0v%CvJvFcnf{IqNgdD2N_F~e zEURDH-#6FN!DwyN9bMm^bo=`HzFUWJ?$nF$}GNC$>xz6|g)iB5CI^Xau(E z=Z=HNZH@K;)6C8jy8!kc$dSN!9S&Ey;AYCzsVe;yCAm$1`nBA0_Wse zF(MC0>IDD>Z#IOtEw3jgRh_-zPFI^@$K+MY5`0m^_5fw!EiX(xwRaIm+@Q0_RTf0v zQpu-ppJVA+b^nLK_H`VY$AsxgJNYjQFJjZDpjRzC4@NIkozxpah{%WYM+p1-6gWU; zco<}XTNuY#(Btk+{|0Pk{7_`VUBg(Uq9=C)dncoc1e|&i!cMa#%*KFVpa4UFEY`s% z1hN==Vl8&LjcFIYDi>dk21iM3|;-L@ut?_y$dXf7Evn7O4VpN_5oca06j2+73m5^3IbD5k;)I^ZUU1rxa ziIfTiU5?j%xTX793!G0?5;c=&8-Gj}pZ#?^`C*a7quU7#_RqBTu3H)Ir7K0HPcLGK z|7j_$+{Cz1Ey79}vX_ayL5$kMnJh;Ay(BR<54G8zB$n#SlO7a)kxQ0fRaA2A`0D7GeqX6m_@VXqF6kR2 zRpScCQ6G(YJ*rl!aW#$?efMoP!aOv%vs_UKwd0;sv|CHJf!}wkypTwB9)DIiaBG?L K(?L~U75@NBOVZi^ diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/charsetprober.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/charsetprober.cpython-36.pyc deleted file mode 100644 index 978ee40ba770dd9ba3db400a4adec5ccfab08e7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3395 zcmai1TW=f36`s9{qAA&tW2bS{cF-hf*hF&E07YXsN*viq92ja~sR%&VT`hNpyYI9di+#+5E4(L6c+x#}TAr}> zS<`=tU2N~Eg}P}Kjn7opj??bG4z-MEYE~R{KERi!s3Zex*0P1wa>OO!2=|HA0(0R% zVJ%PkVnx)Ruv4qGB34Bmv>IsVM8nWl#hO?LtuD`r^WuV`HPC-SY?%HU`WMBEroS$1 zD0#V9+wFyFUusfMs&2=W|G&Q%+0cdxwe;=c%QsO8Hf8}ETc|BctSrtYVcHEkaiXOvR+6mSg#(J!uGDwX2dx$aY1o%RQ1~<}RnsoqTqYgmL(o5& zYM}Y<4_9@6aCHz5w%Wru5nFxrySI-+DXvCPT}Zvq=28!gDcge)@sHD32f?pNdE&_| zAHS2!3s!H>mPK?}RH&_tCM7gGA|vgYk&dEcD^_pbI=HoaaC`4#n(J1<5lbA;-Y*rzaX3xFdnBMoC-A@pCh6{zJL(p&#RRr`{c@^q_fKwj`;Zk zZDUj6w1=H%4RbqEigzk$*2%`AG@4#+7M;bI9Zf^V`cdzhVETO}#eUX%W`4OC<2^#7 zz1IZ;Q+~{i>xj)D%F<3OWE#n9*f2Y?%|+7|7cNLAq2}y1(4oK)$QEOE>P%oVbaD3b z8fMF5OY-N)bz+(Y1|^W~XdoY3m5-2m0C*`_ZRk`zE{p;lvqRN6y$m*7N^vzl;QA zF^pD(O{0lBc8}as)?n(hu`ApMXoUwV?Ll_1*zwOkN5+8dwc)#fK%Gy^=aLKAiBrjS zPf66Hfy{Z<;bdQaty&i*gI?H{`WlyMH;MBepHXstFWfr0vDLa?Esj&5sMmWIhS zzA)qjfH1-WZ2ZsTt^fXezONsu2U0=A7gCLM54noVB$xc&UrGtn<&~U+o&@v3P;)?| zBNdOrl()&0Y}oB-t}~8M(qWwPkmpjxrD+c{C32XZ#Qj)HQL$@}c&S0Y%@2BU&O5_2 zA|p6oUa03nbj2%?VXk=wzdpzMZGHnxNWHi_%!WDiJ04QV8}Co` zsMv){awP{z7)gPnA#>oJMDlz95)bnzj_01;u2&mNJIn>Z!@(dS7r+iOAdgf$&^dqD zi=!SF8Ba6Khj90;=?TwIYP;f>zm71S9r$nVJ>L5M{+sjR^qh$L{+^;#Yq0fLT}Jom z_bBQW^qO9=O7Rsc6^_(PpcE^JK>@7_Up~?@6~#)Nn+R)q28%_lbiEXXXFOlH)D)`; z{2Y*`&!Y9p6nhK)56s>VAu)du6+7>HxQ^_)wc$6c4a>FG?UOf_LU;+A3dfX7D;)m| zgA&KWn%KggIFJ6OaZdx!)~N+7E8voifmq?Z#0+}9u?NiBYKL~D4U9aDJ{A7NMt=op z-W+>Jj=}dPb~+DS_2t+G+P?(Ci5pN}Wd%?~&Ey9oVd5Nb0{eFUkJ(zWI$w*7P!Ioy z1X!K$U8#pE%@JZzHW*PVI6MTr4iC#%SCa6AAVul}1rc~QZl|GBF`Fd`9;Sj*-ZXh- z9;s6RQFv4IA;CP9GUeBI&McV+-;E^C0E1G2S(N^?h`8UEBF1|t8C8n4WhaBsEQ*Fo zRj}K64sxb>r38>z4xm}4X=l1OgHR=I4khD>GR6Vr8~eMrZ=bRCEo3syk$OtCG<<9v z4OkNHD}INEcaUDwx64Q4;o;mzA1S)c=GfaY2)urvt`M1UxCcnlGZL>Nybf{WB{EgN zq}gAfYWn5f$7zKhr-2T;g*#C4i^3(PiW-7pDd1k20`6g~d%^UU2ok9&)zjUd{|Xgr z_&}L!Z`c>?8Xkf*%XK#Fb$oTJ;ZXmixfFlPxYA?yyjmqq>p{@Z#4w?!Y$FJchhZ{( z*lz59^2fUeyMHx9UJDJyI_a4gWxxqRgN!(QJcWHgVLK zxKV_9ndq-kwM7-ZO3zgE&{Xsecomt4-ixYN&Tylz&&$1AkjWIj)(!+u`A iX8o*vBqMDWondVxnTKrcdTHg(&q)a7otjm%8_o|LG;3)9 diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc deleted file mode 100644 index 9f090b5e7304e606371d012ed68027f48fab7b3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2826 zcma)8%WfMt6y?n5F_vW|O{GE`$ODdPqrhM>7gZ zIdR~uoNwqq^p|E;psV~sS3Q@bu`F8+ItDo$KF+=OoO>zX+uG_}`m6U_tH;>i?99`^ z_#v9TiB2*ZWNgS}D5ETxhQlymKQh^n%{NRoRdf;!8#35s{nlITX4`KA^!=dhJ`?Fg z=W5ppr&3y~p9q78X!Z#@#fE`o!%zmph)ld;fb-zPrfkVJzFRVu8+f;6M{eRBs}0$e zTW{D&Fzm=4OkXOmJT9cp$KKe&u=oRUbU2#S~T6x4>!4H+uqa!Z({t*_edOlZq zs`#idn41aXbUM$3;h6Qn1O7u{JeUGVb;?Z?mkPl-oH8m^`cTBdqYia3w~Lb^Czlr3aJ2T?qZ`Eq+Px(fpmW$?wdzBnjl~GdP8nq#Q7W)??uy$r zB@a3tXm{_?&Rzxa05ND_TJJ-Jih~#!;>=ADIPssUvB*}H@ld4Y>2p&LK#JgpBGZyX zCBd|xThAyw}5NGmz0JbU)Ec5C5RE_I4LA@{&L@w6KG5&?Es z66d^o9sqILnMz?YC4LBx+_K71j$lE&cv+syXx4>t5i3WIor|p^Z3+3L zu5C|}dYNW(BpES#5w1SPN2ZvP3Kq#?U;%aLryv|ECLj2tX^5MT9(q%IjArkmI}VOn zf*Tio;QLTAj3d`LXu8%3&9{%)L43jj+|0Q8!foR(+>Nr8Oi=_`*-O&7F$syEK*9Q( zQZLC=UT#+FKDEnsR*c8EILnQ(azA0LOc^IhE~Y9;$`-9+rimI?t{;{StFloU+UcLn zT!y>c`b0`$(?jo54hh1s1L6tHfuCTzADIZVWz*k8CdRlQ82si{A^14V zd-S=5?mIN=n!{rm3{q{4XPHT6mhvev&w58-j_hd zPO>P1-7{`|@n3GOIro2ki!=O-Fc;%@`)59d8^4~q60R-08fm+~X*RL9>?CyK%rm+v zx=HeUF0#eF(M}Rsq)B2(e_vMS28}+V?h`s2&rC5>#vOUnXVU02mkia`XK0p6HU6Lx w#Bm(OJ+#QL^_ymcpqeV5Pitz!QG|Bw0gb)aSZb>;H6x86y0H<4nN$Tw=h1fei1SJQQm+J8`2|;Y z>mpWB=N9+E-OT6Hx^mUA5A^7iQ{H8ZuW-S)O}af-L7~1_F)~c z@uAf&8M=Dg1G=;-4Hm(gSbVpI9TmE$8ZDX+qGzEr;Cq$ZR^_Tz%W9|_Shjk-dMy$1 m?Ng}%?LqrimG)eXF1=`b7#h4h^#$g{Bjr;n{H8Q!fBFLmoJ?f^ diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/cp949prober.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/cp949prober.cpython-36.pyc deleted file mode 100644 index 23a02b5f83608b54085637c6fd8e922a882efe81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1069 zcmah|%Wl*#6t(jjx6DkTJOmOeSdE|^6)L1kh}X1YQKnRk*hENHCU)CYPA0XT#Z=u* zrG5*)lob*yet{MDIxS5%;3)R-b$lP^p1kb!mRElCzrF1c@{_bi0QeoeW*a6!1XU!b zF{Ow-<>h|tJM60<5983`Kt*{c?ojfPh)_i5L_{)N_%Rcm2^p|o6kH8x{b=XwX!px@ zW~|PpmCa_w`yx?ulNmT%9nC~m98PRv0cwEKECl^Ra^ zqy4STEj}6Z@#pQGPbq}>JN!#zHUUTyQ$b?yf*epmg?G+kUk1V#!8uvbI0Wo+1{__G zfW(+{r@rOj~uh$YtEFGuo$mD&-rTATJ}lhw2d&YW4Q&&|TAgFb$~g!s2i0E3!fw9C4Iv!PmUyN0zC z(1>ES5sAT{C2xKfC!u;JpI*|{G*x3m>Ikd`1cd@~uCFs`kn09}-IVv{F(!iw=u-Fi Fe*l3t{Ez?u diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/enums.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/enums.cpython-36.pyc deleted file mode 100644 index 6765700abb2fc4dbf4ffa4330a1e4a6ccda2285c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2560 zcmbVO+iu%N5T$MuMPHJ*k1fyzdO-y=N}Im9L1A5Jo3Tt8B3(2>0gC3XB_!# z0TE+RR2yh}8ZFS`YmF9J;Z<_Bv302hsUe5be35e4j0+rB?zD6xtJ@3A3eW|>QhioeVtd}&fy?w zyow4P?b$u2*_FoQ=1~(prGC)sTTMq+ou1>j zA0Nn4v)h%`zQx|Dlj5ct;O;Gnh#1<%{yhz7N8wK_JN@Cup*4K}CdJ-k0MYZp} zE9~dhK84rWwF>808yCPrh2IEbtz&ss+q0cLY3%lnosMsNQg?cue`wtZ#mBHL0l8Y4 zIQ!uM90uVyO4tGb=e+??NRY{5kvC8JJK|7ry=LE&6|3Lx^`&lm?%M#slB{0?0B5fN zfF-?yZeN4C?PxNC>a_Y=dsP_JmPc{RWzTb#gsdAqV{tT2Q#$+Uc39$bPh|LjAhQG^ zoMUpD#&P-*>PxXDQ0I#%%>_vlV00wbHvpPr;33v8UU)}og9tpEv;bsLoNaG&mgPJV z+d#~W0BvCj!p@iC2!V}9DUX1XqeN|v^w!{aU>Q|f^@1#gvA9%bc-Z9Dh-E%_`WFj) zkK1EGYo*y2*THFAf5WMpH`cr1SbI&+{?U@gvD38=tnL%3FYm@t&jrqaXKP^`2r*&M z?I`~ew!IXiqIJazpTUENAOfdWBn_-kAgbze?;F#D2d@dTNRPgvYv`l+ z#HkyLHln8|PvJj;YOadNIg%O21FiC?yl>h-8jlu#6Mn$%q;@Hn?$++!0RjC#;n8f& diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/escprober.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/escprober.cpython-36.pyc deleted file mode 100644 index d6cbc4c731317d10fd6bee25c5d9b5a94de3f7d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2551 zcma)7-ESL35Z}E!pU?K$NlhA3pz0AMBqQ2F-~k~7trE9&+c;4iC^~_b%kBEBcV}ns z42k7PNRCtq2?_DUV_$jcU%+2-PavN9#5+&S?AcC3D#V_4c5Y|(YvwmIAC$|*rQa)G zMN5SINnU6M@VB7HUjpHT(}0B3r4)HB&_dnS6|V6&5Q&8s;hu)=~{2#anp zEV-r7c5O=T5}xDcDdDD|Q{64|e2dhq=M=WD(X_nT^<+yVyK-SB?YJkJ;9wp9voYq$^@rJwND% zk~V!!8I2Ge^;wUf0+W!0PRLa2YZJ=pkAScanGmK=NZ&|uee)KPTfpo6d}1YqDV>7G z;=j1~N8J+WezTC-=VWD&O%}3BCgXV0lA_CsUQ)CQdaq0gVi}yFH35#L0D#BZ3U#%W zG#8JCLdp`{KeZU^MZJWvw2&E>#i6u8A`vP8=~y;Wze#`f;R#+^oeD>cDABH|Ja zA@fKqRJHEk-o1^wvVgzlgPpzl?WQc^&yoio{8qr;%pZ)RB)!Bkw+haDh@Ds@Y4vOh zuZwY#nk>c;N^=t2lGL=+h(*v=_k(8@81n-!jv4!v{Qcq0Bplux_J-FFM!kSv59P-D zho0a!aep{$F#K^$|&Os51pjF;jUnuc$Ti<$kRo z%doNXom@i>QXd#Qvu~;gB9bdOeHqCrkeVj1Adh-ADqlnXbtL#=wZ+H4#8n`KR^ZJB z)sz)%pySmGuU4K|JQ<&keG__Y0)guz>?pua-2n!5ygG7mZfeiG&LS@qbzH1MOdDUl zaNvuY|L7Z5k?4Knu_n6!Nu2@w4AReW?IXZ6LrCVh{+P<2 z6SJQOXj(8+Xc5=}*A-!16(l7k(fjrk6H^&>ufVu8*L_3|%|~cASXncgcO>HGIdrHP z3Z3#Q@M$p;M@bg;5&@Ow>U(=Tdl{8HPrQ$ZVAdf*JPmbj^e2s(TO(fTWq~%$5^hFTBvPA&SlYokUtO0L9k1-KiIYX-~ z+a=qu4a-zHrdg|` fsx)MoY;n1>)RbDEWS008FB)TsvBAbGbj|n&!=7HG diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/escsm.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/escsm.cpython-36.pyc deleted file mode 100644 index e0a7ecf08da3545f696cb655b66315161872d659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7308 zcmeHLTTdE66yD{s+(GbC+gf9qKDbS&imy$hQc_ev13XQdkd+zK29WN;L;G9$2l|hi zd1}%p{z9KRXZDV(21RKrY<70eoO8Z&*_pG$Y$p=Y)X(I{q$~)(1m{l_gdIj}Km3A# z1uV9Oj)+82z>CO7#7};92e4%HfZ`)C>Tw6znAdH}a(%30@-Z9&6bzR>YP8tzrVU)K z&-$)sYZFO$35AG{p-Ci!!#IMY-y{^qPf!G;x&L6#rRShc|E_y_#Wgx+>FeGz3)Tqh zgS3-|sCoRO;~w-ST@M++Hs$=S9TdgOC`KYUMxrE!<3?8E_$f*-$(ysn-^CSnTyYq7 zN3-EYTYA{)fd$We>De(OGM_Fzhj*qmC;uiLkTqra+-Mb15ryu2z6i>fF=ly4;oemgrUTmuhAmPe%Q2w=L+U*g8} z6Y-yV04qkHVX$meSS&ipU;L~w7UC=s51a^Dy1wq|Mbe(GQ(c~uDU$HXxIXCn=Gw(z zs_Fc9jPv<7YmD#4ED;Z!2stuVMVMsGwBPkDSL;|cGwo3tr&TUtQ?IApE|(c=Y$O|V zz~DQp5ys;s?U^&{J#f9yxA%`b?Q(Rin#qMHSvc>!@W(2gR~AXTcHP;bTLR3g;+VVr z$GvW6wTtZ}ra1*}`bRD=(je&$I+_Y+uT(0cM!r;|!CHN{TBpH6wR*(PIQQ$dM!7(P zj9aVIGzb-UtBq2j(x~t5l?pTloN}Xl^uAD{33j9kC#v}h$BNq|Q(m^I5sZw@xde4^ z?1EyX0}7aKcT6ad8};h2>VjgV0}7blP#|YOeHYZ%utS9A_vS{w)7$8s_p&F0^ES?Q z)ZEr*h2RZ1e8!}2J&D%TI&XSkX!vdC0uS2c-3rs!dhE*(_p`&}J6wUls<CzyAPK=6mk| diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/eucjpprober.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/eucjpprober.cpython-36.pyc deleted file mode 100644 index d5087ae87968313596db8836f079461839b9e6e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2355 zcmai0NpB-X6t1dX+;(ioli89HLP27XjF^Q*BMu|P;Fwu7aiZ8GL<>}OTotE1-EF73 zEG3rb4P8q+iI@7JZ)rCvr9l{2+Dpo5C9GK5Pu9|E zSf%7K5hW3v6A?&v?u0c_?viHZ4FxexW~%#YbQouYu8y=c)!nFn9B0zbn$+Cbog_N` z;!MldaiqFZ<8G;7Wur9`7snQdfV6e%=SgmOp1f<@-QL5>i1z_L>|~K?OSxLdVjMaDjHECp_VwlQ|82 zpzW)HE{U?JoRcsRYoZEc`89D#SOFAjX3fejUe!lP@P{J`#+H8qohF*j$eaz?92T{s z-8sy;r~NsBv7`e#mS<#G!5xCY<+RgWGhRL!OQp(ii3vE5vsiPkJeaBgdF8%^k>{!M zaeiH_V8Z1=&A}Q|m!Inbm8Xn6%XLhH0b1Nf$e{R*t^UcBX> zL3;}hUIq=IaSHe@z;PAcZ=q4^NI^sZYN}BTSCF-V-Bs*x#|O}Ij1yF9dS%6QcP$W? zbU`DwE)EC^24S744`=Q?+qd^FL=`fYf=m_B0aSSwrSd*rz@Q^+y16QEb<_WfHNmrJ z9A#ju{}LP|Q8t)F1Bo7YA@maF7aRIkBiMz0gl=Qs`2b#g`nyG)&f(i3-~RH70q$(* z%;=15L0r6YX5hR-?i&OOJ*j_1K%Tph$E>{Tpy`d5><6mu+q-Yh$%5X*5FKv4ba8(19^hOD&+t0acW&p~ z@K;2^_HnGYA?!wKJJQ>Skp5up4FF9Py49OM;n%zc;RhCz#z|zRs=zmu3^E(fF_kJz z9>!}Q9PAw!KN$@MQW;Ok!^uEh!;5ZUhlVtMXRpV1+r}?W8vkjpi}T>iy%(Jw{c<4*e6VHttxsMRVW0I{4t?$4hG}tNK6u>tDK)qqNG@{iPt7N z6M!E=-Oy(%zJgF%%}s5Q<@+*8pqeZphm2;krcIbwa^8iOqh|)RTB^GE1@G95+iBK~ zC$mYKTOTaEbv->?UwqDA{3kN` diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/euckrfreq.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/euckrfreq.cpython-36.pyc deleted file mode 100644 index 87721359f9cc89a9fbda6471ca6eccdc1fc00469..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24059 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 diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/euckrprober.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/euckrprober.cpython-36.pyc deleted file mode 100644 index 518c6ed9878aa3f9c6fd89cd783c07e6021cc4f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1070 zcmah|&2AGh5VrR(o06ne1qdWgaEe4)6%Z$cfVAQeQcxot@lB2!l@($ zO(;d|Nw4q|-(g<{MVN#R2Qn&JNsE&Agoix3AUqOu?I$sBO-MifMZr~{+WX^5n*80; zh~Y`9Cc=DD^Qll^*&fb$Ud|>aHDa7*CwVDA`|#lNaCEevYoqdMW%7CXwoK(x=NgPX zXJnHx8-LtC_>e(}o8@02{Q`g>3FRd5F3BnLHo#WO|K^S7_IazzB-WrU?H^Ca-S!kj)fwOf^PGhui0#4~+zimTZ zEre1)JFziid6^r=6gpHP>e`v3g6TqGE9^bqsGp@sz)C0^Dxrk|9s(`oF`RA2GMQ@4 z*f;X~<*q3fyNi4=m{z&ugF-#qJ4*%M&473=%*`pP?5kS1HtZ~xDu#$pU~2?~_UHzU z>FRESik<6}Z*hXW4DmlqnNz6MJ6uKZ+hBC0dZ6o5)q%s|T5Q6r?O;Ao2P@M;^g*LN z5X4(OXohTl^xv>H8qJkR%YTK9Wm?XvbS4IkkhiM5{-7UYlQ28R>;_}SoL3TYhq1FN zm9@q3W@F$HT5FbS3*4%05Vm{Ol}tzpZAL1t6YC;I7Thd62B2{$V%mv1fz#o*Y!=h2 z^6M@sB*<>pL!$A%6!m>^BV@N+gBuf54^aeOG)xpum~;I%lNz~h#INe|UO&QQa0EKk GJ^mk|WB&~R diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/euctwfreq.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/euctwfreq.cpython-36.pyc deleted file mode 100644 index 8db0a2e26f48865a20d304392ec51d57a23c7779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54682 zcmYh^WtbJ$(uU!Igdi~>L?9u!yM+Kr2=4A02=36h26uONcXxMpcXxN^%st)8wXR6_s0$HP0NO`yqGsLsr-wTJFvujrZftZf~&V z5co4pAauApg*Yz4B)FhZ!_fKf>~&Q@qVBpK2`w{9&0M#>(i)N~};} z-irjDv5Jvj&U=kFpJB#Z#uQRS?qb$xb7WU2rq;d`Tut%tym=i{a^AhJLLJs7dlg9y zGgekUPIuNyRt#~=^)g1?^On^JT=Xf4!|D%poMcQHk>tju z*UWN|4m!aEQ$Dp<+^EyUMWZ)Q?l~c|NX7GU9IIMO!J&V`LqF}}lIt{@kXPo7NnjzV zae_OEyQHhFf_Kv!X|I;$KBtk-vZ~ge>*ccGA@)8v-7>6PYTT5YQ;my)hblSW-YHTM z!a5Ka7wSuE!jVQuINtFZDn=l^CM$7_Hr55fi}ak>&=bT>(@PhHu4t%~kfbse+54!q z&GwqAQH3>8+HZ>2ll#_HO+xQydr{TB#ER~^eF4A2&vH{hBBGUq^s`*7=gOA*9n%WM zcdHghL(_$nH%C%6R&gA&w}(nv)wWs26`Wt8#Rgmg@eLi1N=IqmIrit%-*ChIFc_|>1AXQ@9 zEqJorDbUfft|=2}yqSY7A-IUf6U&&-Tb|T9HD0&?3CuB(b(|xLYNJ^r;J9Ud-mBsc zYP?9808CYPuOmrh8F~((lUq*XNGM}EYX&6YJ>hT;Q7I~}o`!zacxK+=P!J9aiKqK( zI@s!nBN(BJ#?J^TqN{ft$*2_PEo10w>i#5TJ}h%(x;ukJ9Lp_Nz!5d#3h7Mco!q#r z0!rS34BFkLzu~-5sRXRhVxfO7jqp_QVbb1fZ9PXLct&7m*g?1+D|kOZ8!B70yPv>O zZOjt4QdhHC&xk%Inn-S9jc+F!MOs7xbHvSsDV9GvjW}4?h}SBd?84c~N)MQI(-|;3ByjpH@RthL9 z_-l>-DffV`dTRWzLffQmw>+c28ALO3^x}vo!+(+9nJ=WYy_7m_Bkrt>b5M&TG%IvU zvz-!LkX2mVLj5(@MkdNR?3LAI8eKI|Z0oy$;qWdCQUX)Y@WcYv|p!x0bb0?hR5!SgWY?ATZ8_T1@_X zQs)g_j<>U}`Uzfb*#gE3z7uu=DLmUUhWrie{EoI!* zeS6(EkZ~{Uge?CP_t14)BQ6Wv=Z((sGe;NJM>VGEYKw-tTFxiXnKzxdqt4}D_*UF= z{jD>?RvC*-*~H#n-trtN6)K@ge}UZTB6pkMiB701(J$e&uFgPt*e+y%;8o5g6TRG) zi(!q18aj=B@IZ}9RN~6r$(kpwf)0iYPGm2-z0?k;f+o8XO&->U#&;;WUdAPtv80|a zvvzV!uxv_dm*r4WjV)`i>S!YcsfeWRtCqxGddn#$|3TbQ!?c$+NpM5G?55X<^@d}F z6VGanU98%gjH2B=;yMV)WO%pF2cSrdEW5)3#W}0 z1d^Gko4xc#m`1NRsY}xCQohW(0;h$nHhD!MSM8N15T1N%!z>`WkKS`bPZu}da*ebX z_P#LSJ<5{=R}xZ8&o6oVST5IJHQvn7hH_OG@0F0(Fiy!nCVHT&PnMPCUencm^4D26 z;3nLHI(q3Xc)C#=E412P6ovjFHG8dU-^zu)X_XQbOKRNu%9ZJ`9hAJb?#7stI{) zq6Aut?{pt>gd_Th6-`=N0wZ+V+-yJFdq?>OtERo?a?c8RLazerF@f+}Ye26xM-$5@ z9FxrUl=TdrLpq{y#HD8)bWC+L*;HBypMz;SEkp0My;fBA+j~J^vE2V;KPRpyj|Hzn3^j{Md<+w-cjI{FRohoEEYld?fY1Fks3Ok4z($?DB z>`F)0P$9Xki6)2Ymibi6ptTS1wTvmeuQe21NILSr5q+Wi^kGX@QPpNz&VnyB6j??F z#gAw$tGXX4SLSU7Z%GXm@*kuU_tb~s7gjjMGtgV7mwQ5vay%2#hIc*3V8!1!`@rEm z=gp|l2Ht-R{lZ=u8E*{piFc!h{tj!yUM71-g~XsTmGzDzJnMnrG$u-6`J3R+Snq|z z;&`dXG5t*!JX_;i6wmC0D(dAs$~T3)RrhzxjN*Q9_POl6q7uWoyfx7+!3|-l;A-?f zDEU;4^Xd*{eY96W+-m|e9Lck=bFs{%#u;sdemfBQA6}}3aJ*-|WhLauY^)F}ML5bD zFs-_QWjBS6*<0gM)Uo^y%EBBqekbrrFIiYA1y|JMeiQYl+@4+n0_DQw4INGgA+bY| z&~h5bCo9m58hsa^LGY zlI2`y6`A#!z0Zkmr;?t)D+1}2%<2#`*o*6kQ-`&o`{|U^i#x#)h15Kvy*a+n+79y$ zw@f50f*KbrKPdU7jIZEp*yGB4!}`ekEh{Pv(|BlSp?_mLh~LzhPAa3W4k*+?ZZyI3 zc}vNNZuvQ>Pw;BDvo?`)u&L4&n+~sMC;Wp-8WnJn*M#@py+22*_ps?K9PSh8>v6lbUj;LMe!*5cj!|2+&5mDLEp` zO)aCYkTjZ1#qou@5uuObQN)#1@(ThBWqhTfy1WNj?c}DG`-3*R+55md)bbCxuUQWu zn-0RyG z*YnqU$wKdMXS$d`6bF&R@=MlnV@;AfQ!iNs*OHr#$~OeQg`6^cU2x~7lCNbPvW&`m zQuk|h6^XS(q0E-q==}lL1pmouZ>$T(N~-Z{^h$=6lv}~|h(@%44$kZ9rns-PJ6p(a zimxMI)4YEXeMI1_j9T`x+qEj)m3zj58}u}rIEcpg8vRX1G!lp&NzBe=|zDYyx++kDR>lg zk^3{L1cF~Vh@$p3Th3K7r?h1bEElUBtF(zqD-?QOq5se(@U^2`N3^!X$)XT(Eb{_%T^;)ZHzl8|Al_e^B{TFBjni`G|_g(P>%Bx3EXrw+b~Obw$W) zA$fGLmp3mfs*ul|#s_D5T#d&@xT>L#_M!=i4!O0Kiq!8MXDR2SQd7wbZP z7UG_e{~QX~YezW>#BlZn?d_Lw018=t&+$oa2UCs^{DZwMI_P8h7sp1Op3w7X9V~S? z-{~|46eg9`(QVP%pS(x4Q6#K}knB{}D>R+T5BBoQxGS!|VZJx-Xx^gIeiX9EvOm#c z_KL$#9C>~I8W1R9FAL=ja7w2qrCn0;jog+TF{QO)#bUja`=e2pY4>M)B}tWn83b+_ zzoQRLhy(je+(=Ds*X|CD{~|3MZ&u2sjF@!g+ zlI4V)RyUskd-G0oDLz0-C1WcYiQ`w+4US^)2s%Ix3S_$OR8FY-Paa(jNWq%#Wu$o!3lU1LTLhZ#1%4rG$HeZ zB;pusSx#;dDs{zurpZkT)w5i0q9b})35kfV*7G@OJEe8!=)?NVu~*Y+56iZY85%)h z9n>e<0Oo5Wt9k!&rQAvsye4Bb##2mSrW@si_nCEFQhiL|Ts>e)MF zgd$3I7W~+#M>wXcu^JlDnY~X_f}6{Yr;WBoI4-xCx{-Moi0j31Rc;Dh z73Zxl?gad$?hwbc5^D+p723c` zrBD=UYxG=_a$8ad!wTs>i;qtYdMD{6p^{o!B+DjLlG@8jAg>e3POl;FIfat(*3!mS zj#C`%)VS{<8>L9iwESJQio6|k+7a@q zkwWfQhPkC$JcrncH@&(kdGm4Dka~O>MHmu<$+W(itA>tI~*61!)$9=J?u?zLZ|gtkMh^X z>dEm^$ZIuntD9PlkwU^7VX_+U)o5%v1-^t{ayQ7hLU|*r7nQFB_vX!@MkcKlq?Z=X z+iNaltF(3GcNn^#+`n0UF46ygs=b$>2fb>EJax^8CmB0_I$-KoK=OEsHS=U|oiM)gDjnTn3T5GSN z45Tt^GLLf^C2pm(*+!VFjT6v8a9$z#puCBO&>ITV9m#BQ`}9(Uz**gAB)>_U!Z;WYm+0l!!37yPI+v-eKkU6A^(QNv3pIz{&pP#lmO_X~^_iyB$Wu0JkWTjQ;FD07_E~vj5a%VyzaiLqG|Lil?HCAGJd6m2jXY{hj z5pUzTOeFzFU%8dY&kEC1ZLc$^P323=zgW#=^d^v98-ZnialiTK&6Ya{cH8?(+IEF{ zsqqv}IH9>h>a+U6Jj;k$8zb#+%Bj?73R&!BbAG>RvaMwfArED^EB(%w_C5+pqS{7| zzN&peem?mH5QAeOtE^#8@@~~+HCN%DjEt6kxPGS#Kk2HPL@z9q{g!dr)v} zY4uq(%{xGFS|#h6sE)MGLTd5u(`ga89a)(TcvUZ}R0~IbCV|{)3^nu{%By+Tz*?wH zDyyC!gpH+8QKH%GO{S8EKwfywo7CPEZsAfUMHQl z&`WkwXY9R}w#jVaDYtM;jqD{5w*z{MOF?R&LW6kg5?yD6qcVmHnWL+pS(ThdXL`j9 zGndLzdlPxjQTdGbnq^MbdQz7uCluVmNq+9YrtmHi_k$*@^X?}wkF`NsenUsqUssO) z;w~Amgk^jxe+d4D=zeFgQCcb)=_qfqOdzxfS9MiD-G_Sq z%V8I^Or+2=qMZp8H~xPzqKK>K)H+*ECGe-#sjYjyuM!X5&H4Y*52R4OIyU1sfN4b)X88M}on=h(v?LlrYTw%1r}zP*er{P=+91m&Z>#5!5_FBMUX$v^QYpsX4;#6umjeS&(2szAg z&WRtjY+|+}_KsOrB^rrJM^hfRcLGjAJHa_z{lq@wr|g}Eo&>I&=#1rAXiOlLjOVId zH+~5XeWt&99MSCEc50LKcTU}sLe3FrX{?9JxQkQZw4ehd=q@m7&|Io&8%E_UgxKcWZ&s&<6OSQk`CbJh^p*EDu@OE=SFY09$ z(N30^ET_vjPp_Q|aM@m28Ou0ksCLEPAs0E9gGi>eW(2y!1-a#9eC-U58SAQyYmi%4 z*I9X3rPavGYRbBx#tq&C3MJ5ZTRm^EylI4YLT(DlC+!xi9mhhB|HSRl&&v zUOphBI7(SQWR=(CcXB7$yG`nZl6P1w<;LLslW2a`X0yf!{)gTt!6gkHo8Au`vt5}@ z_6`Ydt&O|%?m-15+nK06G;{X%IU=w!$ar9xiSk3%_d2+uT6@+fg;rR0AkYy?xfGpP z&!v6tqWmDZm$R>^WF>e+??*L$689cvKs9>z^_*A6L?cvz=p4PFvAFX>9#bjcG)~%! zuG%-!?pZ$JU9ZMdRv)?fcuQ-tptNTkg;?!mlp-2HWlbid_n%?DcATwTh3-BZnVir* z)-Z_XAZ`f$S4daEZ-vx%;++X}2|E(i4l90B@C(bAP(`(>@XE5cCSS8^P&p!F2hlh7 zzS3V;0{5NEEvH*u_gNvGz2gMBDmlmUD1jV0tt;d^2T>h%QTa`cV?y4Ne-~Cm@V~sN zScet=&N4sce{>qb!Cp4+3*N6O_u+j{;5fY)YJ9LfVfm5OA?%aGN=~mfm4hbwhSW)M z-%^>*n;Swxf0TbG2CJ|ORZhkW)xvQ^ms>_!c*}0$q7rx|E}^(PF3;EEepLJfZ&By+ znT*e&q~ZDS`UVFA|l=&`C&HQaR;T3cD0evYfrEtkbN2=|z!IfL?bcYY_d?-hWh< z8m7Im&dBI1_llAa?CoOJpwe0JZp*La*0lFEt2@0a+BhX+o5_19^rzrj;=U30K*+bO zsL)eL54oFl@W2S)TNZVG-^%SJgvBXR8Xdla7_dk1pOkx( zDo^THZS=AHUdSRJfe-d(IpPU0f@n>-n|SlTkM_FB z=q)%JsVb@!=dDPupH3SRIA>XcqY|qD<^H^lcpF1W-X^RX8vm%;H>wQ~H<z;S?HECN3m;kIfG#kqs)PHr9i%=-(( zhNk-amDP+DL0SVU3-sJb?m+E!Cs4?d#1Z_#g^KOOzh_O9@x-#MUVitvzbhlI;K^nS zbpN*|%LxfoyC)=V9oGM9)>#=plHwiLR0VU0e%}=(@@(<1{OlxOnRJ zl-ro2xoRt=#pk#$BmpZSRB@awge)|4B73(SL}FH;`(EK_hKWhH|_4yTsApNV!f z;4iGf92Y1LVI>!wkvE;jQ&_GtOg}xJfwQpH(BJEHG;d0A-QdB{QAO?}b+4#a)$(^CAIT>s zwMX1{>h^HSVz9Dkw{6(LI)gYIKiKQz=&q7#$6HbdE1ko*> zn^5qdmLJsUpwrlLKXLrUQPc9V;O_}!w^vJ7KN@C`POs_ZI{YAHgb`Nr-mv$p0iO`) zNd9jEIUpzOAfK8_C*JBZin+*NbKIbEo>k3R{mVN>YrW|uVtq+|w(d_#o9QZKGql%k z+!>|TlBtMGdKgCZ9t}QJ-`ND?j!y3#Q0%MiDDsUThcd_7qIqKRg zq()nN7Zo2vV5pLXIet|#t26B<_pTLt0fA~NdHTWERFvW6Nh6u)A?BJ_&F zHKJX_t)Vi;9FfKKF~Uzy=$(*pLTYQRn~BDXtH4o{axECI-Q?Q%Ny)>O#ni}8rMt8Q z8ow+p0c2CMzrCxJw<$SZp_{rdAg!|H-@H8t^n^>~n-fSV_c;_-s06&QTq0uttE9d9 z^h&Wx!zH3AV815I*y}~PENgApaXQ$-4&o)1c;besTQICEon|y@IT^QPeC}gb-m(Hz zgmn(P66-JRwwBgFFSQ-mW*Iv`4805bD}U6^408B4|8baCsTe)>WYwoq;3%?YTiO}{}o&VYC=CX28pX- z^44t+ZS=zrQYOCkrmbE$RTGk1(!l3vY4JFY*J$qjotC8Y&^wQ2{tj|$Xp?Wf| z(2EJtdH;~{PzU{W)q!4bS7tqH7fdEUOhY52eUkC5UW!>ZAir1l4O!uMXUdpmue#5{ zIPwF?HxhEea-2T_{dLvY-fY2($JMZ&!ww9(2^mVIl|_krB5ypvRGW`t(qu24>D=yOB^dy|E96Fi00+}=p7T@`!{ zhRf(KqzCL*D5;@Svzn`xOvqFMEeQNV;JS9dQ9L>C192^R*U9Zks&v>#%3cvt?Pc`h z7@@xwGI|I};{2{kn+&~$yd`?yxD#>v4KDvQs3!ig5Vge zpThK5?`4ctV}`NnlA5H0QueyDp1?%8Nu9`m}ZDE~~AB23;%Q#YB z3wfl;DKe(QG?Ce3@7H=R zs@i|{YSp_qdc76Y$0>txvpNoT+0X!VxEk7mh)i&EQI<5 zW;)JUu!3lE80P~r+uj`b=!C92oY*iStUp(#t|sS`pDXSk)*{M_A&vh>AEd?~^p@D` zBqX!k1{|g7E#(Mjjw(*$S9@jPUupByXyNiK=I!Dj>S*#kZ#$!&bQL~@H7TwGZwSX3 zj%DO~3m!yZLD*?%ccMAki(4*a1&oy&&R$w|`|0#CYZT=ayn{8KlJ!#0lc>z6SHQe0 zsjPxtimzskH_Xq{4(Z?ej4v3 zcb1Y%NTs*8Ok6#Ue_W^M%HF~&snKl-{ay=z+xZF-fBD)GMe`! zM=W}aWbD`EQpK06J4)SCLf*Uj^TXn_J4Wtoou1}hz;T9k$TccK>X8~_#TDaSEUk~? zbEG|0<3FO~p)W@}dxbQ)jrEwoOds@0M4wm|)X-Ul4zvEYw@h$qh2~No;vj}mnJ*-_ ziGH=$(fOqj_cy(MN{+KUM{l0oLpq)4a{nzOI+Qfbc_H(K+@M!qTqk-! zyJ-1D$RmgNl4Gg36Nc%}kyhO?ZH)+uszmIU471*PVNr z4rDFRUj!jT4LHc&c)>M|a8<@})owVj@~ocXu5n}$a>Rixq!LH9?c%QUmJzooY<$ap zatDVMw=B#%#4>}~ZrS_A2)9`a?R}=nr}pmH+fQJey=V3oI+t6D4-mY}S$$!SgyNEF ztreWMT+W+V$-AWfb;JwgJ}0$;_a4U!%a_oZR7B_k_o&<#(w;R`XnO2nV#bg|$Ify~O<|?w+)dmWN&Ljl5f3 zo)`qWNSkDs?=63TRL<&0)^zfp#&)-+;w;EOPADd>IGoqtSpAi- zd?{|JHg@Z@q`jFkO0i1AEv+S$afb2_+Fd3im$?0osf@TEIm)u$Ikj@E^00^UUZ`L> zNZcMh?}du?#`sY06H-%+O7?1)C_ky?s{Nyl(Yy(iOzTK0i~EL371j!IjddEuScin{ zCwc(B6<1YURMyHcQOgG6avSEc^Q&gBI?U0*a2@<>d6##)H*+Kj$ zBN7~UY2)f|R@jx1o0s*4xbH0M5J=^O4r}NqY4K#l;5}lmu8?keZsx?Z5uKshI&}|- zThA)*Qj7>I$%-grCu~)8c_Ij{-LNDkIHPkpq`8@R0)mkO{@Xq9&1?f#5%aJVOz2Z0;6l~Wd(7zuVW$Ce!c^dp z8uM85p(%kI<~Zsg7TDV*qn-YKCHfP+g&bv!I^14C9W1if%c$w(7P8ku-NhVBU@0sh z^-|p7u;Sv*5WPmPpd;Dom}1&1toV9*BNW=jv5d-cSOF_TQ8cOFg5;jXkRbH@LW0m5 zA#S$|2}1u^g#@8(gao1TAwg)}kRVhqBnTZf#F2yqp+^@Igtigl`^%6Zv~GxRC_~)z z7!r8Hb?_a;fY3T2!4L2w`~)!}7W@nz8w^5k;SLEx|EVA1|3yQBxDXHGLjp($i6Ai~ zfuxWOl0yne38^48q=B@M4$?yga0^M`>8HSJ6oSm)zRMsBWQA<-2e>sj_zSYb-;e`x zLN3S+c_1(3gZxkc3PK?$3`L+Q6ocYW0!l(DC=F%6)2Tr@C=V5&BDkA7s0>x0D*OZ0 zpgQ~uHJ~Qcg4$3A>OwuJ4-KFpG=j#^1e!uK@Nj9+9Q=U`T0$#m4gR4Vv<1)D1nr>% zbc9auA9RK;&=tBtcjy5=06KsYpuobq!cGv+sVHfO%J+K${!G1UZ2jLJLh9htkj=^y_0Vm-UoQ5-S7S6$W zxBwU75?qEWa22k>b+`dH;TGJ6J8&27!F_lD58)9!h9~e8p22f?0WaYdyoNXM7T&>o z_y8Z_6NH2dg_kY|p3Mt902jD5IEVmWKtzZHks%6v315NRw}WrM%}ha5@Ze4m9o&5w z!~nOt2S31%@Ds!YPc#O;nh$<~*zhaFfwH^>aXLl(#i*}(U$!Jpvo=pZ}%4LKkuAhX&9P{MTL37@9y+Xa@e)44Oj=XbG*LHMD`Y&<@%|2j~c$;6LaL zU7#y;gYM7+dO|Pg4Sk?5^n?B|00zP!7z{&TC=7$)Fak!xC>RZ6U@VM-@h|}X2L9(4Rc^F%!B!`02aa`SPV;GDJ+BKumV=XDp(C`U@feJ^{@dp!Y0@Z zTVN|}gYB>bcET>$4SQfO?1TMq01m<-I1ESNC>(?1Z~{)kDL4&h;4GYj^Kbz!!X>y2 zSKumKgX?euZo)0N4R_!!+=Kh@03O04cnnYADLjMc@B&`KD|iiW;4Qp^_wWHe!Y2p` zABu1g9=tL-@TGO&IlRC(;Xy=*1d$;Md(G8VkM!5Bdkuz&EOapTq|-z|Wt8 zAHd_8!A}qq{6sSN8GZpz+XTME4g51Ohzs$++vEbz%m%(H3=%r7Y~YTozWuPpSgYr-T{7W&Y1eKu* zR0TH`1=XNB{0lXpCe(u3PzT)k6x4(I&;S~OFRg>d&;*)7Gw=_FpgFXFme2}XLmOxd z?ZDTsfuC{&9ibEa2c4k{bcJrv9eO}d=mou@5A=n8&>sfCKo|srVF(O`VK5vf(*Ccs3P1e0M3OoeGM9cI8xm<6+84$OslFdr7cLRbWgVF@gSWw0Dpz)DyJ zt6>eSg>|qVHo!*M1e;+CY=v#G9d^J@*af>`5A20~upbV!HoF2F^&1ef6oT!m|J9d5u)xCOW24%~%%a33DPLwE#_;R!s2XYd?ez)N@q zui*{6g?I2CKEOx#1RlJXgpddlLlSU%Z{Y68 zAUUJ}Z|@0GL25_?X(1h?hYXMrGQn@)r@X=MkOi_rHuwYngulRDVu7C^200)ntO?I zgiWv+w!l`{2HRl=?1Wvg8}`6n*a!RJ033uva2SrjQ8)(2;RKw7Q*av2z*#s4=ivfe zgiCN4uE15e2G`*R+=N?j8}7hexCi&)0X&39@ED%JQ+Ni?;RU>eSMVC%z*~3+@8JV{ zgiqkDErGjagYe+7!N9$fK?L{$B7&Fx1d$;MdCImM!{$p17l$vjE4y@ z5hlT8m;zH_8cc^7FcW6MY?uRcVIItf1+Wkn!D3hfOJNx-hZV3AR>5jm18ZR&tcMM- z5jMeQ*aBN&8*GOiuoHH{ZrB5RVIS;=18@)y!C^Q8N8uP8hZArTPQht7183nJoQDf= z5iY@HxB^$<8eE4Pa1(C9ZMXw>;U3(F2k;Oc!DDy=PvIFnhZpb?Ucqa418?CSyoV3) z5k7$@J%e!IckBgzXF=eX3Iq|rYa#>B<^{g+4kAMo@IZFp;h?~S9l>Lv(ZHQWK}N^~zd>gB9o#7#WQA@E2qUZzBjisS|kgAn?#Y zkQ?$qUdRXe!5#O3+o^&=P#B6pQSiWDP#oM;9+ZSqP#VfWSttkYlnW|AMW_Uop$b$5 z&y57tpgQ~uHJ~Qcg4$3A>OwuJ4-KFpG=j#^1e!uK@C{ke99lq2Xa%jI4YY-J&>lKK zN9Y9ZR}4Bs7w8JzpgZ({p3n<=Lm%i1{h&V#fPpXw2Ez~-3d3MHjDV3a3P!^i7z^WI zJWPOzFbO8Z6qpLrU^>iznJ^1x!yK3k^I$$KfQ7IK7Q+%)3d>+QtbmoU3Rc4!SPSc5 zJ#2uDun9K97T5~gU_0!9ov;gb!yecR`(QsDfP-)d4#N>R3di6$oPd*X3QofrI1A_C zJY0Z_a0xEM6}Sr5;5yuZn{W$m!yUK__uxJ}fQRr19>WuO3eVsOftn2lb%=G=xUb7@9y+Xa;T$2%19+XbG*L zHMD`Y&<@%|2j~c$z&-UrXXpZ5p&N9E9?%ndL2u{-eW4%phXF7U2Ekw$0z+XK42Kag z5=Oyj7z1Nr9E^tvFcBufWS9a|VH!+_888!O!EBfVb73CLhXt?@7Qtdz0!v{TEQb}a z5>~-#SOaTe9ju29un{)FX4nE-VH<3R9k3I2!EV?Cdto2!hXZgB4#8nK0!QH(9ETHd z5>CNsI0I+l9Gr&>a1k!SWw-)Y;Tl|r8*meD!ELw$ci|q~hX?Qw9>HUH0#D%?Jck$X z5?;Y;cmr?Y9lVDR@DV;iNW@TtgYe*mP=R-d1fFpXJfs-72QP>Oks%8Br3ZmGCI(&r z7F8C3Cf|w8seuiHlHv9_i&kW*1JcthozzdCn zM35MgKvM9aVc>4_AO)m^RFE3dKw3x#Zeg3>v)1J;5Q!x*}w~&0`Hgz zJTwrvRWWeOTaW{CLN3S+c_1(31CR9tp2`Udf_uY)!cYW?LNO=~C7>jfg3{owsh}*B zgYr-TDnccw3{{{i`~%gXI{XVYpeED;cishVM+@A47Sx0K&;S}jBWMgwpeZy1_eBNG zp#`*rR?r&U#vizoG-wCyp#yY;PVgUehAz+*xtzgFOFJAt>I1fRj@5COh`h~UN3ffq{#UQ8Ew zLr~yF4uMw<1fGKm+`$?|g=i2R{HoKyZ&wKX`h&nr;sYMT1}{4ZJf0qSfFY;`)!|>L0X3l( z)P_1x7wSQMXaEhN5j2J-&=i`1TS9~8&;nXQD`*XEpe?imPf`XRnhH8XC-@IKLl@`@ z-Jm=4fS%9`dP5)R3;m!!41j?!2nNFt7z)E+IE;XiFbYP)7#IuVU_4BKi7*K!!xWeb z(_lKxfSE80X2Tqq3-e$;EP#cu2o}QI z+h9BFfSs@lcEcXn3;SR{9Dsvx2oA#$I10z$IGli!a0*Vt88{2);5=M_i*N}p!xgv+ z*WfzbfSYg&Zo?h83-{nYJb;Jr2p+=|cnZ(pIlO?E@CshT8+Z%v;5~eRkMIe+uPgAL zroii00uQeT9!3s4%NckMD)6L95D6kf6!;Rpg0JBl_!go8-B@05y{0ea(F2sZQkN^@wB1jBLASomRuUZLGfVYVRUPuvmAw}R( zq0HDnLc31eKu*RE2+_8dQgWp$621T2LG6 zKwYQ@9(fHsq7^iRM$j0VKvQT2?uHMVLknmLt)Mlufws^N+CvBE2%X?R=nP$;D|CbI z&;xoxFX#<@pfB`;{xARr!XOw7LtrQjgW)g&M#3l<4P#&|jDzto0VcvEm<&^3Dolgv zFau`7ESL>*U@pvq`LF;M!Xj7CS+4QpU6tb_Hi0XD)W*bG}>D{O=9 zumg6&F4zrwU@z>0{cr#d!XY>eN8l(NgX3@lPQocT4QJpioP+al0WQKNxC~d|DqMr> za070_Ew~ML;4a*Q`|toB!XtPLPv9v$gXi!9UcxJQ4R7Eryo2}f0Y1Vf@XMV7zYi%0 z51+y3;1$_{SC|D}?iF~IMBsVvz@v_VC*Fdu;A{8>zJ;g|4Wh$$5Cgskuj>xHF*fi{ z)4M+DKHhL z!E~4bGhr6YhB+`7=D~be01IIeEQTep6qdnqSOF_x6|9Ceuol+Ade{IPVH0eIEwB}~ z!FJdIJ7E{>hCQ$s_Q8HQ00-d^9EKxs6pq1hH~}Z&6r6@La2C$NdAI-<;SyYiD{vLA z!F9L+H{llChC6T|d-wn!;S+>>8H#Wa z9{$(fT{TU4wrLnm0!aulh`SQp-9myxg1f)C>y5j+ySux)ySux)yTh<%rsg-y##ddn zo~o{{-sp|qyN)vwBI8}WhxZW$#?C`je29-=IyKn(44)zzqT@5zL<#mvg4lh~P!F2o zK`lB6%?3@$AmbKkb<{vj z2y_L3pP(!e>Y^UpK!*BgfQD#<#%O}3Xolu!ftF~6)@XyaXovRbfR5;d&gg=!=!Wj- zfu87v-spqA=!gCofPol3~(fsq)6(HMiV7>DtgfQgud$(Vwvn1<Q~(IEVANfQz_<%eaE8xQ6Svft$F6+qi?fxQF|A zfQNX5$9RILc!uYAftPrN*LdrrH@uB^5DAg-F5biYh=LCg6(7RtV)z)wv4VZ2U?VBm zlnM4qf?bJVQX&{u2&NN)e18z95BlLj-8pD02NB|+1scRUgD_oC=?Z#NL8mF`vIIqy zphgg4A{JsJ4&ovn;v)ePA`ucJ36dfik|PCDA{A024bmbV(&JBLz+dpa*sFpe`OXz=I5JkTVU^r9qxD2)YIFwjiJr)MtXy zOb~?$S}j58BSb*fBFIn#;f0`c5JUn(B~(TgR7EvZM-9|OE!0LG)I~iw{|@!h01eRy zjnM>6(G1Pe0xi)Btx01L4Qi?IYtu?)+x z0xPi!tFZ=au@3980UNOio3RC3u?^d?13R$`yRip*u@C!k00(ghhj9c)aSX?C0w-|_ zr*Q^naSrEk0T*!zmvIGGaShjT12=ICw{Zt|aS!+L01xp9kMRUg@eI%L0x$6jukqH$ zZ+IK;AQB?uUA%|)5d|M0Dn5ke=U}rre1cCA4bkx#KF1gM5?|qK82$=&yMiI7U{xs? zR0_s~g5jWGE+`no31)19xt3tMBiP#r)+vGsgAfZM@j=u*XtxJ#^dMs%gkghZYS2Rs zYNSC{G)P+pS;wF>7z71_VqFlN3yN?-0xqbb1yQjeB^ETdf*w{7u?pf;L6R!yJ_U)U zAZ-+MhJqSUkk<(kB|&i`h+YJhi;xSskq3E^5BX651yKlvQ3OR%48>6bB~c2cQ3eqx zi*hKB3aE%msEjJ8ifX8i8mNg{sEs?!849l?sE3pczu?B0g4(qW28?gzS zu?1VP4coB;JFyG9u?Ksx5BqTd2XP38aRf(k499T-Cvgg=aRz5`4(D+J7jX%faRpa# z4cBo4H*pKMaR+yC5BKo^5Ag_(@dQut4A1cbFYyYmA!r_y$%F285S|Xw!$Dj)DDwt6 z-5^OC#6&|>XkG?&$)F?|Bq4(aWRQ9c;)X$%FzEaR`Msbz7qr}hZd*_)3;JY1O(`fM z1*M*#z!Ma6!q4~xzv4Iiju`j@F%b)~5eIP*5Al%z36ThikpxMR49SrKDUk}Pkp^jz z4(ahHGT<-#jf}{I%*cYQ$cF65ft>gU{~{N1BM$k7>c6=N}?1> zqYNTY7UfVL6;KhCP#INF71dB3HBb|^P#bkn7xf_e6Y8S@8ln*zqY0X#8JeR7TA~$N zqYc`k9onM)aV-40~9oAz5 zHewStV+*!o8@6Kyc48NHV-NOXANJz_4&o3F;|Px87>?rvPT~|!;|$K?9M0ncF5(g{ z;|i|g8m{98ZsHbh;|}iP9`54-9^w%m;|ZSP8J^<>Ug8yAL#;Qc>jquiphX)bXM@^o z5PS^+twD!1Xru-y)F2lcbTxw*W{`vodXGWsF-R^3Da9ay7_<(9re9Dh3#w#64lGD@ zh41h^e!!3T2|wc({EFZ3J7VAu#6&E_MjXUNJj6!=Bt#-4MiL}NG9*U|q(myDMjE6= zI;6*+$bi4_H!>mkLSGd_j3F3`VHl1P7>Q9BjWHOD zaTt#Yn21T3j47CkX_$@~n2A}KjX9W$d6pfzIEhm@jWallb2yI+xQI)* zj4QZ`Yq*XZxQSc1jXSuDd$^AWc!)=Mj3;=CXLybmc!^hdjklt`;cdKwNQjJg@gCks z6nucF_z)lAV|;>75e?Dt89v7s_!3{?YkY%m@g2U$5BL#3;b;7UU-27$M-2Rdn23eg zh=aI@hxkZ6bB~c2cQ3eqxi*hKB3aE%msEjJ8ifX8i8mNg{ zsEs?!849l?sE3pczu?B0g4(qW28?gzSu?1VP4coB;JFyG9u?Ksx5BqTd z2XP38aRf(k499T-Cvgg=aRz5`4(D+J7jX%faRpa#4cBo4H*pKMaR+yC5BKo^5Ag_( z@dQut4A1cbFYyYm@mBOVyp4Ad36b$G-oyKdf)5ZCAL1i?j8E_>q9Hmy!{_({U*ao# zjc@QRzQgzU0YBm={ET1lD}KZ8h=D&46R{8*aS#{r5FZJU5Q&f&NstuDkQ^zH5~+|H zX^`1OCF_$cRkHj4a5CY{-rr$ccaOFLEI_@*pqrAwLSBAPS){il8Wpp*TvQ zBub$)${+$|Q4Zx%0TodRl~Dy%Q4Q5m12s_#wNVFkQ4cD&p*|X*AsV4EnxH9~p*dQh zC0e01+Mq4kp*=dFBRZiox}Yn%p*wn@Cwieb`k*iRp+5#-AO>MDhF~a$VK_!$Bt~I0 z#$YVQVLT>aA|_!nreG?jVLE1DCT3wa=3p-7VLldMAr@gVmS8ECVL4V{C01cI)?h8x zVLdirBQ{|(wqPr^VLNtUCw5^s_FymeVLuMwAP(U$j^HSc;W$pMCT`(2?%*!&;XWSVAs*o|p5Q5-;W=L5C0^k*-umnfZ{roL|KjRntir?@%V&D(N zL@dNc9K=OD#76=oL?R?c5+p@3Bu5IQL@K048l*)!q{pAgfWPoJG9nW)BMY)38?qw@ za^fHSi(JT!JjjcD$d3Xjh(aigA}EStD2@^+iBc$yGKfG~ltXz`Kt)tSWmG{`R6}*t zKuy#_ZPY6PCTNOgXpRXpau)h)(E?F6fGG=#C!f ziC*Z9KIn^n=#K#yh(Q>PAsC8b7>*GbiBTAhF&K++7>@~T zh(~ygCwPiyc#ao%iC1`yw?2Qv+js|&5E<{{J-m-7_yAGyAwI&#_ynIK8lvMfe2y>h zCBDMf_y*tNJA98H@FRZ0&-ewu;y3(`82AG*5eu;q2XPS(@sR)tkqC*A1WAz$$&msn zkqW7i25FHF>G3Br;4l1*jL3w{$bziMhV00JocIU-A{TNa5Aq@(@}mF>q7VwB2#TT@ zilYQdq7+J_3?fh#LL@)G4AM`~(^v3`U#2^gD5DdjI495tJ z#3+o$7>va@jK>5_#3W3{6imf5OvenOCl9L&W$%*O&O#3C%l5-i0sEXNA0#44=D z8mz@Stj7jy#3pRU7Hq{fY{w4l#4hZ{9_+ zh>Umf9^OY3e1NF<5Fg=Ve1cCA4bkx#KF1gM5?|qKe1mWC9lpm8_z^$hXZ(U+@f&_e z4E%wZh=tgQgSd!?_(*_+NQA^lf}}`>Z1V~q7fRS37VoAnxh3;q7_=B4cej|+M@$Hq7yo!3%a5k zx}yhrq8ECj5Bj1X`eOhFVh{#n2!>)9hGPUqViZPW48~#{#$y5|ViG1}3Z`Njreg+X zVism&4(4JW=3@aCVi6W&36^3RmSY80Vii_n4c1~E)?))UViPuF3$|h#wqpl&Vi$H} z5B6do_TvB!;t&qw2#(?yj^hMQ;uKEf49?;l&f@|u;u0?73a;WBuHy!7;udb>4({R} z?&AR-;t?L>37+B^p5p~x;uT)Q{!yGr$9~CLICG(*5rvB9%b7W2u81r-3l=JnGgIM0 zIrHX;D3I~Z<5;x+{Y1u0xw1wS%vmDqv2Xt8oy<8h7KkX6HzHestobAI7RZvdz|=Q? zp>MwSzj>BCQG;4_6VN6*Q!&oVa-Yz;=dUwsV_YqIa1_EZ@vAW*MEM2|F6Hme*v2=WmNzG diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/euctwprober.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/euctwprober.cpython-36.pyc deleted file mode 100644 index 00f506b7bd99ef52c5f706a0912af7251f70900b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1070 zcmah|&2AGh5VrR(+mfVJ1qdWAa3T_IRY05&0@8{LDM%@*v_i6+wcBpx-K4fxRifTf zsn5dmaPtX?6R*ID8E;e43wY)6w==u*^Ue50r?a~DqxWS1EXeTaZtf&ghm_~;>M%_y8sbHqm*a~+~EY;6A5-^k6#abF^frrRQbp+=MW4YqS zF!qi7ezk4O$@Zj}Y>w(eiOo_!-#Oz_Z0A6{koM-3b#Bimz71QGsZJr{6W9g;p;sJo!+QQd~a<3_B(t7~IEPzS4cDW8JI z1RzK-d$1gG`J?}ab;$uQ&Uy8(u&LtJam|k%W;a$af=s-IVv{5hjBp J(5C(g{s5p3|9b!c diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/gb2312freq.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/gb2312freq.cpython-36.pyc deleted file mode 100644 index 29e6efb531d7d3baf0981ae80cc69e9300c36421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38324 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 C!~OyQ diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/hebrewprober.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/hebrewprober.cpython-36.pyc deleted file mode 100644 index 67735af420cdfd89c89fe0365fec476fb946eed7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2912 zcmZuz%WoS+7@yf!)|<8SZk~j;JPl2v7Se~P3L$Y*i^i$qlu9em$nk6(JC5zl+HGT8 z2`Q1vku&1JfeV)&5aKW3ub2~vQ$Rc<9*17w`)1cp>~>f4n{S@`o9{LIRy^(u{FwMC zahZ^x$*IQx`8_DX1prPsEt5U!QHruw*7kHyr(~6Iof}7l8$LbMJ%gKBlC+K~EJ;!s zU*5@ytY5z)s$0H*4i}|jrI4-X>V6(3bsjyEg0DdEiAOo{G)_I8Yp|>CncVO!ZhC#( z@@(Gc#klP`Jm&Rt$8&kV7w4{*;Bjw&C%nPOWSjBGMsgx?T;NB9HbPlUe^{zmu*;a>z3pzz7)lhvP^NAEVBbas92>ea<-b61=0 zgJOkO9|Ut3FD)+SQIq&!jXJ^-+yJPPI&G0dt)v~oASW%tbcKdOQ=z4>Podo+rC2x@ zPCzqBN18#S<_m$AmNsL>O0mwEoMhX@O0LZEU_4f?7K(Xj1o^7)<;3Zs`^BKq88KN+ z`1hsDw)}0F8MX#G%WKL5WP(MDqP8jgz^{X27=d5jhC0SrzMKmJ#=ap>uPoH}Y74bu zZEmYkEc3ZNap~fI&gTorjQjOYy`yXq?m1sO5JPaFFHli~0E8x}b?R-7oi^Qk``BHY z)?nE(ZZHGDLC-8i$~BNRg`jQFqn55QNMZzG6k!Y?NyQ|}(;dJq#RS0D zPy!o(AUngN&EYO)N;mm-U|`*$h39H1S}i05!4jHO6K7yVi~}Tf^8KF7mcT_zSOepd4#g;# zyH?2Cl(C!X%+hW4!P3pPxRzRLi-fbC)$D%oRQW0748tmIk*99t- zY9*xneTQwqVOrAJ?vcJz3vAj$sbLF_2*_7LCO!7oZ<^(7JZ` zQthvHJv|%u0H-yS>stHg?;%r1#gdo>?n2!j{g9pTmJoP0X=T?pX^dGkNQ+LGeO_Dq7Q3W1vZ10y=#b#Xq9TiDk6Baih?DG5K&9* zozyY~JPSU_*h!+2<7?>*3j=ET*3t%BNoO~gGRrABa(jI>y$rs6EA{?H>K@B1f%=C( zOlR+Q_o<8{69vc|`D$gm$o)#*R~bkSAoW_o#Vn6G zrjpz9{{!AC856^$4&)-2TDlDw$%YLXv?o$dukTm{eG7|<6buN_JXLLTS(F`d-Ha&_ls0kOu2oNrz}Tk2X4KVQ-cI;$IZp&{mkv z=V6%&1F?V-W_NKB;Q2HKPM<}F>Tb~!>i+AwTU2NzXYkfX^}?<1FwFdoGRiJv`*5{~ zBjP-MFNyFH!W#%LBfN?53IhHjidO-o8)Z9{oy8*dUqiTpa2WwFXLbLHb112(Rk8Xu zG^Gs}5B!tV55#pG#XlW&AQ_MT4Dx=t%-D&ufD)!~lDbyWpr1ksPzSbV&}UxLFb(Y2 zT*r271Kx!Fjyvrd>MtmhG-W*UoA3q{Xgq29mBwBW+5o?C^7&B0k4yV{sK6W8Qa6rE G-TeQU*psLL diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/jisfreq.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/jisfreq.cpython-36.pyc deleted file mode 100644 index 00e769549e85068e21c100242247c05bd7c34653..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44468 zcmYh^Ww=#UyD;DlA|M?C0v4d8blEQg1{i>#D2URXgYNF`?(XjH?(XjHhO=+JKi|2o zb6+E#@r-BAwKlJNtvTn;88>dM_-Eq%Gq++y#QBK-@Bb1cjEKk=*{}a@Bo!k{MO2JZ zDoUS(6%&_=8fl{95$WHJjHvSeR>aI#P5jmLk=?6N5FLv!1PhQZa^`B0n2~&-)e@)U zM6xGABrjq|@=BI6#umkmWHCOB5y{zDk-RoLHCiO|WZ9KCl88i+OnHt$KwtFYpqt@EQ@3KL%H$AS&KMG`x-Ih=G`R z2eA+vaS#{r5FZJU5Q&f&?;;73A{pL8a-={?ypIp?AwI&#h~}k8rIi|K@CiOeTBJjI zWI#q_!e_{gEXay%$c`MyiCoByJjjbR-X(wfiK>oVZ{FG72OpT|fc$<^QfiIx9{Sv} zFYqP4!q@l)-=dKOGpyLBH2}qBd5%hNep0k53mNHcHqyQo--#rX;GLiTG7 zHn!GmAqj4wm5Jk6>Af4(+v0!9$cOKc9|celQN+C^F0&tqII=`hRW^xfoSb` zzqjIFaanKLp{vGk|bK`@STvzQy;lGA`d+BJ%q?3h&;vEgKmiY z|HvOTe2sWg_0$@S%wE-nT8Smi>#P;m?SS=O-&R^boBhW7AoAQqzC0L%uaFcYk@pRf zer`oA-Ly!CpKe^a$$JFx||uA?s&N4{`ZGiX({V!!SWy8pvR$b`4dMn@I-Di}+mmUUYBQ3k)M z>ZsNle2(h)61lB-PnHD8iwN{H`#W;!{-{+EZEy&^t*x!~wveh?4ZKi!v~uDTltcl% zaxhD^zKndmuQt)W;3xilV;Qae)9Vr2k6%eI*Z#Sju9A%Q5cOe7>jWj zj|rHFNtlc&n2Kqbjv1JVS(uGEn2ULsj|EtWMOcg_Sc+v>julvmRalKRSc`R7j}6#} zP1uYr*otk~jvd&EUD%C1*o%GGj{`V}LpY2hIErI9juSYEQ#g$?IE!;Qj|;enOSp_H zxQc7IjvKg%TeyuoxQlzZj|X^&M|g}Uc#3Cuju&`|S9pzx$p1mQ8U<1D7NX&8)bI~Q zJO6H+_Yc6gZ~g($x`;S__Q!bN$JMIt&41hv&P4w_4ALqU`9CyQOXDAuL3Ej8`>BYb z6-O(k);oyxX7NB9`2kQ!<52|h(y zq(gdSKt^Q3XUL2!$ck*pjvUB|T*!?)$cxYM1-`^r_!{5fTl^3C@E!7_01D!J{D2?v z6AGa)e#S5O6~CbfilP{PM{$(EANUg`@fZF^DU`-PD1(3TAIhQ}%A*1*q7o{j3aX+S zs-p&Kq84hS4(g&F0_vjy8ln*zqY0X#8JeR7TA~$NqYc`k9onM)aV-40~9oAz5HewStV+*!o8@6Kyc48NHV-NOX zANJz_4&o3F;|Px87>?rvPT~|!;|$K?9M0ncF5(g{;|i|g8m{98ZsHbh;|}iP9`54- z9^w%m;|ZSP8J^<>Ug8yABO>xYs;@>tRJ?^~cpK3X12ORqVj(u-ATHt|J`x}y5+O0( zMG_=MGQ5Z6NP(1iA0OaDe1wmY3aOC>pWsuZMLMKM24qAge1^=(f~?4f?8t$f$c5a< zgS_}0U*Jo8g|G1qzQzBL58oj_3ZNjq#}D`sKcNr`<7fPWU-27?peTyrcN9kn{DD7F z5`W=ultO9zgEIIR|Di0(p*$*}A}XOWs-P;Wp*m`yCTgKJ>Yy&_A)r1QpdlKeF`A$$ znxQ#bpe0(NHQJyp+MzuR;36*JGOpk%uHiav;3jV2Htygq?%_Tj;2|F2F`nQlp5ZxO;3Zz+H6kKEF}NB9 zQSla{;cY}m48+7ch=tgQgSd!?_(*_+NQA_A7fFy5$?zVMBL!08eSClq@ew{oDx^jl ze1cDr7U_^48ITc~@EI~A3$h{`vLgp_A{TNa5Ax!3e1R|V6~4wd_!j>|K75D#D1d_a z9zWnm{DeX%jGyrfe#LJnf}$vf-%%VT@CW`xN&JPsQ3|E;56a+Q{D-nAhw`X^il~Ij zsDi4fhU%z+ny7`^sDrwwhk*KMfQD#<#%O}3Xolu!ftF~6)@XyaXovRbfR5;d&gg=! z=!Wj-fu87v-spqA=!gCofPol3~(fsq)6(HMiV7>DtgfQgud$(Vwvn1<Q~(IENR0=Zxb6oVb3gyy&yE{XV8T>KEB@ zTJcN_F_FXXtLH7dfaXFd&c?rfX}u`qtj}p$_;q-!-+I5%ifTnI6E)-; z_2yS(v(J?Aj#Pizt*MF8eoyXdqa-rd(@iPM9YpwGaFvNUCVKcSx~ud{tk@tVl}{jt zYONKrPdBz@_p!tt6D%uWqKJKSnn-TNPABJ*R4*`6NRVZoiTTQ{ZN&y#W)c!zYpbyy z60BBQU9Ea1E;`DujD2UzOS&(mIxBMlt!&1+Y1MXyRyae0CAci4gv;Ts{Vo5!&JrZD_Kqy)oVwY9@9O?#-z5@^ zH@4i`n$lmj(OOx4lHi#HUF3_Q)xp{WmL<_zATF+M2d{5QV@Kp`rB&CK3Eos{Y?QHt zx(T)NN&ky|FRT8TJ%*TgqO5(bZC06{Wv}+0y9mBx zB9Sf2sI;Jb>nuBASzBZ8qpC74SNc?3Aj{TiB{8wZ z#0Cj^O7I!Z7>nu*l{Ya7>jeKLeSZm(spW`|xvcnIx0|H3>|4Ub6=!mbu{aVea)38vxryVtZBR*q zTgKk?di+mtT-;Yid%I0gOA@o0wUS#g$wWqcFK(Q}-=mdDElVXhqm@?hT2uLJC<5 zYRz`|E3{@wI#9PFCQIMfLAQ`9y@PJ58&kd=S|4eR$JdVSb7Q-dQB60#iFnq=ws}R> z=k~(qw^47@wjz$%+g{oa>~Y)JPPD)c`BItKD`^Hv^GRA;s#>~H9pyZ6*%V&RkLgw` zUO21`CYpIqrqf-oHQnYLO_a399h;Z7wvj!y8e8x1=L52X{+^xED6-t(;jiG*sNRF!K{?8w~(q@cTM!NwvwbDn0Vw6 z{xNn+Xe9j)bBFNAcowy}e$X6^S_qN>7Lh0NYG zdqZo4iN_M`wl=AnD{HMaHr{y|s!LX z-HTY`h&n2xrxg`!e$tA1;s)8biHSX0Z>cYqi5yxdO-!^$RIRPnj%KVwC4TS!zDBy=!Cg(TAI zr*+2hrdQAjaZ~Z16PD5sXIZU2vh+1k*;(svSsn%LlJq;>c(R-nQqGEFTK81nP)G@t z#&_;>=-x8B&{#@qqhaxzmbL$yDB!#t*1BZNwJInrAed51=mx3E8R@G3+(nlK`Sh)s?vPM zx}vqXeD?iLx1dyC$~;+pJ*}u@%gZXb>?GDR(OAf3vy-eHV%Zh54{dZz$Y`ZiG`rVq zDczS^8EyHie5H-u!&Ft(M=7%%%`Ve&?c~*O?bb)CbXu7m)^%s-in#b*__uYp2+80$ zl8U>oj7JK3U_}Gze=w2P8Cv&dOhIXk?J_&WZXJ#7LoyS8OWM}Nc-_jnH3XNpWp>>G zHrgO*FU#`CTt{#PAo?|SZ>)tw7$M6Po2Qm}qt-rg`*o-4b`>{Cf+7lk>?f*{^kZ!_Q|q}?7gwu*G8#BT z8Dws4ERSVB3+W`^Maw>y{*j5I;y(1MRyF%X`dfB$9o^M9YFUSzfz`y$+9G7H#*8(HlHTxbz_^9mc_y3m9MR3|2U_w6!g@-NljFjd9qX=2!3Xwld-4b zmKra;6qKz&I-hnDMdg*w(nW*Uywn+c6;DW}=JLra9^YwO{ zruu@`<~K1^Rc&-PtG=`q(}g59@wt$57_OFYRTW1;Gp$H!V!792o-HpZ@*)x#D}x*M zEhyDZt+VPoAVD4nT?!9$C)qc*d|L&NROtKXLY|FohV{zk!w6*1B`5M^mj&kRjy(&v|-798q*{!g#atiuT_qkRXNw4T`vh1LwJ?t?+ z=C_3`FqTZ*FQ_WZM{w=))stEq9701CR99&)aq&&0al#5XghRR$(M_oJw=BKIy)FH62_{MP3RV4J7craLmh&CLLx<2ztD4!lmK8U9Ptsp-5Lw;? zYo(RyJsZ7a?blZ1HG9Wwed)jR(=$c4yNO@LZFQ(~bnD}+Ju=GjnFOC2o2Rweag33r zhGo~Bu(VQDb}$zmbP*L)S8i&{R?3oIaAvJ`TBRj;rM1`EyI$27mStAjH{#~#wzOLt z-9=LUDt&Piqb1m9;+Pd5$}&X-i4_#_UL@m8T-QCW)mimP@t$Lgt~E=RR`yt}mcp_$ zuu%=wH}a!f$!<->CB+RDbQSWo6LwGGmGMyAuL`OmWSiM2%9y6AI%W^qcemM##v1E3 z5?9l1H>59PqPHyXS&>C+qe@SixZz-yn8<2vWrf#M%O|R@qKrpcKMGl8qnD^HWRVr$ zI>0>QzOnBl-I=4qvgG3KDExxBPyA@i5_iUy z15DHrQeO3+2}$alwzbDAac`-#fw;|Pmm6zsj}tlacB!?` zbgxU$*kL8J$9t%2^PeO=Dc_&Y#&q3kZ(c#mN@?}9<>y*KNMmc;iAyW}c4PM)?`kWu z+UT5GW}00q?xs`nt=&fBTV;Iz=KM)@%WPWdD`Arrjm0Gra!a?p1I#VoN!@K)qa5m6 z;{LI0zK|Dc8LEQf#;U36ZB_LVH^uBe6FH2n)xE8PMAjxzMkaCT%pS7Gr(Uw|T369T z;YEZjl_i-9ieaqTgKx&P;%mLuIw13Z_{na&wN^>+E><}0RUFa#YCfXX)E@11yU3i) znM|vUOwL9^E4rFZuJFYwo#iNN3Qi}%XnUlyqM2?7Wqe@mJGPvwwEtweD9c9O7*;%x zS{`i)*f1LbtQ-7pi*OzH@bdm8G46f_;w&e#;(T znMi^3y76WH)QY~krA?HxtUTWKk}We0_8EqdQ&ZcB=27zHfC437%tYvQ($Vl`s+0 zvhyI!Kic%G0i1^*&ncHK=jpKNx!AEpG# zU5sxn+i3H8TK}`6lU7>vMpCEl zBfFKAzN6WWG7r%mCM2cqXd$QUJ50W4;wA}sru$U)VyTE~T) zP(cZ6y9+LdsAh9m(NwCeW;dBgZS5Zp;h1H2QQp`TE1r6x);QFxn1wS=#CoY>djV2d z+uU0qrdD?qRJZJvRPCL*Wm>td&FH;*Rr)y+oV3Rbt#VpTtlgx(nOJJ0lrsOIdri4_ zu|iy4dpxo1uJgQ1@c*QGg~qnrs`b7EiL~yk;4m^NqpfrBxh&h>?5q0Uly*mJpw?#l zekS;cWwrhI^{_0iePdet40TM@H};>||5(6-DU3za{XuK2g3@7+N}Kyxtt~E*GMY%$(7vD8?QL;Ow3gcKSFQ06?$^IL6?VH((sHi0P-kVw+M`?u@kma=_T4lvpR5CWl z=2_mP_r^?N^T#-Bx3}aQBf%i4x~hIO@|q}bSxpJvk#Cgr4+P&=WOE4~Xl0Q(niU;w zxy4~Mv&Ryx9Zt>|Nyk|6Kdt+!kLSdGA$>d(-AwFMMnVigODAIdn?ZfIHjew>>mZarm&`Q34CHNFY1=p8gt}Po28D?yijo#J$ zT$UGRf05-35;&qPj`xc0NbHgMfrCkC_BU%c+kC&-qRO3!;^=RWvqG-nOZ@H-(wWHS zl_{_LfqctVy1;G^b$7})T-dEqfu}kVZBe?dPgO)UgEvG6nh0L?;F<;ymv=#i&#Kku+qkQ?Kx@<)iYpdCJELI54 zg(!dr_M9`XQ-%(N()4eO-yAI}U6JMD~C;dwazSTV^uDn#WuwH46ZGPIm zkJR@V^`$y(MQf*XrY*lS)<(C1)))3jVz(z&q(oBP{wC_!@?X1ku~9c?BZpdMYgNEG z-H%jo+~)JFh>hT%&7MNq+U=FGRI+^dW^)tCb+da5G*{Z$H$R*v+P`@f?Au?`MOyXc zOQy61LLM3$WZ%`6ZPRTcIEvXuTIFP^Yu~31>w<1;@7?uw`^9-FBKVPl-jn$c-3jt# z(TXqq0jV-ro5d+Qlx$X?zO@gx+TkJTh+44g*ACdG=tx@8l+Oodj9g_Bv zV4RwN6!N3B)vajY?DjHN5-A)+p?I< ziRF7DRS^>fY&qXSKXcaFIveL?E^PLxxEOB^2A{~XA5Uy~RI02dw#)p!E&nt7fmE9$ z_`q0oA-|iLV?|!AnD$s;Syn~HR7OsxxZs=PFqX%m{v|G#iKn)_WGs$yKa}~ojXpB* zt=-xPeit7hn=EDRR#pWc>E4z8g=I&r_`|+iRrRqf$*QF zW4p1Btr(&8kyNdu3YNXJM-Q{Fv~FA0L)-`j4N%YsZ^HMDm9cD>kl8ZFz#YFI!k=^p!_k@tc%J|j6yjE#%NA!d48d<6c{>Te8L46&Rk=}~2X5%_d zUkZ+hd{oHQ3(Eb;Mr|$IX^+abJS=G!yQP+3uXE5!_oWqkw9bp`X+=}zMv*Uxu}Qcm z?qg-7!f$HXCrd8J`<>Qqt%^3UgsZlEh-UJ&mY|!O&)e;Sq&tk=v22li*&N4BA+H@) zBCQqZC~lOv_hi0_=8_(9B6bVuEZ+pxKXZVU?UCL&s44i0?vI#ekB&k%D(zph`Bh)b z9zV#^Lgu&a_J{PRq#tH&4*agt6UNS1kw(ZZS=z}mT*zf(KS*%W9`PK^A6iRIEW>jZ zWVdXcEh`wSVZ~HqzbUe~*7P^!T6-J!9N=b$^~6S>SXM;HaJ3|r>TmURSKnH3U34Rq zcFKw$jm1~cdnR6>q@?diP(bT{_FX6>ru2jC+e*Ik*7ni*L#iLF*sSI$#zt#J^`^OM z_OvV`g|xSM0jyBzU~$_`yd}7j3Zj@jYPYfWm?k8lZdONBOuqlDXr#Wcl(q0~~5ytt@JJOO_4ln{KR@u@sWd z*4-^j2d62G%vG&zf%14^tcwF|Cpe#F>9ziqubF+03=)U8uCDFQQ*(WMZW4A(<)i66p z@JIgX>-^?8@TFJb9b0zQEoSX|N~_~ws%rgdqfeyj=)Bx@{u+quBi{n8@e=&)P(QP5 zkFmtYVjJr!OF?T_t8a^1T6xL#8|#Fn_E>4zr#4z9F0u39{IjjTL ze(Z?y+AXW#SkliDyk9Msv<4abUcNuY-Iwp6wcn$miEc=1^KCLewnsb(mUy-HN^n#9 zI%d1d@=`6OjP*8F&5FfZ-5l?`R>U*bPnJ=(oUE2q%01>J)|TaS+%lWa=KbYcDXx!H z@v&KgXnu%KS~ghbfyRDRb9cM_uA4*fJ!2{D`=z99@tI{eC4E;&DKAP*W8ED>di(yR zTU6%%X)Ti=p(F2Ltd6RB2!2m%vOONjyus$}ttja@GHSi8(mQth%A4zRsd`$Q*5(=P zHbJ=;t&L@@j%C~Ai*D^~D`wj0C$0aqhM1jZSvIZpmNju4Pqng1HB#_b%Iz;Ms+YF2 z%&(REm-@yE{z%9U_3f1^yNOqCUQ1&c)%U5ft>RW2YwgY2LaU;QvXVx(+c24nqq=TO z6aOeThT}MH;t76~YO*4es$ht2WvzOWeroglYH2S^c8670mUfOKwf9Q`-EKBNhF&)6 zAzusKWm4T090U8Lzi;1~S~=vKYop#;hn$z_@^!XbKB=nOe2CUpQav*}!-|-WBZ(}% zjlHA0$Q~;Mr&V|g6K$NKD{sz$g8Itxscuh2&K1%ciM*x$XSWIBX2^V8zH(Yk)t6A* z60N|*)8ks!OI-7NdsJM6VGnoF9-xoWMoP4(v$*%EXVt^f^u51(3S&qzp?K%dqmOwN0v*fx{P!Zd}kt)cT*L|u}vA} zrTCGi*jMk$oWKPZEL;lB(+S(HP0R6s>kLSxOvEHi#uQA&G)%_~%)~6r#vIJW zJj}-eEW{!##u6;WGAzdmti&p;#u}`}I;_VAY{VvP#ujYFHf+ZZ?8GkY#vbg&KJ3Q< z9K<0U#t|IFF&xJUoWv=d#u=Q&Ih@A@T*M_@#uZ$}HC)FH+{7*1#vR16wJj5eB z#uGfnGd#x&yu>TKMnsfIT#p~3;w`w=F}#iF@IU;)2UEc>m?0M2Ng3iGF8tSQh>rwF zh(t&X-=BpfNQz{556R&RxR4U>;{$vMA0&m3kqW7i2A{yU2f?L8Asx~q12Q5L{K612 z!*@&}E3zRwav&#iAvf|MFFuFMC&HKTad-F{-@wP+;eW`7?~orpMhpexVVK??*FZN+S4&WdT;V_QiD30McPT(X?;WW4;o8aIs+HgZzz`k2dka3N5AVP? zo55A-ArAbPb%+Q5l^PPjhvvaYpCK{cMG_=MGQ5Z6NP(1iA0NQQ3&Cgi!GGq4R7j09 z_yjJ`3TcrJ>EY|3kP(^i88XACQ^7~z!LPU>J95B>+`)gihurXA(IGE{y zzQWh|2H(Q(S|K04gWobk0Tjgd_yIrSClo?qxVk?0Iyd}^-%tcaQ4GJMI7;9T{E3qA zeMtBlrBE9GpbY-Se<+J`D31!Lh)Spo-;V~rriN;$jvAGd_ zj3F3`VHl1P7>Q9BjWHODaTt#Yn21T3j47CkX_$@~n2A}KjX9W$d6pfz zIEhm@jWallb2yI+xQI)*j4QZ`Yq*XZxQSc1jXSuDd$^AWc!)=Mj3;=CXLybmc!^hd z4Yz*>A2fuhcni_so{r$NoDc)9unn%X39%3xaS#{r;A`pN)1=^YmXHXE;cm^~^W%^d z$>77jkQ_eb2`S+#z~J_{@F6~e4{1Xxq(&Nif=`ha>EOE6kO3~54VmDZf{+kLSE$l4?;8eL@2aCOSFPd?Lr&0MLV=d2XsUy zbVe6+MK^Ru5A;MY^hO`_ML+b%01U(+48{-)#V`!V2#mxijK&y@#W;+|1Wd#vOvV&U z#WYOE49vtV%*Gtd#XQW%0xZNLEXEQn#WF0%3arE`ti~Fw#X79V25iJ8Y{nLB#Wrlm z4(!A(?8YAK#XjuE0UX339L5nG#W5Vm37o_!oW>cP#W|eE1zf}>T*eh##Wh^V4cx>n z+{PW;#Xa1|13bhdJjN3|#WOs|3%tZDyhcQ{NL;8DqT($?gRAC4bhyzW#Kb#r>p_SO zmm&nWItDkK26wWB1V{+ChXh|Vg?EtzNs$b`x(#lA4X%0&De*o&z=!wN!B>UBXPqG@+p*HHEF6zO@#GyVKpdlKeF`A$$nxQ#b zpe0(NHQJyp+MzuR z;36*JGOpk%uHiav;3jV2Htygq?%_Tj;2|F2F`nQlp5ZxO;3Zz+H6q@Q#BE2xC3(RW z48g_h!NoHnI%2>j@xgUb!52s&HsZj2BOxB*BLQ3^9TLG^Qo&WcAqkQq8Qw#3q(Dl% zj}PF++~HHW|1YG2YZ!w|)PgUHLniocI%Gx`WQA|9LU!apPPqIj zfvvcLTUViGWZw&p)AUwJSw0fDxor}pem}N zI%>f8_@NeR!&m8{F6zNIWT8G9pdlKeF`A$$nxQ#bz!%w}6{ zx}qDpqX&AT7kZ-)`l28DV*mzX5C&rihGH0oV+2NG6h>nV#$p`CV*(~(5+-8`reYeV zV+Lko7G`4(=3*Y^V*wUo5f)?!8 z49l?sE3pczu?B0g4(qW28?gzSu?1VP4coB;JFyG9u?Ksx5BqTd2XP38aRf(k499T- zCvgg=aRz5`4(D+J7jX%faRpa#4cBo4H*pKMaR+yC5BKo^5Ag_(@dQut4A1cbFYyYm z;m*Pk1ySM22*Ewu!L1;{m1rRbV#2ckg4_0k>m)-QctBThF=B|11W1TPNQ`%p1WAz$ z9;OmJ>LR3os|v&W_y8Z`BYcchNDa3t2e)4Ymw<(|NQd;ufQ;}&hTt;R;Q1&a3*7b_ z+?^V-BL{LK7jh#H^1`Ks;R}3;ukbZIM{x}qDpqX&AT7kZ-)`l28DV*mzX5C&rihGH0oV+2NG6h>nV#$p`CV*(~( z5+-8`reYeVV+Lko7G`4(=3*Y^V*wUo5f)lLL+?pNS7a3x}eH6jP z>>(CnBMv-pBzOc!@YIapu?)d|55a}{!IkR4)rTPok|G)2gBuNl8w5g1c#eGV806rA zWWnPW!pCrbVsJ}eaH~pi%Sdn?aY&1Fa63`RfQ-n5&yX2ekQLeBy5!*M$dD7ckQ;6_ z3$Aw$t{o3w;7fdkui+7d;ahk#KyaTza63ZCj{+!&@9_hE#7`)M!uT1#;8*;HA}ESt z_#MSj0)N0I_QB=g!8O;xC7huYO5-1t!N2$qWl;|0Q2`ZE36)U=RZ$JqQ3D=H5ZuZd zTuvWc2OH|59$XR{>Z1V~q7fRS37VoAn!^Rvp(R?OHQJyp+MzuR;36*JGOpk%uHiav;3jV2Htygq?%_Tj z;2|F2F`nQlp5ZxO;3Zz+H9W{Bc&0}1_=ez_3&GP8g1fwfTZTgnxUVX>5h%C`Cd5V@ z#6>*BM*<{7B6zY>aKB1$rGH3@WOxtBkpd~LVhp1Kq~ zASrl2NbvN9;Evzm4v63eflvVzQ3;h%1yxZE)#0YDP!qLK8+A|@_26pwP#+D@5RK3n zP0$q0&>St$60Oi0ZO|6&&>kJo5uMN(UCcO{6TQ$Ieb5*E&>sUZ5Q8unLogJ> zFdQQ=5~DC0V=xxuFdh>y5tA?(Q!o|NFdZ{66SFWIb1)b4FdqxB5R0%FORyBnupBF} z605KpYp@pUupS$*5u30XTd)<|upK+F6T7e*d$1S#upb9-5QlIWM{pF!a2zLa5~pw) zXK)tha2^+M5tncoS8x^Aa2+>r6Sr_1cW@W?a32rw5RdQ}Pw*7a@EkAj60h(Y5wRkP zf~fE(Ac8;l5IjsYc%Ws70S|-<9upKiR42IkFu2tx#6>*BM*<{7A|%GU@K?BkM`ea& z@Cdlzaa+Mdr-G-&1dnqG9sv?OZXvi&Ke(?xq(W+>!6*0>X^{@;kpUTz37^69*g_U$ zg=YZ-w}A!sZUy%q1vdhP+{lBx_#9v0OZeMc!DCN@2h#J2?5DWg8 zTJYzug1=}L{K=%?Z?*)FEDxSH8a(eTc-mO-6tUnj6v5LCg1gm&8^J?zq(Dl%j}P!6 zKElUHh15ucPw*+yA|2AhpQZ{K;pz6_GkExM@I;#6K?K3=yunSLAqR3I7jh#H^5S!R zfiLkDzQ#BB7XL#&e24rffP(lQo<$LU#7`)M!uT1#;8*;HA}ESt_#MSj0)OC7l*C`~ zSF=JXl*T_OgMaZK%Ay>~qXH_T5-Ot#+>RgI&>7rf8ET*=YN0mjpf2jcJ&>V38lWK> zp)s1EDVm`xVVK??*FZN+S4&WdT;V_QiD30McPT(X? z;WW5%~$kqMt6GqNBnvLQQi zASZGmH}b&KNP~xo2G2hX9uOBiuqAjjN^qBaa0h$%AM)Wl?&yJ@=!M?sgTCm8{uqFP7=*zXf}t3O;TVCD7=_UogRvNg@tA;#n1sog zf~lB>>6n3;n1$JxgSnW8`B;F3ScJt`f~8o7$riN zxP{xegS)tg`*?tdc!bAzf~RKAwCiyArc`m-bE55MKZjHCVYm> z$bziMhV00JoXCaT$OC`LE%BMKh>6Fi0@{D_}W2!-)8e!;K!4Mk8C#qc|dqXhoIpD2mH@Ha}KH2y&u{EPok z7UfVL6;KhCP#INF71dB3HBb|^P#bkn7xm!D7ok2HpdlKeG5pbk;I9${kNyuHgB(1G zIC!XR@DSMGnU|pr+M*rWqXRmk6FQ>{x}qDpqX&AT7kZ-)`l28DV*mzX5C&rihGH0o zV+2NG6h>nV#$p`CV*(~(5+-8`reYeVV+Lko7G`4(=3*Y^V*wUo5f)lLL-bQr9Kuo-YScr`{h>LiL4}Tar_|vJuUri1E-e2$s{(`?C7yPA`;7_Rpe@Z3z zYaGEJ9|#@|A3WYYc;ImGEZX3Cp26cdgXdNT4}A=t92Y!*EqJn1@RX$BkwC!%d4dPy z1W&jLneZ7hBMY)38?qw@av~RUBM@fE(tH~1F+Lq2?m{3w8e_#QvtNBo3B zD2$)+3x36KD1xFWhTl;fCGZFSL`nRGzflUM@ej)2U;Kx%D2MW>fQqPu%BX^>sD|pO zftsj=+NguNs0R=I3H8wc4bcdV(F9G=49(F3Ezt_C(FSeN4(-ta9nlG$(FI-64c*ZL zJ<$uj(Fc9e5B)I!12G7LF$6;~48t)3BQXl2F$QBX4&yNa6EO*sF$GgG4bw3LGcgOZ zF$Z%o5A(4A3$X}`u>?!849l?sE3pczu?B0g4(qW28?gzSu?1VP4coB;JFyG9u?Ksx z5BqTd2XP38aRf(k499We|Ju9LFQ4iFj^k>O?CrZ2S;J(qRg%HrCk!(~S?bqhhNg_h z*Qm4#g{*~0*_UiBwAiw=qbO|{`@Zk{-n@Fyv;G6;p7Z*id+s^+!F_NazCT!x4cLfH z*o-aMif!1A9oUIo*o{5di+$LS12~97IE*7WieosA6F7-eIE^zni*q=S3%CeLuOPP- zE=LUVA|LYO3KYPVD2PHRj3OwCVknNQa5b*MwYUz~;|AP_n{YF3!L7IrC2%|Lz@4}Y zC2==Op)|^%EXtug?m-1qL?y)HUQ|XL?n4z+MKx4M4cw0h@E~g9A=JXdsEv5kL0!~C z0_vjy8X|&5cm$2n1Wl2MW@wHiBqIea&=Qa0F|ih3ntV;COW|~NXSBG=$(Zw$VOK@j~5`997KqNa&S=k4Whh3 zP&G(&2I<4l9dDoqdZHKJ#9Qc%KIn_L(GUGG00S`ygYgdD#Sjd|FuaH17=iaO5+C40 zjKXM)!B~vLcuc@VOu}S*gejPcX_$@~_!ytyQ+$S*n1#>r1-`^rn2kA@i+Pxjudx6N zu?UOt4Zg*9_#QvtNBo2(Sc+x%8NXmTR^V6shL!jof8bC2g}<>1tFZ<-Sc`R7j}6#} zP1uYr*otk~jvd&EUD%C1*o%GGj{`V}LpY2hIErI9juSYEQ#g$?IE!;Qj|;enJjHXl z43{GYd65tKaRmzCN)$vP6h;wPv=27JgF)tCW;WRW43-mvZNFeBE|^gY20MbKj9?`q z7<32*4uW2P(2Ngq=Rr<4D9{F7*C5szNqY0WK5zWvXNk~QtTA(E! z#baoN)@XyacpOh4iYJkZr_c^*NJo2gz|+XUGk6vqk%>-t4q507smIU-+31Sr@d92% zH@t+G@d{qWYj_>q@dkRJCwk#cyoKKAgT8nh{m>r+Fc5<<81LX+48c$g!+RKx5qKXX z@c}->D2&D!jKw&N#{^8oBuvIfn1ZR8hUu7rkMRjU#b=m_S@;}Z;7fdk*_ea5n1}iJ z8Vj%xi?A5q;9Go$@9_hE#7|g)rC5fa@e7t?1%AbESc%{92mZug_#3OR8f%b)wOEJs z*no}Lgw5E3t=NX`*nyqch27YLz1WBSIDmsVgu^(3qd11+IDwNmh0{2Lvp9$IxPXf= zIS}jw1l{)#13l;kS&cLAW-EyN1Fjf}$t}J=JnCIVBoJlA|fDnnmiy zH;&eeB&Q@r>a<9SBsPsE#pfP5MgM&sU#D?GG&#~bA?JGcbsNSfMN<-^^^+2sM-!9k zB_vJF{dsyT&cwxLXJ*A_Wn@)+s%u8aw2GM_u5#zp^t9M^Pp5{o^z8r6XEM6959ysN qWp&FbP&4znw5}b~YgNdN9d@}pw|J8`CT~oh%Pw7)zQF%~fqwv<=4^xj diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/jpcntx.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/jpcntx.cpython-36.pyc deleted file mode 100644 index a007ef844605460ddf7a1e3ca53eb611f5260add..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38607 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 diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc deleted file mode 100644 index 579e3cf48cd0eb2c079a1f98ccc1372e05a0db57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30373 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 diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc deleted file mode 100644 index 7c3b524d5f51311f62ea67dff8e9c03b60a12573..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24500 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 diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc deleted file mode 100644 index cce45486983bbf2b667d8d3a064ebc6c80bf6b38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24796 zcmeI4cbHve5ytO^O-Mol>GT>(0;CfN0wEAODL_JTMVBS_k}Pa?m$MrJ*n96%RFqyq zC-mOzy`rwDD7ILzH>~@Nj& zeNRUktM@OeOni9FKYL5p{6qM=@Hb&AVS=!yFiF@>m@f2AQCYLIu!}HL*io1$>>!L6 zrU;XTLxtUh?S-9$y@jd59N{2gFG0Jk86b=jwh%@N4Z@bfFky@^L>MP*C=3#Y3ys2H zVN+qQFjN>QY#@vkMhgcBvxVLZt*qHdxKOxAxLCMExKy}IxLmkGxKg-ESS4I7Tq9g7 zTqj&F+#uX2+$5|PZWeA4ZWV45ZWrzl?iB74?iTJ5?iKD6?iU^q9uyuD9u__(d|WtE z_=NCD;Zwq=h0h3|6+S0?URWr6LHMHZCE?4$SA?$$UlYDAJR*EU_@?kJp-1?(@Tl+| zVTN$D@Lgen@IB!%;rqf5gx!V5g&zt(67~~*Ec`_Hsjx=)neZav=fZ))KEf}AUkXnM z`w9mO`wPDkel7e)I7Zl5I70ZXaENe}@H^o!;rGHO!Xjb5uvpkem?s=7{6YAm@F!t& z;c#JBVKd>+!e4|Zg>8jd!q&oHh2wlvn&UA6A! z_Lk+fp22M`?Mqj*EUleAY-MYEwPR)1q-oP7vKh6%$3J+qk}$ZUi#QWzzS7RCr;g>k~Bf*!t1 z4`jB5u%)0+e5U6v({ubEZb(mRww^6P^yFu|33|V?Ny21d ziZE4}CQKJ*2zv-Kg*}D61ic~o^X)BFAA?MvfK2avrY}b}ThNQ2%@Ga|^r^_^3I_@L zHe`C|vqJ^F?wMZMOkafTNI~y+rguJDAS@L0fynex%k&M&^jXOCMac9W$n*whdV{kQ zgcl1x9<}ZxG%nyh(Vo@D|~%!rO$m3-1u# zDZEQ~x9}d}y~6v1_X{5o&JoTP&J)fTJ}7)h_^@z+@Dbso!iB;`!o|WR!llAx!sWsh z!j-~R!Ybiv;Tqvu;X2`Z;RfMG;U;0VaI8i5 zA-7e^cEa|;4#Ie0M`0&nXJHp%f-q6oRoG3~U6>?H7N!VOg=xZcVTQ1WFjLr5*h`ot zQSjvRQ;U;0VaIYU7ZJFG&ZWsV$0NpS!67CQ5U1;H+A*f+Q=7zDNq zf;&@Y3pc2Aaf(L^{Zi8x$7ofYSFCbF#d%@e5^lJX+zM_jq~r>o6xCLk-fI=_=F>u1 z{ciCY^b5O{b=kufWnP+?-Ebu-)iF;+D`JdW!s=sL=v=mo#|>Mu0+#!65eT+WZ3WeC zIKz1)TlESEw!&J^#qGy_v`Vd-iiP!aQ`|YFI!2dNUbsK*^ts$xA8WaxR0Gu9Rr@G- z=};SD!R2B-DXy*5^u@9Mx%T2NW$!O{)v%>qgXhY%0F{&wW~OTK)3}@B}4}Wb>58Zb1#3 zqq4az3s`pDlnT2nO|q>LD};-PAE#9O;-x3+IM$ zOSo=OBCj}wfr|6k+*VjHtRMC*R=Ei0(HS?yJZUH^o<60zeM+b+R<=vHKbNr}E_rlL zsb1fcqB_RiTg|;DmpPeM&&%e;P1&+Ik4YJvyTY={MPP*nbRoqS4eWX+bmsab=o#w7u*R6$n33uRDP6>it1nw`y`uj=D{mbMExf6I&E-|&BW2D$( z)u84!@Ii)a-GyWXTL`&>=L)XPRm%!xyRe5lyNnfVu^TF7sEkGfR|JF#R2pD$B$gX+ zMzCDV86lZ2oJ#{@?qZi&h#^p6%dLDlSazvpATANr76Xw?3Ww*$EUXs@%lJyTKQ4l0 zP_a;L@kenADgv?88K~>J2$wSQ+#odp$;GPk*q1U!BgP%jG?mB9R$ay!)N(i~r=?<4 zgf131mo5mw3Ms+OZJ&CELTzx_!%f{FT!~WvDQ<;eH*ATDRb`Z zNMSdU9V3MXZW`2ZF8xTh6}k|kLCSJjN+6bdq*K@SP+66x`g({E^E=n4;RajVv9%5739%?BT=!K-mz3NDOjmI8eox! z zwMB|urXr6Nx`Y^I2*C>Ni(64kXDUJrmovg+;eLRNr52SK{cNRDNVerX%7~Fi$~tVZ zs;%5f$xEf6auMXEuEeo$q+OCp$rVVU%;(}_6?Y-e7F|+hs3a3}MR@eA8dgaT4T8W_ zL9j~-7>ztsP9u+4$O~iSx^Bf?<>t|z(MU$Mg@Bbib4UrTI4uacq_`CV zmId+Ah;H{*z%CYDOOW?sUe-r1Xwh1 z443w)SQw2X=^T#Ct;iK<t~1*8rWj`kWxYotx_&s zg6eZ~_YGxsX^>kRQgBliho@BT#glN1}Vg-c%Cg5%sq(t zoZW4O&vpE0<54?ONyJL*?GBlklTebLT##_V^o9`3jwKfX%Lc&g;eso6k}EPAcn=v#JGFZ(4~anew3vu zIEce@t{^6S@3A76#9hxNqLIK0>j6?Q?YmJ0sdsk~II{t9<(3&`~X`6YyzbV~5 zy?O1=Q_t=F9qGj#3-!a)^IJNbw(0%-X#I3_o<3@=Ft7I~r{{N6Yi&(qp6a<)c`7>g z_|VDWRh8@k{b-=@I-Z0($M@`~2B>ZIk_^l7KJ)T&eT(I%aXY~x;x7S?JR-3IG>N>8WmkmY#G&UBgm4?Ql#rprc+SoXt;hBF1Kg<3X D#VWhv diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/langthaimodel.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/langthaimodel.cpython-36.pyc deleted file mode 100644 index 837005f3910db1cee1e2a9abba13ee6d09eecd9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23333 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 diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/langturkishmodel.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/langturkishmodel.cpython-36.pyc deleted file mode 100644 index 78b77e9b1b3f302c30ac11ced96d47fb542dfb9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23351 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 diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/latin1prober.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/latin1prober.cpython-36.pyc deleted file mode 100644 index 169cea2d6c0844a56aeff771e227b2813d6c78f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2883 zcmc&#-ESL35Z~SV@cD9f+>)jZDHL8%jg&^=LoHH86S-eVX%cV>(kZYw-nHZO{E@x2 zAjWwik@^V#1~2>({2BWM;sNCk;H6K@?4_|Cg+jywyV|+go!Q-)-^|XvUnqprzZSP% z%nDi9j5y&IZI4is8JTFH*g!4wT zjGJ8Z$K)sp<eb1kF-JJqA14GkBFEO(Gd}mq=!yi5``)$Pai|F zkuo)f%1%vHrQT58ZK+@(Lax`G5~!apL1H1>hdiNNwXkryGzgUs$Y|D3oa4#Dbz ziB@a6)mh4{t)mav@Qb(NNZ$dXiKatx$adKw2n87u?pW#$$*z~J!FhD8>>Drb_oPx0 zY%>AptxijGZc03QcX|E>5A|5EDKK&-vpPohkR&QSw!HgQZfv^%`&1`!Ul5_myT=w$TR;tw#bLeN1_qLj4Cx^~px3#C$;{yf>%I3&{qZvpY?LwHGs{~fu zp)2S!rk1t0>q8iG8@N9hx*kXcyA4@>7j!YD_ex)&EDsnuSwIz{TMo^9qm@9G@^4yt zhs#bgX{9?nks8)ga}pt50Wdea6`S3q3_v@1(iJkvaw1<@U8z=WLg3>v{@VH`fAYZi zJjME8vjkoc@@3DahzYj$wFI#;v~EHS#mNJ5@%^01AmcWq6dI0BXMqqJLJ#Z+;LGS` z8nVHqiRj{v)2O0VI4ss%z#!I|?lM5IgxRG5sa+SbAHsupM$}Eg4p`?pt_o)k_2GvK z$a*v68boQH9Izo13^X@T6L^2dt^vxqwdQv-KR^0yaC8sT-Zq6*(Bgiw^ucm->xW|1`y+<{kBD|>|}6xx~ppm0M+d@T0(Z}@+?HfCM5hw{5>3V0#-y_ zhH&|87T#V!T_>P}`3bNl_m-!y#Np$C5*Kpb?uvebe8l-)zm{YYTZHVhHvv>8sE&GH zT|*aMM}h@by$b|NViwxEOcKsVcEekG4V7$-z{2`9j1-xGMt9^A?^{#@U#(8@Gp~6>YoRw+?Nfk)tb0q6HMXtK8-bAmiBY6V}hHVtu ljKjd1;BJ;aAER2j10^M^ z@;ABGT;RWko__>H5J6MYp%JCXvy^q5$mzI|OUYv*9N}IN;YvDkB2Rb+r0QQ%I98>m zv~?1z1F4^>?vYegWdWuH`-9Uj&gSeK9A33o@e79PkBEw0t1uMR-A?f+&eHjK!D4CDA;1xoGa~_EVjF zd#2?LKL?d!1={UGE2=k{b&n7nok`C>1V$50hh)UsY)A$D)rM?HxFZNqS1`d^3^-2^ zaKWiVkml1kYw_bG)lyxe+Ny87yx)^bc`!2p=Sh}m&dptsxc^c=MHzDj0Z8w+cvGP$RH3iO_Aj~=co&58~hVJw>dP#5XsGp=_t)o8q z_%xPc15XO6r(@>`S8}O)_6gT}XQ}}DK7gJFKnPu;KKur6-yW{@E9aY-64-E@Mr;!% zuOl`B;gGZ)^$=;BP3Epzhq*hR3yA8q2(r4G107Xgp*Q1zc}jxAY91GgNJ88}6(l(h zWn5Z7vWVmkkTvKz?jp1dmnqslcyq>;toj@G!8>iC4s=43pCMi0bt%5?a=oi}I=xhO zWTvI4Db-aIU&c;MJu%@V)I5tj@-tLtvy2Vio8idy{r}S+wFG)+*bguf`*BNte$Do* zcfHy>tpv5p^B`!;JkLpo#+piIx5p`+cl_nfIZNc{Gk zfXZnH&7#E?cNgX6|h>qvAO`OumZXlN95ccLXE-7Z%}_=2iETh zXA{Sz_A<_f?g-oijpG&YMmVbk>3#AGo|wpgAfUmWXkb>u3fR62x?kC|_eR8W_eZFG z^|`BFUHJy{703XuK6vL*UV;C(d@3i2u0UOPRVCJyBLE(d*#uUYLYMzSt3EKEf`^dC zNo8iU*c3DQLh~F!Qz0}OueQIxw{QHk+iC#-|RQca!Uec^p%1Xwb+4%u^epq824C80gz-dyRcnr)V3Ns z^~YwR)zw^P-G1wYi&)2|Z1r@r<3z};Db3QslfC`M)?tG;p6u6P@^riE*)lW%ULO2X zh9;2s69BUo0!(X;F4)qT)`xl*Jo*xPz77O|XAvqjfQk*MYdNIjl_j=Hi>%B-n1h@R z-k4EBc(vP02ayAwk+kV(Qp{|OChvpb_6kxcilC1Rmku7yuzE922oxd0Jk~wHe3A1` zSM*clL(Wh8aXOLAaW1+|&MgL81{4C5@nqKTjZ~&>+U*2pd64= zsV9C2e`&=5i4%W;6Ehp*MqO*h-^{K(^L?{>?Y7_fwf5m>laSwJWjTPKgQ;)eIN?-~ zoW_(QwuF`2v2Cy|oZO9FgB{Vxn{m@%SG003_6%+aKM&%-;HC)kcHB0&CD!sz+%eb_ z_wx04oswh1eI8sB9;9?($6X!{NYwsAp^b>@Ztvqz4$|^iUe1bBc{xfYWc~BAR|mJz z;Ncjs!D^6dmB$0aUy?a#{b!IF;AR{Lt2sVadw>mZ#a z(~7YXU5AqqUeM|gj=&uHB&!V0LkCF#*R;yuaI`;yn_4AsQ0AlZbCtoVnRaiPEfMn4 St*1+Ap5gUX$Ty^S9{V3}Uj+yN diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/mbcssm.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/mbcssm.cpython-36.pyc deleted file mode 100644 index 96167b7f2af1267698f79f2a6c4055534b65227c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17518 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 diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/sjisprober.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/sjisprober.cpython-36.pyc deleted file mode 100644 index 2a01cc0f25d0e9e6fd574118fe0ababe94a8a21b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2381 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 alE;K`DEHeuZtiJ)u;Hpdj diff --git a/venv/lib/python3.6/site-packages/chardet/__pycache__/version.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/__pycache__/version.cpython-36.pyc deleted file mode 100644 index 2a7c61cdff4b409058eb2bd5f41c602a75f643a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmX|7Jx{|h5Ova&qM*XYd?Ov|Ld#SkRG~7k6p12+3Mq18w=u*Y*iNBc`8CY^n@mXj z14brH2|elF-RYj5-rb`E*Ic(21{lvR}y3?Qf5HSAa|xEYQe(XWA}MSZH4AK+YLY#Y1+zGghop45GD8>>2^R&C8yXx@B60dZ zjuwLO0%uBe;&pR?kMU_0;7KQ{T1i4xmL%0)lGMih(6rvUt6F!LH`A-@$r~~|{tX-W s?)RL~J -# -# 128 --> 0.42261 -# 256 --> 0.57851 -# 512 --> 0.74851 -# 1024 --> 0.89384 -# 2048 --> 0.97583 -# -# Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 -# Random Distribution Ration = 512/(5401-512)=0.105 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR - -BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 - -#Char to FreqOrder table -BIG5_TABLE_SIZE = 5376 - -BIG5_CHAR_TO_FREQ_ORDER = ( - 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 -3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 -1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 - 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 -3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 -4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 -5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 - 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 - 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 - 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 -2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 -1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 -3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 - 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 -1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 -3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 -2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 - 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 -3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 -1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 -5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 - 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 -5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 -1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 - 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 - 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 -3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 -3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 - 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 -2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 -2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 - 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 - 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 -3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 -1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 -1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 -1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 -2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 - 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 -4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 -1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 -5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 -2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 - 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 - 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 - 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 - 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 -5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 - 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 -1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 - 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 - 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 -5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 -1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 - 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 -3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 -4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 -3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 - 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 - 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 -1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 -4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 -3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 -3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 -2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 -5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 -3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 -5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 -1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 -2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 -1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 - 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 -1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 -4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 -3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 - 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 - 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 - 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 -2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 -5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 -1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 -2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 -1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 -1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 -5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 -5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 -5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 -3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 -4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 -4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 -2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 -5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 -3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 - 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 -5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 -5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 -1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 -2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 -3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 -4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 -5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 -3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 -4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 -1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 -1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 -4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 -1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 - 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 -1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 -1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 -3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 - 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 -5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 -2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 -1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 -1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 -5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 - 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 -4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 - 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 -2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 - 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 -1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 -1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 - 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 -4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 -4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 -1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 -3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 -5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 -5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 -1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 -2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 -1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 -3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 -2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 -3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 -2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 -4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 -4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 -3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 - 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 -3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 - 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 -3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 -4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 -3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 -1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 -5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 - 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 -5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 -1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 - 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 -4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 -4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 - 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 -2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 -2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 -3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 -1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 -4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 -2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 -1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 -1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 -2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 -3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 -1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 -5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 -1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 -4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 -1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 - 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 -1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 -4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 -4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 -2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 -1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 -4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 - 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 -5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 -2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 -3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 -4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 - 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 -5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 -5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 -1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 -4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 -4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 -2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 -3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 -3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 -2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 -1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 -4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 -3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 -3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 -2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 -4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 -5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 -3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 -2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 -3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 -1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 -2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 -3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 -4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 -2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 -2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 -5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 -1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 -2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 -1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 -3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 -4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 -2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 -3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 -3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 -2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 -4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 -2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 -3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 -4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 -5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 -3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 - 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 -1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 -4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 -1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 -4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 -5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 - 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 -5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 -5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 -2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 -3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 -2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 -2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 - 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 -1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 -4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 -3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 -3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 - 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 -2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 - 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 -2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 -4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 -1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 -4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 -1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 -3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 - 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 -3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 -5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 -5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 -3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 -3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 -1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 -2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 -5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 -1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 -1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 -3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 - 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 -1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 -4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 -5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 -2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 -3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 - 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 -1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 -2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 -2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 -5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 -5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 -5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 -2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 -2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 -1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 -4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 -3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 -3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 -4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 -4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 -2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 -2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 -5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 -4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 -5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 -4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 - 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 - 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 -1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 -3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 -4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 -1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 -5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 -2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 -2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 -3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 -5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 -1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 -3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 -5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 -1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 -5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 -2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 -3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 -2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 -3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 -3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 -3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 -4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 - 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 -2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 -4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 -3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 -5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 -1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 -5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 - 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 -1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 - 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 -4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 -1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 -4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 -1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 - 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 -3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 -4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 -5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 - 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 -3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 - 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 -2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 -) - diff --git a/venv/lib/python3.6/site-packages/chardet/big5prober.py b/venv/lib/python3.6/site-packages/chardet/big5prober.py deleted file mode 100644 index 98f9970..0000000 --- a/venv/lib/python3.6/site-packages/chardet/big5prober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import Big5DistributionAnalysis -from .mbcssm import BIG5_SM_MODEL - - -class Big5Prober(MultiByteCharSetProber): - def __init__(self): - super(Big5Prober, self).__init__() - self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) - self.distribution_analyzer = Big5DistributionAnalysis() - self.reset() - - @property - def charset_name(self): - return "Big5" - - @property - def language(self): - return "Chinese" diff --git a/venv/lib/python3.6/site-packages/chardet/chardistribution.py b/venv/lib/python3.6/site-packages/chardet/chardistribution.py deleted file mode 100644 index c0395f4..0000000 --- a/venv/lib/python3.6/site-packages/chardet/chardistribution.py +++ /dev/null @@ -1,233 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .euctwfreq import (EUCTW_CHAR_TO_FREQ_ORDER, EUCTW_TABLE_SIZE, - EUCTW_TYPICAL_DISTRIBUTION_RATIO) -from .euckrfreq import (EUCKR_CHAR_TO_FREQ_ORDER, EUCKR_TABLE_SIZE, - EUCKR_TYPICAL_DISTRIBUTION_RATIO) -from .gb2312freq import (GB2312_CHAR_TO_FREQ_ORDER, GB2312_TABLE_SIZE, - GB2312_TYPICAL_DISTRIBUTION_RATIO) -from .big5freq import (BIG5_CHAR_TO_FREQ_ORDER, BIG5_TABLE_SIZE, - BIG5_TYPICAL_DISTRIBUTION_RATIO) -from .jisfreq import (JIS_CHAR_TO_FREQ_ORDER, JIS_TABLE_SIZE, - JIS_TYPICAL_DISTRIBUTION_RATIO) - - -class CharDistributionAnalysis(object): - ENOUGH_DATA_THRESHOLD = 1024 - SURE_YES = 0.99 - SURE_NO = 0.01 - MINIMUM_DATA_THRESHOLD = 3 - - def __init__(self): - # Mapping table to get frequency order from char order (get from - # GetOrder()) - self._char_to_freq_order = None - self._table_size = None # Size of above table - # This is a constant value which varies from language to language, - # used in calculating confidence. See - # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html - # for further detail. - self.typical_distribution_ratio = None - self._done = None - self._total_chars = None - self._freq_chars = None - self.reset() - - def reset(self): - """reset analyser, clear any state""" - # If this flag is set to True, detection is done and conclusion has - # been made - self._done = False - self._total_chars = 0 # Total characters encountered - # The number of characters whose frequency order is less than 512 - self._freq_chars = 0 - - def feed(self, char, char_len): - """feed a character with known length""" - if char_len == 2: - # we only care about 2-bytes character in our distribution analysis - order = self.get_order(char) - else: - order = -1 - if order >= 0: - self._total_chars += 1 - # order is valid - if order < self._table_size: - if 512 > self._char_to_freq_order[order]: - self._freq_chars += 1 - - def get_confidence(self): - """return confidence based on existing data""" - # if we didn't receive any character in our consideration range, - # return negative answer - if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD: - return self.SURE_NO - - if self._total_chars != self._freq_chars: - r = (self._freq_chars / ((self._total_chars - self._freq_chars) - * self.typical_distribution_ratio)) - if r < self.SURE_YES: - return r - - # normalize confidence (we don't want to be 100% sure) - return self.SURE_YES - - def got_enough_data(self): - # It is not necessary to receive all data to draw conclusion. - # For charset detection, certain amount of data is enough - return self._total_chars > self.ENOUGH_DATA_THRESHOLD - - def get_order(self, byte_str): - # We do not handle characters based on the original encoding string, - # but convert this encoding string to a number, here called order. - # This allows multiple encodings of a language to share one frequency - # table. - return -1 - - -class EUCTWDistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(EUCTWDistributionAnalysis, self).__init__() - self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER - self._table_size = EUCTW_TABLE_SIZE - self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for euc-TW encoding, we are interested - # first byte range: 0xc4 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char = byte_str[0] - if first_char >= 0xC4: - return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1 - else: - return -1 - - -class EUCKRDistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(EUCKRDistributionAnalysis, self).__init__() - self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER - self._table_size = EUCKR_TABLE_SIZE - self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for euc-KR encoding, we are interested - # first byte range: 0xb0 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char = byte_str[0] - if first_char >= 0xB0: - return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1 - else: - return -1 - - -class GB2312DistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(GB2312DistributionAnalysis, self).__init__() - self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER - self._table_size = GB2312_TABLE_SIZE - self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for GB2312 encoding, we are interested - # first byte range: 0xb0 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char, second_char = byte_str[0], byte_str[1] - if (first_char >= 0xB0) and (second_char >= 0xA1): - return 94 * (first_char - 0xB0) + second_char - 0xA1 - else: - return -1 - - -class Big5DistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(Big5DistributionAnalysis, self).__init__() - self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER - self._table_size = BIG5_TABLE_SIZE - self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for big5 encoding, we are interested - # first byte range: 0xa4 -- 0xfe - # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char, second_char = byte_str[0], byte_str[1] - if first_char >= 0xA4: - if second_char >= 0xA1: - return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63 - else: - return 157 * (first_char - 0xA4) + second_char - 0x40 - else: - return -1 - - -class SJISDistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(SJISDistributionAnalysis, self).__init__() - self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER - self._table_size = JIS_TABLE_SIZE - self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for sjis encoding, we are interested - # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe - # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe - # no validation needed here. State machine has done that - first_char, second_char = byte_str[0], byte_str[1] - if (first_char >= 0x81) and (first_char <= 0x9F): - order = 188 * (first_char - 0x81) - elif (first_char >= 0xE0) and (first_char <= 0xEF): - order = 188 * (first_char - 0xE0 + 31) - else: - return -1 - order = order + second_char - 0x40 - if second_char > 0x7F: - order = -1 - return order - - -class EUCJPDistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(EUCJPDistributionAnalysis, self).__init__() - self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER - self._table_size = JIS_TABLE_SIZE - self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for euc-JP encoding, we are interested - # first byte range: 0xa0 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - char = byte_str[0] - if char >= 0xA0: - return 94 * (char - 0xA1) + byte_str[1] - 0xa1 - else: - return -1 diff --git a/venv/lib/python3.6/site-packages/chardet/charsetgroupprober.py b/venv/lib/python3.6/site-packages/chardet/charsetgroupprober.py deleted file mode 100644 index 8b3738e..0000000 --- a/venv/lib/python3.6/site-packages/chardet/charsetgroupprober.py +++ /dev/null @@ -1,106 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .enums import ProbingState -from .charsetprober import CharSetProber - - -class CharSetGroupProber(CharSetProber): - def __init__(self, lang_filter=None): - super(CharSetGroupProber, self).__init__(lang_filter=lang_filter) - self._active_num = 0 - self.probers = [] - self._best_guess_prober = None - - def reset(self): - super(CharSetGroupProber, self).reset() - self._active_num = 0 - for prober in self.probers: - if prober: - prober.reset() - prober.active = True - self._active_num += 1 - self._best_guess_prober = None - - @property - def charset_name(self): - if not self._best_guess_prober: - self.get_confidence() - if not self._best_guess_prober: - return None - return self._best_guess_prober.charset_name - - @property - def language(self): - if not self._best_guess_prober: - self.get_confidence() - if not self._best_guess_prober: - return None - return self._best_guess_prober.language - - def feed(self, byte_str): - for prober in self.probers: - if not prober: - continue - if not prober.active: - continue - state = prober.feed(byte_str) - if not state: - continue - if state == ProbingState.FOUND_IT: - self._best_guess_prober = prober - return self.state - elif state == ProbingState.NOT_ME: - prober.active = False - self._active_num -= 1 - if self._active_num <= 0: - self._state = ProbingState.NOT_ME - return self.state - return self.state - - def get_confidence(self): - state = self.state - if state == ProbingState.FOUND_IT: - return 0.99 - elif state == ProbingState.NOT_ME: - return 0.01 - best_conf = 0.0 - self._best_guess_prober = None - for prober in self.probers: - if not prober: - continue - if not prober.active: - self.logger.debug('%s not active', prober.charset_name) - continue - conf = prober.get_confidence() - self.logger.debug('%s %s confidence = %s', prober.charset_name, prober.language, conf) - if best_conf < conf: - best_conf = conf - self._best_guess_prober = prober - if not self._best_guess_prober: - return 0.0 - return best_conf diff --git a/venv/lib/python3.6/site-packages/chardet/charsetprober.py b/venv/lib/python3.6/site-packages/chardet/charsetprober.py deleted file mode 100644 index eac4e59..0000000 --- a/venv/lib/python3.6/site-packages/chardet/charsetprober.py +++ /dev/null @@ -1,145 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import logging -import re - -from .enums import ProbingState - - -class CharSetProber(object): - - SHORTCUT_THRESHOLD = 0.95 - - def __init__(self, lang_filter=None): - self._state = None - self.lang_filter = lang_filter - self.logger = logging.getLogger(__name__) - - def reset(self): - self._state = ProbingState.DETECTING - - @property - def charset_name(self): - return None - - def feed(self, buf): - pass - - @property - def state(self): - return self._state - - def get_confidence(self): - return 0.0 - - @staticmethod - def filter_high_byte_only(buf): - buf = re.sub(b'([\x00-\x7F])+', b' ', buf) - return buf - - @staticmethod - def filter_international_words(buf): - """ - We define three types of bytes: - alphabet: english alphabets [a-zA-Z] - international: international characters [\x80-\xFF] - marker: everything else [^a-zA-Z\x80-\xFF] - - The input buffer can be thought to contain a series of words delimited - by markers. This function works to filter all words that contain at - least one international character. All contiguous sequences of markers - are replaced by a single space ascii character. - - This filter applies to all scripts which do not use English characters. - """ - filtered = bytearray() - - # This regex expression filters out only words that have at-least one - # international character. The word may include one marker character at - # the end. - words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?', - buf) - - for word in words: - filtered.extend(word[:-1]) - - # If the last character in the word is a marker, replace it with a - # space as markers shouldn't affect our analysis (they are used - # similarly across all languages and may thus have similar - # frequencies). - last_char = word[-1:] - if not last_char.isalpha() and last_char < b'\x80': - last_char = b' ' - filtered.extend(last_char) - - return filtered - - @staticmethod - def filter_with_english_letters(buf): - """ - Returns a copy of ``buf`` that retains only the sequences of English - alphabet and high byte characters that are not between <> characters. - Also retains English alphabet and high byte characters immediately - before occurrences of >. - - This filter can be applied to all scripts which contain both English - characters and extended ASCII characters, but is currently only used by - ``Latin1Prober``. - """ - filtered = bytearray() - in_tag = False - prev = 0 - - for curr in range(len(buf)): - # Slice here to get bytes instead of an int with Python 3 - buf_char = buf[curr:curr + 1] - # Check if we're coming out of or entering an HTML tag - if buf_char == b'>': - in_tag = False - elif buf_char == b'<': - in_tag = True - - # If current character is not extended-ASCII and not alphabetic... - if buf_char < b'\x80' and not buf_char.isalpha(): - # ...and we're not in a tag - if curr > prev and not in_tag: - # Keep everything after last non-extended-ASCII, - # non-alphabetic character - filtered.extend(buf[prev:curr]) - # Output a space to delimit stretch we kept - filtered.extend(b' ') - prev = curr + 1 - - # If we're not in a tag... - if not in_tag: - # Keep everything after last non-extended-ASCII, non-alphabetic - # character - filtered.extend(buf[prev:]) - - return filtered diff --git a/venv/lib/python3.6/site-packages/chardet/cli/__init__.py b/venv/lib/python3.6/site-packages/chardet/cli/__init__.py deleted file mode 100644 index 8b13789..0000000 --- a/venv/lib/python3.6/site-packages/chardet/cli/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/venv/lib/python3.6/site-packages/chardet/cli/__pycache__/__init__.cpython-36.pyc b/venv/lib/python3.6/site-packages/chardet/cli/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 7cbc682d0065907f669bb70a37509621c0afff2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmXr!<>lgkz!$^Fz`*brh~WSv-~hzMEI=ZKA(%mv(QhR~5l9$8{4&=s$t}%zNGwW8EkV#ZnfmeZnR%Hd@$q^EmA5!-a`RJ4b5iX<1{MP` F0{{klATh#xZz^H&$TDo{6*A6@p+Fc7g;51_Q^NAj+fN5~)$k z{g6p&#v^M^%GJRBfW7T$ulYGV1;{CXAwYn9#g@i0e98I{YzrcbWU?(9Un zKeWF7K60ENosG|j{CE77M8TcD!(HxWZtnHH-0%B&&<|Yd^RrsNX6vvYq7Jfp-sm^% zSS{Piqkd%NFx$?X{U+oc-r!r`x&0m9;t}75)DpYA`N)%nXe}LR_@6oL-Q=3nGprOZX zSQev{V-3M>ci+2EzcA2ai5jNqOUnD*+fnq%h!y493HUUX? z+;hIUcJ6C;;V<2Df8k9$l3WLpFPlfsV%0)laK%{y8N5clOBYfIoYd#P*m&O;dL|2&AUN>-7$>g)odJnBMhfa6 z82~J6Ah2=-Wqa18v=*{dY3i*ED8!fG(VHeR$yt^bLiN}Kn6e_%B|8>4A9QS(>{fI1 z*>t7XW1mpOX=RumoN1vp%@#>6dh8G-4X<_sIAs}Ni<6;VyWWP~Y7Ta3`%IV~7f1!u zSZ`x~_37>N9(%ff{u17v9-N!#Iauc{s|oZ;p=OyrY;Vgt4%BSXMiVKMGZT!2;3nY6 zI#U~Fr4lBrv}H)DAs2)!kXN3RLVTj?V71sXG}mo7K|F+{g>v5OwGV?jGtUdgL1zAA)J@7oem7SZMzXf_5e@5#KWxuyiLL_j!Om zpVyWy4|O1K=-MPKLMkWqW0%*T)c|eM1j+Ge($HJb+t0RC+x%R5LC zf6`n!@`>Kzmtm#F_nvvKqj&V~g2wii9wpG@Z@+N(CBXgl`H%M4KL*_)&VWju6Z26V zSt5^Th&srEx^NZ>_$1N;rV|Mod=b-7Kk2bgSFpdBd=q5FQslu@4AW66_=--~YjtR? z3h0y|7aw@+5Gc9H9zMkRcggx!`@L@-K4ht4GX*BQm10<$qNp=41M|6#xjsfoH$$W~Qa+XnO9|=l#x*}vwzQ17n z<;D#zMhViXR}ppFcyeIeciMpo#v+@VfIK&~0=_F#Un$SGI-M0AoBB$aH?Q9SaUHi6 zL!!1l6DF1wCixgum?m7hx76Oy60Ek@xOnsm0l?_|M`F3-TKrnnFb(=`wyJo`p1e}j;JY3 zGvPeOsO1~epagmVRNFg2z6N;81_~1nW}}gi@-p?%!@)$>9!*v9O{4u)cDrr&u)SyMam>qM9GfV{3kt6a5yz4qKhmdy?g;rd738L= zud>d1*Ke&_UGOrVrPURAW!;HaSoO53UYn(~w{7L>dP8(GVm-PGHwx=u self.SHORTCUT_THRESHOLD)): - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self): - context_conf = self.context_analyzer.get_confidence() - distrib_conf = self.distribution_analyzer.get_confidence() - return max(context_conf, distrib_conf) diff --git a/venv/lib/python3.6/site-packages/chardet/euckrfreq.py b/venv/lib/python3.6/site-packages/chardet/euckrfreq.py deleted file mode 100644 index b68078c..0000000 --- a/venv/lib/python3.6/site-packages/chardet/euckrfreq.py +++ /dev/null @@ -1,195 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# Sampling from about 20M text materials include literature and computer technology - -# 128 --> 0.79 -# 256 --> 0.92 -# 512 --> 0.986 -# 1024 --> 0.99944 -# 2048 --> 0.99999 -# -# Idea Distribution Ratio = 0.98653 / (1-0.98653) = 73.24 -# Random Distribution Ration = 512 / (2350-512) = 0.279. -# -# Typical Distribution Ratio - -EUCKR_TYPICAL_DISTRIBUTION_RATIO = 6.0 - -EUCKR_TABLE_SIZE = 2352 - -# Char to FreqOrder table , -EUCKR_CHAR_TO_FREQ_ORDER = ( - 13, 130, 120,1396, 481,1719,1720, 328, 609, 212,1721, 707, 400, 299,1722, 87, -1397,1723, 104, 536,1117,1203,1724,1267, 685,1268, 508,1725,1726,1727,1728,1398, -1399,1729,1730,1731, 141, 621, 326,1057, 368,1732, 267, 488, 20,1733,1269,1734, - 945,1400,1735, 47, 904,1270,1736,1737, 773, 248,1738, 409, 313, 786, 429,1739, - 116, 987, 813,1401, 683, 75,1204, 145,1740,1741,1742,1743, 16, 847, 667, 622, - 708,1744,1745,1746, 966, 787, 304, 129,1747, 60, 820, 123, 676,1748,1749,1750, -1751, 617,1752, 626,1753,1754,1755,1756, 653,1757,1758,1759,1760,1761,1762, 856, - 344,1763,1764,1765,1766, 89, 401, 418, 806, 905, 848,1767,1768,1769, 946,1205, - 709,1770,1118,1771, 241,1772,1773,1774,1271,1775, 569,1776, 999,1777,1778,1779, -1780, 337, 751,1058, 28, 628, 254,1781, 177, 906, 270, 349, 891,1079,1782, 19, -1783, 379,1784, 315,1785, 629, 754,1402, 559,1786, 636, 203,1206,1787, 710, 567, -1788, 935, 814,1789,1790,1207, 766, 528,1791,1792,1208,1793,1794,1795,1796,1797, -1403,1798,1799, 533,1059,1404,1405,1156,1406, 936, 884,1080,1800, 351,1801,1802, -1803,1804,1805, 801,1806,1807,1808,1119,1809,1157, 714, 474,1407,1810, 298, 899, - 885,1811,1120, 802,1158,1812, 892,1813,1814,1408, 659,1815,1816,1121,1817,1818, -1819,1820,1821,1822, 319,1823, 594, 545,1824, 815, 937,1209,1825,1826, 573,1409, -1022,1827,1210,1828,1829,1830,1831,1832,1833, 556, 722, 807,1122,1060,1834, 697, -1835, 900, 557, 715,1836,1410, 540,1411, 752,1159, 294, 597,1211, 976, 803, 770, -1412,1837,1838, 39, 794,1413, 358,1839, 371, 925,1840, 453, 661, 788, 531, 723, - 544,1023,1081, 869, 91,1841, 392, 430, 790, 602,1414, 677,1082, 457,1415,1416, -1842,1843, 475, 327,1024,1417, 795, 121,1844, 733, 403,1418,1845,1846,1847, 300, - 119, 711,1212, 627,1848,1272, 207,1849,1850, 796,1213, 382,1851, 519,1852,1083, - 893,1853,1854,1855, 367, 809, 487, 671,1856, 663,1857,1858, 956, 471, 306, 857, -1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871, - 282, 96, 574,1872, 502,1085,1873,1214,1874, 907,1875,1876, 827, 977,1419,1420, -1421, 268,1877,1422,1878,1879,1880, 308,1881, 2, 537,1882,1883,1215,1884,1885, - 127, 791,1886,1273,1423,1887, 34, 336, 404, 643,1888, 571, 654, 894, 840,1889, - 0, 886,1274, 122, 575, 260, 908, 938,1890,1275, 410, 316,1891,1892, 100,1893, -1894,1123, 48,1161,1124,1025,1895, 633, 901,1276,1896,1897, 115, 816,1898, 317, -1899, 694,1900, 909, 734,1424, 572, 866,1425, 691, 85, 524,1010, 543, 394, 841, -1901,1902,1903,1026,1904,1905,1906,1907,1908,1909, 30, 451, 651, 988, 310,1910, -1911,1426, 810,1216, 93,1912,1913,1277,1217,1914, 858, 759, 45, 58, 181, 610, - 269,1915,1916, 131,1062, 551, 443,1000, 821,1427, 957, 895,1086,1917,1918, 375, -1919, 359,1920, 687,1921, 822,1922, 293,1923,1924, 40, 662, 118, 692, 29, 939, - 887, 640, 482, 174,1925, 69,1162, 728,1428, 910,1926,1278,1218,1279, 386, 870, - 217, 854,1163, 823,1927,1928,1929,1930, 834,1931, 78,1932, 859,1933,1063,1934, -1935,1936,1937, 438,1164, 208, 595,1938,1939,1940,1941,1219,1125,1942, 280, 888, -1429,1430,1220,1431,1943,1944,1945,1946,1947,1280, 150, 510,1432,1948,1949,1950, -1951,1952,1953,1954,1011,1087,1955,1433,1043,1956, 881,1957, 614, 958,1064,1065, -1221,1958, 638,1001, 860, 967, 896,1434, 989, 492, 553,1281,1165,1959,1282,1002, -1283,1222,1960,1961,1962,1963, 36, 383, 228, 753, 247, 454,1964, 876, 678,1965, -1966,1284, 126, 464, 490, 835, 136, 672, 529, 940,1088,1435, 473,1967,1968, 467, - 50, 390, 227, 587, 279, 378, 598, 792, 968, 240, 151, 160, 849, 882,1126,1285, - 639,1044, 133, 140, 288, 360, 811, 563,1027, 561, 142, 523,1969,1970,1971, 7, - 103, 296, 439, 407, 506, 634, 990,1972,1973,1974,1975, 645,1976,1977,1978,1979, -1980,1981, 236,1982,1436,1983,1984,1089, 192, 828, 618, 518,1166, 333,1127,1985, - 818,1223,1986,1987,1988,1989,1990,1991,1992,1993, 342,1128,1286, 746, 842,1994, -1995, 560, 223,1287, 98, 8, 189, 650, 978,1288,1996,1437,1997, 17, 345, 250, - 423, 277, 234, 512, 226, 97, 289, 42, 167,1998, 201,1999,2000, 843, 836, 824, - 532, 338, 783,1090, 182, 576, 436,1438,1439, 527, 500,2001, 947, 889,2002,2003, -2004,2005, 262, 600, 314, 447,2006, 547,2007, 693, 738,1129,2008, 71,1440, 745, - 619, 688,2009, 829,2010,2011, 147,2012, 33, 948,2013,2014, 74, 224,2015, 61, - 191, 918, 399, 637,2016,1028,1130, 257, 902,2017,2018,2019,2020,2021,2022,2023, -2024,2025,2026, 837,2027,2028,2029,2030, 179, 874, 591, 52, 724, 246,2031,2032, -2033,2034,1167, 969,2035,1289, 630, 605, 911,1091,1168,2036,2037,2038,1441, 912, -2039, 623,2040,2041, 253,1169,1290,2042,1442, 146, 620, 611, 577, 433,2043,1224, - 719,1170, 959, 440, 437, 534, 84, 388, 480,1131, 159, 220, 198, 679,2044,1012, - 819,1066,1443, 113,1225, 194, 318,1003,1029,2045,2046,2047,2048,1067,2049,2050, -2051,2052,2053, 59, 913, 112,2054, 632,2055, 455, 144, 739,1291,2056, 273, 681, - 499,2057, 448,2058,2059, 760,2060,2061, 970, 384, 169, 245,1132,2062,2063, 414, -1444,2064,2065, 41, 235,2066, 157, 252, 877, 568, 919, 789, 580,2067, 725,2068, -2069,1292,2070,2071,1445,2072,1446,2073,2074, 55, 588, 66,1447, 271,1092,2075, -1226,2076, 960,1013, 372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085, 850, -2086,2087,2088,2089,2090, 186,2091,1068, 180,2092,2093,2094, 109,1227, 522, 606, -2095, 867,1448,1093, 991,1171, 926, 353,1133,2096, 581,2097,2098,2099,1294,1449, -1450,2100, 596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452, - 949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112, -2113,2114,2115,2116,2117, 804,2118,2119,1230,1231, 805,1456, 405,1136,2120,2121, -2122,2123,2124, 720, 701,1297, 992,1457, 927,1004,2125,2126,2127,2128,2129,2130, - 22, 417,2131, 303,2132, 385,2133, 971, 520, 513,2134,1174, 73,1096, 231, 274, - 962,1458, 673,2135,1459,2136, 152,1137,2137,2138,2139,2140,1005,1138,1460,1139, -2141,2142,2143,2144, 11, 374, 844,2145, 154,1232, 46,1461,2146, 838, 830, 721, -1233, 106,2147, 90, 428, 462, 578, 566,1175, 352,2148,2149, 538,1234, 124,1298, -2150,1462, 761, 565,2151, 686,2152, 649,2153, 72, 173,2154, 460, 415,2155,1463, -2156,1235, 305,2157,2158,2159,2160,2161,2162, 579,2163,2164,2165,2166,2167, 747, -2168,2169,2170,2171,1464, 669,2172,2173,2174,2175,2176,1465,2177, 23, 530, 285, -2178, 335, 729,2179, 397,2180,2181,2182,1030,2183,2184, 698,2185,2186, 325,2187, -2188, 369,2189, 799,1097,1015, 348,2190,1069, 680,2191, 851,1466,2192,2193, 10, -2194, 613, 424,2195, 979, 108, 449, 589, 27, 172, 81,1031, 80, 774, 281, 350, -1032, 525, 301, 582,1176,2196, 674,1045,2197,2198,1467, 730, 762,2199,2200,2201, -2202,1468,2203, 993,2204,2205, 266,1070, 963,1140,2206,2207,2208, 664,1098, 972, -2209,2210,2211,1177,1469,1470, 871,2212,2213,2214,2215,2216,1471,2217,2218,2219, -2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233, -2234,2235,1299,2236,2237, 200,2238, 477, 373,2239,2240, 731, 825, 777,2241,2242, -2243, 521, 486, 548,2244,2245,2246,1473,1300, 53, 549, 137, 875, 76, 158,2247, -1301,1474, 469, 396,1016, 278, 712,2248, 321, 442, 503, 767, 744, 941,1237,1178, -1475,2249, 82, 178,1141,1179, 973,2250,1302,2251, 297,2252,2253, 570,2254,2255, -2256, 18, 450, 206,2257, 290, 292,1142,2258, 511, 162, 99, 346, 164, 735,2259, -1476,1477, 4, 554, 343, 798,1099,2260,1100,2261, 43, 171,1303, 139, 215,2262, -2263, 717, 775,2264,1033, 322, 216,2265, 831,2266, 149,2267,1304,2268,2269, 702, -1238, 135, 845, 347, 309,2270, 484,2271, 878, 655, 238,1006,1478,2272, 67,2273, - 295,2274,2275, 461,2276, 478, 942, 412,2277,1034,2278,2279,2280, 265,2281, 541, -2282,2283,2284,2285,2286, 70, 852,1071,2287,2288,2289,2290, 21, 56, 509, 117, - 432,2291,2292, 331, 980, 552,1101, 148, 284, 105, 393,1180,1239, 755,2293, 187, -2294,1046,1479,2295, 340,2296, 63,1047, 230,2297,2298,1305, 763,1306, 101, 800, - 808, 494,2299,2300,2301, 903,2302, 37,1072, 14, 5,2303, 79, 675,2304, 312, -2305,2306,2307,2308,2309,1480, 6,1307,2310,2311,2312, 1, 470, 35, 24, 229, -2313, 695, 210, 86, 778, 15, 784, 592, 779, 32, 77, 855, 964,2314, 259,2315, - 501, 380,2316,2317, 83, 981, 153, 689,1308,1481,1482,1483,2318,2319, 716,1484, -2320,2321,2322,2323,2324,2325,1485,2326,2327, 128, 57, 68, 261,1048, 211, 170, -1240, 31,2328, 51, 435, 742,2329,2330,2331, 635,2332, 264, 456,2333,2334,2335, - 425,2336,1486, 143, 507, 263, 943,2337, 363, 920,1487, 256,1488,1102, 243, 601, -1489,2338,2339,2340,2341,2342,2343,2344, 861,2345,2346,2347,2348,2349,2350, 395, -2351,1490,1491, 62, 535, 166, 225,2352,2353, 668, 419,1241, 138, 604, 928,2354, -1181,2355,1492,1493,2356,2357,2358,1143,2359, 696,2360, 387, 307,1309, 682, 476, -2361,2362, 332, 12, 222, 156,2363, 232,2364, 641, 276, 656, 517,1494,1495,1035, - 416, 736,1496,2365,1017, 586,2366,2367,2368,1497,2369, 242,2370,2371,2372,1498, -2373, 965, 713,2374,2375,2376,2377, 740, 982,1499, 944,1500,1007,2378,2379,1310, -1501,2380,2381,2382, 785, 329,2383,2384,1502,2385,2386,2387, 932,2388,1503,2389, -2390,2391,2392,1242,2393,2394,2395,2396,2397, 994, 950,2398,2399,2400,2401,1504, -1311,2402,2403,2404,2405,1049, 749,2406,2407, 853, 718,1144,1312,2408,1182,1505, -2409,2410, 255, 516, 479, 564, 550, 214,1506,1507,1313, 413, 239, 444, 339,1145, -1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414, 176, 703, 497, 624, - 593, 921, 302,2415, 341, 165,1103,1512,2416,1513,2417,2418,2419, 376,2420, 700, -2421,2422,2423, 258, 768,1316,2424,1183,2425, 995, 608,2426,2427,2428,2429, 221, -2430,2431,2432,2433,2434,2435,2436,2437, 195, 323, 726, 188, 897, 983,1317, 377, - 644,1050, 879,2438, 452,2439,2440,2441,2442,2443,2444, 914,2445,2446,2447,2448, - 915, 489,2449,1514,1184,2450,2451, 515, 64, 427, 495,2452, 583,2453, 483, 485, -1038, 562, 213,1515, 748, 666,2454,2455,2456,2457, 334,2458, 780, 996,1008, 705, -1243,2459,2460,2461,2462,2463, 114,2464, 493,1146, 366, 163,1516, 961,1104,2465, - 291,2466,1318,1105,2467,1517, 365,2468, 355, 951,1244,2469,1319,2470, 631,2471, -2472, 218,1320, 364, 320, 756,1518,1519,1321,1520,1322,2473,2474,2475,2476, 997, -2477,2478,2479,2480, 665,1185,2481, 916,1521,2482,2483,2484, 584, 684,2485,2486, - 797,2487,1051,1186,2488,2489,2490,1522,2491,2492, 370,2493,1039,1187, 65,2494, - 434, 205, 463,1188,2495, 125, 812, 391, 402, 826, 699, 286, 398, 155, 781, 771, - 585,2496, 590, 505,1073,2497, 599, 244, 219, 917,1018, 952, 646,1523,2498,1323, -2499,2500, 49, 984, 354, 741,2501, 625,2502,1324,2503,1019, 190, 357, 757, 491, - 95, 782, 868,2504,2505,2506,2507,2508,2509, 134,1524,1074, 422,1525, 898,2510, - 161,2511,2512,2513,2514, 769,2515,1526,2516,2517, 411,1325,2518, 472,1527,2519, -2520,2521,2522,2523,2524, 985,2525,2526,2527,2528,2529,2530, 764,2531,1245,2532, -2533, 25, 204, 311,2534, 496,2535,1052,2536,2537,2538,2539,2540,2541,2542, 199, - 704, 504, 468, 758, 657,1528, 196, 44, 839,1246, 272, 750,2543, 765, 862,2544, -2545,1326,2546, 132, 615, 933,2547, 732,2548,2549,2550,1189,1529,2551, 283,1247, -1053, 607, 929,2552,2553,2554, 930, 183, 872, 616,1040,1147,2555,1148,1020, 441, - 249,1075,2556,2557,2558, 466, 743,2559,2560,2561, 92, 514, 426, 420, 526,2562, -2563,2564,2565,2566,2567,2568, 185,2569,2570,2571,2572, 776,1530, 658,2573, 362, -2574, 361, 922,1076, 793,2575,2576,2577,2578,2579,2580,1531, 251,2581,2582,2583, -2584,1532, 54, 612, 237,1327,2585,2586, 275, 408, 647, 111,2587,1533,1106, 465, - 3, 458, 9, 38,2588, 107, 110, 890, 209, 26, 737, 498,2589,1534,2590, 431, - 202, 88,1535, 356, 287,1107, 660,1149,2591, 381,1536, 986,1150, 445,1248,1151, - 974,2592,2593, 846,2594, 446, 953, 184,1249,1250, 727,2595, 923, 193, 883,2596, -2597,2598, 102, 324, 539, 817,2599, 421,1041,2600, 832,2601, 94, 175, 197, 406, -2602, 459,2603,2604,2605,2606,2607, 330, 555,2608,2609,2610, 706,1108, 389,2611, -2612,2613,2614, 233,2615, 833, 558, 931, 954,1251,2616,2617,1537, 546,2618,2619, -1009,2620,2621,2622,1538, 690,1328,2623, 955,2624,1539,2625,2626, 772,2627,2628, -2629,2630,2631, 924, 648, 863, 603,2632,2633, 934,1540, 864, 865,2634, 642,1042, - 670,1190,2635,2636,2637,2638, 168,2639, 652, 873, 542,1054,1541,2640,2641,2642, # 512, 256 -) - diff --git a/venv/lib/python3.6/site-packages/chardet/euckrprober.py b/venv/lib/python3.6/site-packages/chardet/euckrprober.py deleted file mode 100644 index 345a060..0000000 --- a/venv/lib/python3.6/site-packages/chardet/euckrprober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import EUCKRDistributionAnalysis -from .mbcssm import EUCKR_SM_MODEL - - -class EUCKRProber(MultiByteCharSetProber): - def __init__(self): - super(EUCKRProber, self).__init__() - self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) - self.distribution_analyzer = EUCKRDistributionAnalysis() - self.reset() - - @property - def charset_name(self): - return "EUC-KR" - - @property - def language(self): - return "Korean" diff --git a/venv/lib/python3.6/site-packages/chardet/euctwfreq.py b/venv/lib/python3.6/site-packages/chardet/euctwfreq.py deleted file mode 100644 index ed7a995..0000000 --- a/venv/lib/python3.6/site-packages/chardet/euctwfreq.py +++ /dev/null @@ -1,387 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# EUCTW frequency table -# Converted from big5 work -# by Taiwan's Mandarin Promotion Council -# - -# 128 --> 0.42261 -# 256 --> 0.57851 -# 512 --> 0.74851 -# 1024 --> 0.89384 -# 2048 --> 0.97583 -# -# Idea Distribution Ratio = 0.74851/(1-0.74851) =2.98 -# Random Distribution Ration = 512/(5401-512)=0.105 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR - -EUCTW_TYPICAL_DISTRIBUTION_RATIO = 0.75 - -# Char to FreqOrder table , -EUCTW_TABLE_SIZE = 5376 - -EUCTW_CHAR_TO_FREQ_ORDER = ( - 1,1800,1506, 255,1431, 198, 9, 82, 6,7310, 177, 202,3615,1256,2808, 110, # 2742 -3735, 33,3241, 261, 76, 44,2113, 16,2931,2184,1176, 659,3868, 26,3404,2643, # 2758 -1198,3869,3313,4060, 410,2211, 302, 590, 361,1963, 8, 204, 58,4296,7311,1931, # 2774 - 63,7312,7313, 317,1614, 75, 222, 159,4061,2412,1480,7314,3500,3068, 224,2809, # 2790 -3616, 3, 10,3870,1471, 29,2774,1135,2852,1939, 873, 130,3242,1123, 312,7315, # 2806 -4297,2051, 507, 252, 682,7316, 142,1914, 124, 206,2932, 34,3501,3173, 64, 604, # 2822 -7317,2494,1976,1977, 155,1990, 645, 641,1606,7318,3405, 337, 72, 406,7319, 80, # 2838 - 630, 238,3174,1509, 263, 939,1092,2644, 756,1440,1094,3406, 449, 69,2969, 591, # 2854 - 179,2095, 471, 115,2034,1843, 60, 50,2970, 134, 806,1868, 734,2035,3407, 180, # 2870 - 995,1607, 156, 537,2893, 688,7320, 319,1305, 779,2144, 514,2374, 298,4298, 359, # 2886 -2495, 90,2707,1338, 663, 11, 906,1099,2545, 20,2436, 182, 532,1716,7321, 732, # 2902 -1376,4062,1311,1420,3175, 25,2312,1056, 113, 399, 382,1949, 242,3408,2467, 529, # 2918 -3243, 475,1447,3617,7322, 117, 21, 656, 810,1297,2295,2329,3502,7323, 126,4063, # 2934 - 706, 456, 150, 613,4299, 71,1118,2036,4064, 145,3069, 85, 835, 486,2114,1246, # 2950 -1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,7324,2127,2354, 347,3736, 221, # 2966 -3503,3110,7325,1955,1153,4065, 83, 296,1199,3070, 192, 624, 93,7326, 822,1897, # 2982 -2810,3111, 795,2064, 991,1554,1542,1592, 27, 43,2853, 859, 139,1456, 860,4300, # 2998 - 437, 712,3871, 164,2392,3112, 695, 211,3017,2096, 195,3872,1608,3504,3505,3618, # 3014 -3873, 234, 811,2971,2097,3874,2229,1441,3506,1615,2375, 668,2076,1638, 305, 228, # 3030 -1664,4301, 467, 415,7327, 262,2098,1593, 239, 108, 300, 200,1033, 512,1247,2077, # 3046 -7328,7329,2173,3176,3619,2673, 593, 845,1062,3244, 88,1723,2037,3875,1950, 212, # 3062 - 266, 152, 149, 468,1898,4066,4302, 77, 187,7330,3018, 37, 5,2972,7331,3876, # 3078 -7332,7333, 39,2517,4303,2894,3177,2078, 55, 148, 74,4304, 545, 483,1474,1029, # 3094 -1665, 217,1869,1531,3113,1104,2645,4067, 24, 172,3507, 900,3877,3508,3509,4305, # 3110 - 32,1408,2811,1312, 329, 487,2355,2247,2708, 784,2674, 4,3019,3314,1427,1788, # 3126 - 188, 109, 499,7334,3620,1717,1789, 888,1217,3020,4306,7335,3510,7336,3315,1520, # 3142 -3621,3878, 196,1034, 775,7337,7338, 929,1815, 249, 439, 38,7339,1063,7340, 794, # 3158 -3879,1435,2296, 46, 178,3245,2065,7341,2376,7342, 214,1709,4307, 804, 35, 707, # 3174 - 324,3622,1601,2546, 140, 459,4068,7343,7344,1365, 839, 272, 978,2257,2572,3409, # 3190 -2128,1363,3623,1423, 697, 100,3071, 48, 70,1231, 495,3114,2193,7345,1294,7346, # 3206 -2079, 462, 586,1042,3246, 853, 256, 988, 185,2377,3410,1698, 434,1084,7347,3411, # 3222 - 314,2615,2775,4308,2330,2331, 569,2280, 637,1816,2518, 757,1162,1878,1616,3412, # 3238 - 287,1577,2115, 768,4309,1671,2854,3511,2519,1321,3737, 909,2413,7348,4069, 933, # 3254 -3738,7349,2052,2356,1222,4310, 765,2414,1322, 786,4311,7350,1919,1462,1677,2895, # 3270 -1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070, 309,1369, # 3286 -1130,2812, 364,2230,1653,1299,3881,3512,3882,3883,2646, 525,1085,3021, 902,2000, # 3302 -1475, 964,4313, 421,1844,1415,1057,2281, 940,1364,3116, 376,4314,4315,1381, 7, # 3318 -2520, 983,2378, 336,1710,2675,1845, 321,3414, 559,1131,3022,2742,1808,1132,1313, # 3334 - 265,1481,1857,7352, 352,1203,2813,3247, 167,1089, 420,2814, 776, 792,1724,3513, # 3350 -4071,2438,3248,7353,4072,7354, 446, 229, 333,2743, 901,3739,1200,1557,4316,2647, # 3366 -1920, 395,2744,2676,3740,4073,1835, 125, 916,3178,2616,4317,7355,7356,3741,7357, # 3382 -7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145, 438, # 3398 -2591,2896,2379,3317,1068, 958,3023, 461, 311,2855,2677,4074,1915,3179,4075,1978, # 3414 - 383, 750,2745,2617,4076, 274, 539, 385,1278,1442,7361,1154,1964, 384, 561, 210, # 3430 - 98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257, 129,7363,3742, 642, # 3446 - 523,2776,2777,2648,7364, 141,2231,1333, 68, 176, 441, 876, 907,4077, 603,2592, # 3462 - 710, 171,3417, 404, 549, 18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320, # 3478 -7366,2973, 368,7367, 146, 366, 99, 871,3627,1543, 748, 807,1586,1185, 22,2258, # 3494 - 379,3743,3180,7368,3181, 505,1941,2618,1991,1382,2314,7369, 380,2357, 218, 702, # 3510 -1817,1248,3418,3024,3517,3318,3249,7370,2974,3628, 930,3250,3744,7371, 59,7372, # 3526 - 585, 601,4078, 497,3419,1112,1314,4321,1801,7373,1223,1472,2174,7374, 749,1836, # 3542 - 690,1899,3745,1772,3885,1476, 429,1043,1790,2232,2116, 917,4079, 447,1086,1629, # 3558 -7375, 556,7376,7377,2020,1654, 844,1090, 105, 550, 966,1758,2815,1008,1782, 686, # 3574 -1095,7378,2282, 793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746, 980,2496, # 3590 - 544, 353, 527,4324, 908,2678,2899,7380, 381,2619,1942,1348,7381,1341,1252, 560, # 3606 -3072,7382,3420,2856,7383,2053, 973, 886,2080, 143,4325,7384,7385, 157,3886, 496, # 3622 -4081, 57, 840, 540,2038,4326,4327,3421,2117,1445, 970,2259,1748,1965,2081,4082, # 3638 -3119,1234,1775,3251,2816,3629, 773,1206,2129,1066,2039,1326,3887,1738,1725,4083, # 3654 - 279,3120, 51,1544,2594, 423,1578,2130,2066, 173,4328,1879,7386,7387,1583, 264, # 3670 - 610,3630,4329,2439, 280, 154,7388,7389,7390,1739, 338,1282,3073, 693,2857,1411, # 3686 -1074,3747,2440,7391,4330,7392,7393,1240, 952,2394,7394,2900,1538,2679, 685,1483, # 3702 -4084,2468,1436, 953,4085,2054,4331, 671,2395, 79,4086,2441,3252, 608, 567,2680, # 3718 -3422,4087,4088,1691, 393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672, # 3734 -3748,3182,1464, 522,1119, 661,1150, 216, 675,4333,3888,1432,3519, 609,4334,2681, # 3750 -2397,7400,7401,7402,4089,3025, 0,7403,2469, 315, 231,2442, 301,3319,4335,2380, # 3766 -7404, 233,4090,3631,1818,4336,4337,7405, 96,1776,1315,2082,7406, 257,7407,1809, # 3782 -3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074, 363,1655,3183, # 3798 -7409,2975,7410,7411,7412,3889,1567,3890, 718, 103,3184, 849,1443, 341,3320,2934, # 3814 -1484,7413,1712, 127, 67, 339,4092,2398, 679,1412, 821,7414,7415, 834, 738, 351, # 3830 -2976,2146, 846, 235,1497,1880, 418,1992,3749,2710, 186,1100,2147,2746,3520,1545, # 3846 -1355,2935,2858,1377, 583,3891,4093,2573,2977,7416,1298,3633,1078,2549,3634,2358, # 3862 - 78,3750,3751, 267,1289,2099,2001,1594,4094, 348, 369,1274,2194,2175,1837,4338, # 3878 -1820,2817,3635,2747,2283,2002,4339,2936,2748, 144,3321, 882,4340,3892,2749,3423, # 3894 -4341,2901,7417,4095,1726, 320,7418,3893,3026, 788,2978,7419,2818,1773,1327,2859, # 3910 -3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650, 787,2022, 506, 824,3636, # 3926 - 534, 323,4343,1044,3322,2023,1900, 946,3424,7421,1778,1500,1678,7422,1881,4344, # 3942 - 165, 243,4345,3637,2521, 123, 683,4096, 764,4346, 36,3895,1792, 589,2902, 816, # 3958 - 626,1667,3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932, 891, # 3974 -2083,2903, 304,4097,7424, 292,2979,2711,3522, 691,2100,4098,1115,4347, 118, 662, # 3990 -7425, 611,1156, 854,2381,1316,2861, 2, 386, 515,2904,7426,7427,3253, 868,2234, # 4006 -1486, 855,2651, 785,2212,3028,7428,1040,3185,3523,7429,3121, 448,7430,1525,7431, # 4022 -2164,4348,7432,3754,7433,4099,2820,3524,3122, 503, 818,3898,3123,1568, 814, 676, # 4038 -1444, 306,1749,7434,3755,1416,1030, 197,1428, 805,2821,1501,4349,7435,7436,7437, # 4054 -1993,7438,4350,7439,7440,2195, 13,2779,3638,2980,3124,1229,1916,7441,3756,2131, # 4070 -7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445, 646,3757,2443, 307, # 4086 -7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451, 519, # 4102 -7452, 128,2132, 92,2284,1979,7453,3900,1512, 342,3125,2196,7454,2780,2214,1980, # 4118 -3323,7455, 290,1656,1317, 789, 827,2360,7456,3758,4352, 562, 581,3901,7457, 401, # 4134 -4353,2248, 94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459, 828,1105,4101, # 4150 -1262,1394,7460,4102, 605,4356,7461,1783,2862,7462,2822, 819,2101, 578,2197,2937, # 4166 -7463,1502, 436,3254,4103,3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466, # 4182 -2332,2067, 23,4357, 193, 826,3759,2102, 699,1630,4104,3075, 390,1793,1064,3526, # 4198 -7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359, 137,4106, 598, # 4214 -3078,1966, 780, 104, 974,2938,7470, 278, 899, 253, 402, 572, 504, 493,1339,7471, # 4230 -3903,1275,4360,2574,2550,7472,3640,3029,3079,2249, 565,1334,2713, 863, 41,7473, # 4246 -7474,4361,7475,1657,2333, 19, 463,2750,4107, 606,7476,2981,3256,1087,2084,1323, # 4262 -2652,2982,7477,1631,1623,1750,4108,2682,7478,2864, 791,2714,2653,2334, 232,2416, # 4278 -7479,2983,1498,7480,2654,2620, 755,1366,3641,3257,3126,2025,1609, 119,1917,3427, # 4294 - 862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125, 817,4110, # 4310 -4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485, # 4326 -2683, 733, 40,1632,1106,2865, 345,4113, 841,2524, 230,4364,2984,1846,3259,3428, # 4342 -7486,1263, 986,3429,7487, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562,3907, # 4358 -3908,2939, 967,2751,2655,1349, 592,2133,1692,3324,2985,1994,4114,1679,3909,1901, # 4374 -2185,7488, 739,3642,2715,1296,1290,7489,4115,2198,2199,1921,1563,2595,2551,1870, # 4390 -2752,2986,7490, 435,7491, 343,1108, 596, 17,1751,4365,2235,3430,3643,7492,4366, # 4406 - 294,3527,2940,1693, 477, 979, 281,2041,3528, 643,2042,3644,2621,2782,2261,1031, # 4422 -2335,2134,2298,3529,4367, 367,1249,2552,7493,3530,7494,4368,1283,3325,2004, 240, # 4438 -1762,3326,4369,4370, 836,1069,3128, 474,7495,2148,2525, 268,3531,7496,3188,1521, # 4454 -1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118, 961,1673, # 4470 -2622, 190,2005,2200,3762,4371,4372,7500, 570,2497,3645,1490,7501,4373,2623,3260, # 4486 -1956,4374, 584,1514, 396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910, 619, # 4502 -7505,3129,3261, 215,2006,2783,2553,3189,4377,3190,4378, 763,4119,3763,4379,7506, # 4518 -7507,1957,1767,2941,3328,3646,1174, 452,1477,4380,3329,3130,7508,2825,1253,2382, # 4534 -2186,1091,2285,4120, 492,7509, 638,1169,1824,2135,1752,3911, 648, 926,1021,1324, # 4550 -4381, 520,4382, 997, 847,1007, 892,4383,3764,2262,1871,3647,7510,2400,1784,4384, # 4566 -1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551, 30,2263,4122, # 4582 -7511,2026,4386,3534,7512, 501,7513,4123, 594,3431,2165,1821,3535,3432,3536,3192, # 4598 - 829,2826,4124,7514,1680,3132,1225,4125,7515,3262,4387,4126,3133,2336,7516,4388, # 4614 -4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389, 374,3914, 652,4128,4129, # 4630 - 375,1140, 798,7520,7521,7522,2361,4390,2264, 546,1659, 138,3031,2445,4391,7523, # 4646 -2250, 612,1848, 910, 796,3765,1740,1371, 825,3766,3767,7524,2906,2554,7525, 692, # 4662 - 444,3032,2624, 801,4392,4130,7526,1491, 244,1053,3033,4131,4132, 340,7527,3915, # 4678 -1041,2987, 293,1168, 87,1357,7528,1539, 959,7529,2236, 721, 694,4133,3768, 219, # 4694 -1478, 644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825, # 4710 - 730,1515, 184,2827, 66,4393,7532,1660,2943, 246,3332, 378,1457, 226,3433, 975, # 4726 -3917,2944,1264,3537, 674, 696,7533, 163,7534,1141,2417,2166, 713,3538,3333,4394, # 4742 -3918,7535,7536,1186, 15,7537,1079,1070,7538,1522,3193,3539, 276,1050,2716, 758, # 4758 -1126, 653,2945,3263,7539,2337, 889,3540,3919,3081,2989, 903,1250,4395,3920,3434, # 4774 -3541,1342,1681,1718, 766,3264, 286, 89,2946,3649,7540,1713,7541,2597,3334,2990, # 4790 -7542,2947,2215,3194,2866,7543,4396,2498,2526, 181, 387,1075,3921, 731,2187,3335, # 4806 -7544,3265, 310, 313,3435,2299, 770,4134, 54,3034, 189,4397,3082,3769,3922,7545, # 4822 -1230,1617,1849, 355,3542,4135,4398,3336, 111,4136,3650,1350,3135,3436,3035,4137, # 4838 -2149,3266,3543,7546,2784,3923,3924,2991, 722,2008,7547,1071, 247,1207,2338,2471, # 4854 -1378,4399,2009, 864,1437,1214,4400, 373,3770,1142,2216, 667,4401, 442,2753,2555, # 4870 -3771,3925,1968,4138,3267,1839, 837, 170,1107, 934,1336,1882,7548,7549,2118,4139, # 4886 -2828, 743,1569,7550,4402,4140, 582,2384,1418,3437,7551,1802,7552, 357,1395,1729, # 4902 -3651,3268,2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554, 482, # 4918 -2446,4404,7555,7556,1492, 833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652, # 4934 -4142,1686,1794, 416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867, # 4950 -4405,1610,1584,3036,2419,2754, 443,3269,1163,3136,7561,7562,3926,7563,4143,2499, # 4966 -3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145, 431,3438,7565, 250, # 4982 - 97, 81,4146,7566,1648,1850,1558, 160, 848,7567, 866, 740,1694,7568,2201,2830, # 4998 -3195,4147,4407,3653,1687, 950,2472, 426, 469,3196,3654,3655,3928,7569,7570,1188, # 5014 - 424,1995, 861,3546,4148,3775,2202,2685, 168,1235,3547,4149,7571,2086,1674,4408, # 5030 -3337,3270, 220,2557,1009,7572,3776, 670,2992, 332,1208, 717,7573,7574,3548,2447, # 5046 -3929,3338,7575, 513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527, # 5062 -3656,3549, 815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932, # 5078 -1741,3933,3778,3934,7582, 236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411, # 5094 -7585, 308,7586,4412, 245,4413,1851,2473,1307,2575, 430, 715,2136,2449,7587, 270, # 5110 - 199,2869,3935,7588,3551,2718,1753, 761,1754, 725,1661,1840,4414,3440,3658,7589, # 5126 -7590, 587, 14,3272, 227,2598, 326, 480,2265, 943,2755,3552, 291, 650,1883,7591, # 5142 -1702,1226, 102,1547, 62,3441, 904,4415,3442,1164,4150,7592,7593,1224,1548,2756, # 5158 - 391, 498,1493,7594,1386,1419,7595,2055,1177,4416, 813, 880,1081,2363, 566,1145, # 5174 -4417,2286,1001,1035,2558,2599,2238, 394,1286,7596,7597,2068,7598, 86,1494,1730, # 5190 -3936, 491,1588, 745, 897,2948, 843,3340,3937,2757,2870,3273,1768, 998,2217,2069, # 5206 - 397,1826,1195,1969,3659,2993,3341, 284,7599,3782,2500,2137,2119,1903,7600,3938, # 5222 -2150,3939,4151,1036,3443,1904, 114,2559,4152, 209,1527,7601,7602,2949,2831,2625, # 5238 -2385,2719,3139, 812,2560,7603,3274,7604,1559, 737,1884,3660,1210, 885, 28,2686, # 5254 -3553,3783,7605,4153,1004,1779,4418,7606, 346,1981,2218,2687,4419,3784,1742, 797, # 5270 -1642,3940,1933,1072,1384,2151, 896,3941,3275,3661,3197,2871,3554,7607,2561,1958, # 5286 -4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528, # 5302 -2600, 161,1178,4156,1982, 987,4423,1101,4157, 631,3943,1157,3198,2420,1343,1241, # 5318 -1016,2239,2562, 372, 877,2339,2501,1160, 555,1934, 911,3944,7611, 466,1170, 169, # 5334 -1051,2907,2688,3663,2474,2994,1182,2011,2563,1251,2626,7612, 992,2340,3444,1540, # 5350 -2721,1201,2070,2401,1996,2475,7613,4424, 528,1922,2188,1503,1873,1570,2364,3342, # 5366 -3276,7614, 557,1073,7615,1827,3445,2087,2266,3140,3039,3084, 767,3085,2786,4425, # 5382 -1006,4158,4426,2341,1267,2176,3664,3199, 778,3945,3200,2722,1597,2657,7616,4427, # 5398 -7617,3446,7618,7619,7620,3277,2689,1433,3278, 131, 95,1504,3946, 723,4159,3141, # 5414 -1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,1218,7622,3343,3201,3949, # 5430 -4160,2576, 248,1634,3785, 912,7623,2832,3666,3040,3786, 654, 53,7624,2996,7625, # 5446 -1688,4428, 777,3447,1032,3950,1425,7626, 191, 820,2120,2833, 971,4429, 931,3202, # 5462 - 135, 664, 783,3787,1997, 772,2908,1935,3951,3788,4430,2909,3203, 282,2723, 640, # 5478 -1372,3448,1127, 922, 325,3344,7627,7628, 711,2044,7629,7630,3952,2219,2787,1936, # 5494 -3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955, # 5510 -3956,7632,2221, 258,3205,4432, 101,1227,7633,3280,1755,7634,1391,3281,7635,2910, # 5526 -2056, 893,7636,7637,7638,1402,4161,2342,7639,7640,3206,3556,7641,7642, 878,1325, # 5542 -1780,2788,4433, 259,1385,2577, 744,1183,2267,4434,7643,3957,2502,7644, 684,1024, # 5558 -4162,7645, 472,3557,3449,1165,3282,3958,3959, 322,2152, 881, 455,1695,1152,1340, # 5574 - 660, 554,2153,4435,1058,4436,4163, 830,1065,3346,3960,4437,1923,7646,1703,1918, # 5590 -7647, 932,2268, 122,7648,4438, 947, 677,7649,3791,2627, 297,1905,1924,2269,4439, # 5606 -2317,3283,7650,7651,4164,7652,4165, 84,4166, 112, 989,7653, 547,1059,3961, 701, # 5622 -3558,1019,7654,4167,7655,3450, 942, 639, 457,2301,2451, 993,2951, 407, 851, 494, # 5638 -4440,3347, 927,7656,1237,7657,2421,3348, 573,4168, 680, 921,2911,1279,1874, 285, # 5654 - 790,1448,1983, 719,2167,7658,7659,4441,3962,3963,1649,7660,1541, 563,7661,1077, # 5670 -7662,3349,3041,3451, 511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443, # 5686 -7663, 535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169, # 5702 -1238,2578,3086,1259,7665, 700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906, # 5718 -4444,2601,3967, 781,2422, 132,1589, 203, 147, 273,2789,2402, 898,1786,2154,3968, # 5734 -3969,7668,3792,2790,7669,7670,4445,4446,7671,3208,7672,1635,3793, 965,7673,1804, # 5750 -2690,1516,3559,1121,1082,1329,3284,3970,1449,3794, 65,1128,2835,2913,2759,1590, # 5766 -3795,7674,7675, 12,2658, 45, 976,2579,3144,4447, 517,2528,1013,1037,3209,7676, # 5782 -3796,2836,7677,3797,7678,3452,7679,2602, 614,1998,2318,3798,3087,2724,2628,7680, # 5798 -2580,4172, 599,1269,7681,1810,3669,7682,2691,3088, 759,1060, 489,1805,3351,3285, # 5814 -1358,7683,7684,2386,1387,1215,2629,2252, 490,7685,7686,4173,1759,2387,2343,7687, # 5830 -4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344, 874,7688,7689,3454, # 5846 -3670,1858, 91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,1403, # 5862 -3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973, # 5878 -2365,4453,7694,2029,7695,7696,3974,2693,1216, 237,2581,4174,2319,3975,3802,4454, # 5894 -4455,2694,3560,3457, 445,4456,7697,7698,7699,7700,2761, 61,3976,3672,1822,3977, # 5910 -7701, 687,2045, 935, 925, 405,2660, 703,1096,1859,2725,4457,3978,1876,1367,2695, # 5926 -3352, 918,2105,1781,2476, 334,3287,1611,1093,4458, 564,3146,3458,3673,3353, 945, # 5942 -2631,2057,4459,7702,1925, 872,4175,7703,3459,2696,3089, 349,4176,3674,3979,4460, # 5958 -3803,4177,3675,2155,3980,4461,4462,4178,4463,2403,2046, 782,3981, 400, 251,4179, # 5974 -1624,7704,7705, 277,3676, 299,1265, 476,1191,3804,2121,4180,4181,1109, 205,7706, # 5990 -2582,1000,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565, 107,2477,2157,3982, # 6006 -3460,3147,7711,1533, 541,1301, 158, 753,4182,2872,3562,7712,1696, 370,1088,4183, # 6022 -4466,3563, 579, 327, 440, 162,2240, 269,1937,1374,3461, 968,3043, 56,1396,3090, # 6038 -2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,7717, # 6054 -2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985, # 6070 -7722,1076, 49,7723, 951,3211,3289,3290, 450,2837, 920,7724,1811,2792,2366,4184, # 6086 -1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472, # 6102 -2388,2604, 260,1795,3213,7727,7728,3808,3291, 708,7729,3565,1704,7730,3566,1351, # 6118 -1618,3357,2999,1886, 944,4185,3358,4186,3044,3359,4187,7731,3678, 422, 413,1714, # 6134 -3292, 500,2058,2345,4188,2479,7732,1344,1910, 954,7733,1668,7734,7735,3986,2404, # 6150 -4189,3567,3809,4190,7736,2302,1318,2505,3091, 133,3092,2873,4473, 629, 31,2838, # 6166 -2697,3810,4474, 850, 949,4475,3987,2955,1732,2088,4191,1496,1852,7737,3988, 620, # 6182 -3214, 981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738, # 6198 -3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743, 869, # 6214 -2839, 655,3811,3812,3094,3989,3000,3813,1310,3569,4477,7744,7745,7746,1733, 558, # 6230 -4478,3681, 335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192, 470,2726,2107, # 6246 -2793, 913,1054,3990,7747,1027,7748,3046,3991,4479, 982,2662,3362,3148,3465,3216, # 6262 -3217,1946,2794,7749, 571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089, 984, # 6278 -4481,3683,1959,7753,3684, 852, 923,2795,3466,3685, 969,1519, 999,2048,2320,1705, # 6294 -7754,3095, 615,1662, 151, 597,3992,2405,2321,1049, 275,4482,3686,4193, 568,3687, # 6310 -3571,2480,4194,3688,7755,2425,2270, 409,3218,7756,1566,2874,3467,1002, 769,2840, # 6326 - 194,2090,3149,3689,2222,3294,4195, 628,1505,7757,7758,1763,2177,3001,3993, 521, # 6342 -1161,2584,1787,2203,2406,4483,3994,1625,4196,4197, 412, 42,3096, 464,7759,2632, # 6358 -4484,3363,1760,1571,2875,3468,2530,1219,2204,3814,2633,2140,2368,4485,4486,3295, # 6374 -1651,3364,3572,7760,7761,3573,2481,3469,7762,3690,7763,7764,2271,2091, 460,7765, # 6390 -4487,7766,3002, 962, 588,3574, 289,3219,2634,1116, 52,7767,3047,1796,7768,7769, # 6406 -7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365, 465,4489,1572, # 6422 - 510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776, # 6438 -7777,4199, 536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911, # 6454 -2796,7781,3296,1122, 377,3220,7782, 360,7783,7784,4200,1529, 551,7785,2059,3693, # 6470 -1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404, 136,1468,1479, 672, # 6486 -1171,3221,2303, 271,3151,7787,2762,7788,2049, 678,2727, 865,1947,4493,7789,2013, # 6502 -3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816, # 6518 - 509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010, # 6534 - 552, 681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154, 358, 453, 736, 175, # 6550 - 478,1117, 905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473, # 6566 -3577,4203,2092,4204,7799,3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298, # 6582 -2918,3049,2179,3474, 595,2122,7800,3997,7801,7802,4206,1707,2636, 223,3696,1359, # 6598 - 751,3098, 183,3475,7803,2797,3003, 419,2369, 633, 704,3818,2389, 241,7804,7805, # 6614 -7806, 838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807, # 6630 -1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605, 484,3698,7810, # 6646 -3999, 625,4209,2273,3368,1499,4210,4000,7811,4001,4211,3222,2274,2275,3476,7812, # 6662 -7813,2764, 808,2606,3699,3369,4002,4212,3100,2532, 526,3370,3821,4213, 955,7814, # 6678 -1620,4214,2637,2427,7815,1429,3700,1669,1831, 994, 928,7816,3578,1260,7817,7818, # 6694 -7819,1948,2288, 741,2919,1626,4215,2729,2455, 867,1184, 362,3371,1392,7820,7821, # 6710 -4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877, # 6726 -1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702, # 6742 -2483,3299,7824,3703,4501,7825,7826, 666,1003,3005,1022,3579,4218,7827,4502,1813, # 6758 -2253, 574,3822,1603, 295,1535, 705,3823,4219, 283, 858, 417,7828,7829,3224,4503, # 6774 -4504,3051,1220,1889,1046,2276,2456,4004,1393,1599, 689,2567, 388,4220,7830,2484, # 6790 - 802,7831,2798,3824,2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833, # 6806 - 809,7834,7835,7836, 575,2730,3477, 956,1552,1469,1144,2323,7837,2324,1560,2457, # 6822 -3580,3226,4005, 616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704, # 6838 -3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826, 607,2306,3827, 762,2878, # 6854 -1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508, # 6870 -2585,7846,7847,4224,1352,1414,2325,2921,1172,7848,7849,3828,3829,7850,1797,1451, # 6886 -7851,7852,7853,7854,2922,4006,4007,2485,2346, 411,4008,4009,3582,3300,3101,4509, # 6902 -1561,2664,1452,4010,1375,7855,7856, 47,2959, 316,7857,1406,1591,2923,3156,7858, # 6918 -1025,2141,3102,3157, 354,2731, 884,2224,4225,2407, 508,3706, 726,3583, 996,2428, # 6934 -3584, 729,7859, 392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800, # 6950 - 919,2347,2960,2348,1270,4511,4012, 73,7862,7863, 647,7864,3228,2843,2255,1550, # 6966 -1346,3006,7865,1332, 883,3479,7866,7867,7868,7869,3301,2765,7870,1212, 831,1347, # 6982 -4226,4512,2326,3830,1863,3053, 720,3831,4513,4514,3832,7871,4227,7872,7873,4515, # 6998 -7874,7875,1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924, 669,2208,2665, # 7014 -2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518, # 7030 -3158, 518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833, # 7046 - 516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961, # 7062 -1422, 577,1470,3008,1524,3373,7892,7893, 432,4232,3054,3480,7894,2586,1455,2508, # 7078 -2226,1972,1175,7895,1020,2732,4015,3481,4520,7896,2733,7897,1743,1361,3055,3482, # 7094 -2639,4016,4233,4521,2290, 895, 924,4234,2170, 331,2243,3056, 166,1627,3057,1098, # 7110 -7898,1232,2880,2227,3374,4522, 657, 403,1196,2372, 542,3709,3375,1600,4235,3483, # 7126 -7899,4523,2767,3230, 576, 530,1362,7900,4524,2533,2666,3710,4017,7901, 842,3834, # 7142 -7902,2801,2031,1014,4018, 213,2700,3376, 665, 621,4236,7903,3711,2925,2430,7904, # 7158 -2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906, 724, # 7174 -2277, 600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909, 651,4240,7910, # 7190 -1612,4241,2611,7911,2844,7912,2734,2307,3058,7913, 716,2459,3059, 174,1255,2701, # 7206 -4019,3590, 548,1320,1398, 728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062, # 7222 -3712,3591,3713, 747,7916, 635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922, # 7238 -3378,4530,2432, 451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925, # 7254 -4246, 350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024, 488,4532, 458,4248, # 7270 -4025,3715, 771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487, # 7286 -2881,2612,1720,2702,4250,3379,4533,7929,2536,4251,7930,3231,4252,2768,7931,2015, # 7302 -2736,7932,1155,1017,3716,3836,7933,3303,2308, 201,1864,4253,1430,7934,4026,7935, # 7318 -7936,7937,7938,7939,4254,1604,7940, 414,1865, 371,2587,4534,4535,3485,2016,3104, # 7334 -4536,1708, 960,4255, 887, 389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580, # 7350 -7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380, # 7366 -2882,4256,7950,4257,2640,3381,2802, 673,2703,2460, 709,3486,4028,3593,4258,7951, # 7382 -1148, 502, 634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,3718,3105, 948, # 7398 -3232, 121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,1771,3838,1488, # 7414 -4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803, 531,2737, # 7430 -2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017, # 7446 - 120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047, # 7462 -2704,1266,7965,1368,4543,2845, 649,3383,3841,2539,2738,1102,2846,2669,7966,7967, # 7478 -1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385, # 7494 -2410,2884,3304,3235,3598,7972,2569,7973,3599,2805,4031,1460, 856,7974,3600,7975, # 7510 -2885,2963,7976,2886,3843,7977,4264, 632,2510, 875,3844,1697,3845,2291,7978,7979, # 7526 -4544,3010,1239, 580,4545,4265,7980, 914, 936,2074,1190,4032,1039,2123,7981,7982, # 7542 -7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033, 915,3305,4267,4268,3306, # 7558 -1605,1834,7986,2739, 398,3601,4269,3847,4034, 328,1912,2847,4035,3848,1331,4270, # 7574 -3011, 937,4271,7987,3602,4036,4037,3387,2160,4546,3388, 524, 742, 538,3065,1012, # 7590 -7988,7989,3849,2461,7990, 658,1103, 225,3850,7991,7992,4547,7993,4548,7994,3236, # 7606 -1243,7995,4038, 963,2246,4549,7996,2705,3603,3161,7997,7998,2588,2327,7999,4550, # 7622 -8000,8001,8002,3489,3307, 957,3389,2540,2032,1930,2927,2462, 870,2018,3604,1746, # 7638 -2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066, # 7654 -8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292, 977, # 7670 -2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689, 714,4551,3491,8009, # 7686 -2328,3852, 533,4273,3605,2181, 617,8010,2464,3308,3492,2310,8011,8012,3165,8013, # 7702 -8014,3853,1987, 618, 427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552, # 7718 -8018,3494,8019,8020,2279,1576, 473,3606,4275,3395, 972,8021,3607,8022,3067,8023, # 7734 -8024,4553,4554,8025,3727,4041,4042,8026, 153,4555, 356,8027,1891,2888,4276,2143, # 7750 - 408, 803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278, # 7766 -8031,2411,3396, 752,8032,8033,1961,2964,8034, 746,3012,2465,8035,4279,3728, 698, # 7782 -4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706, # 7798 -3858,1973,4281,8038,4282,3167, 823,1303,1288,1236,2848,3495,4044,3398, 774,3859, # 7814 -8039,1581,4560,1304,2849,3860,4561,8040,2435,2161,1083,3237,4283,4045,4284, 344, # 7830 -1173, 288,2311, 454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563, 985, 894, # 7846 -8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194, # 7862 - 425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053, 636,4565,1855,3861, 760, # 7878 -1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210, # 7894 - 479,8058,8059, 832,8060,4049,2489,8061,2965,2490,3731, 990,3109, 627,1814,2642, # 7910 -4289,1582,4290,2125,2111,3496,4567,8062, 799,4291,3170,8063,4568,2112,1737,3013, # 7926 -1018, 543, 754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889, # 7942 -4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239, # 7958 -1842,3610,1715, 481, 365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240, # 7974 - 433,1894,2063,2075,8077, 602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083, # 7990 -3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088, # 8006 -4577,8089,2851,4578,4579,1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094, # 8022 -8095,1895,8096,8097,4580,1896,4054, 318,8098,2094,4055,4293,8099,8100, 485,8101, # 8038 - 938,3862, 553,2670, 116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104, # 8054 -3613,2929,4056,1747,2930,2968,8105,8106, 207,8107,8108,2672,4581,2514,8109,3015, # 8070 - 890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114, 941, # 8086 -2294, 208,3499,4057,2019, 330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118, # 8102 -) - diff --git a/venv/lib/python3.6/site-packages/chardet/euctwprober.py b/venv/lib/python3.6/site-packages/chardet/euctwprober.py deleted file mode 100644 index 35669cc..0000000 --- a/venv/lib/python3.6/site-packages/chardet/euctwprober.py +++ /dev/null @@ -1,46 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import EUCTWDistributionAnalysis -from .mbcssm import EUCTW_SM_MODEL - -class EUCTWProber(MultiByteCharSetProber): - def __init__(self): - super(EUCTWProber, self).__init__() - self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) - self.distribution_analyzer = EUCTWDistributionAnalysis() - self.reset() - - @property - def charset_name(self): - return "EUC-TW" - - @property - def language(self): - return "Taiwan" diff --git a/venv/lib/python3.6/site-packages/chardet/gb2312freq.py b/venv/lib/python3.6/site-packages/chardet/gb2312freq.py deleted file mode 100644 index 697837b..0000000 --- a/venv/lib/python3.6/site-packages/chardet/gb2312freq.py +++ /dev/null @@ -1,283 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# GB2312 most frequently used character table -# -# Char to FreqOrder table , from hz6763 - -# 512 --> 0.79 -- 0.79 -# 1024 --> 0.92 -- 0.13 -# 2048 --> 0.98 -- 0.06 -# 6768 --> 1.00 -- 0.02 -# -# Ideal Distribution Ratio = 0.79135/(1-0.79135) = 3.79 -# Random Distribution Ration = 512 / (3755 - 512) = 0.157 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher that RDR - -GB2312_TYPICAL_DISTRIBUTION_RATIO = 0.9 - -GB2312_TABLE_SIZE = 3760 - -GB2312_CHAR_TO_FREQ_ORDER = ( -1671, 749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515, 572,3191,2205, -2361, 224,2558, 479,1711, 963,3162, 440,4060,1905,2966,2947,3580,2647,3961,3842, -2204, 869,4207, 970,2678,5626,2944,2956,1479,4048, 514,3595, 588,1346,2820,3409, - 249,4088,1746,1873,2047,1774, 581,1813, 358,1174,3590,1014,1561,4844,2245, 670, -1636,3112, 889,1286, 953, 556,2327,3060,1290,3141, 613, 185,3477,1367, 850,3820, -1715,2428,2642,2303,2732,3041,2562,2648,3566,3946,1349, 388,3098,2091,1360,3585, - 152,1687,1539, 738,1559, 59,1232,2925,2267,1388,1249,1741,1679,2960, 151,1566, -1125,1352,4271, 924,4296, 385,3166,4459, 310,1245,2850, 70,3285,2729,3534,3575, -2398,3298,3466,1960,2265, 217,3647, 864,1909,2084,4401,2773,1010,3269,5152, 853, -3051,3121,1244,4251,1895, 364,1499,1540,2313,1180,3655,2268, 562, 715,2417,3061, - 544, 336,3768,2380,1752,4075, 950, 280,2425,4382, 183,2759,3272, 333,4297,2155, -1688,2356,1444,1039,4540, 736,1177,3349,2443,2368,2144,2225, 565, 196,1482,3406, - 927,1335,4147, 692, 878,1311,1653,3911,3622,1378,4200,1840,2969,3149,2126,1816, -2534,1546,2393,2760, 737,2494, 13, 447, 245,2747, 38,2765,2129,2589,1079, 606, - 360, 471,3755,2890, 404, 848, 699,1785,1236, 370,2221,1023,3746,2074,2026,2023, -2388,1581,2119, 812,1141,3091,2536,1519, 804,2053, 406,1596,1090, 784, 548,4414, -1806,2264,2936,1100, 343,4114,5096, 622,3358, 743,3668,1510,1626,5020,3567,2513, -3195,4115,5627,2489,2991, 24,2065,2697,1087,2719, 48,1634, 315, 68, 985,2052, - 198,2239,1347,1107,1439, 597,2366,2172, 871,3307, 919,2487,2790,1867, 236,2570, -1413,3794, 906,3365,3381,1701,1982,1818,1524,2924,1205, 616,2586,2072,2004, 575, - 253,3099, 32,1365,1182, 197,1714,2454,1201, 554,3388,3224,2748, 756,2587, 250, -2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153, 615, 911,1506, -1474,2495,1265,1906,2749,3756,3280,2161, 898,2714,1759,3450,2243,2444, 563, 26, -3286,2266,3769,3344,2707,3677, 611,1402, 531,1028,2871,4548,1375, 261,2948, 835, -1190,4134, 353, 840,2684,1900,3082,1435,2109,1207,1674, 329,1872,2781,4055,2686, -2104, 608,3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054, -1681,1153, 225,1627,2929, 162,2050,2511,3687,1954, 124,1859,2431,1684,3032,2894, - 585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209, 256, 518,2042,2105, -3777,3657, 643,2298,1148,1779, 190, 989,3544, 414, 11,2135,2063,2979,1471, 403, -3678, 126, 770,1563, 671,2499,3216,2877, 600,1179, 307,2805,4937,1268,1297,2694, - 252,4032,1448,1494,1331,1394, 127,2256, 222,1647,1035,1481,3056,1915,1048, 873, -3651, 210, 33,1608,2516, 200,1520, 415, 102, 0,3389,1287, 817, 91,3299,2940, - 836,1814, 549,2197,1396,1669,2987,3582,2297,2848,4528,1070, 687, 20,1819, 121, -1552,1364,1461,1968,2617,3540,2824,2083, 177, 948,4938,2291, 110,4549,2066, 648, -3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123, 208,1804,3159,2992, -2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680, 72, 842,1990, 212,1233, -1154,1586, 75,2027,3410,4900,1823,1337,2710,2676, 728,2810,1522,3026,4995, 157, - 755,1050,4022, 710, 785,1936,2194,2085,1406,2777,2400, 150,1250,4049,1206, 807, -1910, 534, 529,3309,1721,1660, 274, 39,2827, 661,2670,1578, 925,3248,3815,1094, -4278,4901,4252, 41,1150,3747,2572,2227,4501,3658,4902,3813,3357,3617,2884,2258, - 887, 538,4187,3199,1294,2439,3042,2329,2343,2497,1255, 107, 543,1527, 521,3478, -3568, 194,5062, 15, 961,3870,1241,1192,2664, 66,5215,3260,2111,1295,1127,2152, -3805,4135, 901,1164,1976, 398,1278, 530,1460, 748, 904,1054,1966,1426, 53,2909, - 509, 523,2279,1534, 536,1019, 239,1685, 460,2353, 673,1065,2401,3600,4298,2272, -1272,2363, 284,1753,3679,4064,1695, 81, 815,2677,2757,2731,1386, 859, 500,4221, -2190,2566, 757,1006,2519,2068,1166,1455, 337,2654,3203,1863,1682,1914,3025,1252, -1409,1366, 847, 714,2834,2038,3209, 964,2970,1901, 885,2553,1078,1756,3049, 301, -1572,3326, 688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088, 262,1158,1254, - 389,1641,1812, 526,1719, 923,2073,1073,1902, 468, 489,4625,1140, 857,2375,3070, -3319,2863, 380, 116,1328,2693,1161,2244, 273,1212,1884,2769,3011,1775,1142, 461, -3066,1200,2147,2212, 790, 702,2695,4222,1601,1058, 434,2338,5153,3640, 67,2360, -4099,2502, 618,3472,1329, 416,1132, 830,2782,1807,2653,3211,3510,1662, 192,2124, - 296,3979,1739,1611,3684, 23, 118, 324, 446,1239,1225, 293,2520,3814,3795,2535, -3116, 17,1074, 467,2692,2201, 387,2922, 45,1326,3055,1645,3659,2817, 958, 243, -1903,2320,1339,2825,1784,3289, 356, 576, 865,2315,2381,3377,3916,1088,3122,1713, -1655, 935, 628,4689,1034,1327, 441, 800, 720, 894,1979,2183,1528,5289,2702,1071, -4046,3572,2399,1571,3281, 79, 761,1103, 327, 134, 758,1899,1371,1615, 879, 442, - 215,2605,2579, 173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946, - 814,4968,3487,1548,2644,1567,1285, 2, 295,2636, 97, 946,3576, 832, 141,4257, -3273, 760,3821,3521,3156,2607, 949,1024,1733,1516,1803,1920,2125,2283,2665,3180, -1501,2064,3560,2171,1592, 803,3518,1416, 732,3897,4258,1363,1362,2458, 119,1427, - 602,1525,2608,1605,1639,3175, 694,3064, 10, 465, 76,2000,4846,4208, 444,3781, -1619,3353,2206,1273,3796, 740,2483, 320,1723,2377,3660,2619,1359,1137,1762,1724, -2345,2842,1850,1862, 912, 821,1866, 612,2625,1735,2573,3369,1093, 844, 89, 937, - 930,1424,3564,2413,2972,1004,3046,3019,2011, 711,3171,1452,4178, 428, 801,1943, - 432, 445,2811, 206,4136,1472, 730, 349, 73, 397,2802,2547, 998,1637,1167, 789, - 396,3217, 154,1218, 716,1120,1780,2819,4826,1931,3334,3762,2139,1215,2627, 552, -3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703, 640,1045,1370,1246, -4996, 371,1575,2436,1621,2210, 984,4033,1734,2638, 16,4529, 663,2755,3255,1451, -3917,2257,1253,1955,2234,1263,2951, 214,1229, 617, 485, 359,1831,1969, 473,2310, - 750,2058, 165, 80,2864,2419, 361,4344,2416,2479,1134, 796,3726,1266,2943, 860, -2715, 938, 390,2734,1313,1384, 248, 202, 877,1064,2854, 522,3907, 279,1602, 297, -2357, 395,3740, 137,2075, 944,4089,2584,1267,3802, 62,1533,2285, 178, 176, 780, -2440, 201,3707, 590, 478,1560,4354,2117,1075, 30, 74,4643,4004,1635,1441,2745, - 776,2596, 238,1077,1692,1912,2844, 605, 499,1742,3947, 241,3053, 980,1749, 936, -2640,4511,2582, 515,1543,2162,5322,2892,2993, 890,2148,1924, 665,1827,3581,1032, - 968,3163, 339,1044,1896, 270, 583,1791,1720,4367,1194,3488,3669, 43,2523,1657, - 163,2167, 290,1209,1622,3378, 550, 634,2508,2510, 695,2634,2384,2512,1476,1414, - 220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680, 854,3227,1299,2976, -3172, 186,2998,1459, 443,1067,3251,1495, 321,1932,3054, 909, 753,1410,1828, 436, -2441,1119,1587,3164,2186,1258, 227, 231,1425,1890,3200,3942, 247, 959, 725,5254, -2741, 577,2158,2079, 929, 120, 174, 838,2813, 591,1115, 417,2024, 40,3240,1536, -1037, 291,4151,2354, 632,1298,2406,2500,3535,1825,1846,3451, 205,1171, 345,4238, - 18,1163, 811, 685,2208,1217, 425,1312,1508,1175,4308,2552,1033, 587,1381,3059, -2984,3482, 340,1316,4023,3972, 792,3176, 519, 777,4690, 918, 933,4130,2981,3741, - 90,3360,2911,2200,5184,4550, 609,3079,2030, 272,3379,2736, 363,3881,1130,1447, - 286, 779, 357,1169,3350,3137,1630,1220,2687,2391, 747,1277,3688,2618,2682,2601, -1156,3196,5290,4034,3102,1689,3596,3128, 874, 219,2783, 798, 508,1843,2461, 269, -1658,1776,1392,1913,2983,3287,2866,2159,2372, 829,4076, 46,4253,2873,1889,1894, - 915,1834,1631,2181,2318, 298, 664,2818,3555,2735, 954,3228,3117, 527,3511,2173, - 681,2712,3033,2247,2346,3467,1652, 155,2164,3382, 113,1994, 450, 899, 494, 994, -1237,2958,1875,2336,1926,3727, 545,1577,1550, 633,3473, 204,1305,3072,2410,1956, -2471, 707,2134, 841,2195,2196,2663,3843,1026,4940, 990,3252,4997, 368,1092, 437, -3212,3258,1933,1829, 675,2977,2893, 412, 943,3723,4644,3294,3283,2230,2373,5154, -2389,2241,2661,2323,1404,2524, 593, 787, 677,3008,1275,2059, 438,2709,2609,2240, -2269,2246,1446, 36,1568,1373,3892,1574,2301,1456,3962, 693,2276,5216,2035,1143, -2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090, 424,1694, 312,3634, -3390,4179,3335,2252,1214, 561,1059,3243,2295,2561, 975,5155,2321,2751,3772, 472, -1537,3282,3398,1047,2077,2348,2878,1323,3340,3076, 690,2906, 51, 369, 170,3541, -1060,2187,2688,3670,2541,1083,1683, 928,3918, 459, 109,4427, 599,3744,4286, 143, -2101,2730,2490, 82,1588,3036,2121, 281,1860, 477,4035,1238,2812,3020,2716,3312, -1530,2188,2055,1317, 843, 636,1808,1173,3495, 649, 181,1002, 147,3641,1159,2414, -3750,2289,2795, 813,3123,2610,1136,4368, 5,3391,4541,2174, 420, 429,1728, 754, -1228,2115,2219, 347,2223,2733, 735,1518,3003,2355,3134,1764,3948,3329,1888,2424, -1001,1234,1972,3321,3363,1672,1021,1450,1584, 226, 765, 655,2526,3404,3244,2302, -3665, 731, 594,2184, 319,1576, 621, 658,2656,4299,2099,3864,1279,2071,2598,2739, - 795,3086,3699,3908,1707,2352,2402,1382,3136,2475,1465,4847,3496,3865,1085,3004, -2591,1084, 213,2287,1963,3565,2250, 822, 793,4574,3187,1772,1789,3050, 595,1484, -1959,2770,1080,2650, 456, 422,2996, 940,3322,4328,4345,3092,2742, 965,2784, 739, -4124, 952,1358,2498,2949,2565, 332,2698,2378, 660,2260,2473,4194,3856,2919, 535, -1260,2651,1208,1428,1300,1949,1303,2942, 433,2455,2450,1251,1946, 614,1269, 641, -1306,1810,2737,3078,2912, 564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307, -3218,2175,1897,3063, 682,1157,4040,4005,1712,1160,1941,1399, 394, 402,2952,1573, -1151,2986,2404, 862, 299,2033,1489,3006, 346, 171,2886,3401,1726,2932, 168,2533, - 47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965, - 504,1036,2690,2988,2405, 745,5871, 849,2397,2056,3081, 863,2359,3857,2096, 99, -1397,1769,2300,4428,1643,3455,1978,1757,3718,1440, 35,4879,3742,1296,4228,2280, - 160,5063,1599,2013, 166, 520,3479,1646,3345,3012, 490,1937,1545,1264,2182,2505, -1096,1188,1369,1436,2421,1667,2792,2460,1270,2122, 727,3167,2143, 806,1706,1012, -1800,3037, 960,2218,1882, 805, 139,2456,1139,1521, 851,1052,3093,3089, 342,2039, - 744,5097,1468,1502,1585,2087, 223, 939, 326,2140,2577, 892,2481,1623,4077, 982, -3708, 135,2131, 87,2503,3114,2326,1106, 876,1616, 547,2997,2831,2093,3441,4530, -4314, 9,3256,4229,4148, 659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392, -3274,1368,3689,4645,1477, 705,3384,3635,1068,1529,2941,1458,3782,1509, 100,1656, -2548, 718,2339, 408,1590,2780,3548,1838,4117,3719,1345,3530, 717,3442,2778,3220, -2898,1892,4590,3614,3371,2043,1998,1224,3483, 891, 635, 584,2559,3355, 733,1766, -1729,1172,3789,1891,2307, 781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535, -3213,1189,1934,5693,3262, 586,3118,1324,1598, 517,1564,2217,1868,1893,4445,3728, -2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287, 338, -1993,3129,3489,2689,1809,2815,1997, 957,1855,3898,2550,3275,3057,1105,1319, 627, -1505,1911,1883,3526, 698,3629,3456,1833,1431, 746, 77,1261,2017,2296,1977,1885, - 125,1334,1600, 525,1798,1109,2222,1470,1945, 559,2236,1186,3443,2476,1929,1411, -2411,3135,1777,3372,2621,1841,1613,3229, 668,1430,1839,2643,2916, 195,1989,2671, -2358,1387, 629,3205,2293,5256,4439, 123,1310, 888,1879,4300,3021,3605,1003,1162, -3192,2910,2010, 140,2395,2859, 55,1082,2012,2901, 662, 419,2081,1438, 680,2774, -4654,3912,1620,1731,1625,5035,4065,2328, 512,1344, 802,5443,2163,2311,2537, 524, -3399, 98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346, - 180,1113,4655,3461,2028,1698, 833,2696,1235,1322,1594,4408,3623,3013,3225,2040, -3022, 541,2881, 607,3632,2029,1665,1219, 639,1385,1686,1099,2803,3231,1938,3188, -2858, 427, 676,2772,1168,2025, 454,3253,2486,3556, 230,1950, 580, 791,1991,1280, -1086,1974,2034, 630, 257,3338,2788,4903,1017, 86,4790, 966,2789,1995,1696,1131, - 259,3095,4188,1308, 179,1463,5257, 289,4107,1248, 42,3413,1725,2288, 896,1947, - 774,4474,4254, 604,3430,4264, 392,2514,2588, 452, 237,1408,3018, 988,4531,1970, -3034,3310, 540,2370,1562,1288,2990, 502,4765,1147, 4,1853,2708, 207, 294,2814, -4078,2902,2509, 684, 34,3105,3532,2551, 644, 709,2801,2344, 573,1727,3573,3557, -2021,1081,3100,4315,2100,3681, 199,2263,1837,2385, 146,3484,1195,2776,3949, 997, -1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076, 493, 117,5400,2521, 972, -1490,2934,1796,4542,2374,1512,2933,2657, 413,2888,1135,2762,2314,2156,1355,2369, - 766,2007,2527,2170,3124,2491,2593,2632,4757,2437, 234,3125,3591,1898,1750,1376, -1942,3468,3138, 570,2127,2145,3276,4131, 962, 132,1445,4196, 19, 941,3624,3480, -3366,1973,1374,4461,3431,2629, 283,2415,2275, 808,2887,3620,2112,2563,1353,3610, - 955,1089,3103,1053, 96, 88,4097, 823,3808,1583, 399, 292,4091,3313, 421,1128, - 642,4006, 903,2539,1877,2082, 596, 29,4066,1790, 722,2157, 130, 995,1569, 769, -1485, 464, 513,2213, 288,1923,1101,2453,4316, 133, 486,2445, 50, 625, 487,2207, - 57, 423, 481,2962, 159,3729,1558, 491, 303, 482, 501, 240,2837, 112,3648,2392, -1783, 362, 8,3433,3422, 610,2793,3277,1390,1284,1654, 21,3823, 734, 367, 623, - 193, 287, 374,1009,1483, 816, 476, 313,2255,2340,1262,2150,2899,1146,2581, 782, -2116,1659,2018,1880, 255,3586,3314,1110,2867,2137,2564, 986,2767,5185,2006, 650, - 158, 926, 762, 881,3157,2717,2362,3587, 306,3690,3245,1542,3077,2427,1691,2478, -2118,2985,3490,2438, 539,2305, 983, 129,1754, 355,4201,2386, 827,2923, 104,1773, -2838,2771, 411,2905,3919, 376, 767, 122,1114, 828,2422,1817,3506, 266,3460,1007, -1609,4998, 945,2612,4429,2274, 726,1247,1964,2914,2199,2070,4002,4108, 657,3323, -1422, 579, 455,2764,4737,1222,2895,1670, 824,1223,1487,2525, 558, 861,3080, 598, -2659,2515,1967, 752,2583,2376,2214,4180, 977, 704,2464,4999,2622,4109,1210,2961, - 819,1541, 142,2284, 44, 418, 457,1126,3730,4347,4626,1644,1876,3671,1864, 302, -1063,5694, 624, 723,1984,3745,1314,1676,2488,1610,1449,3558,3569,2166,2098, 409, -1011,2325,3704,2306, 818,1732,1383,1824,1844,3757, 999,2705,3497,1216,1423,2683, -2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343, 783, 724, 191, -2434,1354,2220,5065,1763,2752,2472,4152, 131, 175,2885,3434, 92,1466,4920,2616, -3871,3872,3866, 128,1551,1632, 669,1854,3682,4691,4125,1230, 188,2973,3290,1302, -1213, 560,3266, 917, 763,3909,3249,1760, 868,1958, 764,1782,2097, 145,2277,3774, -4462, 64,1491,3062, 971,2132,3606,2442, 221,1226,1617, 218, 323,1185,3207,3147, - 571, 619,1473,1005,1744,2281, 449,1887,2396,3685, 275, 375,3816,1743,3844,3731, - 845,1983,2350,4210,1377, 773, 967,3499,3052,3743,2725,4007,1697,1022,3943,1464, -3264,2855,2722,1952,1029,2839,2467, 84,4383,2215, 820,1391,2015,2448,3672, 377, -1948,2168, 797,2545,3536,2578,2645, 94,2874,1678, 405,1259,3071, 771, 546,1315, - 470,1243,3083, 895,2468, 981, 969,2037, 846,4181, 653,1276,2928, 14,2594, 557, -3007,2474, 156, 902,1338,1740,2574, 537,2518, 973,2282,2216,2433,1928, 138,2903, -1293,2631,1612, 646,3457, 839,2935, 111, 496,2191,2847, 589,3186, 149,3994,2060, -4031,2641,4067,3145,1870, 37,3597,2136,1025,2051,3009,3383,3549,1121,1016,3261, -1301, 251,2446,2599,2153, 872,3246, 637, 334,3705, 831, 884, 921,3065,3140,4092, -2198,1944, 246,2964, 108,2045,1152,1921,2308,1031, 203,3173,4170,1907,3890, 810, -1401,2003,1690, 506, 647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708, - 498, 666,2613, 834,3817,1231, 184,2851,1124, 883,3197,2261,3710,1765,1553,2658, -1178,2639,2351, 93,1193, 942,2538,2141,4402, 235,1821, 870,1591,2192,1709,1871, -3341,1618,4126,2595,2334, 603, 651, 69, 701, 268,2662,3411,2555,1380,1606, 503, - 448, 254,2371,2646, 574,1187,2309,1770, 322,2235,1292,1801, 305, 566,1133, 229, -2067,2057, 706, 167, 483,2002,2672,3295,1820,3561,3067, 316, 378,2746,3452,1112, - 136,1981, 507,1651,2917,1117, 285,4591, 182,2580,3522,1304, 335,3303,1835,2504, -1795,1792,2248, 674,1018,2106,2449,1857,2292,2845, 976,3047,1781,2600,2727,1389, -1281, 52,3152, 153, 265,3950, 672,3485,3951,4463, 430,1183, 365, 278,2169, 27, -1407,1336,2304, 209,1340,1730,2202,1852,2403,2883, 979,1737,1062, 631,2829,2542, -3876,2592, 825,2086,2226,3048,3625, 352,1417,3724, 542, 991, 431,1351,3938,1861, -2294, 826,1361,2927,3142,3503,1738, 463,2462,2723, 582,1916,1595,2808, 400,3845, -3891,2868,3621,2254, 58,2492,1123, 910,2160,2614,1372,1603,1196,1072,3385,1700, -3267,1980, 696, 480,2430, 920, 799,1570,2920,1951,2041,4047,2540,1321,4223,2469, -3562,2228,1271,2602, 401,2833,3351,2575,5157, 907,2312,1256, 410, 263,3507,1582, - 996, 678,1849,2316,1480, 908,3545,2237, 703,2322, 667,1826,2849,1531,2604,2999, -2407,3146,2151,2630,1786,3711, 469,3542, 497,3899,2409, 858, 837,4446,3393,1274, - 786, 620,1845,2001,3311, 484, 308,3367,1204,1815,3691,2332,1532,2557,1842,2020, -2724,1927,2333,4440, 567, 22,1673,2728,4475,1987,1858,1144,1597, 101,1832,3601, - 12, 974,3783,4391, 951,1412, 1,3720, 453,4608,4041, 528,1041,1027,3230,2628, -1129, 875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278, 144,1758,3040, 31, - 475,1680, 366,2685,3184, 311,1642,4008,2466,5036,1593,1493,2809, 216,1420,1668, - 233, 304,2128,3284, 232,1429,1768,1040,2008,3407,2740,2967,2543, 242,2133, 778, -1565,2022,2620, 505,2189,2756,1098,2273, 372,1614, 708, 553,2846,2094,2278, 169, -3626,2835,4161, 228,2674,3165, 809,1454,1309, 466,1705,1095, 900,3423, 880,2667, -3751,5258,2317,3109,2571,4317,2766,1503,1342, 866,4447,1118, 63,2076, 314,1881, -1348,1061, 172, 978,3515,1747, 532, 511,3970, 6, 601, 905,2699,3300,1751, 276, -1467,3725,2668, 65,4239,2544,2779,2556,1604, 578,2451,1802, 992,2331,2624,1320, -3446, 713,1513,1013, 103,2786,2447,1661, 886,1702, 916, 654,3574,2031,1556, 751, -2178,2821,2179,1498,1538,2176, 271, 914,2251,2080,1325, 638,1953,2937,3877,2432, -2754, 95,3265,1716, 260,1227,4083, 775, 106,1357,3254, 426,1607, 555,2480, 772, -1985, 244,2546, 474, 495,1046,2611,1851,2061, 71,2089,1675,2590, 742,3758,2843, -3222,1433, 267,2180,2576,2826,2233,2092,3913,2435, 956,1745,3075, 856,2113,1116, - 451, 3,1988,2896,1398, 993,2463,1878,2049,1341,2718,2721,2870,2108, 712,2904, -4363,2753,2324, 277,2872,2349,2649, 384, 987, 435, 691,3000, 922, 164,3939, 652, -1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664, -2530,1434,2408, 893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078, 49,3770, -3469, 462, 318, 656,2259,3250,3069, 679,1629,2758, 344,1138,1104,3120,1836,1283, -3115,2154,1437,4448, 934, 759,1999, 794,2862,1038, 533,2560,1722,2342, 855,2626, -1197,1663,4476,3127, 85,4240,2528, 25,1111,1181,3673, 407,3470,4561,2679,2713, - 768,1925,2841,3986,1544,1165, 932, 373,1240,2146,1930,2673, 721,4766, 354,4333, - 391,2963, 187, 61,3364,1442,1102, 330,1940,1767, 341,3809,4118, 393,2496,2062, -2211, 105, 331, 300, 439, 913,1332, 626, 379,3304,1557, 328, 689,3952, 309,1555, - 931, 317,2517,3027, 325, 569, 686,2107,3084, 60,1042,1333,2794, 264,3177,4014, -1628, 258,3712, 7,4464,1176,1043,1778, 683, 114,1975, 78,1492, 383,1886, 510, - 386, 645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015, -1282,1289,4609, 697,1453,3044,2666,3611,1856,2412, 54, 719,1330, 568,3778,2459, -1748, 788, 492, 551,1191,1000, 488,3394,3763, 282,1799, 348,2016,1523,3155,2390, -1049, 382,2019,1788,1170, 729,2968,3523, 897,3926,2785,2938,3292, 350,2319,3238, -1718,1717,2655,3453,3143,4465, 161,2889,2980,2009,1421, 56,1908,1640,2387,2232, -1917,1874,2477,4921, 148, 83,3438, 592,4245,2882,1822,1055, 741, 115,1496,1624, - 381,1638,4592,1020, 516,3214, 458, 947,4575,1432, 211,1514,2926,1865,2142, 189, - 852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, #last 512 -) - diff --git a/venv/lib/python3.6/site-packages/chardet/gb2312prober.py b/venv/lib/python3.6/site-packages/chardet/gb2312prober.py deleted file mode 100644 index 8446d2d..0000000 --- a/venv/lib/python3.6/site-packages/chardet/gb2312prober.py +++ /dev/null @@ -1,46 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import GB2312DistributionAnalysis -from .mbcssm import GB2312_SM_MODEL - -class GB2312Prober(MultiByteCharSetProber): - def __init__(self): - super(GB2312Prober, self).__init__() - self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) - self.distribution_analyzer = GB2312DistributionAnalysis() - self.reset() - - @property - def charset_name(self): - return "GB2312" - - @property - def language(self): - return "Chinese" diff --git a/venv/lib/python3.6/site-packages/chardet/hebrewprober.py b/venv/lib/python3.6/site-packages/chardet/hebrewprober.py deleted file mode 100644 index b0e1bf4..0000000 --- a/venv/lib/python3.6/site-packages/chardet/hebrewprober.py +++ /dev/null @@ -1,292 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Shy Shalom -# Portions created by the Initial Developer are Copyright (C) 2005 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import ProbingState - -# This prober doesn't actually recognize a language or a charset. -# It is a helper prober for the use of the Hebrew model probers - -### General ideas of the Hebrew charset recognition ### -# -# Four main charsets exist in Hebrew: -# "ISO-8859-8" - Visual Hebrew -# "windows-1255" - Logical Hebrew -# "ISO-8859-8-I" - Logical Hebrew -# "x-mac-hebrew" - ?? Logical Hebrew ?? -# -# Both "ISO" charsets use a completely identical set of code points, whereas -# "windows-1255" and "x-mac-hebrew" are two different proper supersets of -# these code points. windows-1255 defines additional characters in the range -# 0x80-0x9F as some misc punctuation marks as well as some Hebrew-specific -# diacritics and additional 'Yiddish' ligature letters in the range 0xc0-0xd6. -# x-mac-hebrew defines similar additional code points but with a different -# mapping. -# -# As far as an average Hebrew text with no diacritics is concerned, all four -# charsets are identical with respect to code points. Meaning that for the -# main Hebrew alphabet, all four map the same values to all 27 Hebrew letters -# (including final letters). -# -# The dominant difference between these charsets is their directionality. -# "Visual" directionality means that the text is ordered as if the renderer is -# not aware of a BIDI rendering algorithm. The renderer sees the text and -# draws it from left to right. The text itself when ordered naturally is read -# backwards. A buffer of Visual Hebrew generally looks like so: -# "[last word of first line spelled backwards] [whole line ordered backwards -# and spelled backwards] [first word of first line spelled backwards] -# [end of line] [last word of second line] ... etc' " -# adding punctuation marks, numbers and English text to visual text is -# naturally also "visual" and from left to right. -# -# "Logical" directionality means the text is ordered "naturally" according to -# the order it is read. It is the responsibility of the renderer to display -# the text from right to left. A BIDI algorithm is used to place general -# punctuation marks, numbers and English text in the text. -# -# Texts in x-mac-hebrew are almost impossible to find on the Internet. From -# what little evidence I could find, it seems that its general directionality -# is Logical. -# -# To sum up all of the above, the Hebrew probing mechanism knows about two -# charsets: -# Visual Hebrew - "ISO-8859-8" - backwards text - Words and sentences are -# backwards while line order is natural. For charset recognition purposes -# the line order is unimportant (In fact, for this implementation, even -# word order is unimportant). -# Logical Hebrew - "windows-1255" - normal, naturally ordered text. -# -# "ISO-8859-8-I" is a subset of windows-1255 and doesn't need to be -# specifically identified. -# "x-mac-hebrew" is also identified as windows-1255. A text in x-mac-hebrew -# that contain special punctuation marks or diacritics is displayed with -# some unconverted characters showing as question marks. This problem might -# be corrected using another model prober for x-mac-hebrew. Due to the fact -# that x-mac-hebrew texts are so rare, writing another model prober isn't -# worth the effort and performance hit. -# -#### The Prober #### -# -# The prober is divided between two SBCharSetProbers and a HebrewProber, -# all of which are managed, created, fed data, inquired and deleted by the -# SBCSGroupProber. The two SBCharSetProbers identify that the text is in -# fact some kind of Hebrew, Logical or Visual. The final decision about which -# one is it is made by the HebrewProber by combining final-letter scores -# with the scores of the two SBCharSetProbers to produce a final answer. -# -# The SBCSGroupProber is responsible for stripping the original text of HTML -# tags, English characters, numbers, low-ASCII punctuation characters, spaces -# and new lines. It reduces any sequence of such characters to a single space. -# The buffer fed to each prober in the SBCS group prober is pure text in -# high-ASCII. -# The two SBCharSetProbers (model probers) share the same language model: -# Win1255Model. -# The first SBCharSetProber uses the model normally as any other -# SBCharSetProber does, to recognize windows-1255, upon which this model was -# built. The second SBCharSetProber is told to make the pair-of-letter -# lookup in the language model backwards. This in practice exactly simulates -# a visual Hebrew model using the windows-1255 logical Hebrew model. -# -# The HebrewProber is not using any language model. All it does is look for -# final-letter evidence suggesting the text is either logical Hebrew or visual -# Hebrew. Disjointed from the model probers, the results of the HebrewProber -# alone are meaningless. HebrewProber always returns 0.00 as confidence -# since it never identifies a charset by itself. Instead, the pointer to the -# HebrewProber is passed to the model probers as a helper "Name Prober". -# When the Group prober receives a positive identification from any prober, -# it asks for the name of the charset identified. If the prober queried is a -# Hebrew model prober, the model prober forwards the call to the -# HebrewProber to make the final decision. In the HebrewProber, the -# decision is made according to the final-letters scores maintained and Both -# model probers scores. The answer is returned in the form of the name of the -# charset identified, either "windows-1255" or "ISO-8859-8". - -class HebrewProber(CharSetProber): - # windows-1255 / ISO-8859-8 code points of interest - FINAL_KAF = 0xea - NORMAL_KAF = 0xeb - FINAL_MEM = 0xed - NORMAL_MEM = 0xee - FINAL_NUN = 0xef - NORMAL_NUN = 0xf0 - FINAL_PE = 0xf3 - NORMAL_PE = 0xf4 - FINAL_TSADI = 0xf5 - NORMAL_TSADI = 0xf6 - - # Minimum Visual vs Logical final letter score difference. - # If the difference is below this, don't rely solely on the final letter score - # distance. - MIN_FINAL_CHAR_DISTANCE = 5 - - # Minimum Visual vs Logical model score difference. - # If the difference is below this, don't rely at all on the model score - # distance. - MIN_MODEL_DISTANCE = 0.01 - - VISUAL_HEBREW_NAME = "ISO-8859-8" - LOGICAL_HEBREW_NAME = "windows-1255" - - def __init__(self): - super(HebrewProber, self).__init__() - self._final_char_logical_score = None - self._final_char_visual_score = None - self._prev = None - self._before_prev = None - self._logical_prober = None - self._visual_prober = None - self.reset() - - def reset(self): - self._final_char_logical_score = 0 - self._final_char_visual_score = 0 - # The two last characters seen in the previous buffer, - # mPrev and mBeforePrev are initialized to space in order to simulate - # a word delimiter at the beginning of the data - self._prev = ' ' - self._before_prev = ' ' - # These probers are owned by the group prober. - - def set_model_probers(self, logicalProber, visualProber): - self._logical_prober = logicalProber - self._visual_prober = visualProber - - def is_final(self, c): - return c in [self.FINAL_KAF, self.FINAL_MEM, self.FINAL_NUN, - self.FINAL_PE, self.FINAL_TSADI] - - def is_non_final(self, c): - # The normal Tsadi is not a good Non-Final letter due to words like - # 'lechotet' (to chat) containing an apostrophe after the tsadi. This - # apostrophe is converted to a space in FilterWithoutEnglishLetters - # causing the Non-Final tsadi to appear at an end of a word even - # though this is not the case in the original text. - # The letters Pe and Kaf rarely display a related behavior of not being - # a good Non-Final letter. Words like 'Pop', 'Winamp' and 'Mubarak' - # for example legally end with a Non-Final Pe or Kaf. However, the - # benefit of these letters as Non-Final letters outweighs the damage - # since these words are quite rare. - return c in [self.NORMAL_KAF, self.NORMAL_MEM, - self.NORMAL_NUN, self.NORMAL_PE] - - def feed(self, byte_str): - # Final letter analysis for logical-visual decision. - # Look for evidence that the received buffer is either logical Hebrew - # or visual Hebrew. - # The following cases are checked: - # 1) A word longer than 1 letter, ending with a final letter. This is - # an indication that the text is laid out "naturally" since the - # final letter really appears at the end. +1 for logical score. - # 2) A word longer than 1 letter, ending with a Non-Final letter. In - # normal Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi, - # should not end with the Non-Final form of that letter. Exceptions - # to this rule are mentioned above in isNonFinal(). This is an - # indication that the text is laid out backwards. +1 for visual - # score - # 3) A word longer than 1 letter, starting with a final letter. Final - # letters should not appear at the beginning of a word. This is an - # indication that the text is laid out backwards. +1 for visual - # score. - # - # The visual score and logical score are accumulated throughout the - # text and are finally checked against each other in GetCharSetName(). - # No checking for final letters in the middle of words is done since - # that case is not an indication for either Logical or Visual text. - # - # We automatically filter out all 7-bit characters (replace them with - # spaces) so the word boundary detection works properly. [MAP] - - if self.state == ProbingState.NOT_ME: - # Both model probers say it's not them. No reason to continue. - return ProbingState.NOT_ME - - byte_str = self.filter_high_byte_only(byte_str) - - for cur in byte_str: - if cur == ' ': - # We stand on a space - a word just ended - if self._before_prev != ' ': - # next-to-last char was not a space so self._prev is not a - # 1 letter word - if self.is_final(self._prev): - # case (1) [-2:not space][-1:final letter][cur:space] - self._final_char_logical_score += 1 - elif self.is_non_final(self._prev): - # case (2) [-2:not space][-1:Non-Final letter][ - # cur:space] - self._final_char_visual_score += 1 - else: - # Not standing on a space - if ((self._before_prev == ' ') and - (self.is_final(self._prev)) and (cur != ' ')): - # case (3) [-2:space][-1:final letter][cur:not space] - self._final_char_visual_score += 1 - self._before_prev = self._prev - self._prev = cur - - # Forever detecting, till the end or until both model probers return - # ProbingState.NOT_ME (handled above) - return ProbingState.DETECTING - - @property - def charset_name(self): - # Make the decision: is it Logical or Visual? - # If the final letter score distance is dominant enough, rely on it. - finalsub = self._final_char_logical_score - self._final_char_visual_score - if finalsub >= self.MIN_FINAL_CHAR_DISTANCE: - return self.LOGICAL_HEBREW_NAME - if finalsub <= -self.MIN_FINAL_CHAR_DISTANCE: - return self.VISUAL_HEBREW_NAME - - # It's not dominant enough, try to rely on the model scores instead. - modelsub = (self._logical_prober.get_confidence() - - self._visual_prober.get_confidence()) - if modelsub > self.MIN_MODEL_DISTANCE: - return self.LOGICAL_HEBREW_NAME - if modelsub < -self.MIN_MODEL_DISTANCE: - return self.VISUAL_HEBREW_NAME - - # Still no good, back to final letter distance, maybe it'll save the - # day. - if finalsub < 0.0: - return self.VISUAL_HEBREW_NAME - - # (finalsub > 0 - Logical) or (don't know what to do) default to - # Logical. - return self.LOGICAL_HEBREW_NAME - - @property - def language(self): - return 'Hebrew' - - @property - def state(self): - # Remain active as long as any of the model probers are active. - if (self._logical_prober.state == ProbingState.NOT_ME) and \ - (self._visual_prober.state == ProbingState.NOT_ME): - return ProbingState.NOT_ME - return ProbingState.DETECTING diff --git a/venv/lib/python3.6/site-packages/chardet/jisfreq.py b/venv/lib/python3.6/site-packages/chardet/jisfreq.py deleted file mode 100644 index 83fc082..0000000 --- a/venv/lib/python3.6/site-packages/chardet/jisfreq.py +++ /dev/null @@ -1,325 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# Sampling from about 20M text materials include literature and computer technology -# -# Japanese frequency table, applied to both S-JIS and EUC-JP -# They are sorted in order. - -# 128 --> 0.77094 -# 256 --> 0.85710 -# 512 --> 0.92635 -# 1024 --> 0.97130 -# 2048 --> 0.99431 -# -# Ideal Distribution Ratio = 0.92635 / (1-0.92635) = 12.58 -# Random Distribution Ration = 512 / (2965+62+83+86-512) = 0.191 -# -# Typical Distribution Ratio, 25% of IDR - -JIS_TYPICAL_DISTRIBUTION_RATIO = 3.0 - -# Char to FreqOrder table , -JIS_TABLE_SIZE = 4368 - -JIS_CHAR_TO_FREQ_ORDER = ( - 40, 1, 6, 182, 152, 180, 295,2127, 285, 381,3295,4304,3068,4606,3165,3510, # 16 -3511,1822,2785,4607,1193,2226,5070,4608, 171,2996,1247, 18, 179,5071, 856,1661, # 32 -1262,5072, 619, 127,3431,3512,3230,1899,1700, 232, 228,1294,1298, 284, 283,2041, # 48 -2042,1061,1062, 48, 49, 44, 45, 433, 434,1040,1041, 996, 787,2997,1255,4305, # 64 -2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928, # 80 -5081,3296,3432, 290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375, # 96 -1691,3297,4306,4307,4611, 452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086, # 112 -5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102, # 128 -5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,4097,5113,5114,5115,5116,5117, # 144 -5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133, # 160 -5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149, # 176 -5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164, # 192 -5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472, 598, 618, 820,1205, # 208 -1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,5182,1142,1452,1234,1172, # 224 -1875,2043,2149,1793,1382,2973, 925,2404,1067,1241, 960,1377,2935,1491, 919,1217, # 240 -1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804, # 256 -2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998, # 272 -3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161, 26,3377, 2,3929, 20, # 288 -3691, 47,4100, 50, 17, 16, 35, 268, 27, 243, 42, 155, 24, 154, 29, 184, # 304 - 4, 91, 14, 92, 53, 396, 33, 289, 9, 37, 64, 620, 21, 39, 321, 5, # 320 - 12, 11, 52, 13, 3, 208, 138, 0, 7, 60, 526, 141, 151,1069, 181, 275, # 336 -1591, 83, 132,1475, 126, 331, 829, 15, 69, 160, 59, 22, 157, 55,1079, 312, # 352 - 109, 38, 23, 25, 10, 19, 79,5195, 61, 382,1124, 8, 30,5196,5197,5198, # 368 -5199,5200,5201,5202,5203,5204,5205,5206, 89, 62, 74, 34,2416, 112, 139, 196, # 384 - 271, 149, 84, 607, 131, 765, 46, 88, 153, 683, 76, 874, 101, 258, 57, 80, # 400 - 32, 364, 121,1508, 169,1547, 68, 235, 145,2999, 41, 360,3027, 70, 63, 31, # 416 - 43, 259, 262,1383, 99, 533, 194, 66, 93, 846, 217, 192, 56, 106, 58, 565, # 432 - 280, 272, 311, 256, 146, 82, 308, 71, 100, 128, 214, 655, 110, 261, 104,1140, # 448 - 54, 51, 36, 87, 67,3070, 185,2618,2936,2020, 28,1066,2390,2059,5207,5208, # 464 -5209,5210,5211,5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223, # 480 -5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238, # 496 -5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247, # 512 -4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251, # 528 -5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267, # 544 -5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283, # 560 -5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299, # 576 -5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315, # 592 -5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331, # 608 -5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347, # 624 -5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363, # 640 -5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379, # 656 -5380,5381, 363, 642,2787,2878,2788,2789,2316,3232,2317,3434,2011, 165,1942,3930, # 672 -3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,5391,5392, # 688 -5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408, # 704 -5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424, # 720 -5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440, # 736 -5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456, # 752 -5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472, # 768 -5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488, # 784 -5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504, # 800 -5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520, # 816 -5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536, # 832 -5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552, # 848 -5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568, # 864 -5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584, # 880 -5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600, # 896 -5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616, # 912 -5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632, # 928 -5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648, # 944 -5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664, # 960 -5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680, # 976 -5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696, # 992 -5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712, # 1008 -5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728, # 1024 -5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744, # 1040 -5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760, # 1056 -5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776, # 1072 -5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792, # 1088 -5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808, # 1104 -5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824, # 1120 -5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840, # 1136 -5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856, # 1152 -5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872, # 1168 -5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888, # 1184 -5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904, # 1200 -5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920, # 1216 -5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936, # 1232 -5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952, # 1248 -5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968, # 1264 -5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984, # 1280 -5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000, # 1296 -6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016, # 1312 -6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032, # 1328 -6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048, # 1344 -6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064, # 1360 -6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080, # 1376 -6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096, # 1392 -6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112, # 1408 -6113,6114,2044,2060,4621, 997,1235, 473,1186,4622, 920,3378,6115,6116, 379,1108, # 1424 -4313,2657,2735,3934,6117,3809, 636,3233, 573,1026,3693,3435,2974,3300,2298,4105, # 1440 - 854,2937,2463, 393,2581,2417, 539, 752,1280,2750,2480, 140,1161, 440, 708,1569, # 1456 - 665,2497,1746,1291,1523,3000, 164,1603, 847,1331, 537,1997, 486, 508,1693,2418, # 1472 -1970,2227, 878,1220, 299,1030, 969, 652,2751, 624,1137,3301,2619, 65,3302,2045, # 1488 -1761,1859,3120,1930,3694,3516, 663,1767, 852, 835,3695, 269, 767,2826,2339,1305, # 1504 - 896,1150, 770,1616,6118, 506,1502,2075,1012,2519, 775,2520,2975,2340,2938,4314, # 1520 -3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557, 175, 597, 985, # 1536 -3517,2419,2521,1416,3029, 585, 938,1931,1007,1052,1932,1685,6120,3379,4316,4623, # 1552 - 804, 599,3121,1333,2128,2539,1159,1554,2032,3810, 687,2033,2904, 952, 675,1467, # 1568 -3436,6121,2241,1096,1786,2440,1543,1924, 980,1813,2228, 781,2692,1879, 728,1918, # 1584 -3696,4624, 548,1950,4625,1809,1088,1356,3303,2522,1944, 502, 972, 373, 513,2827, # 1600 - 586,2377,2391,1003,1976,1631,6122,2464,1084, 648,1776,4626,2141, 324, 962,2012, # 1616 -2177,2076,1384, 742,2178,1448,1173,1810, 222, 102, 301, 445, 125,2420, 662,2498, # 1632 - 277, 200,1476,1165,1068, 224,2562,1378,1446, 450,1880, 659, 791, 582,4627,2939, # 1648 -3936,1516,1274, 555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229, 412,2114, # 1664 -1900,2392,3518, 512,2597, 427,1925,2341,3122,1653,1686,2465,2499, 697, 330, 273, # 1680 - 380,2162, 951, 832, 780, 991,1301,3073, 965,2270,3519, 668,2523,2636,1286, 535, # 1696 -1407, 518, 671, 957,2658,2378, 267, 611,2197,3030,6123, 248,2299, 967,1799,2356, # 1712 - 850,1418,3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879, # 1728 -2829, 499,2179, 676,4629, 557,2329,2214,2090, 325,3234, 464, 811,3001, 992,2342, # 1744 -2481,1232,1469, 303,2242, 466,1070,2163, 603,1777,2091,4630,2752,4631,2714, 322, # 1760 -2659,1964,1768, 481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849, # 1776 -2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634, # 1792 -1604, 943,1724,1454, 917, 868,2215,1169,2940, 552,1145,1800,1228,1823,1955, 316, # 1808 -1080,2510, 361,1807,2830,4107,2660,3381,1346,1423,1134,4108,6127, 541,1263,1229, # 1824 -1148,2540, 545, 465,1833,2880,3438,1901,3074,2482, 816,3937, 713,1788,2500, 122, # 1840 -1575, 195,1451,2501,1111,6128, 859, 374,1225,2243,2483,4317, 390,1033,3439,3075, # 1856 -2524,1687, 266, 793,1440,2599, 946, 779, 802, 507, 897,1081, 528,2189,1292, 711, # 1872 -1866,1725,1167,1640, 753, 398,2661,1053, 246, 348,4318, 137,1024,3440,1600,2077, # 1888 -2129, 825,4319, 698, 238, 521, 187,2300,1157,2423,1641,1605,1464,1610,1097,2541, # 1904 -1260,1436, 759,2255,1814,2150, 705,3235, 409,2563,3304, 561,3033,2005,2564, 726, # 1920 -1956,2343,3698,4109, 949,3812,3813,3520,1669, 653,1379,2525, 881,2198, 632,2256, # 1936 -1027, 778,1074, 733,1957, 514,1481,2466, 554,2180, 702,3938,1606,1017,1398,6129, # 1952 -1380,3521, 921, 993,1313, 594, 449,1489,1617,1166, 768,1426,1360, 495,1794,3601, # 1968 -1177,3602,1170,4320,2344, 476, 425,3167,4635,3168,1424, 401,2662,1171,3382,1998, # 1984 -1089,4110, 477,3169, 474,6130,1909, 596,2831,1842, 494, 693,1051,1028,1207,3076, # 2000 - 606,2115, 727,2790,1473,1115, 743,3522, 630, 805,1532,4321,2021, 366,1057, 838, # 2016 - 684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090, # 2032 -1536,3939,3523,3306,1455,2199, 336, 369,2331,1035, 584,2393, 902, 718,2600,6131, # 2048 -2753, 463,2151,1149,1611,2467, 715,1308,3124,1268, 343,1413,3236,1517,1347,2663, # 2064 -2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980, 872,2368, # 2080 -2441,2943, 320,2369,2116,1082, 679,1933,3941,2791,3815, 625,1143,2023, 422,2200, # 2096 -3816,6133, 730,1695, 356,2257,1626,2301,2858,2637,1627,1778, 937, 883,2906,2693, # 2112 -3002,1769,1086, 400,1063,1325,3307,2792,4111,3077, 456,2345,1046, 747,6134,1524, # 2128 - 884,1094,3383,1474,2164,1059, 974,1688,2181,2258,1047, 345,1665,1187, 358, 875, # 2144 -3170, 305, 660,3524,2190,1334,1135,3171,1540,1649,2542,1527, 927, 968,2793, 885, # 2160 -1972,1850, 482, 500,2638,1218,1109,1085,2543,1654,2034, 876, 78,2287,1482,1277, # 2176 - 861,1675,1083,1779, 724,2754, 454, 397,1132,1612,2332, 893, 672,1237, 257,2259, # 2192 -2370, 135,3384, 337,2244, 547, 352, 340, 709,2485,1400, 788,1138,2511, 540, 772, # 2208 -1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533, 407, # 2224 - 576,3308,1254,2071, 978,3385, 170, 136,1201,3125,2664,3172,2394, 213, 912, 873, # 2240 -3603,1713,2202, 699,3604,3699, 813,3442, 493, 531,1054, 468,2907,1483, 304, 281, # 2256 -4112,1726,1252,2094, 339,2319,2130,2639, 756,1563,2944, 748, 571,2976,1588,2425, # 2272 -2715,1851,1460,2426,1528,1392,1973,3237, 288,3309, 685,3386, 296, 892,2716,2216, # 2288 -1570,2245, 722,1747,2217, 905,3238,1103,6135,1893,1441,1965, 251,1805,2371,3700, # 2304 -2601,1919,1078, 75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817, 524, 706, # 2320 -1075, 292,3818,1756,2602, 317, 98,3173,3605,3525,1844,2218,3819,2502, 814, 567, # 2336 - 385,2908,1534,6137, 534,1642,3239, 797,6138,1670,1529, 953,4323, 188,1071, 538, # 2352 - 178, 729,3240,2109,1226,1374,2000,2357,2977, 731,2468,1116,2014,2051,6139,1261, # 2368 -1593, 803,2859,2736,3443, 556, 682, 823,1541,6140,1369,2289,1706,2794, 845, 462, # 2384 -2603,2665,1361, 387, 162,2358,1740, 739,1770,1720,1304,1401,3241,1049, 627,1571, # 2400 -2427,3526,1877,3942,1852,1500, 431,1910,1503, 677, 297,2795, 286,1433,1038,1198, # 2416 -2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442, 108, 712,4640,2372, 866, # 2432 -3701,2755,3242,1348, 834,1945,1408,3527,2395,3243,1811, 824, 994,1179,2110,1548, # 2448 -1453, 790,3003, 690,4324,4325,2832,2909,3820,1860,3821, 225,1748, 310, 346,1780, # 2464 -2470, 821,1993,2717,2796, 828, 877,3528,2860,2471,1702,2165,2910,2486,1789, 453, # 2480 - 359,2291,1676, 73,1164,1461,1127,3311, 421, 604, 314,1037, 589, 116,2487, 737, # 2496 - 837,1180, 111, 244, 735,6142,2261,1861,1362, 986, 523, 418, 581,2666,3822, 103, # 2512 - 855, 503,1414,1867,2488,1091, 657,1597, 979, 605,1316,4641,1021,2443,2078,2001, # 2528 -1209, 96, 587,2166,1032, 260,1072,2153, 173, 94, 226,3244, 819,2006,4642,4114, # 2544 -2203, 231,1744, 782, 97,2667, 786,3387, 887, 391, 442,2219,4326,1425,6143,2694, # 2560 - 633,1544,1202, 483,2015, 592,2052,1958,2472,1655, 419, 129,4327,3444,3312,1714, # 2576 -1257,3078,4328,1518,1098, 865,1310,1019,1885,1512,1734, 469,2444, 148, 773, 436, # 2592 -1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643, 579,1238, 932,2320, # 2608 - 353, 205, 801, 115,2428, 944,2321,1881, 399,2565,1211, 678, 766,3944, 335,2101, # 2624 -1459,1781,1402,3945,2737,2131,1010, 844, 981,1326,1013, 550,1816,1545,2620,1335, # 2640 -1008, 371,2881, 936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503, 416, # 2656 -1643,4330, 806,1126, 229, 591,3946,1314,1981,1576,1837,1666, 347,1790, 977,3313, # 2672 - 764,2861,1853, 688,2429,1920,1462, 77, 595, 415,2002,3034, 798,1192,4115,6144, # 2688 -2978,4331,3035,2695,2582,2072,2566, 430,2430,1727, 842,1396,3947,3702, 613, 377, # 2704 - 278, 236,1417,3388,3314,3174, 757,1869, 107,3530,6145,1194, 623,2262, 207,1253, # 2720 -2167,3446,3948, 492,1117,1935, 536,1838,2757,1246,4332, 696,2095,2406,1393,1572, # 2736 -3175,1782, 583, 190, 253,1390,2230, 830,3126,3389, 934,3245,1703,1749,2979,1870, # 2752 -2545,1656,2204, 869,2346,4116,3176,1817, 496,1764,4644, 942,1504, 404,1903,1122, # 2768 -1580,3606,2945,1022, 515, 372,1735, 955,2431,3036,6146,2797,1110,2302,2798, 617, # 2784 -6147, 441, 762,1771,3447,3607,3608,1904, 840,3037, 86, 939,1385, 572,1370,2445, # 2800 -1336, 114,3703, 898, 294, 203,3315, 703,1583,2274, 429, 961,4333,1854,1951,3390, # 2816 -2373,3704,4334,1318,1381, 966,1911,2322,1006,1155, 309, 989, 458,2718,1795,1372, # 2832 -1203, 252,1689,1363,3177, 517,1936, 168,1490, 562, 193,3823,1042,4117,1835, 551, # 2848 - 470,4645, 395, 489,3448,1871,1465,2583,2641, 417,1493, 279,1295, 511,1236,1119, # 2864 - 72,1231,1982,1812,3004, 871,1564, 984,3449,1667,2696,2096,4646,2347,2833,1673, # 2880 -3609, 695,3246,2668, 807,1183,4647, 890, 388,2333,1801,1457,2911,1765,1477,1031, # 2896 -3316,3317,1278,3391,2799,2292,2526, 163,3450,4335,2669,1404,1802,6148,2323,2407, # 2912 -1584,1728,1494,1824,1269, 298, 909,3318,1034,1632, 375, 776,1683,2061, 291, 210, # 2928 -1123, 809,1249,1002,2642,3038, 206,1011,2132, 144, 975, 882,1565, 342, 667, 754, # 2944 -1442,2143,1299,2303,2062, 447, 626,2205,1221,2739,2912,1144,1214,2206,2584, 760, # 2960 -1715, 614, 950,1281,2670,2621, 810, 577,1287,2546,4648, 242,2168, 250,2643, 691, # 2976 - 123,2644, 647, 313,1029, 689,1357,2946,1650, 216, 771,1339,1306, 808,2063, 549, # 2992 - 913,1371,2913,2914,6149,1466,1092,1174,1196,1311,2605,2396,1783,1796,3079, 406, # 3008 -2671,2117,3949,4649, 487,1825,2220,6150,2915, 448,2348,1073,6151,2397,1707, 130, # 3024 - 900,1598, 329, 176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155, # 3040 -3706,1912,1513,1614,6153,1988, 646, 392,2304,1589,3320,3039,1826,1239,1352,1340, # 3056 -2916, 505,2567,1709,1437,2408,2547, 906,6154,2672, 384,1458,1594,1100,1329, 710, # 3072 - 423,3531,2064,2231,2622,1989,2673,1087,1882, 333, 841,3005,1296,2882,2379, 580, # 3088 -1937,1827,1293,2585, 601, 574, 249,1772,4118,2079,1120, 645, 901,1176,1690, 795, # 3104 -2207, 478,1434, 516,1190,1530, 761,2080, 930,1264, 355, 435,1552, 644,1791, 987, # 3120 - 220,1364,1163,1121,1538, 306,2169,1327,1222, 546,2645, 218, 241, 610,1704,3321, # 3136 -1984,1839,1966,2528, 451,6155,2586,3707,2568, 907,3178, 254,2947, 186,1845,4650, # 3152 - 745, 432,1757, 428,1633, 888,2246,2221,2489,3611,2118,1258,1265, 956,3127,1784, # 3168 -4337,2490, 319, 510, 119, 457,3612, 274,2035,2007,4651,1409,3128, 970,2758, 590, # 3184 -2800, 661,2247,4652,2008,3950,1420,1549,3080,3322,3951,1651,1375,2111, 485,2491, # 3200 -1429,1156,6156,2548,2183,1495, 831,1840,2529,2446, 501,1657, 307,1894,3247,1341, # 3216 - 666, 899,2156,1539,2549,1559, 886, 349,2208,3081,2305,1736,3824,2170,2759,1014, # 3232 -1913,1386, 542,1397,2948, 490, 368, 716, 362, 159, 282,2569,1129,1658,1288,1750, # 3248 -2674, 276, 649,2016, 751,1496, 658,1818,1284,1862,2209,2087,2512,3451, 622,2834, # 3264 - 376, 117,1060,2053,1208,1721,1101,1443, 247,1250,3179,1792,3952,2760,2398,3953, # 3280 -6157,2144,3708, 446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082, 424,2222, # 3296 -1251,2449,2119,2836, 504,1581,4338, 602, 817, 857,3825,2349,2306, 357,3826,1470, # 3312 -1883,2883, 255, 958, 929,2917,3248, 302,4653,1050,1271,1751,2307,1952,1430,2697, # 3328 -2719,2359, 354,3180, 777, 158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232, # 3344 -3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428, 637, 931,2721,2145, # 3360 - 914,2550,2587, 81,2450, 612, 827,2646,1242,4655,1118,2884, 472,1855,3181,3533, # 3376 -3534, 569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152, # 3392 -1938, 134,1830, 471,3710,2276,1112,1535,3323,3453,3535, 982,1337,2950, 488, 826, # 3408 - 674,1058,1628,4120,2017, 522,2399, 211, 568,1367,3454, 350, 293,1872,1139,3249, # 3424 -1399,1946,3006,1300,2360,3324, 588, 736,6160,2606, 744, 669,3536,3828,6161,1358, # 3440 - 199, 723, 848, 933, 851,1939,1505,1514,1338,1618,1831,4656,1634,3613, 443,2740, # 3456 -3829, 717,1947, 491,1914,6162,2551,1542,4121,1025,6163,1099,1223, 198,3040,2722, # 3472 - 370, 410,1905,2589, 998,1248,3182,2380, 519,1449,4122,1710, 947, 928,1153,4341, # 3488 -2277, 344,2624,1511, 615, 105, 161,1212,1076,1960,3130,2054,1926,1175,1906,2473, # 3504 - 414,1873,2801,6164,2309, 315,1319,3325, 318,2018,2146,2157, 963, 631, 223,4342, # 3520 -4343,2675, 479,3711,1197,2625,3712,2676,2361,6165,4344,4123,6166,2451,3183,1886, # 3536 -2184,1674,1330,1711,1635,1506, 799, 219,3250,3083,3954,1677,3713,3326,2081,3614, # 3552 -1652,2073,4657,1147,3041,1752, 643,1961, 147,1974,3955,6167,1716,2037, 918,3007, # 3568 -1994, 120,1537, 118, 609,3184,4345, 740,3455,1219, 332,1615,3830,6168,1621,2980, # 3584 -1582, 783, 212, 553,2350,3714,1349,2433,2082,4124, 889,6169,2310,1275,1410, 973, # 3600 - 166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658, 629, 822,3008, 763, 940, # 3616 -1990,2862, 439,2409,1566,1240,1622, 926,1282,1907,2764, 654,2210,1607, 327,1130, # 3632 -3956,1678,1623,6170,2434,2192, 686, 608,3831,3715, 903,3957,3042,6171,2741,1522, # 3648 -1915,1105,1555,2552,1359, 323,3251,4346,3457, 738,1354,2553,2311,2334,1828,2003, # 3664 -3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847, 520,1204,2607, # 3680 - 264,4659, 836,2677,2102, 600,4660,3833,2278,3084,6174,4347,3615,1342, 640, 532, # 3696 - 543,2608,1888,2400,2591,1009,4348,1497, 341,1737,3616,2723,1394, 529,3252,1321, # 3712 - 983,4661,1515,2120, 971,2592, 924, 287,1662,3186,4349,2700,4350,1519, 908,1948, # 3728 -2452, 156, 796,1629,1486,2223,2055, 694,4126,1259,1036,3392,1213,2249,2742,1889, # 3744 -1230,3958,1015, 910, 408, 559,3617,4662, 746, 725, 935,4663,3959,3009,1289, 563, # 3760 - 867,4664,3960,1567,2981,2038,2626, 988,2263,2381,4351, 143,2374, 704,1895,6175, # 3776 -1188,3716,2088, 673,3085,2362,4352, 484,1608,1921,2765,2918, 215, 904,3618,3537, # 3792 - 894, 509, 976,3043,2701,3961,4353,2837,2982, 498,6176,6177,1102,3538,1332,3393, # 3808 -1487,1636,1637, 233, 245,3962, 383, 650, 995,3044, 460,1520,1206,2352, 749,3327, # 3824 - 530, 700, 389,1438,1560,1773,3963,2264, 719,2951,2724,3834, 870,1832,1644,1000, # 3840 - 839,2474,3717, 197,1630,3394, 365,2886,3964,1285,2133, 734, 922, 818,1106, 732, # 3856 - 480,2083,1774,3458, 923,2279,1350, 221,3086, 85,2233,2234,3835,1585,3010,2147, # 3872 -1387,1705,2382,1619,2475, 133, 239,2802,1991,1016,2084,2383, 411,2838,1113, 651, # 3888 -1985,1160,3328, 990,1863,3087,1048,1276,2647, 265,2627,1599,3253,2056, 150, 638, # 3904 -2019, 656, 853, 326,1479, 680,1439,4354,1001,1759, 413,3459,3395,2492,1431, 459, # 3920 -4355,1125,3329,2265,1953,1450,2065,2863, 849, 351,2678,3131,3254,3255,1104,1577, # 3936 - 227,1351,1645,2453,2193,1421,2887, 812,2121, 634, 95,2435, 201,2312,4665,1646, # 3952 -1671,2743,1601,2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189, # 3968 - 328,2679,1077,1940,1136, 558,1283, 964,1195, 621,2074,1199,1743,3460,3619,1896, # 3984 -1916,1890,3836,2952,1154,2112,1064, 862, 378,3011,2066,2113,2803,1568,2839,6178, # 4000 -3088,2919,1941,1660,2004,1992,2194, 142, 707,1590,1708,1624,1922,1023,1836,1233, # 4016 -1004,2313, 789, 741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721, 593, # 4032 -2840, 367,2920,1878,6180,3461,1521, 628,1168, 692,2211,2649, 300, 720,2067,2571, # 4048 -2953,3396, 959,2504,3966,3539,3462,1977, 701,6181, 954,1043, 800, 681, 183,3722, # 4064 -1803,1730,3540,4128,2103, 815,2314, 174, 467, 230,2454,1093,2134, 755,3541,3397, # 4080 -1141,1162,6182,1738,2039, 270,3256,2513,1005,1647,2185,3837, 858,1679,1897,1719, # 4096 -2954,2324,1806, 402, 670, 167,4129,1498,2158,2104, 750,6183, 915, 189,1680,1551, # 4112 - 455,4356,1501,2455, 405,1095,2955, 338,1586,1266,1819, 570, 641,1324, 237,1556, # 4128 -2650,1388,3723,6184,1368,2384,1343,1978,3089,2436, 879,3724, 792,1191, 758,3012, # 4144 -1411,2135,1322,4357, 240,4667,1848,3725,1574,6185, 420,3045,1546,1391, 714,4358, # 4160 -1967, 941,1864, 863, 664, 426, 560,1731,2680,1785,2864,1949,2363, 403,3330,1415, # 4176 -1279,2136,1697,2335, 204, 721,2097,3838, 90,6186,2085,2505, 191,3967, 124,2148, # 4192 -1376,1798,1178,1107,1898,1405, 860,4359,1243,1272,2375,2983,1558,2456,1638, 113, # 4208 -3621, 578,1923,2609, 880, 386,4130, 784,2186,2266,1422,2956,2172,1722, 497, 263, # 4224 -2514,1267,2412,2610, 177,2703,3542, 774,1927,1344, 616,1432,1595,1018, 172,4360, # 4240 -2325, 911,4361, 438,1468,3622, 794,3968,2024,2173,1681,1829,2957, 945, 895,3090, # 4256 - 575,2212,2476, 475,2401,2681, 785,2744,1745,2293,2555,1975,3133,2865, 394,4668, # 4272 -3839, 635,4131, 639, 202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457, # 4288 -3727,3134,4362, 843,2611, 437, 916,4669, 234, 769,1884,3046,3047,3623, 833,6187, # 4304 -1639,2250,2402,1355,1185,2010,2047, 999, 525,1732,1290,1488,2612, 948,1578,3728, # 4320 -2413,2477,1216,2725,2159, 334,3840,1328,3624,2921,1525,4132, 564,1056, 891,4363, # 4336 -1444,1698,2385,2251,3729,1365,2281,2235,1717,6188, 864,3841,2515, 444, 527,2767, # 4352 -2922,3625, 544, 461,6189, 566, 209,2437,3398,2098,1065,2068,3331,3626,3257,2137, # 4368 #last 512 -) - - diff --git a/venv/lib/python3.6/site-packages/chardet/jpcntx.py b/venv/lib/python3.6/site-packages/chardet/jpcntx.py deleted file mode 100644 index 20044e4..0000000 --- a/venv/lib/python3.6/site-packages/chardet/jpcntx.py +++ /dev/null @@ -1,233 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - - -# This is hiragana 2-char sequence table, the number in each cell represents its frequency category -jp2CharContext = ( -(0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1), -(2,4,0,4,0,3,0,4,0,3,4,4,4,2,4,3,3,4,3,2,3,3,4,2,3,3,3,2,4,1,4,3,3,1,5,4,3,4,3,4,3,5,3,0,3,5,4,2,0,3,1,0,3,3,0,3,3,0,1,1,0,4,3,0,3,3,0,4,0,2,0,3,5,5,5,5,4,0,4,1,0,3,4), -(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2), -(0,4,0,5,0,5,0,4,0,4,5,4,4,3,5,3,5,1,5,3,4,3,4,4,3,4,3,3,4,3,5,4,4,3,5,5,3,5,5,5,3,5,5,3,4,5,5,3,1,3,2,0,3,4,0,4,2,0,4,2,1,5,3,2,3,5,0,4,0,2,0,5,4,4,5,4,5,0,4,0,0,4,4), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), -(0,3,0,4,0,3,0,3,0,4,5,4,3,3,3,3,4,3,5,4,4,3,5,4,4,3,4,3,4,4,4,4,5,3,4,4,3,4,5,5,4,5,5,1,4,5,4,3,0,3,3,1,3,3,0,4,4,0,3,3,1,5,3,3,3,5,0,4,0,3,0,4,4,3,4,3,3,0,4,1,1,3,4), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), -(0,4,0,3,0,3,0,4,0,3,4,4,3,2,2,1,2,1,3,1,3,3,3,3,3,4,3,1,3,3,5,3,3,0,4,3,0,5,4,3,3,5,4,4,3,4,4,5,0,1,2,0,1,2,0,2,2,0,1,0,0,5,2,2,1,4,0,3,0,1,0,4,4,3,5,4,3,0,2,1,0,4,3), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), -(0,3,0,5,0,4,0,2,1,4,4,2,4,1,4,2,4,2,4,3,3,3,4,3,3,3,3,1,4,2,3,3,3,1,4,4,1,1,1,4,3,3,2,0,2,4,3,2,0,3,3,0,3,1,1,0,0,0,3,3,0,4,2,2,3,4,0,4,0,3,0,4,4,5,3,4,4,0,3,0,0,1,4), -(1,4,0,4,0,4,0,4,0,3,5,4,4,3,4,3,5,4,3,3,4,3,5,4,4,4,4,3,4,2,4,3,3,1,5,4,3,2,4,5,4,5,5,4,4,5,4,4,0,3,2,2,3,3,0,4,3,1,3,2,1,4,3,3,4,5,0,3,0,2,0,4,5,5,4,5,4,0,4,0,0,5,4), -(0,5,0,5,0,4,0,3,0,4,4,3,4,3,3,3,4,0,4,4,4,3,4,3,4,3,3,1,4,2,4,3,4,0,5,4,1,4,5,4,4,5,3,2,4,3,4,3,2,4,1,3,3,3,2,3,2,0,4,3,3,4,3,3,3,4,0,4,0,3,0,4,5,4,4,4,3,0,4,1,0,1,3), -(0,3,1,4,0,3,0,2,0,3,4,4,3,1,4,2,3,3,4,3,4,3,4,3,4,4,3,2,3,1,5,4,4,1,4,4,3,5,4,4,3,5,5,4,3,4,4,3,1,2,3,1,2,2,0,3,2,0,3,1,0,5,3,3,3,4,3,3,3,3,4,4,4,4,5,4,2,0,3,3,2,4,3), -(0,2,0,3,0,1,0,1,0,0,3,2,0,0,2,0,1,0,2,1,3,3,3,1,2,3,1,0,1,0,4,2,1,1,3,3,0,4,3,3,1,4,3,3,0,3,3,2,0,0,0,0,1,0,0,2,0,0,0,0,0,4,1,0,2,3,2,2,2,1,3,3,3,4,4,3,2,0,3,1,0,3,3), -(0,4,0,4,0,3,0,3,0,4,4,4,3,3,3,3,3,3,4,3,4,2,4,3,4,3,3,2,4,3,4,5,4,1,4,5,3,5,4,5,3,5,4,0,3,5,5,3,1,3,3,2,2,3,0,3,4,1,3,3,2,4,3,3,3,4,0,4,0,3,0,4,5,4,4,5,3,0,4,1,0,3,4), -(0,2,0,3,0,3,0,0,0,2,2,2,1,0,1,0,0,0,3,0,3,0,3,0,1,3,1,0,3,1,3,3,3,1,3,3,3,0,1,3,1,3,4,0,0,3,1,1,0,3,2,0,0,0,0,1,3,0,1,0,0,3,3,2,0,3,0,0,0,0,0,3,4,3,4,3,3,0,3,0,0,2,3), -(2,3,0,3,0,2,0,1,0,3,3,4,3,1,3,1,1,1,3,1,4,3,4,3,3,3,0,0,3,1,5,4,3,1,4,3,2,5,5,4,4,4,4,3,3,4,4,4,0,2,1,1,3,2,0,1,2,0,0,1,0,4,1,3,3,3,0,3,0,1,0,4,4,4,5,5,3,0,2,0,0,4,4), -(0,2,0,1,0,3,1,3,0,2,3,3,3,0,3,1,0,0,3,0,3,2,3,1,3,2,1,1,0,0,4,2,1,0,2,3,1,4,3,2,0,4,4,3,1,3,1,3,0,1,0,0,1,0,0,0,1,0,0,0,0,4,1,1,1,2,0,3,0,0,0,3,4,2,4,3,2,0,1,0,0,3,3), -(0,1,0,4,0,5,0,4,0,2,4,4,2,3,3,2,3,3,5,3,3,3,4,3,4,2,3,0,4,3,3,3,4,1,4,3,2,1,5,5,3,4,5,1,3,5,4,2,0,3,3,0,1,3,0,4,2,0,1,3,1,4,3,3,3,3,0,3,0,1,0,3,4,4,4,5,5,0,3,0,1,4,5), -(0,2,0,3,0,3,0,0,0,2,3,1,3,0,4,0,1,1,3,0,3,4,3,2,3,1,0,3,3,2,3,1,3,0,2,3,0,2,1,4,1,2,2,0,0,3,3,0,0,2,0,0,0,1,0,0,0,0,2,2,0,3,2,1,3,3,0,2,0,2,0,0,3,3,1,2,4,0,3,0,2,2,3), -(2,4,0,5,0,4,0,4,0,2,4,4,4,3,4,3,3,3,1,2,4,3,4,3,4,4,5,0,3,3,3,3,2,0,4,3,1,4,3,4,1,4,4,3,3,4,4,3,1,2,3,0,4,2,0,4,1,0,3,3,0,4,3,3,3,4,0,4,0,2,0,3,5,3,4,5,2,0,3,0,0,4,5), -(0,3,0,4,0,1,0,1,0,1,3,2,2,1,3,0,3,0,2,0,2,0,3,0,2,0,0,0,1,0,1,1,0,0,3,1,0,0,0,4,0,3,1,0,2,1,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,2,2,3,1,0,3,0,0,0,1,4,4,4,3,0,0,4,0,0,1,4), -(1,4,1,5,0,3,0,3,0,4,5,4,4,3,5,3,3,4,4,3,4,1,3,3,3,3,2,1,4,1,5,4,3,1,4,4,3,5,4,4,3,5,4,3,3,4,4,4,0,3,3,1,2,3,0,3,1,0,3,3,0,5,4,4,4,4,4,4,3,3,5,4,4,3,3,5,4,0,3,2,0,4,4), -(0,2,0,3,0,1,0,0,0,1,3,3,3,2,4,1,3,0,3,1,3,0,2,2,1,1,0,0,2,0,4,3,1,0,4,3,0,4,4,4,1,4,3,1,1,3,3,1,0,2,0,0,1,3,0,0,0,0,2,0,0,4,3,2,4,3,5,4,3,3,3,4,3,3,4,3,3,0,2,1,0,3,3), -(0,2,0,4,0,3,0,2,0,2,5,5,3,4,4,4,4,1,4,3,3,0,4,3,4,3,1,3,3,2,4,3,0,3,4,3,0,3,4,4,2,4,4,0,4,5,3,3,2,2,1,1,1,2,0,1,5,0,3,3,2,4,3,3,3,4,0,3,0,2,0,4,4,3,5,5,0,0,3,0,2,3,3), -(0,3,0,4,0,3,0,1,0,3,4,3,3,1,3,3,3,0,3,1,3,0,4,3,3,1,1,0,3,0,3,3,0,0,4,4,0,1,5,4,3,3,5,0,3,3,4,3,0,2,0,1,1,1,0,1,3,0,1,2,1,3,3,2,3,3,0,3,0,1,0,1,3,3,4,4,1,0,1,2,2,1,3), -(0,1,0,4,0,4,0,3,0,1,3,3,3,2,3,1,1,0,3,0,3,3,4,3,2,4,2,0,1,0,4,3,2,0,4,3,0,5,3,3,2,4,4,4,3,3,3,4,0,1,3,0,0,1,0,0,1,0,0,0,0,4,2,3,3,3,0,3,0,0,0,4,4,4,5,3,2,0,3,3,0,3,5), -(0,2,0,3,0,0,0,3,0,1,3,0,2,0,0,0,1,0,3,1,1,3,3,0,0,3,0,0,3,0,2,3,1,0,3,1,0,3,3,2,0,4,2,2,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,1,0,1,0,0,0,1,3,1,2,0,0,0,1,0,0,1,4), -(0,3,0,3,0,5,0,1,0,2,4,3,1,3,3,2,1,1,5,2,1,0,5,1,2,0,0,0,3,3,2,2,3,2,4,3,0,0,3,3,1,3,3,0,2,5,3,4,0,3,3,0,1,2,0,2,2,0,3,2,0,2,2,3,3,3,0,2,0,1,0,3,4,4,2,5,4,0,3,0,0,3,5), -(0,3,0,3,0,3,0,1,0,3,3,3,3,0,3,0,2,0,2,1,1,0,2,0,1,0,0,0,2,1,0,0,1,0,3,2,0,0,3,3,1,2,3,1,0,3,3,0,0,1,0,0,0,0,0,2,0,0,0,0,0,2,3,1,2,3,0,3,0,1,0,3,2,1,0,4,3,0,1,1,0,3,3), -(0,4,0,5,0,3,0,3,0,4,5,5,4,3,5,3,4,3,5,3,3,2,5,3,4,4,4,3,4,3,4,5,5,3,4,4,3,4,4,5,4,4,4,3,4,5,5,4,2,3,4,2,3,4,0,3,3,1,4,3,2,4,3,3,5,5,0,3,0,3,0,5,5,5,5,4,4,0,4,0,1,4,4), -(0,4,0,4,0,3,0,3,0,3,5,4,4,2,3,2,5,1,3,2,5,1,4,2,3,2,3,3,4,3,3,3,3,2,5,4,1,3,3,5,3,4,4,0,4,4,3,1,1,3,1,0,2,3,0,2,3,0,3,0,0,4,3,1,3,4,0,3,0,2,0,4,4,4,3,4,5,0,4,0,0,3,4), -(0,3,0,3,0,3,1,2,0,3,4,4,3,3,3,0,2,2,4,3,3,1,3,3,3,1,1,0,3,1,4,3,2,3,4,4,2,4,4,4,3,4,4,3,2,4,4,3,1,3,3,1,3,3,0,4,1,0,2,2,1,4,3,2,3,3,5,4,3,3,5,4,4,3,3,0,4,0,3,2,2,4,4), -(0,2,0,1,0,0,0,0,0,1,2,1,3,0,0,0,0,0,2,0,1,2,1,0,0,1,0,0,0,0,3,0,0,1,0,1,1,3,1,0,0,0,1,1,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,2,2,0,3,4,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1), -(0,1,0,0,0,1,0,0,0,0,4,0,4,1,4,0,3,0,4,0,3,0,4,0,3,0,3,0,4,1,5,1,4,0,0,3,0,5,0,5,2,0,1,0,0,0,2,1,4,0,1,3,0,0,3,0,0,3,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0), -(1,4,0,5,0,3,0,2,0,3,5,4,4,3,4,3,5,3,4,3,3,0,4,3,3,3,3,3,3,2,4,4,3,1,3,4,4,5,4,4,3,4,4,1,3,5,4,3,3,3,1,2,2,3,3,1,3,1,3,3,3,5,3,3,4,5,0,3,0,3,0,3,4,3,4,4,3,0,3,0,2,4,3), -(0,1,0,4,0,0,0,0,0,1,4,0,4,1,4,2,4,0,3,0,1,0,1,0,0,0,0,0,2,0,3,1,1,1,0,3,0,0,0,1,2,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,3,0,0,0,0,3,2,0,2,2,0,1,0,0,0,2,3,2,3,3,0,0,0,0,2,1,0), -(0,5,1,5,0,3,0,3,0,5,4,4,5,1,5,3,3,0,4,3,4,3,5,3,4,3,3,2,4,3,4,3,3,0,3,3,1,4,4,3,4,4,4,3,4,5,5,3,2,3,1,1,3,3,1,3,1,1,3,3,2,4,5,3,3,5,0,4,0,3,0,4,4,3,5,3,3,0,3,4,0,4,3), -(0,5,0,5,0,3,0,2,0,4,4,3,5,2,4,3,3,3,4,4,4,3,5,3,5,3,3,1,4,0,4,3,3,0,3,3,0,4,4,4,4,5,4,3,3,5,5,3,2,3,1,2,3,2,0,1,0,0,3,2,2,4,4,3,1,5,0,4,0,3,0,4,3,1,3,2,1,0,3,3,0,3,3), -(0,4,0,5,0,5,0,4,0,4,5,5,5,3,4,3,3,2,5,4,4,3,5,3,5,3,4,0,4,3,4,4,3,2,4,4,3,4,5,4,4,5,5,0,3,5,5,4,1,3,3,2,3,3,1,3,1,0,4,3,1,4,4,3,4,5,0,4,0,2,0,4,3,4,4,3,3,0,4,0,0,5,5), -(0,4,0,4,0,5,0,1,1,3,3,4,4,3,4,1,3,0,5,1,3,0,3,1,3,1,1,0,3,0,3,3,4,0,4,3,0,4,4,4,3,4,4,0,3,5,4,1,0,3,0,0,2,3,0,3,1,0,3,1,0,3,2,1,3,5,0,3,0,1,0,3,2,3,3,4,4,0,2,2,0,4,4), -(2,4,0,5,0,4,0,3,0,4,5,5,4,3,5,3,5,3,5,3,5,2,5,3,4,3,3,4,3,4,5,3,2,1,5,4,3,2,3,4,5,3,4,1,2,5,4,3,0,3,3,0,3,2,0,2,3,0,4,1,0,3,4,3,3,5,0,3,0,1,0,4,5,5,5,4,3,0,4,2,0,3,5), -(0,5,0,4,0,4,0,2,0,5,4,3,4,3,4,3,3,3,4,3,4,2,5,3,5,3,4,1,4,3,4,4,4,0,3,5,0,4,4,4,4,5,3,1,3,4,5,3,3,3,3,3,3,3,0,2,2,0,3,3,2,4,3,3,3,5,3,4,1,3,3,5,3,2,0,0,0,0,4,3,1,3,3), -(0,1,0,3,0,3,0,1,0,1,3,3,3,2,3,3,3,0,3,0,0,0,3,1,3,0,0,0,2,2,2,3,0,0,3,2,0,1,2,4,1,3,3,0,0,3,3,3,0,1,0,0,2,1,0,0,3,0,3,1,0,3,0,0,1,3,0,2,0,1,0,3,3,1,3,3,0,0,1,1,0,3,3), -(0,2,0,3,0,2,1,4,0,2,2,3,1,1,3,1,1,0,2,0,3,1,2,3,1,3,0,0,1,0,4,3,2,3,3,3,1,4,2,3,3,3,3,1,0,3,1,4,0,1,1,0,1,2,0,1,1,0,1,1,0,3,1,3,2,2,0,1,0,0,0,2,3,3,3,1,0,0,0,0,0,2,3), -(0,5,0,4,0,5,0,2,0,4,5,5,3,3,4,3,3,1,5,4,4,2,4,4,4,3,4,2,4,3,5,5,4,3,3,4,3,3,5,5,4,5,5,1,3,4,5,3,1,4,3,1,3,3,0,3,3,1,4,3,1,4,5,3,3,5,0,4,0,3,0,5,3,3,1,4,3,0,4,0,1,5,3), -(0,5,0,5,0,4,0,2,0,4,4,3,4,3,3,3,3,3,5,4,4,4,4,4,4,5,3,3,5,2,4,4,4,3,4,4,3,3,4,4,5,5,3,3,4,3,4,3,3,4,3,3,3,3,1,2,2,1,4,3,3,5,4,4,3,4,0,4,0,3,0,4,4,4,4,4,1,0,4,2,0,2,4), -(0,4,0,4,0,3,0,1,0,3,5,2,3,0,3,0,2,1,4,2,3,3,4,1,4,3,3,2,4,1,3,3,3,0,3,3,0,0,3,3,3,5,3,3,3,3,3,2,0,2,0,0,2,0,0,2,0,0,1,0,0,3,1,2,2,3,0,3,0,2,0,4,4,3,3,4,1,0,3,0,0,2,4), -(0,0,0,4,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,3,1,3,0,3,2,0,0,0,1,0,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,2,0,0,0,0,0,0,2), -(0,2,1,3,0,2,0,2,0,3,3,3,3,1,3,1,3,3,3,3,3,3,4,2,2,1,2,1,4,0,4,3,1,3,3,3,2,4,3,5,4,3,3,3,3,3,3,3,0,1,3,0,2,0,0,1,0,0,1,0,0,4,2,0,2,3,0,3,3,0,3,3,4,2,3,1,4,0,1,2,0,2,3), -(0,3,0,3,0,1,0,3,0,2,3,3,3,0,3,1,2,0,3,3,2,3,3,2,3,2,3,1,3,0,4,3,2,0,3,3,1,4,3,3,2,3,4,3,1,3,3,1,1,0,1,1,0,1,0,1,0,1,0,0,0,4,1,1,0,3,0,3,1,0,2,3,3,3,3,3,1,0,0,2,0,3,3), -(0,0,0,0,0,0,0,0,0,0,3,0,2,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,3,0,3,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,0,0,0,0,0,0,0,0,3), -(0,2,0,3,1,3,0,3,0,2,3,3,3,1,3,1,3,1,3,1,3,3,3,1,3,0,2,3,1,1,4,3,3,2,3,3,1,2,2,4,1,3,3,0,1,4,2,3,0,1,3,0,3,0,0,1,3,0,2,0,0,3,3,2,1,3,0,3,0,2,0,3,4,4,4,3,1,0,3,0,0,3,3), -(0,2,0,1,0,2,0,0,0,1,3,2,2,1,3,0,1,1,3,0,3,2,3,1,2,0,2,0,1,1,3,3,3,0,3,3,1,1,2,3,2,3,3,1,2,3,2,0,0,1,0,0,0,0,0,0,3,0,1,0,0,2,1,2,1,3,0,3,0,0,0,3,4,4,4,3,2,0,2,0,0,2,4), -(0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3), -(0,3,0,3,0,2,0,3,0,3,3,3,2,3,2,2,2,0,3,1,3,3,3,2,3,3,0,0,3,0,3,2,2,0,2,3,1,4,3,4,3,3,2,3,1,5,4,4,0,3,1,2,1,3,0,3,1,1,2,0,2,3,1,3,1,3,0,3,0,1,0,3,3,4,4,2,1,0,2,1,0,2,4), -(0,1,0,3,0,1,0,2,0,1,4,2,5,1,4,0,2,0,2,1,3,1,4,0,2,1,0,0,2,1,4,1,1,0,3,3,0,5,1,3,2,3,3,1,0,3,2,3,0,1,0,0,0,0,0,0,1,0,0,0,0,4,0,1,0,3,0,2,0,1,0,3,3,3,4,3,3,0,0,0,0,2,3), -(0,0,0,1,0,0,0,0,0,0,2,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,3), -(0,1,0,3,0,4,0,3,0,2,4,3,1,0,3,2,2,1,3,1,2,2,3,1,1,1,2,1,3,0,1,2,0,1,3,2,1,3,0,5,5,1,0,0,1,3,2,1,0,3,0,0,1,0,0,0,0,0,3,4,0,1,1,1,3,2,0,2,0,1,0,2,3,3,1,2,3,0,1,0,1,0,4), -(0,0,0,1,0,3,0,3,0,2,2,1,0,0,4,0,3,0,3,1,3,0,3,0,3,0,1,0,3,0,3,1,3,0,3,3,0,0,1,2,1,1,1,0,1,2,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,2,1,2,0,0,2,0,0,0,0,2,3,3,3,3,0,0,0,0,1,4), -(0,0,0,3,0,3,0,0,0,0,3,1,1,0,3,0,1,0,2,0,1,0,0,0,0,0,0,0,1,0,3,0,2,0,2,3,0,0,2,2,3,1,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,2,3), -(2,4,0,5,0,5,0,4,0,3,4,3,3,3,4,3,3,3,4,3,4,4,5,4,5,5,5,2,3,0,5,5,4,1,5,4,3,1,5,4,3,4,4,3,3,4,3,3,0,3,2,0,2,3,0,3,0,0,3,3,0,5,3,2,3,3,0,3,0,3,0,3,4,5,4,5,3,0,4,3,0,3,4), -(0,3,0,3,0,3,0,3,0,3,3,4,3,2,3,2,3,0,4,3,3,3,3,3,3,3,3,0,3,2,4,3,3,1,3,4,3,4,4,4,3,4,4,3,2,4,4,1,0,2,0,0,1,1,0,2,0,0,3,1,0,5,3,2,1,3,0,3,0,1,2,4,3,2,4,3,3,0,3,2,0,4,4), -(0,3,0,3,0,1,0,0,0,1,4,3,3,2,3,1,3,1,4,2,3,2,4,2,3,4,3,0,2,2,3,3,3,0,3,3,3,0,3,4,1,3,3,0,3,4,3,3,0,1,1,0,1,0,0,0,4,0,3,0,0,3,1,2,1,3,0,4,0,1,0,4,3,3,4,3,3,0,2,0,0,3,3), -(0,3,0,4,0,1,0,3,0,3,4,3,3,0,3,3,3,1,3,1,3,3,4,3,3,3,0,0,3,1,5,3,3,1,3,3,2,5,4,3,3,4,5,3,2,5,3,4,0,1,0,0,0,0,0,2,0,0,1,1,0,4,2,2,1,3,0,3,0,2,0,4,4,3,5,3,2,0,1,1,0,3,4), -(0,5,0,4,0,5,0,2,0,4,4,3,3,2,3,3,3,1,4,3,4,1,5,3,4,3,4,0,4,2,4,3,4,1,5,4,0,4,4,4,4,5,4,1,3,5,4,2,1,4,1,1,3,2,0,3,1,0,3,2,1,4,3,3,3,4,0,4,0,3,0,4,4,4,3,3,3,0,4,2,0,3,4), -(1,4,0,4,0,3,0,1,0,3,3,3,1,1,3,3,2,2,3,3,1,0,3,2,2,1,2,0,3,1,2,1,2,0,3,2,0,2,2,3,3,4,3,0,3,3,1,2,0,1,1,3,1,2,0,0,3,0,1,1,0,3,2,2,3,3,0,3,0,0,0,2,3,3,4,3,3,0,1,0,0,1,4), -(0,4,0,4,0,4,0,0,0,3,4,4,3,1,4,2,3,2,3,3,3,1,4,3,4,0,3,0,4,2,3,3,2,2,5,4,2,1,3,4,3,4,3,1,3,3,4,2,0,2,1,0,3,3,0,0,2,0,3,1,0,4,4,3,4,3,0,4,0,1,0,2,4,4,4,4,4,0,3,2,0,3,3), -(0,0,0,1,0,4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,3,2,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2), -(0,2,0,3,0,4,0,4,0,1,3,3,3,0,4,0,2,1,2,1,1,1,2,0,3,1,1,0,1,0,3,1,0,0,3,3,2,0,1,1,0,0,0,0,0,1,0,2,0,2,2,0,3,1,0,0,1,0,1,1,0,1,2,0,3,0,0,0,0,1,0,0,3,3,4,3,1,0,1,0,3,0,2), -(0,0,0,3,0,5,0,0,0,0,1,0,2,0,3,1,0,1,3,0,0,0,2,0,0,0,1,0,0,0,1,1,0,0,4,0,0,0,2,3,0,1,4,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,3), -(0,2,0,5,0,5,0,1,0,2,4,3,3,2,5,1,3,2,3,3,3,0,4,1,2,0,3,0,4,0,2,2,1,1,5,3,0,0,1,4,2,3,2,0,3,3,3,2,0,2,4,1,1,2,0,1,1,0,3,1,0,1,3,1,2,3,0,2,0,0,0,1,3,5,4,4,4,0,3,0,0,1,3), -(0,4,0,5,0,4,0,4,0,4,5,4,3,3,4,3,3,3,4,3,4,4,5,3,4,5,4,2,4,2,3,4,3,1,4,4,1,3,5,4,4,5,5,4,4,5,5,5,2,3,3,1,4,3,1,3,3,0,3,3,1,4,3,4,4,4,0,3,0,4,0,3,3,4,4,5,0,0,4,3,0,4,5), -(0,4,0,4,0,3,0,3,0,3,4,4,4,3,3,2,4,3,4,3,4,3,5,3,4,3,2,1,4,2,4,4,3,1,3,4,2,4,5,5,3,4,5,4,1,5,4,3,0,3,2,2,3,2,1,3,1,0,3,3,3,5,3,3,3,5,4,4,2,3,3,4,3,3,3,2,1,0,3,2,1,4,3), -(0,4,0,5,0,4,0,3,0,3,5,5,3,2,4,3,4,0,5,4,4,1,4,4,4,3,3,3,4,3,5,5,2,3,3,4,1,2,5,5,3,5,5,2,3,5,5,4,0,3,2,0,3,3,1,1,5,1,4,1,0,4,3,2,3,5,0,4,0,3,0,5,4,3,4,3,0,0,4,1,0,4,4), -(1,3,0,4,0,2,0,2,0,2,5,5,3,3,3,3,3,0,4,2,3,4,4,4,3,4,0,0,3,4,5,4,3,3,3,3,2,5,5,4,5,5,5,4,3,5,5,5,1,3,1,0,1,0,0,3,2,0,4,2,0,5,2,3,2,4,1,3,0,3,0,4,5,4,5,4,3,0,4,2,0,5,4), -(0,3,0,4,0,5,0,3,0,3,4,4,3,2,3,2,3,3,3,3,3,2,4,3,3,2,2,0,3,3,3,3,3,1,3,3,3,0,4,4,3,4,4,1,1,4,4,2,0,3,1,0,1,1,0,4,1,0,2,3,1,3,3,1,3,4,0,3,0,1,0,3,1,3,0,0,1,0,2,0,0,4,4), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), -(0,3,0,3,0,2,0,3,0,1,5,4,3,3,3,1,4,2,1,2,3,4,4,2,4,4,5,0,3,1,4,3,4,0,4,3,3,3,2,3,2,5,3,4,3,2,2,3,0,0,3,0,2,1,0,1,2,0,0,0,0,2,1,1,3,1,0,2,0,4,0,3,4,4,4,5,2,0,2,0,0,1,3), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,4,2,1,1,0,1,0,3,2,0,0,3,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,2,0,0,0,1,4,0,4,2,1,0,0,0,0,0,1), -(0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,3,1,0,0,0,2,0,2,1,0,0,1,2,1,0,1,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,1,0,0,2,1,0,0,0,0,0,0,0,0,2), -(0,4,0,4,0,4,0,3,0,4,4,3,4,2,4,3,2,0,4,4,4,3,5,3,5,3,3,2,4,2,4,3,4,3,1,4,0,2,3,4,4,4,3,3,3,4,4,4,3,4,1,3,4,3,2,1,2,1,3,3,3,4,4,3,3,5,0,4,0,3,0,4,3,3,3,2,1,0,3,0,0,3,3), -(0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1), -) - -class JapaneseContextAnalysis(object): - NUM_OF_CATEGORY = 6 - DONT_KNOW = -1 - ENOUGH_REL_THRESHOLD = 100 - MAX_REL_THRESHOLD = 1000 - MINIMUM_DATA_THRESHOLD = 4 - - def __init__(self): - self._total_rel = None - self._rel_sample = None - self._need_to_skip_char_num = None - self._last_char_order = None - self._done = None - self.reset() - - def reset(self): - self._total_rel = 0 # total sequence received - # category counters, each integer counts sequence in its category - self._rel_sample = [0] * self.NUM_OF_CATEGORY - # if last byte in current buffer is not the last byte of a character, - # we need to know how many bytes to skip in next buffer - self._need_to_skip_char_num = 0 - self._last_char_order = -1 # The order of previous char - # If this flag is set to True, detection is done and conclusion has - # been made - self._done = False - - def feed(self, byte_str, num_bytes): - if self._done: - return - - # The buffer we got is byte oriented, and a character may span in more than one - # buffers. In case the last one or two byte in last buffer is not - # complete, we record how many byte needed to complete that character - # and skip these bytes here. We can choose to record those bytes as - # well and analyse the character once it is complete, but since a - # character will not make much difference, by simply skipping - # this character will simply our logic and improve performance. - i = self._need_to_skip_char_num - while i < num_bytes: - order, char_len = self.get_order(byte_str[i:i + 2]) - i += char_len - if i > num_bytes: - self._need_to_skip_char_num = i - num_bytes - self._last_char_order = -1 - else: - if (order != -1) and (self._last_char_order != -1): - self._total_rel += 1 - if self._total_rel > self.MAX_REL_THRESHOLD: - self._done = True - break - self._rel_sample[jp2CharContext[self._last_char_order][order]] += 1 - self._last_char_order = order - - def got_enough_data(self): - return self._total_rel > self.ENOUGH_REL_THRESHOLD - - def get_confidence(self): - # This is just one way to calculate confidence. It works well for me. - if self._total_rel > self.MINIMUM_DATA_THRESHOLD: - return (self._total_rel - self._rel_sample[0]) / self._total_rel - else: - return self.DONT_KNOW - - def get_order(self, byte_str): - return -1, 1 - -class SJISContextAnalysis(JapaneseContextAnalysis): - def __init__(self): - super(SJISContextAnalysis, self).__init__() - self._charset_name = "SHIFT_JIS" - - @property - def charset_name(self): - return self._charset_name - - def get_order(self, byte_str): - if not byte_str: - return -1, 1 - # find out current char's byte length - first_char = byte_str[0] - if (0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC): - char_len = 2 - if (first_char == 0x87) or (0xFA <= first_char <= 0xFC): - self._charset_name = "CP932" - else: - char_len = 1 - - # return its order if it is hiragana - if len(byte_str) > 1: - second_char = byte_str[1] - if (first_char == 202) and (0x9F <= second_char <= 0xF1): - return second_char - 0x9F, char_len - - return -1, char_len - -class EUCJPContextAnalysis(JapaneseContextAnalysis): - def get_order(self, byte_str): - if not byte_str: - return -1, 1 - # find out current char's byte length - first_char = byte_str[0] - if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE): - char_len = 2 - elif first_char == 0x8F: - char_len = 3 - else: - char_len = 1 - - # return its order if it is hiragana - if len(byte_str) > 1: - second_char = byte_str[1] - if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3): - return second_char - 0xA1, char_len - - return -1, char_len - - diff --git a/venv/lib/python3.6/site-packages/chardet/langbulgarianmodel.py b/venv/lib/python3.6/site-packages/chardet/langbulgarianmodel.py deleted file mode 100644 index 2aa4fb2..0000000 --- a/venv/lib/python3.6/site-packages/chardet/langbulgarianmodel.py +++ /dev/null @@ -1,228 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Character Mapping Table: -# this table is modified base on win1251BulgarianCharToOrderMap, so -# only number <64 is sure valid - -Latin5_BulgarianCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40 -110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50 -253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60 -116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70 -194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209, # 80 -210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225, # 90 - 81,226,227,228,229,230,105,231,232,233,234,235,236, 45,237,238, # a0 - 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # b0 - 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,239, 67,240, 60, 56, # c0 - 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # d0 - 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,241, 42, 16, # e0 - 62,242,243,244, 58,245, 98,246,247,248,249,250,251, 91,252,253, # f0 -) - -win1251BulgarianCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40 -110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50 -253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60 -116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70 -206,207,208,209,210,211,212,213,120,214,215,216,217,218,219,220, # 80 -221, 78, 64, 83,121, 98,117,105,222,223,224,225,226,227,228,229, # 90 - 88,230,231,232,233,122, 89,106,234,235,236,237,238, 45,239,240, # a0 - 73, 80,118,114,241,242,243,244,245, 62, 58,246,247,248,249,250, # b0 - 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # c0 - 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,251, 67,252, 60, 56, # d0 - 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # e0 - 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,253, 42, 16, # f0 -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 96.9392% -# first 1024 sequences:3.0618% -# rest sequences: 0.2992% -# negative sequences: 0.0020% -BulgarianLangModel = ( -0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,3,3,3,3,3, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,2,2,1,2,2, -3,1,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,0,1, -0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,0,3,1,0, -0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,2,3,2,2,1,3,3,3,3,2,2,2,1,1,2,0,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,2,3,2,2,3,3,1,1,2,3,3,2,3,3,3,3,2,1,2,0,2,0,3,0,0, -0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,1,3,3,3,3,3,2,3,2,3,3,3,3,3,2,3,3,1,3,0,3,0,2,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,1,3,3,2,3,2,2,2,0,0,2,0,2,0,2,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,3,3,1,2,2,3,2,1,1,2,0,2,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,2,3,3,1,2,3,2,2,2,3,3,3,3,3,2,2,3,1,2,0,2,1,2,0,0, -0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,1,3,3,3,3,3,2,3,3,3,2,3,3,2,3,2,2,2,3,1,2,0,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,3,3,3,1,1,1,2,2,1,3,1,3,2,2,3,0,0,1,0,1,0,1,0,0, -0,0,0,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,2,2,3,2,2,3,1,2,1,1,1,2,3,1,3,1,2,2,0,1,1,1,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,1,3,2,2,3,3,1,2,3,1,1,3,3,3,3,1,2,2,1,1,1,0,2,0,2,0,1, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,2,3,3,3,2,2,1,1,2,0,2,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,0,1,2,1,3,3,2,3,3,3,3,3,2,3,2,1,0,3,1,2,1,2,1,2,3,2,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,1,3,3,2,3,3,2,2,2,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,0,3,3,3,3,3,2,1,1,2,1,3,3,0,3,1,1,1,1,3,2,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,1,1,3,1,3,3,2,3,2,2,2,3,0,2,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,2,3,3,2,2,3,2,1,1,1,1,1,3,1,3,1,1,0,0,0,1,0,0,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,2,3,2,0,3,2,0,3,0,2,0,0,2,1,3,1,0,0,1,0,0,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,2,1,1,1,1,2,1,1,2,1,1,1,2,2,1,2,1,1,1,0,1,1,0,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,2,1,3,1,1,2,1,3,2,1,1,0,1,2,3,2,1,1,1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,2,2,1,0,1,0,0,1,0,0,0,2,1,0,3,0,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,2,3,2,3,3,1,3,2,1,1,1,2,1,1,2,1,3,0,1,0,0,0,1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,2,2,3,3,2,3,2,2,2,3,1,2,2,1,1,2,1,1,2,2,0,1,1,0,1,0,2,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,2,1,3,1,0,2,2,1,3,2,1,0,0,2,0,2,0,1,0,0,0,0,0,0,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,1,2,0,2,3,1,2,3,2,0,1,3,1,2,1,1,1,0,0,1,0,0,2,2,2,3, -2,2,2,2,1,2,1,1,2,2,1,1,2,0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1, -3,3,3,3,3,2,1,2,2,1,2,0,2,0,1,0,1,2,1,2,1,1,0,0,0,1,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,2,3,3,1,1,3,1,0,3,2,1,0,0,0,1,2,0,2,0,1,0,0,0,1,0,1,2,1,2,2, -1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,0,1,2,1,1,1,0,0,0,0,0,1,1,0,0, -3,1,0,1,0,2,3,2,2,2,3,2,2,2,2,2,1,0,2,1,2,1,1,1,0,1,2,1,2,2,2,1, -1,1,2,2,2,2,1,2,1,1,0,1,2,1,2,2,2,1,1,1,0,1,1,1,1,2,0,1,0,0,0,0, -2,3,2,3,3,0,0,2,1,0,2,1,0,0,0,0,2,3,0,2,0,0,0,0,0,1,0,0,2,0,1,2, -2,1,2,1,2,2,1,1,1,2,1,1,1,0,1,2,2,1,1,1,1,1,0,1,1,1,0,0,1,2,0,0, -3,3,2,2,3,0,2,3,1,1,2,0,0,0,1,0,0,2,0,2,0,0,0,1,0,1,0,1,2,0,2,2, -1,1,1,1,2,1,0,1,2,2,2,1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0, -2,3,2,3,3,0,0,3,0,1,1,0,1,0,0,0,2,2,1,2,0,0,0,0,0,0,0,0,2,0,1,2, -2,2,1,1,1,1,1,2,2,2,1,0,2,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0, -3,3,3,3,2,2,2,2,2,0,2,1,1,1,1,2,1,2,1,1,0,2,0,1,0,1,0,0,2,0,1,2, -1,1,1,1,1,1,1,2,2,1,1,0,2,0,1,0,2,0,0,1,1,1,0,0,2,0,0,0,1,1,0,0, -2,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,1,2,0,1,2, -2,2,2,1,1,2,1,1,2,2,2,1,2,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0, -2,3,3,3,3,0,2,2,0,2,1,0,0,0,1,1,1,2,0,2,0,0,0,3,0,0,0,0,2,0,2,2, -1,1,1,2,1,2,1,1,2,2,2,1,2,0,1,1,1,0,1,1,1,1,0,2,1,0,0,0,1,1,0,0, -2,3,3,3,3,0,2,1,0,0,2,0,0,0,0,0,1,2,0,2,0,0,0,0,0,0,0,0,2,0,1,2, -1,1,1,2,1,1,1,1,2,2,2,0,1,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0, -3,3,2,2,3,0,1,0,1,0,0,0,0,0,0,0,1,1,0,3,0,0,0,0,0,0,0,0,1,0,2,2, -1,1,1,1,1,2,1,1,2,2,1,2,2,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0, -3,1,0,1,0,2,2,2,2,3,2,1,1,1,2,3,0,0,1,0,2,1,1,0,1,1,1,1,2,1,1,1, -1,2,2,1,2,1,2,2,1,1,0,1,2,1,2,2,1,1,1,0,0,1,1,1,2,1,0,1,0,0,0,0, -2,1,0,1,0,3,1,2,2,2,2,1,2,2,1,1,1,0,2,1,2,2,1,1,2,1,1,0,2,1,1,1, -1,2,2,2,2,2,2,2,1,2,0,1,1,0,2,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0, -2,1,1,1,1,2,2,2,2,1,2,2,2,1,2,2,1,1,2,1,2,3,2,2,1,1,1,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,3,2,0,1,2,0,1,2,1,1,0,1,0,1,2,1,2,0,0,0,1,1,0,0,0,1,0,0,2, -1,1,0,0,1,1,0,1,1,1,1,0,2,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0, -2,0,0,0,0,1,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1, -1,2,2,2,2,1,1,2,1,2,1,1,1,0,2,1,2,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0, -3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0, -1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,3,2,0,0,0,0,1,0,0,0,0,0,0,1,1,0,2,0,0,0,0,0,0,0,0,1,0,1,2, -1,1,1,1,1,1,0,0,2,2,2,2,2,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1, -2,3,1,2,1,0,1,1,0,2,2,2,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,2, -1,1,1,1,2,1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0, -2,2,2,2,2,0,0,2,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,0,2,2, -1,1,1,1,1,0,0,1,2,1,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,2,0,0,2,0,1,1,0,0,0,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,1,1, -0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,3,2,0,0,1,0,0,1,0,0,0,0,0,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,2, -1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -2,1,2,2,2,1,2,1,2,2,1,1,2,1,1,1,0,1,1,1,1,2,0,1,0,1,1,1,1,0,1,1, -1,1,2,1,1,1,1,1,1,0,0,1,2,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0, -1,0,0,1,3,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,2,1,0,0,1,0,2,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,1, -0,2,0,1,0,0,1,1,2,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,2,0,1,1,0,2,1,0,1,1,1,0,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,1, -0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,2,2,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1, -0,1,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -2,0,1,0,0,1,2,1,1,1,1,1,1,2,2,1,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0, -1,1,2,1,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,1,2,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1, -0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0, -0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0, -1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,2,0,0,2,0,1,0,0,1,0,0,1, -1,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0, -1,1,1,1,1,1,1,2,0,0,0,0,0,0,2,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -) - -Latin5BulgarianModel = { - 'char_to_order_map': Latin5_BulgarianCharToOrderMap, - 'precedence_matrix': BulgarianLangModel, - 'typical_positive_ratio': 0.969392, - 'keep_english_letter': False, - 'charset_name': "ISO-8859-5", - 'language': 'Bulgairan', -} - -Win1251BulgarianModel = { - 'char_to_order_map': win1251BulgarianCharToOrderMap, - 'precedence_matrix': BulgarianLangModel, - 'typical_positive_ratio': 0.969392, - 'keep_english_letter': False, - 'charset_name': "windows-1251", - 'language': 'Bulgarian', -} diff --git a/venv/lib/python3.6/site-packages/chardet/langcyrillicmodel.py b/venv/lib/python3.6/site-packages/chardet/langcyrillicmodel.py deleted file mode 100644 index e5f9a1f..0000000 --- a/venv/lib/python3.6/site-packages/chardet/langcyrillicmodel.py +++ /dev/null @@ -1,333 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# KOI8-R language model -# Character Mapping Table: -KOI8R_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, # 80 -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, # 90 -223,224,225, 68,226,227,228,229,230,231,232,233,234,235,236,237, # a0 -238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253, # b0 - 27, 3, 21, 28, 13, 2, 39, 19, 26, 4, 23, 11, 8, 12, 5, 1, # c0 - 15, 16, 9, 7, 6, 14, 24, 10, 17, 18, 20, 25, 30, 29, 22, 54, # d0 - 59, 37, 44, 58, 41, 48, 53, 46, 55, 42, 60, 36, 49, 38, 31, 34, # e0 - 35, 43, 45, 32, 40, 52, 56, 33, 61, 62, 51, 57, 47, 63, 50, 70, # f0 -) - -win1251_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, -223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, -239,240,241,242,243,244,245,246, 68,247,248,249,250,251,252,253, - 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, - 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, - 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, - 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, -) - -latin5_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, -223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, - 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, - 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, - 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, - 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, -239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255, -) - -macCyrillic_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 - 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, - 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, -223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, -239,240,241,242,243,244,245,246,247,248,249,250,251,252, 68, 16, - 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, - 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27,255, -) - -IBM855_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 -191,192,193,194, 68,195,196,197,198,199,200,201,202,203,204,205, -206,207,208,209,210,211,212,213,214,215,216,217, 27, 59, 54, 70, - 3, 37, 21, 44, 28, 58, 13, 41, 2, 48, 39, 53, 19, 46,218,219, -220,221,222,223,224, 26, 55, 4, 42,225,226,227,228, 23, 60,229, -230,231,232,233,234,235, 11, 36,236,237,238,239,240,241,242,243, - 8, 49, 12, 38, 5, 31, 1, 34, 15,244,245,246,247, 35, 16,248, - 43, 9, 45, 7, 32, 6, 40, 14, 52, 24, 56, 10, 33, 17, 61,249, -250, 18, 62, 20, 51, 25, 57, 30, 47, 29, 63, 22, 50,251,252,255, -) - -IBM866_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 - 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, - 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, - 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, -223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, - 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, -239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255, -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 97.6601% -# first 1024 sequences: 2.3389% -# rest sequences: 0.1237% -# negative sequences: 0.0009% -RussianLangModel = ( -0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,1,3,3,3,2,3,2,3,3, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,2,2,2,2,2,0,0,2, -3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,2,3,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,2,2,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,2,3,3,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1, -0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1, -0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,2,2,2,3,1,3,3,1,3,3,3,3,2,2,3,0,2,2,2,3,3,2,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,3,3,3,2,2,3,2,3,3,3,2,1,2,2,0,1,2,2,2,2,2,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,0,2,2,3,3,2,1,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,1,2,3,2,2,3,2,3,3,3,3,2,2,3,0,3,2,2,3,1,1,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,3,3,3,3,2,2,2,0,3,3,3,2,2,2,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,2,3,2,2,0,1,3,2,1,2,2,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,2,1,1,3,0,1,1,1,1,2,1,1,0,2,2,2,1,2,0,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,2,2,2,2,1,3,2,3,2,3,2,1,2,2,0,1,1,2,1,2,1,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,2,3,3,3,2,2,2,2,0,2,2,2,2,3,1,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -3,2,3,2,2,3,3,3,3,3,3,3,3,3,1,3,2,0,0,3,3,3,3,2,3,3,3,3,2,3,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,3,2,2,3,3,0,2,1,0,3,2,3,2,3,0,0,1,2,0,0,1,0,1,2,1,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,3,0,2,3,3,3,3,2,3,3,3,3,1,2,2,0,0,2,3,2,2,2,3,2,3,2,2,3,0,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,0,2,3,2,3,0,1,2,3,3,2,0,2,3,0,0,2,3,2,2,0,1,3,1,3,2,2,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,3,0,2,3,3,3,3,3,3,3,3,2,1,3,2,0,0,2,2,3,3,3,2,3,3,0,2,2,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,2,3,3,2,2,2,3,3,0,0,1,1,1,1,1,2,0,0,1,1,1,1,0,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,0,3,2,3,3,2,3,2,0,2,1,0,1,1,0,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,3,2,2,2,2,3,1,3,2,3,1,1,2,1,0,2,2,2,2,1,3,1,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -2,2,3,3,3,3,3,1,2,2,1,3,1,0,3,0,0,3,0,0,0,1,1,0,1,2,1,0,0,0,0,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,2,1,1,3,3,3,2,2,1,2,2,3,1,1,2,0,0,2,2,1,3,0,0,2,1,1,2,1,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,3,3,3,1,2,2,2,1,2,1,3,3,1,1,2,1,2,1,2,2,0,2,0,0,1,1,0,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,3,2,1,3,2,2,3,2,0,3,2,0,3,0,1,0,1,1,0,0,1,1,1,1,0,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,2,3,3,3,2,2,2,3,3,1,2,1,2,1,0,1,0,1,1,0,1,0,0,2,1,1,1,0,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -3,1,1,2,1,2,3,3,2,2,1,2,2,3,0,2,1,0,0,2,2,3,2,1,2,2,2,2,2,3,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,1,1,0,1,1,2,2,1,1,3,0,0,1,3,1,1,1,0,0,0,1,0,1,1,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,1,3,3,3,2,0,0,0,2,1,0,1,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,1,0,0,2,3,2,2,2,1,2,2,2,1,2,1,0,0,1,1,1,0,2,0,1,1,1,0,0,1,1, -1,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,0,0,0,0,1,0,0,0,0,3,0,1,2,1,0,0,0,0,0,0,0,1,1,0,0,1,1, -1,0,1,0,1,2,0,0,1,1,2,1,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0, -2,2,3,2,2,2,3,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0,1,0,1,1,1,0,2,1, -1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0, -3,3,3,2,2,2,2,3,2,2,1,1,2,2,2,2,1,1,3,1,2,1,2,0,0,1,1,0,1,0,2,1, -1,1,1,1,1,2,1,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0, -2,0,0,1,0,3,2,2,2,2,1,2,1,2,1,2,0,0,0,2,1,2,2,1,1,2,2,0,1,1,0,2, -1,1,1,1,1,0,1,1,1,2,1,1,1,2,1,0,1,2,1,1,1,1,0,1,1,1,0,0,1,0,0,1, -1,3,2,2,2,1,1,1,2,3,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,1,0,0,0,0,1,1, -1,0,1,1,0,1,0,1,1,0,1,1,0,2,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0, -2,3,2,3,2,1,2,2,2,2,1,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,2,1, -1,1,2,1,0,2,0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0, -3,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,0,0,0,2,1,2,1,1,1,2,2,0,0,0,1,2, -1,1,1,1,1,0,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1, -2,3,2,3,3,2,0,1,1,1,0,0,1,0,2,0,1,1,3,1,0,0,0,0,0,0,0,1,0,0,2,1, -1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,0,1,0,0,0,0,0,0,1,0, -2,3,3,3,3,1,2,2,2,2,0,1,1,0,2,1,1,1,2,1,0,1,1,0,0,1,0,1,0,0,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,2,0,0,1,1,2,2,1,0,0,2,0,1,1,3,0,0,1,0,0,0,0,0,1,0,1,2,1, -1,1,2,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0, -1,3,2,3,2,1,0,0,2,2,2,0,1,0,2,0,1,1,1,0,1,0,0,0,3,0,1,1,0,0,2,1, -1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,0,2,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0, -3,1,2,1,1,2,2,2,2,2,2,1,2,2,1,1,0,0,0,2,2,2,0,0,0,1,2,1,0,1,0,1, -2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1, -3,0,0,0,0,2,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1, -1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1, -1,3,3,2,2,0,0,0,2,2,0,0,0,1,2,0,1,1,2,0,0,0,0,0,0,0,0,1,0,0,2,1, -0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0, -2,3,2,3,2,0,0,0,0,1,1,0,0,0,2,0,2,0,2,0,0,0,0,0,1,0,0,1,0,0,1,1, -1,1,2,0,1,2,1,0,1,1,2,1,1,1,1,1,2,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0, -1,3,2,2,2,1,0,0,2,2,1,0,1,2,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1, -0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,0,2,3,1,2,2,2,2,2,2,1,1,0,0,0,1,0,1,0,2,1,1,1,0,0,0,0,1, -1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0, -2,0,2,0,0,1,0,3,2,1,2,1,2,2,0,1,0,0,0,2,1,0,0,2,1,1,1,1,0,2,0,2, -2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1, -1,2,2,2,2,1,0,0,1,0,0,0,0,0,2,0,1,1,1,1,0,0,0,0,1,0,1,2,0,0,2,0, -1,0,1,1,1,2,1,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0, -2,1,2,2,2,0,3,0,1,1,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0, -1,2,2,3,2,2,0,0,1,1,2,0,1,2,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1, -0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0, -2,2,1,1,2,1,2,2,2,2,2,1,2,2,0,1,0,0,0,1,2,2,2,1,2,1,1,1,1,1,2,1, -1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1, -1,2,2,2,2,0,1,0,2,2,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0, -0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,2,0,0,0,2,2,2,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1, -0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,2,0,0,0,0,1,0,0,1,1,2,0,0,0,0,1,0,1,0,0,1,0,0,2,0,0,0,1, -0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,1,1,2,0,2,1,1,1,1,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1, -0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -1,0,2,1,2,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0, -0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0, -1,0,0,0,0,2,0,1,2,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1, -0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1, -2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -1,1,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0, -0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, -) - -Koi8rModel = { - 'char_to_order_map': KOI8R_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "KOI8-R", - 'language': 'Russian', -} - -Win1251CyrillicModel = { - 'char_to_order_map': win1251_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "windows-1251", - 'language': 'Russian', -} - -Latin5CyrillicModel = { - 'char_to_order_map': latin5_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "ISO-8859-5", - 'language': 'Russian', -} - -MacCyrillicModel = { - 'char_to_order_map': macCyrillic_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "MacCyrillic", - 'language': 'Russian', -} - -Ibm866Model = { - 'char_to_order_map': IBM866_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "IBM866", - 'language': 'Russian', -} - -Ibm855Model = { - 'char_to_order_map': IBM855_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "IBM855", - 'language': 'Russian', -} diff --git a/venv/lib/python3.6/site-packages/chardet/langgreekmodel.py b/venv/lib/python3.6/site-packages/chardet/langgreekmodel.py deleted file mode 100644 index 5332221..0000000 --- a/venv/lib/python3.6/site-packages/chardet/langgreekmodel.py +++ /dev/null @@ -1,225 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Character Mapping Table: -Latin7_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40 - 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50 -253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60 - 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90 -253,233, 90,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0 -253,253,253,253,247,248, 61, 36, 46, 71, 73,253, 54,253,108,123, # b0 -110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0 - 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0 -124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0 - 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0 -) - -win1253_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40 - 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50 -253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60 - 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90 -253,233, 61,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0 -253,253,253,253,247,253,253, 36, 46, 71, 73,253, 54,253,108,123, # b0 -110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0 - 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0 -124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0 - 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0 -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 98.2851% -# first 1024 sequences:1.7001% -# rest sequences: 0.0359% -# negative sequences: 0.0148% -GreekLangModel = ( -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,2,2,3,3,3,3,3,3,3,3,1,3,3,3,0,2,2,3,3,0,3,0,3,2,0,3,3,3,0, -3,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,0,3,3,0,3,2,3,3,0,3,2,3,3,3,0,0,3,0,3,0,3,3,2,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, -0,2,3,2,2,3,3,3,3,3,3,3,3,0,3,3,3,3,0,2,3,3,0,3,3,3,3,2,3,3,3,0, -2,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,3,3,3,2,3,3,2,3,3,2,0, -0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,2,3,3,0, -2,0,1,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,2,3,0,0,0,0,3,3,0,3,1,3,3,3,0,3,3,0,3,3,3,3,0,0,0,0, -2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,0,3,0,3,3,3,3,3,0,3,2,2,2,3,0,2,3,3,3,3,3,2,3,3,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,3,2,2,2,3,3,3,3,0,3,1,3,3,3,3,2,3,3,3,3,3,3,3,2,2,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,2,0,3,0,0,0,3,3,2,3,3,3,3,3,0,0,3,2,3,0,2,3,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,3,0,0,3,3,0,2,3,0,3,0,3,3,3,0,0,3,0,3,0,2,2,3,3,0,0, -0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,2,0,3,2,3,3,3,3,0,3,3,3,3,3,0,3,3,2,3,2,3,3,2,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,2,3,2,3,3,3,3,3,3,0,2,3,2,3,2,2,2,3,2,3,3,2,3,0,2,2,2,3,0, -2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,0,0,0,3,3,3,2,3,3,0,0,3,0,3,0,0,0,3,2,0,3,0,3,0,0,2,0,2,0, -0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,0,0,0,3,3,0,3,3,3,0,0,1,2,3,0, -3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,2,0,0,3,2,2,3,3,0,3,3,3,3,3,2,1,3,0,3,2,3,3,2,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,3,0,2,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,3,0,3,2,3,0,0,3,3,3,0, -3,0,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,0,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,2,0,3,2,3,0,0,3,2,3,0, -2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,1,2,2,3,3,3,3,3,3,0,2,3,0,3,0,0,0,3,3,0,3,0,2,0,0,2,3,1,0, -2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,3,0,3,0,3,3,2,3,0,3,3,3,3,3,3,0,3,3,3,0,2,3,0,0,3,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,0,0,3,0,0,0,3,3,0,3,0,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,0,0,0,3,3,3,3,3,3,0,0,3,0,2,0,0,0,3,3,0,3,0,3,0,0,2,0,2,0, -0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,3,0,3,0,2,0,3,2,0,3,2,3,2,3,0,0,3,2,3,2,3,3,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,0,0,2,3,3,3,3,3,0,0,0,3,0,2,1,0,0,3,2,2,2,0,3,0,0,2,2,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,2,0,3,0,3,0,3,3,0,2,1,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,3,3,3,0,3,3,3,3,3,3,0,2,3,0,3,0,0,0,2,1,0,2,2,3,0,0,2,2,2,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,0,0,2,3,3,3,2,3,0,0,1,3,0,2,0,0,0,0,3,0,1,0,2,0,0,1,1,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,1,0,3,0,0,0,3,2,0,3,2,3,3,3,0,0,3,0,3,2,2,2,1,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,0,0,3,0,0,0,0,2,0,2,3,3,2,2,2,2,3,0,2,0,2,2,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,2,0,0,0,0,0,0,2,3,0,2,0,2,3,2,0,0,3,0,3,0,3,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,3,2,3,3,2,2,3,0,2,0,3,0,0,0,2,0,0,0,0,1,2,0,2,0,2,0, -0,2,0,2,0,2,2,0,0,1,0,2,2,2,0,2,2,2,0,2,2,2,0,0,2,0,0,1,0,0,0,0, -0,2,0,3,3,2,0,0,0,0,0,0,1,3,0,2,0,2,2,2,0,0,2,0,3,0,0,2,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,2,3,2,0,2,2,0,2,0,2,2,0,2,0,2,2,2,0,0,0,0,0,0,2,3,0,0,0,2, -0,1,2,0,0,0,0,2,2,0,0,0,2,1,0,2,2,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0, -0,0,2,1,0,2,3,2,2,3,2,3,2,0,0,3,3,3,0,0,3,2,0,0,0,1,1,0,2,0,2,2, -0,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2,2,2,0,0,2,0,0,0,2,0,1,0,0,0,0, -0,3,0,3,3,2,2,0,3,0,0,0,2,2,0,2,2,2,1,2,0,0,1,2,2,0,0,3,0,0,0,2, -0,1,2,0,0,0,1,2,0,0,0,0,0,0,0,2,2,0,1,0,0,2,0,0,0,2,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,3,3,2,2,0,0,0,2,0,2,3,3,0,2,0,0,0,0,0,0,2,2,2,0,2,2,0,2,0,2, -0,2,2,0,0,2,2,2,2,1,0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0, -0,2,0,3,2,3,0,0,0,3,0,0,2,2,0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,0,2, -0,0,2,2,0,0,2,2,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,2,0,0,3,2,0,2,2,2,2,2,0,0,0,2,0,0,0,0,2,0,1,0,0,2,0,1,0,0,0, -0,2,2,2,0,2,2,0,1,2,0,2,2,2,0,2,2,2,2,1,2,2,0,0,2,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,2,0,2,0,2,2,0,0,0,0,1,2,1,0,0,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,3,2,3,0,0,2,0,0,0,2,2,0,2,0,0,0,1,0,0,2,0,2,0,2,2,0,0,0,0, -0,0,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, -0,2,2,3,2,2,0,0,0,0,0,0,1,3,0,2,0,2,2,0,0,0,1,0,2,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,0,2,0,3,2,0,2,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -0,0,2,0,0,0,0,1,1,0,0,2,1,2,0,2,2,0,1,0,0,1,0,0,0,2,0,0,0,0,0,0, -0,3,0,2,2,2,0,0,2,0,0,0,2,0,0,0,2,3,0,2,0,0,0,0,0,0,2,2,0,0,0,2, -0,1,2,0,0,0,1,2,2,1,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,1,2,0,2,2,0,2,0,0,2,0,0,0,0,1,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0, -0,0,2,0,0,0,3,1,2,2,0,2,0,0,0,0,2,0,0,0,2,0,0,3,0,0,0,0,2,2,2,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,1,0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,2, -0,2,2,0,0,2,2,2,2,2,0,1,2,0,0,0,2,2,0,1,0,2,0,0,2,2,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,2, -0,1,2,0,0,0,0,2,2,1,0,1,0,1,0,2,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0, -0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,0,0,1,0,0,0,0,0,0,2, -0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0, -0,2,2,2,2,0,0,0,3,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,1, -0,0,2,0,0,0,0,1,2,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0, -0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,2, -0,0,1,0,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, -0,3,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,2, -0,0,2,0,0,0,0,2,2,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,0,2,2,1,0,0,0,0,0,0,2,0,0,2,0,2,2,2,0,0,0,0,0,0,2,0,0,0,0,2, -0,0,2,0,0,2,0,2,2,0,0,0,0,2,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0, -0,0,3,0,0,0,2,2,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0, -0,2,2,2,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1, -0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,2,0,0,0,2,0,0,0,0,0,1,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,2,0,0,0, -0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,2,0,2,0,0,0, -0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -) - -Latin7GreekModel = { - 'char_to_order_map': Latin7_char_to_order_map, - 'precedence_matrix': GreekLangModel, - 'typical_positive_ratio': 0.982851, - 'keep_english_letter': False, - 'charset_name': "ISO-8859-7", - 'language': 'Greek', -} - -Win1253GreekModel = { - 'char_to_order_map': win1253_char_to_order_map, - 'precedence_matrix': GreekLangModel, - 'typical_positive_ratio': 0.982851, - 'keep_english_letter': False, - 'charset_name': "windows-1253", - 'language': 'Greek', -} diff --git a/venv/lib/python3.6/site-packages/chardet/langhebrewmodel.py b/venv/lib/python3.6/site-packages/chardet/langhebrewmodel.py deleted file mode 100644 index 58f4c87..0000000 --- a/venv/lib/python3.6/site-packages/chardet/langhebrewmodel.py +++ /dev/null @@ -1,200 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Simon Montagu -# Portions created by the Initial Developer are Copyright (C) 2005 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# Shoshannah Forbes - original C code (?) -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Windows-1255 language model -# Character Mapping Table: -WIN1255_CHAR_TO_ORDER_MAP = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 69, 91, 79, 80, 92, 89, 97, 90, 68,111,112, 82, 73, 95, 85, # 40 - 78,121, 86, 71, 67,102,107, 84,114,103,115,253,253,253,253,253, # 50 -253, 50, 74, 60, 61, 42, 76, 70, 64, 53,105, 93, 56, 65, 54, 49, # 60 - 66,110, 51, 43, 44, 63, 81, 77, 98, 75,108,253,253,253,253,253, # 70 -124,202,203,204,205, 40, 58,206,207,208,209,210,211,212,213,214, -215, 83, 52, 47, 46, 72, 32, 94,216,113,217,109,218,219,220,221, - 34,116,222,118,100,223,224,117,119,104,125,225,226, 87, 99,227, -106,122,123,228, 55,229,230,101,231,232,120,233, 48, 39, 57,234, - 30, 59, 41, 88, 33, 37, 36, 31, 29, 35,235, 62, 28,236,126,237, -238, 38, 45,239,240,241,242,243,127,244,245,246,247,248,249,250, - 9, 8, 20, 16, 3, 2, 24, 14, 22, 1, 25, 15, 4, 11, 6, 23, - 12, 19, 13, 26, 18, 27, 21, 17, 7, 10, 5,251,252,128, 96,253, -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 98.4004% -# first 1024 sequences: 1.5981% -# rest sequences: 0.087% -# negative sequences: 0.0015% -HEBREW_LANG_MODEL = ( -0,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,3,2,1,2,0,1,0,0, -3,0,3,1,0,0,1,3,2,0,1,1,2,0,2,2,2,1,1,1,1,2,1,1,1,2,0,0,2,2,0,1, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2, -1,2,1,2,1,2,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2, -1,2,1,3,1,1,0,0,2,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,1,2,2,1,3, -1,2,1,1,2,2,0,0,2,2,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,2,2,2,3,2, -1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,3,2,2,3,2,2,2,1,2,2,2,2, -1,2,1,1,2,2,0,1,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,2,2,2,2,2, -0,2,0,2,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,2,2,2, -0,2,1,2,2,2,0,0,2,1,0,0,0,0,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,2,3,2,2,2, -1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0, -3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,2,0,2, -0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,2,2,3,2,1,2,1,1,1, -0,1,1,1,1,1,3,0,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,0, -0,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2, -0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,2,3,3,3,2,1,2,3,3,2,3,3,3,3,2,3,2,1,2,0,2,1,2, -0,2,0,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0, -3,3,3,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,2,3,2,3,2,2,3,1,2,2,0,2,2,2, -0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,2,2,3,3,3,3,1,3,2,2,2, -0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,2,3,2,2,2,1,2,2,0,2,2,2,2, -0,2,0,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,1,3,2,3,3,2,3,3,2,2,1,2,2,2,2,2,2, -0,2,1,2,1,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,2,3,2,3,3,2,3,3,3,3,2,3,2,3,3,3,3,3,2,2,2,2,2,2,2,1, -0,2,0,1,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,2,1,2,3,3,3,3,3,3,3,2,3,2,3,2,1,2,3,0,2,1,2,2, -0,2,1,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0, -3,3,3,3,3,3,3,3,3,2,3,3,3,3,2,1,3,1,2,2,2,1,2,3,3,1,2,1,2,2,2,2, -0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,0,2,3,3,3,1,3,3,3,1,2,2,2,2,1,1,2,2,2,2,2,2, -0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,2,3,3,3,2,2,3,3,3,2,1,2,3,2,3,2,2,2,2,1,2,1,1,1,2,2, -0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0, -1,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,2,3,3,2,3,1,2,2,2,2,3,2,3,1,1,2,2,1,2,2,1,1,0,2,2,2,2, -0,1,0,1,2,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,0,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0, -0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -3,2,2,1,2,2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,0,3,3,3, -0,3,0,2,2,2,2,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,1,1,1,2,0,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,0, -0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,0,2,1,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -0,3,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,1,0,1,1,1,1,0, -0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,1,1,1,1,2,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0, -0,0,2,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0, -2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,1,1,1,0,0,0,0, -0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,0,1,0,1, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,1,2,2,2,1,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,2,1,2,1,1,0,1,0,1, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,1,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2, -0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,2,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0, -0,1,1,1,2,1,2,2,2,0,2,0,2,0,1,1,2,1,1,1,1,2,1,0,1,1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,1,0,0,0,0,0,1,0,1,2,2,0,1,0,0,1,1,2,2,1,2,0,2,0,0,0,1,2,0,1, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,2,0,2,1,2,0,2,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,1,2,2,0,0,1,0,0,0,1,0,0,1, -1,1,2,1,0,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,2,1, -0,2,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,1,0,1, -2,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,1,2,1,1,2,0,1,0,0,0,1,1,0,1, -1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,0,0,2,1,1,2,0,2,0,0,0,1,1,0,1, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,2,2,1,2,1,1,0,1,0,0,0,1,1,0,1, -2,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,1,0,1, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,2,1,1,1,0,2,1,1,0,0,0,2,1,0,1, -1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,0,2,1,1,0,1,0,0,0,1,1,0,1, -2,2,1,1,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,0,1,2,1,0,2,0,0,0,1,1,0,1, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0, -0,1,0,0,2,0,2,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1, -1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,2,1,1,1,1,1,0,1,0,0,0,0,1,0,1, -0,1,1,1,2,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0, -) - -Win1255HebrewModel = { - 'char_to_order_map': WIN1255_CHAR_TO_ORDER_MAP, - 'precedence_matrix': HEBREW_LANG_MODEL, - 'typical_positive_ratio': 0.984004, - 'keep_english_letter': False, - 'charset_name': "windows-1255", - 'language': 'Hebrew', -} diff --git a/venv/lib/python3.6/site-packages/chardet/langhungarianmodel.py b/venv/lib/python3.6/site-packages/chardet/langhungarianmodel.py deleted file mode 100644 index bb7c095..0000000 --- a/venv/lib/python3.6/site-packages/chardet/langhungarianmodel.py +++ /dev/null @@ -1,225 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Character Mapping Table: -Latin2_HungarianCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47, - 46, 71, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253, -253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8, - 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253, -159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174, -175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190, -191,192,193,194,195,196,197, 75,198,199,200,201,202,203,204,205, - 79,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220, -221, 51, 81,222, 78,223,224,225,226, 44,227,228,229, 61,230,231, -232,233,234, 58,235, 66, 59,236,237,238, 60, 69, 63,239,240,241, - 82, 14, 74,242, 70, 80,243, 72,244, 15, 83, 77, 84, 30, 76, 85, -245,246,247, 25, 73, 42, 24,248,249,250, 31, 56, 29,251,252,253, -) - -win1250HungarianCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47, - 46, 72, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253, -253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8, - 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253, -161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176, -177,178,179,180, 78,181, 69,182,183,184,185,186,187,188,189,190, -191,192,193,194,195,196,197, 76,198,199,200,201,202,203,204,205, - 81,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220, -221, 51, 83,222, 80,223,224,225,226, 44,227,228,229, 61,230,231, -232,233,234, 58,235, 66, 59,236,237,238, 60, 70, 63,239,240,241, - 84, 14, 75,242, 71, 82,243, 73,244, 15, 85, 79, 86, 30, 77, 87, -245,246,247, 25, 74, 42, 24,248,249,250, 31, 56, 29,251,252,253, -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 94.7368% -# first 1024 sequences:5.2623% -# rest sequences: 0.8894% -# negative sequences: 0.0009% -HungarianLangModel = ( -0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, -3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,2,3,3,1,1,2,2,2,2,2,1,2, -3,2,2,3,3,3,3,3,2,3,3,3,3,3,3,1,2,3,3,3,3,2,3,3,1,1,3,3,0,1,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, -3,2,1,3,3,3,3,3,2,3,3,3,3,3,1,1,2,3,3,3,3,3,3,3,1,1,3,2,0,1,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,1,1,2,3,3,3,1,3,3,3,3,3,1,3,3,2,2,0,3,2,3, -0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,3,3,2,3,3,2,2,3,2,3,2,0,3,2,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, -3,3,3,3,3,3,2,3,3,3,3,3,2,3,3,3,1,2,3,2,2,3,1,2,3,3,2,2,0,3,3,3, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,2,3,3,3,3,2,3,3,3,3,0,2,3,2, -0,0,0,1,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,1,1,1,3,3,2,1,3,2,2,3,2,1,3,2,2,1,0,3,3,1, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,2,2,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,3,2,2,3,1,1,3,2,0,1,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,1,3,3,3,3,3,2,2,1,3,3,3,0,1,1,2, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,2,0,3,2,3, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0, -3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,1,3,2,2,2,3,1,1,3,3,1,1,0,3,3,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,2,3,3,3,3,3,1,2,3,2,2,0,2,2,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,2,2,2,3,1,3,3,2,2,1,3,3,3,1,1,3,1,2,3,2,3,2,2,2,1,0,2,2,2, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, -3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,2,2,3,2,1,0,3,2,0,1,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,1,0,3,3,3,3,0,2,3,0,0,2,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,2,3,3,2,2,2,2,3,3,0,1,2,3,2,3,2,2,3,2,1,2,0,2,2,2, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, -3,3,3,3,3,3,1,2,3,3,3,2,1,2,3,3,2,2,2,3,2,3,3,1,3,3,1,1,0,2,3,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,1,2,2,2,2,3,3,3,1,1,1,3,3,1,1,3,1,1,3,2,1,2,3,1,1,0,2,2,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,2,1,2,1,1,3,3,1,1,1,1,3,3,1,1,2,2,1,2,1,1,2,2,1,1,0,2,2,1, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,1,1,2,1,1,3,3,1,0,1,1,3,3,2,0,1,1,2,3,1,0,2,2,1,0,0,1,3,2, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,2,1,3,3,3,3,3,1,2,3,2,3,3,2,1,1,3,2,3,2,1,2,2,0,1,2,1,0,0,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,2,2,2,2,3,1,2,2,1,1,3,3,0,3,2,1,2,3,2,1,3,3,1,1,0,2,1,3, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,2,2,2,3,2,3,3,3,2,1,1,3,3,1,1,1,2,2,3,2,3,2,2,2,1,0,2,2,1, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -1,0,0,3,3,3,3,3,0,0,3,3,2,3,0,0,0,2,3,3,1,0,1,2,0,0,1,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,2,3,3,3,3,3,1,2,3,3,2,2,1,1,0,3,3,2,2,1,2,2,1,0,2,2,0,1,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,2,2,1,3,1,2,3,3,2,2,1,1,2,2,1,1,1,1,3,2,1,1,1,1,2,1,0,1,2,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -2,3,3,1,1,1,1,1,3,3,3,0,1,1,3,3,1,1,1,1,1,2,2,0,3,1,1,2,0,2,1,1, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,1,0,1,2,1,2,2,0,1,2,3,1,2,0,0,0,2,1,1,1,1,1,2,0,0,1,1,0,0,0,0, -1,2,1,2,2,2,1,2,1,2,0,2,0,2,2,1,1,2,1,1,2,1,1,1,0,1,0,0,0,1,1,0, -1,1,1,2,3,2,3,3,0,1,2,2,3,1,0,1,0,2,1,2,2,0,1,1,0,0,1,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,3,3,2,2,1,0,0,3,2,3,2,0,0,0,1,1,3,0,0,1,1,0,0,2,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,2,2,3,3,1,0,1,3,2,3,1,1,1,0,1,1,1,1,1,3,1,0,0,2,2,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,1,2,2,2,1,0,1,2,3,3,2,0,0,0,2,1,1,1,2,1,1,1,0,1,1,1,0,0,0, -1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,0,0,1,1, -3,2,2,1,0,0,1,1,2,2,0,3,0,1,2,1,1,0,0,1,1,1,0,1,1,1,1,0,2,1,1,1, -2,2,1,1,1,2,1,2,1,1,1,1,1,1,1,2,1,1,1,2,3,1,1,1,1,1,1,1,1,1,0,1, -2,3,3,0,1,0,0,0,3,3,1,0,0,1,2,2,1,0,0,0,0,2,0,0,1,1,1,0,2,1,1,1, -2,1,1,1,1,1,1,2,1,1,0,1,1,0,1,1,1,0,1,2,1,1,0,1,1,1,1,1,1,1,0,1, -2,3,3,0,1,0,0,0,2,2,0,0,0,0,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,1,0, -2,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1, -3,2,2,0,1,0,1,0,2,3,2,0,0,1,2,2,1,0,0,1,1,1,0,0,2,1,0,1,2,2,1,1, -2,1,1,1,1,1,1,2,1,1,1,1,1,1,0,2,1,0,1,1,0,1,1,1,0,1,1,2,1,1,0,1, -2,2,2,0,0,1,0,0,2,2,1,1,0,0,2,1,1,0,0,0,1,2,0,0,2,1,0,0,2,1,1,1, -2,1,1,1,1,2,1,2,1,1,1,2,2,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1, -1,2,3,0,0,0,1,0,3,2,1,0,0,1,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,2,1, -1,1,0,0,0,1,0,1,1,1,1,1,2,0,0,1,0,0,0,2,0,0,1,1,1,1,1,1,1,1,0,1, -3,0,0,2,1,2,2,1,0,0,2,1,2,2,0,0,0,2,1,1,1,0,1,1,0,0,1,1,2,0,0,0, -1,2,1,2,2,1,1,2,1,2,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,0,0,1, -1,3,2,0,0,0,1,0,2,2,2,0,0,0,2,2,1,0,0,0,0,3,1,1,1,1,0,0,2,1,1,1, -2,1,0,1,1,1,0,1,1,1,1,1,1,1,0,2,1,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1, -2,3,2,0,0,0,1,0,2,2,0,0,0,0,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,1,0, -2,1,1,1,1,2,1,2,1,2,0,1,1,1,0,2,1,1,1,2,1,1,1,1,0,1,1,1,1,1,0,1, -3,1,1,2,2,2,3,2,1,1,2,2,1,1,0,1,0,2,2,1,1,1,1,1,0,0,1,1,0,1,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,0,0,0,0,0,2,2,0,0,0,0,2,2,1,0,0,0,1,1,0,0,1,2,0,0,2,1,1,1, -2,2,1,1,1,2,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,1,1,0,1,2,1,1,1,0,1, -1,0,0,1,2,3,2,1,0,0,2,0,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,0,0,0,0, -1,2,1,2,1,2,1,1,1,2,0,2,1,1,1,0,1,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0, -2,3,2,0,0,0,0,0,1,1,2,1,0,0,1,1,1,0,0,0,0,2,0,0,1,1,0,0,2,1,1,1, -2,1,1,1,1,1,1,2,1,0,1,1,1,1,0,2,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1, -1,2,2,0,1,1,1,0,2,2,2,0,0,0,3,2,1,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0, -1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,0,0,1,1,1,0,1,0,1, -2,1,0,2,1,1,2,2,1,1,2,1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0, -1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0, -1,2,3,0,0,0,1,0,2,2,0,0,0,0,2,2,0,0,0,0,0,1,0,0,1,0,0,0,2,0,1,0, -2,1,1,1,1,1,0,2,0,0,0,1,2,1,1,1,1,0,1,2,0,1,0,1,0,1,1,1,0,1,0,1, -2,2,2,0,0,0,1,0,2,1,2,0,0,0,1,1,2,0,0,0,0,1,0,0,1,1,0,0,2,1,0,1, -2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1, -1,2,2,0,0,0,1,0,2,2,2,0,0,0,1,1,0,0,0,0,0,1,1,0,2,0,0,1,1,1,0,1, -1,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1, -1,0,0,1,0,1,2,1,0,0,1,1,1,2,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,0,0,0, -0,2,1,2,1,1,1,1,1,2,0,2,0,1,1,0,1,2,1,0,1,1,1,0,0,0,0,0,0,1,0,0, -2,1,1,0,1,2,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,2,1,0,1, -2,2,1,1,1,1,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,0,1,0,1,1,1,1,1,0,1, -1,2,2,0,0,0,0,0,1,1,0,0,0,0,2,1,0,0,0,0,0,2,0,0,2,2,0,0,2,0,0,1, -2,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1, -1,1,2,0,0,3,1,0,2,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,1,0,1,0, -1,2,1,0,1,1,1,2,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0, -2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,2,0,0,0, -2,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,1,0,1, -2,1,1,1,2,1,1,1,0,1,1,2,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,0,1,1,1,1,1,0,0,1,1,2,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,0,0,0, -1,2,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0, -2,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,2,0,0,1,0,0,1,0,1,0,0,0, -0,1,1,1,1,1,1,1,1,2,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0, -1,0,0,1,1,1,1,1,0,0,2,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0, -0,1,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0, -1,0,0,1,1,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0, -0,0,0,1,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,1,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0, -2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, -0,1,1,1,1,1,1,0,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0, -) - -Latin2HungarianModel = { - 'char_to_order_map': Latin2_HungarianCharToOrderMap, - 'precedence_matrix': HungarianLangModel, - 'typical_positive_ratio': 0.947368, - 'keep_english_letter': True, - 'charset_name': "ISO-8859-2", - 'language': 'Hungarian', -} - -Win1250HungarianModel = { - 'char_to_order_map': win1250HungarianCharToOrderMap, - 'precedence_matrix': HungarianLangModel, - 'typical_positive_ratio': 0.947368, - 'keep_english_letter': True, - 'charset_name': "windows-1250", - 'language': 'Hungarian', -} diff --git a/venv/lib/python3.6/site-packages/chardet/langthaimodel.py b/venv/lib/python3.6/site-packages/chardet/langthaimodel.py deleted file mode 100644 index 15f94c2..0000000 --- a/venv/lib/python3.6/site-packages/chardet/langthaimodel.py +++ /dev/null @@ -1,199 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# The following result for thai was collected from a limited sample (1M). - -# Character Mapping Table: -TIS620CharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,182,106,107,100,183,184,185,101, 94,186,187,108,109,110,111, # 40 -188,189,190, 89, 95,112,113,191,192,193,194,253,253,253,253,253, # 50 -253, 64, 72, 73,114, 74,115,116,102, 81,201,117, 90,103, 78, 82, # 60 - 96,202, 91, 79, 84,104,105, 97, 98, 92,203,253,253,253,253,253, # 70 -209,210,211,212,213, 88,214,215,216,217,218,219,220,118,221,222, -223,224, 99, 85, 83,225,226,227,228,229,230,231,232,233,234,235, -236, 5, 30,237, 24,238, 75, 8, 26, 52, 34, 51,119, 47, 58, 57, - 49, 53, 55, 43, 20, 19, 44, 14, 48, 3, 17, 25, 39, 62, 31, 54, - 45, 9, 16, 2, 61, 15,239, 12, 42, 46, 18, 21, 76, 4, 66, 63, - 22, 10, 1, 36, 23, 13, 40, 27, 32, 35, 86,240,241,242,243,244, - 11, 28, 41, 29, 33,245, 50, 37, 6, 7, 67, 77, 38, 93,246,247, - 68, 56, 59, 65, 69, 60, 70, 80, 71, 87,248,249,250,251,252,253, -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 92.6386% -# first 1024 sequences:7.3177% -# rest sequences: 1.0230% -# negative sequences: 0.0436% -ThaiLangModel = ( -0,1,3,3,3,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,0,0,3,3,3,0,3,3,3,3, -0,3,3,0,0,0,1,3,0,3,3,2,3,3,0,1,2,3,3,3,3,0,2,0,2,0,0,3,2,1,2,2, -3,0,3,3,2,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,0,3,2,3,0,2,2,2,3, -0,2,3,0,0,0,0,1,0,1,2,3,1,1,3,2,2,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1, -3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,2,3,2,3,3,2,2,2, -3,1,2,3,0,3,3,2,2,1,2,3,3,1,2,0,1,3,0,1,0,0,1,0,0,0,0,0,0,0,1,1, -3,3,2,2,3,3,3,3,1,2,3,3,3,3,3,2,2,2,2,3,3,2,2,3,3,2,2,3,2,3,2,2, -3,3,1,2,3,1,2,2,3,3,1,0,2,1,0,0,3,1,2,1,0,0,1,0,0,0,0,0,0,1,0,1, -3,3,3,3,3,3,2,2,3,3,3,3,2,3,2,2,3,3,2,2,3,2,2,2,2,1,1,3,1,2,1,1, -3,2,1,0,2,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0, -3,3,3,2,3,2,3,3,2,2,3,2,3,3,2,3,1,1,2,3,2,2,2,3,2,2,2,2,2,1,2,1, -2,2,1,1,3,3,2,1,0,1,2,2,0,1,3,0,0,0,1,1,0,0,0,0,0,2,3,0,0,2,1,1, -3,3,2,3,3,2,0,0,3,3,0,3,3,0,2,2,3,1,2,2,1,1,1,0,2,2,2,0,2,2,1,1, -0,2,1,0,2,0,0,2,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,2,3,3,2,0,0,3,3,0,2,3,0,2,1,2,2,2,2,1,2,0,0,2,2,2,0,2,2,1,1, -0,2,1,0,2,0,0,2,0,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0, -3,3,2,3,2,3,2,0,2,2,1,3,2,1,3,2,1,2,3,2,2,3,0,2,3,2,2,1,2,2,2,2, -1,2,2,0,0,0,0,2,0,1,2,0,1,1,1,0,1,0,3,1,1,0,0,0,0,0,0,0,0,0,1,0, -3,3,2,3,3,2,3,2,2,2,3,2,2,3,2,2,1,2,3,2,2,3,1,3,2,2,2,3,2,2,2,3, -3,2,1,3,0,1,1,1,0,2,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,0,0, -1,0,0,3,0,3,3,3,3,3,0,0,3,0,2,2,3,3,3,3,3,0,0,0,1,1,3,0,0,0,0,2, -0,0,1,0,0,0,0,0,0,0,2,3,0,0,0,3,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0, -2,0,3,3,3,3,0,0,2,3,0,0,3,0,3,3,2,3,3,3,3,3,0,0,3,3,3,0,0,0,3,3, -0,0,3,0,0,0,0,2,0,0,2,1,1,3,0,0,1,0,0,2,3,0,1,0,0,0,0,0,0,0,1,0, -3,3,3,3,2,3,3,3,3,3,3,3,1,2,1,3,3,2,2,1,2,2,2,3,1,1,2,0,2,1,2,1, -2,2,1,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0, -3,0,2,1,2,3,3,3,0,2,0,2,2,0,2,1,3,2,2,1,2,1,0,0,2,2,1,0,2,1,2,2, -0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,2,1,3,3,1,1,3,0,2,3,1,1,3,2,1,1,2,0,2,2,3,2,1,1,1,1,1,2, -3,0,0,1,3,1,2,1,2,0,3,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, -3,3,1,1,3,2,3,3,3,1,3,2,1,3,2,1,3,2,2,2,2,1,3,3,1,2,1,3,1,2,3,0, -2,1,1,3,2,2,2,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, -3,3,2,3,2,3,3,2,3,2,3,2,3,3,2,1,0,3,2,2,2,1,2,2,2,1,2,2,1,2,1,1, -2,2,2,3,0,1,3,1,1,1,1,0,1,1,0,2,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,2,3,2,2,1,1,3,2,3,2,3,2,0,3,2,2,1,2,0,2,2,2,1,2,2,2,2,1, -3,2,1,2,2,1,0,2,0,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,2,3,1,2,3,3,2,2,3,0,1,1,2,0,3,3,2,2,3,0,1,1,3,0,0,0,0, -3,1,0,3,3,0,2,0,2,1,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,2,3,2,3,3,0,1,3,1,1,2,1,2,1,1,3,1,1,0,2,3,1,1,1,1,1,1,1,1, -3,1,1,2,2,2,2,1,1,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,2,2,1,1,2,1,3,3,2,3,2,2,3,2,2,3,1,2,2,1,2,0,3,2,1,2,2,2,2,2,1, -3,2,1,2,2,2,1,1,1,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,1,3,3,0,2,1,0,3,2,0,0,3,1,0,1,1,0,1,0,0,0,0,0,1, -1,0,0,1,0,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,2,2,2,3,0,0,1,3,0,3,2,0,3,2,2,3,3,3,3,3,1,0,2,2,2,0,2,2,1,2, -0,2,3,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,0,2,3,1,3,3,2,3,3,0,3,3,0,3,2,2,3,2,3,3,3,0,0,2,2,3,0,1,1,1,3, -0,0,3,0,0,0,2,2,0,1,3,0,1,2,2,2,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1, -3,2,3,3,2,0,3,3,2,2,3,1,3,2,1,3,2,0,1,2,2,0,2,3,2,1,0,3,0,0,0,0, -3,0,0,2,3,1,3,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,3,2,2,2,1,2,0,1,3,1,1,3,1,3,0,0,2,1,1,1,1,2,1,1,1,0,2,1,0,1, -1,2,0,0,0,3,1,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,3,1,0,0,0,1,0, -3,3,3,3,2,2,2,2,2,1,3,1,1,1,2,0,1,1,2,1,2,1,3,2,0,0,3,1,1,1,1,1, -3,1,0,2,3,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,2,3,0,3,3,0,2,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,2,3,1,3,0,0,1,2,0,0,2,0,3,3,2,3,3,3,2,3,0,0,2,2,2,0,0,0,2,2, -0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,1,2,3,1,3,3,0,0,1,0,3,0,0,0,0,0, -0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,1,2,3,1,2,3,1,0,3,0,2,2,1,0,2,1,1,2,0,1,0,0,1,1,1,1,0,1,0,0, -1,0,0,0,0,1,1,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,2,1,0,1,1,1,3,1,2,2,2,2,2,2,1,1,1,1,0,3,1,0,1,3,1,1,1,1, -1,1,0,2,0,1,3,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1, -3,0,2,2,1,3,3,2,3,3,0,1,1,0,2,2,1,2,1,3,3,1,0,0,3,2,0,0,0,0,2,1, -0,1,0,0,0,0,1,2,0,1,1,3,1,1,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,0,3,0,0,1,0,0,0,3,0,0,3,0,3,1,0,1,1,1,3,2,0,0,0,3,0,0,0,0,2,0, -0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,1,3,2,1,3,3,1,2,2,0,1,2,1,0,1,2,0,0,0,0,0,3,0,0,0,3,0,0,0,0, -3,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,1,2,0,3,3,3,2,2,0,1,1,0,1,3,0,0,0,2,2,0,0,0,0,3,1,0,1,0,0,0, -0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,2,3,1,2,0,0,2,1,0,3,1,0,1,2,0,1,1,1,1,3,0,0,3,1,1,0,2,2,1,1, -0,2,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,3,1,2,0,0,2,2,0,1,2,0,1,0,1,3,1,2,1,0,0,0,2,0,3,0,0,0,1,0, -0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,1,1,2,2,0,0,0,2,0,2,1,0,1,1,0,1,1,1,2,1,0,0,1,1,1,0,2,1,1,1, -0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1, -0,0,0,2,0,1,3,1,1,1,1,0,0,0,0,3,2,0,1,0,0,0,1,2,0,0,0,1,0,0,0,0, -0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,2,3,2,2,0,0,0,1,0,0,0,0,2,3,2,1,2,2,3,0,0,0,2,3,1,0,0,0,1,1, -0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0, -3,3,2,2,0,1,0,0,0,0,2,0,2,0,1,0,0,0,1,1,0,0,0,2,1,0,1,0,1,1,0,0, -0,1,0,2,0,0,1,0,3,0,1,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,1,0,0,1,0,0,0,0,0,1,1,2,0,0,0,0,1,0,0,1,3,1,0,0,0,0,1,1,0,0, -0,1,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0, -3,3,1,1,1,1,2,3,0,0,2,1,1,1,1,1,0,2,1,1,0,0,0,2,1,0,1,2,1,1,0,1, -2,1,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,3,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1, -0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,2,0,0,0,0,0,0,1,2,1,0,1,1,0,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,2,0,0,0,1,3,0,1,0,0,0,2,0,0,0,0,0,0,0,1,2,0,0,0,0,0, -3,3,0,0,1,1,2,0,0,1,2,1,0,1,1,1,0,1,1,0,0,2,1,1,0,1,0,0,1,1,1,0, -0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,1,0,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,0,1,2,0,1,2,0,0,1,1,0,2,0,1,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0, -1,0,0,1,0,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,2,1,3,0,0,0,0,1,1,0,0,0,0,0,0,0,3, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,1,0,1,0,0,2,0,0,2,0,0,1,1,2,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0, -1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,3,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0, -1,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,1,0,0,2,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -) - -TIS620ThaiModel = { - 'char_to_order_map': TIS620CharToOrderMap, - 'precedence_matrix': ThaiLangModel, - 'typical_positive_ratio': 0.926386, - 'keep_english_letter': False, - 'charset_name': "TIS-620", - 'language': 'Thai', -} diff --git a/venv/lib/python3.6/site-packages/chardet/langturkishmodel.py b/venv/lib/python3.6/site-packages/chardet/langturkishmodel.py deleted file mode 100644 index a427a45..0000000 --- a/venv/lib/python3.6/site-packages/chardet/langturkishmodel.py +++ /dev/null @@ -1,193 +0,0 @@ -# -*- coding: utf-8 -*- -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Özgür Baskın - Turkish Language Model -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Character Mapping Table: -Latin5_TurkishCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255, 23, 37, 47, 39, 29, 52, 36, 45, 53, 60, 16, 49, 20, 46, 42, - 48, 69, 44, 35, 31, 51, 38, 62, 65, 43, 56,255,255,255,255,255, -255, 1, 21, 28, 12, 2, 18, 27, 25, 3, 24, 10, 5, 13, 4, 15, - 26, 64, 7, 8, 9, 14, 32, 57, 58, 11, 22,255,255,255,255,255, -180,179,178,177,176,175,174,173,172,171,170,169,168,167,166,165, -164,163,162,161,160,159,101,158,157,156,155,154,153,152,151,106, -150,149,148,147,146,145,144,100,143,142,141,140,139,138,137,136, - 94, 80, 93,135,105,134,133, 63,132,131,130,129,128,127,126,125, -124,104, 73, 99, 79, 85,123, 54,122, 98, 92,121,120, 91,103,119, - 68,118,117, 97,116,115, 50, 90,114,113,112,111, 55, 41, 40, 86, - 89, 70, 59, 78, 71, 82, 88, 33, 77, 66, 84, 83,110, 75, 61, 96, - 30, 67,109, 74, 87,102, 34, 95, 81,108, 76, 72, 17, 6, 19,107, -) - -TurkishLangModel = ( -3,2,3,3,3,1,3,3,3,3,3,3,3,3,2,1,1,3,3,1,3,3,0,3,3,3,3,3,0,3,1,3, -3,2,1,0,0,1,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, -3,2,2,3,3,0,3,3,3,3,3,3,3,2,3,1,0,3,3,1,3,3,0,3,3,3,3,3,0,3,0,3, -3,1,1,0,1,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,0,1,0,1, -3,3,2,3,3,0,3,3,3,3,3,3,3,2,3,1,1,3,3,0,3,3,1,2,3,3,3,3,0,3,0,3, -3,1,1,0,0,0,1,0,0,0,0,1,1,0,1,2,1,0,0,0,1,0,0,0,0,2,0,0,0,0,0,1, -3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,1,3,3,2,0,3,2,1,2,2,1,3,3,0,0,0,2, -2,2,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1, -3,3,3,2,3,3,1,2,3,3,3,3,3,3,3,1,3,2,1,0,3,2,0,1,2,3,3,2,1,0,0,2, -2,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0, -1,0,1,3,3,1,3,3,3,3,3,3,3,1,2,0,0,2,3,0,2,3,0,0,2,2,2,3,0,3,0,1, -2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,0,3,2,0,2,3,2,3,3,1,0,0,2, -3,2,0,0,1,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,0,2,0,0,1, -3,3,3,2,3,3,2,3,3,3,3,2,3,3,3,0,3,3,0,0,2,1,0,0,2,3,2,2,0,0,0,2, -2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,1,0,2,0,0,1, -3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,0,1,3,2,1,1,3,2,3,2,1,0,0,2, -2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, -3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,2,0,2,3,0,0,2,2,2,2,0,0,0,2, -3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, -3,3,3,3,3,3,3,2,2,2,2,3,2,3,3,0,3,3,1,1,2,2,0,0,2,2,3,2,0,0,1,3, -0,3,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1, -3,3,3,2,3,3,3,2,1,2,2,3,2,3,3,0,3,2,0,0,1,1,0,1,1,2,1,2,0,0,0,1, -0,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0, -3,3,3,2,3,3,2,3,2,2,2,3,3,3,3,1,3,1,1,0,3,2,1,1,3,3,2,3,1,0,0,1, -1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,0,1, -3,2,2,3,3,0,3,3,3,3,3,3,3,2,2,1,0,3,3,1,3,3,0,1,3,3,2,3,0,3,0,3, -2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, -2,2,2,3,3,0,3,3,3,3,3,3,3,3,3,0,0,3,2,0,3,3,0,3,2,3,3,3,0,3,1,3, -2,0,0,0,0,0,0,0,0,0,0,1,0,1,2,0,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, -3,3,3,1,2,3,3,1,0,0,1,0,0,3,3,2,3,0,0,2,0,0,2,0,2,0,0,0,2,0,2,0, -0,3,1,0,1,0,0,0,2,2,1,0,1,1,2,1,2,2,2,0,2,1,1,0,0,0,2,0,0,0,0,0, -1,2,1,3,3,0,3,3,3,3,3,2,3,0,0,0,0,2,3,0,2,3,1,0,2,3,1,3,0,3,0,2, -3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,1,3,3,2,2,3,2,2,0,1,2,3,0,1,2,1,0,1,0,0,0,1,0,2,2,0,0,0,1, -1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0, -3,3,3,1,3,3,1,1,3,3,1,1,3,3,1,0,2,1,2,0,2,1,0,0,1,1,2,1,0,0,0,2, -2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,1,0,2,1,3,0,0,2,0,0,3,3,0,3,0,0,1,0,1,2,0,0,1,1,2,2,0,1,0, -0,1,2,1,1,0,1,0,1,1,1,1,1,0,1,1,1,2,2,1,2,0,1,0,0,0,0,0,0,1,0,0, -3,3,3,2,3,2,3,3,0,2,2,2,3,3,3,0,3,0,0,0,2,2,0,1,2,1,1,1,0,0,0,1, -0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, -3,3,3,3,3,3,2,1,2,2,3,3,3,3,2,0,2,0,0,0,2,2,0,0,2,1,3,3,0,0,1,1, -1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0, -1,1,2,3,3,0,3,3,3,3,3,3,2,2,0,2,0,2,3,2,3,2,2,2,2,2,2,2,1,3,2,3, -2,0,2,1,2,2,2,2,1,1,2,2,1,2,2,1,2,0,0,2,1,1,0,2,1,0,0,1,0,0,0,1, -2,3,3,1,1,1,0,1,1,1,2,3,2,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0, -0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,2,2,2,3,2,3,2,2,1,3,3,3,0,2,1,2,0,2,1,0,0,1,1,1,1,1,0,0,1, -2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, -3,3,3,2,3,3,3,3,3,2,3,1,2,3,3,1,2,0,0,0,0,0,0,0,3,2,1,1,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, -3,3,3,2,2,3,3,2,1,1,1,1,1,3,3,0,3,1,0,0,1,1,0,0,3,1,2,1,0,0,0,0, -0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0, -3,3,3,2,2,3,2,2,2,3,2,1,1,3,3,0,3,0,0,0,0,1,0,0,3,1,1,2,0,0,0,1, -1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -1,1,1,3,3,0,3,3,3,3,3,2,2,2,1,2,0,2,1,2,2,1,1,0,1,2,2,2,2,2,2,2, -0,0,2,1,2,1,2,1,0,1,1,3,1,2,1,1,2,0,0,2,0,1,0,1,0,1,0,0,0,1,0,1, -3,3,3,1,3,3,3,0,1,1,0,2,2,3,1,0,3,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,2,0,0,2,2,1,0,0,1,0,0,3,3,1,3,0,0,1,1,0,2,0,3,0,0,0,2,0,1,1, -0,1,2,0,1,2,2,0,2,2,2,2,1,0,2,1,1,0,2,0,2,1,2,0,0,0,0,0,0,0,0,0, -3,3,3,1,3,2,3,2,0,2,2,2,1,3,2,0,2,1,2,0,1,2,0,0,1,0,2,2,0,0,0,2, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0, -3,3,3,0,3,3,1,1,2,3,1,0,3,2,3,0,3,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0, -1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,3,3,0,3,3,2,3,3,2,2,0,0,0,0,1,2,0,1,3,0,0,0,3,1,1,0,3,0,2, -2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,1,2,2,1,0,3,1,1,1,1,3,3,2,3,0,0,1,0,1,2,0,2,2,0,2,2,0,2,1, -0,2,2,1,1,1,1,0,2,1,1,0,1,1,1,1,2,1,2,1,2,0,1,0,1,0,0,0,0,0,0,0, -3,3,3,0,1,1,3,0,0,1,1,0,0,2,2,0,3,0,0,1,1,0,1,0,0,0,0,0,2,0,0,0, -0,3,1,0,1,0,1,0,2,0,0,1,0,1,0,1,1,1,2,1,1,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,0,2,0,2,0,1,1,1,0,0,3,3,0,2,0,0,1,0,0,2,1,1,0,1,0,1,0,1,0, -0,2,0,1,2,0,2,0,2,1,1,0,1,0,2,1,1,0,2,1,1,0,1,0,0,0,1,1,0,0,0,0, -3,2,3,0,1,0,0,0,0,0,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,0,2,0,0,0, -0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,2,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,0,0,2,3,0,0,1,0,1,0,2,3,2,3,0,0,1,3,0,2,1,0,0,0,0,2,0,1,0, -0,2,1,0,0,1,1,0,2,1,0,0,1,0,0,1,1,0,1,1,2,0,1,0,0,0,0,1,0,0,0,0, -3,2,2,0,0,1,1,0,0,0,0,0,0,3,1,1,1,0,0,0,0,0,1,0,0,0,0,0,2,0,1,0, -0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,3,3,0,2,3,2,2,1,2,2,1,1,2,0,1,3,2,2,2,0,0,2,2,0,0,0,1,2,1, -3,0,2,1,1,0,1,1,1,0,1,2,2,2,1,1,2,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0, -0,1,1,2,3,0,3,3,3,2,2,2,2,1,0,1,0,1,0,1,2,2,0,0,2,2,1,3,1,1,2,1, -0,0,1,1,2,0,1,1,0,0,1,2,0,2,1,1,2,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0, -3,3,2,0,0,3,1,0,0,0,0,0,0,3,2,1,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, -0,2,1,1,0,0,1,0,1,2,0,0,1,1,0,0,2,1,1,1,1,0,2,0,0,0,0,0,0,0,0,0, -3,3,2,0,0,1,0,0,0,0,1,0,0,3,3,2,2,0,0,1,0,0,2,0,1,0,0,0,2,0,1,0, -0,0,1,1,0,0,2,0,2,1,0,0,1,1,2,1,2,0,2,1,2,1,1,1,0,0,1,1,0,0,0,0, -3,3,2,0,0,2,2,0,0,0,1,1,0,2,2,1,3,1,0,1,0,1,2,0,0,0,0,0,1,0,1,0, -0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,2,0,0,0,1,0,0,1,0,0,2,3,1,2,0,0,1,0,0,2,0,0,0,1,0,2,0,2,0, -0,1,1,2,2,1,2,0,2,1,1,0,0,1,1,0,1,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0, -3,3,3,0,2,1,2,1,0,0,1,1,0,3,3,1,2,0,0,1,0,0,2,0,2,0,1,1,2,0,0,0, -0,0,1,1,1,1,2,0,1,1,0,1,1,1,1,0,0,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0, -3,3,3,0,2,2,3,2,0,0,1,0,0,2,3,1,0,0,0,0,0,0,2,0,2,0,0,0,2,0,0,0, -0,1,1,0,0,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,0,0,0,0,0,0,0,1,0,0,2,2,2,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, -0,0,2,1,1,0,1,0,2,1,1,0,0,1,1,2,1,0,2,0,2,0,1,0,0,0,2,0,0,0,0,0, -0,0,0,2,2,0,2,1,1,1,1,2,2,0,0,1,0,1,0,0,1,3,0,0,0,0,1,0,0,2,1,0, -0,0,1,0,1,0,0,0,0,0,2,1,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, -2,0,0,2,3,0,2,3,1,2,2,0,2,0,0,2,0,2,1,1,1,2,1,0,0,1,2,1,1,2,1,0, -1,0,2,0,1,0,1,1,0,0,2,2,1,2,1,1,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,0,2,1,2,0,0,0,1,0,0,3,2,0,1,0,0,1,0,0,2,0,0,0,1,2,1,0,1,0, -0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,2,2,0,2,2,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,0,1,0,0,0,1,1,1,1, -0,0,2,1,0,1,1,1,0,1,1,2,1,2,1,1,2,0,1,1,2,1,0,2,0,0,0,0,0,0,0,0, -3,2,2,0,0,2,0,0,0,0,0,0,0,2,2,0,2,0,0,1,0,0,2,0,0,0,0,0,2,0,0,0, -0,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,3,2,0,2,2,0,1,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0, -2,0,1,0,1,0,1,1,0,0,1,2,0,1,0,1,1,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0, -2,2,2,0,1,1,0,0,0,1,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,1,2,0,1,0, -0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,2,1,0,1,1,1,0,0,0,0,1,2,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, -1,1,2,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,1, -0,0,1,2,2,0,2,1,2,1,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,0,0,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, -2,2,2,0,0,0,1,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -) - -Latin5TurkishModel = { - 'char_to_order_map': Latin5_TurkishCharToOrderMap, - 'precedence_matrix': TurkishLangModel, - 'typical_positive_ratio': 0.970290, - 'keep_english_letter': True, - 'charset_name': "ISO-8859-9", - 'language': 'Turkish', -} diff --git a/venv/lib/python3.6/site-packages/chardet/latin1prober.py b/venv/lib/python3.6/site-packages/chardet/latin1prober.py deleted file mode 100644 index 7d1e8c2..0000000 --- a/venv/lib/python3.6/site-packages/chardet/latin1prober.py +++ /dev/null @@ -1,145 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import ProbingState - -FREQ_CAT_NUM = 4 - -UDF = 0 # undefined -OTH = 1 # other -ASC = 2 # ascii capital letter -ASS = 3 # ascii small letter -ACV = 4 # accent capital vowel -ACO = 5 # accent capital other -ASV = 6 # accent small vowel -ASO = 7 # accent small other -CLASS_NUM = 8 # total classes - -Latin1_CharToClass = ( - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F - OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47 - ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F - ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57 - ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F - OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67 - ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F - ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77 - ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F - OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87 - OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F - UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97 - OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF - ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7 - ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF - ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7 - ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF - ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7 - ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF - ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7 - ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF -) - -# 0 : illegal -# 1 : very unlikely -# 2 : normal -# 3 : very likely -Latin1ClassModel = ( -# UDF OTH ASC ASS ACV ACO ASV ASO - 0, 0, 0, 0, 0, 0, 0, 0, # UDF - 0, 3, 3, 3, 3, 3, 3, 3, # OTH - 0, 3, 3, 3, 3, 3, 3, 3, # ASC - 0, 3, 3, 3, 1, 1, 3, 3, # ASS - 0, 3, 3, 3, 1, 2, 1, 2, # ACV - 0, 3, 3, 3, 3, 3, 3, 3, # ACO - 0, 3, 1, 3, 1, 1, 1, 3, # ASV - 0, 3, 1, 3, 1, 1, 3, 3, # ASO -) - - -class Latin1Prober(CharSetProber): - def __init__(self): - super(Latin1Prober, self).__init__() - self._last_char_class = None - self._freq_counter = None - self.reset() - - def reset(self): - self._last_char_class = OTH - self._freq_counter = [0] * FREQ_CAT_NUM - CharSetProber.reset(self) - - @property - def charset_name(self): - return "ISO-8859-1" - - @property - def language(self): - return "" - - def feed(self, byte_str): - byte_str = self.filter_with_english_letters(byte_str) - for c in byte_str: - char_class = Latin1_CharToClass[c] - freq = Latin1ClassModel[(self._last_char_class * CLASS_NUM) - + char_class] - if freq == 0: - self._state = ProbingState.NOT_ME - break - self._freq_counter[freq] += 1 - self._last_char_class = char_class - - return self.state - - def get_confidence(self): - if self.state == ProbingState.NOT_ME: - return 0.01 - - total = sum(self._freq_counter) - if total < 0.01: - confidence = 0.0 - else: - confidence = ((self._freq_counter[3] - self._freq_counter[1] * 20.0) - / total) - if confidence < 0.0: - confidence = 0.0 - # lower the confidence of latin1 so that other more accurate - # detector can take priority. - confidence = confidence * 0.73 - return confidence diff --git a/venv/lib/python3.6/site-packages/chardet/mbcharsetprober.py b/venv/lib/python3.6/site-packages/chardet/mbcharsetprober.py deleted file mode 100644 index 6256ecf..0000000 --- a/venv/lib/python3.6/site-packages/chardet/mbcharsetprober.py +++ /dev/null @@ -1,91 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# Proofpoint, Inc. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import ProbingState, MachineState - - -class MultiByteCharSetProber(CharSetProber): - """ - MultiByteCharSetProber - """ - - def __init__(self, lang_filter=None): - super(MultiByteCharSetProber, self).__init__(lang_filter=lang_filter) - self.distribution_analyzer = None - self.coding_sm = None - self._last_char = [0, 0] - - def reset(self): - super(MultiByteCharSetProber, self).reset() - if self.coding_sm: - self.coding_sm.reset() - if self.distribution_analyzer: - self.distribution_analyzer.reset() - self._last_char = [0, 0] - - @property - def charset_name(self): - raise NotImplementedError - - @property - def language(self): - raise NotImplementedError - - def feed(self, byte_str): - for i in range(len(byte_str)): - coding_state = self.coding_sm.next_state(byte_str[i]) - if coding_state == MachineState.ERROR: - self.logger.debug('%s %s prober hit error at byte %s', - self.charset_name, self.language, i) - self._state = ProbingState.NOT_ME - break - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - elif coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte_str[0] - self.distribution_analyzer.feed(self._last_char, char_len) - else: - self.distribution_analyzer.feed(byte_str[i - 1:i + 1], - char_len) - - self._last_char[0] = byte_str[-1] - - if self.state == ProbingState.DETECTING: - if (self.distribution_analyzer.got_enough_data() and - (self.get_confidence() > self.SHORTCUT_THRESHOLD)): - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self): - return self.distribution_analyzer.get_confidence() diff --git a/venv/lib/python3.6/site-packages/chardet/mbcsgroupprober.py b/venv/lib/python3.6/site-packages/chardet/mbcsgroupprober.py deleted file mode 100644 index 530abe7..0000000 --- a/venv/lib/python3.6/site-packages/chardet/mbcsgroupprober.py +++ /dev/null @@ -1,54 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# Proofpoint, Inc. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetgroupprober import CharSetGroupProber -from .utf8prober import UTF8Prober -from .sjisprober import SJISProber -from .eucjpprober import EUCJPProber -from .gb2312prober import GB2312Prober -from .euckrprober import EUCKRProber -from .cp949prober import CP949Prober -from .big5prober import Big5Prober -from .euctwprober import EUCTWProber - - -class MBCSGroupProber(CharSetGroupProber): - def __init__(self, lang_filter=None): - super(MBCSGroupProber, self).__init__(lang_filter=lang_filter) - self.probers = [ - UTF8Prober(), - SJISProber(), - EUCJPProber(), - GB2312Prober(), - EUCKRProber(), - CP949Prober(), - Big5Prober(), - EUCTWProber() - ] - self.reset() diff --git a/venv/lib/python3.6/site-packages/chardet/mbcssm.py b/venv/lib/python3.6/site-packages/chardet/mbcssm.py deleted file mode 100644 index 8360d0f..0000000 --- a/venv/lib/python3.6/site-packages/chardet/mbcssm.py +++ /dev/null @@ -1,572 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .enums import MachineState - -# BIG5 - -BIG5_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,1, # 78 - 7f - 4,4,4,4,4,4,4,4, # 80 - 87 - 4,4,4,4,4,4,4,4, # 88 - 8f - 4,4,4,4,4,4,4,4, # 90 - 97 - 4,4,4,4,4,4,4,4, # 98 - 9f - 4,3,3,3,3,3,3,3, # a0 - a7 - 3,3,3,3,3,3,3,3, # a8 - af - 3,3,3,3,3,3,3,3, # b0 - b7 - 3,3,3,3,3,3,3,3, # b8 - bf - 3,3,3,3,3,3,3,3, # c0 - c7 - 3,3,3,3,3,3,3,3, # c8 - cf - 3,3,3,3,3,3,3,3, # d0 - d7 - 3,3,3,3,3,3,3,3, # d8 - df - 3,3,3,3,3,3,3,3, # e0 - e7 - 3,3,3,3,3,3,3,3, # e8 - ef - 3,3,3,3,3,3,3,3, # f0 - f7 - 3,3,3,3,3,3,3,0 # f8 - ff -) - -BIG5_ST = ( - MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,#08-0f - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START#10-17 -) - -BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0) - -BIG5_SM_MODEL = {'class_table': BIG5_CLS, - 'class_factor': 5, - 'state_table': BIG5_ST, - 'char_len_table': BIG5_CHAR_LEN_TABLE, - 'name': 'Big5'} - -# CP949 - -CP949_CLS = ( - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,0,0, # 00 - 0f - 1,1,1,1,1,1,1,1, 1,1,1,0,1,1,1,1, # 10 - 1f - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 20 - 2f - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 30 - 3f - 1,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4, # 40 - 4f - 4,4,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 50 - 5f - 1,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5, # 60 - 6f - 5,5,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 70 - 7f - 0,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 80 - 8f - 6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 90 - 9f - 6,7,7,7,7,7,7,7, 7,7,7,7,7,8,8,8, # a0 - af - 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7, # b0 - bf - 7,7,7,7,7,7,9,2, 2,3,2,2,2,2,2,2, # c0 - cf - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # d0 - df - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # e0 - ef - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,0, # f0 - ff -) - -CP949_ST = ( -#cls= 0 1 2 3 4 5 6 7 8 9 # previous state = - MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START, 4, 5,MachineState.ERROR, 6, # MachineState.START - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, # MachineState.ERROR - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 3 - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 4 - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 5 - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 6 -) - -CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2) - -CP949_SM_MODEL = {'class_table': CP949_CLS, - 'class_factor': 10, - 'state_table': CP949_ST, - 'char_len_table': CP949_CHAR_LEN_TABLE, - 'name': 'CP949'} - -# EUC-JP - -EUCJP_CLS = ( - 4,4,4,4,4,4,4,4, # 00 - 07 - 4,4,4,4,4,4,5,5, # 08 - 0f - 4,4,4,4,4,4,4,4, # 10 - 17 - 4,4,4,5,4,4,4,4, # 18 - 1f - 4,4,4,4,4,4,4,4, # 20 - 27 - 4,4,4,4,4,4,4,4, # 28 - 2f - 4,4,4,4,4,4,4,4, # 30 - 37 - 4,4,4,4,4,4,4,4, # 38 - 3f - 4,4,4,4,4,4,4,4, # 40 - 47 - 4,4,4,4,4,4,4,4, # 48 - 4f - 4,4,4,4,4,4,4,4, # 50 - 57 - 4,4,4,4,4,4,4,4, # 58 - 5f - 4,4,4,4,4,4,4,4, # 60 - 67 - 4,4,4,4,4,4,4,4, # 68 - 6f - 4,4,4,4,4,4,4,4, # 70 - 77 - 4,4,4,4,4,4,4,4, # 78 - 7f - 5,5,5,5,5,5,5,5, # 80 - 87 - 5,5,5,5,5,5,1,3, # 88 - 8f - 5,5,5,5,5,5,5,5, # 90 - 97 - 5,5,5,5,5,5,5,5, # 98 - 9f - 5,2,2,2,2,2,2,2, # a0 - a7 - 2,2,2,2,2,2,2,2, # a8 - af - 2,2,2,2,2,2,2,2, # b0 - b7 - 2,2,2,2,2,2,2,2, # b8 - bf - 2,2,2,2,2,2,2,2, # c0 - c7 - 2,2,2,2,2,2,2,2, # c8 - cf - 2,2,2,2,2,2,2,2, # d0 - d7 - 2,2,2,2,2,2,2,2, # d8 - df - 0,0,0,0,0,0,0,0, # e0 - e7 - 0,0,0,0,0,0,0,0, # e8 - ef - 0,0,0,0,0,0,0,0, # f0 - f7 - 0,0,0,0,0,0,0,5 # f8 - ff -) - -EUCJP_ST = ( - 3, 4, 3, 5,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 3,MachineState.ERROR,#18-1f - 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START#20-27 -) - -EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0) - -EUCJP_SM_MODEL = {'class_table': EUCJP_CLS, - 'class_factor': 6, - 'state_table': EUCJP_ST, - 'char_len_table': EUCJP_CHAR_LEN_TABLE, - 'name': 'EUC-JP'} - -# EUC-KR - -EUCKR_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 1,1,1,1,1,1,1,1, # 40 - 47 - 1,1,1,1,1,1,1,1, # 48 - 4f - 1,1,1,1,1,1,1,1, # 50 - 57 - 1,1,1,1,1,1,1,1, # 58 - 5f - 1,1,1,1,1,1,1,1, # 60 - 67 - 1,1,1,1,1,1,1,1, # 68 - 6f - 1,1,1,1,1,1,1,1, # 70 - 77 - 1,1,1,1,1,1,1,1, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,0,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,2,2,2,2,2,2,2, # a0 - a7 - 2,2,2,2,2,3,3,3, # a8 - af - 2,2,2,2,2,2,2,2, # b0 - b7 - 2,2,2,2,2,2,2,2, # b8 - bf - 2,2,2,2,2,2,2,2, # c0 - c7 - 2,3,2,2,2,2,2,2, # c8 - cf - 2,2,2,2,2,2,2,2, # d0 - d7 - 2,2,2,2,2,2,2,2, # d8 - df - 2,2,2,2,2,2,2,2, # e0 - e7 - 2,2,2,2,2,2,2,2, # e8 - ef - 2,2,2,2,2,2,2,2, # f0 - f7 - 2,2,2,2,2,2,2,0 # f8 - ff -) - -EUCKR_ST = ( - MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #08-0f -) - -EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0) - -EUCKR_SM_MODEL = {'class_table': EUCKR_CLS, - 'class_factor': 4, - 'state_table': EUCKR_ST, - 'char_len_table': EUCKR_CHAR_LEN_TABLE, - 'name': 'EUC-KR'} - -# EUC-TW - -EUCTW_CLS = ( - 2,2,2,2,2,2,2,2, # 00 - 07 - 2,2,2,2,2,2,0,0, # 08 - 0f - 2,2,2,2,2,2,2,2, # 10 - 17 - 2,2,2,0,2,2,2,2, # 18 - 1f - 2,2,2,2,2,2,2,2, # 20 - 27 - 2,2,2,2,2,2,2,2, # 28 - 2f - 2,2,2,2,2,2,2,2, # 30 - 37 - 2,2,2,2,2,2,2,2, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,2, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,6,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,3,4,4,4,4,4,4, # a0 - a7 - 5,5,1,1,1,1,1,1, # a8 - af - 1,1,1,1,1,1,1,1, # b0 - b7 - 1,1,1,1,1,1,1,1, # b8 - bf - 1,1,3,1,3,3,3,3, # c0 - c7 - 3,3,3,3,3,3,3,3, # c8 - cf - 3,3,3,3,3,3,3,3, # d0 - d7 - 3,3,3,3,3,3,3,3, # d8 - df - 3,3,3,3,3,3,3,3, # e0 - e7 - 3,3,3,3,3,3,3,3, # e8 - ef - 3,3,3,3,3,3,3,3, # f0 - f7 - 3,3,3,3,3,3,3,0 # f8 - ff -) - -EUCTW_ST = ( - MachineState.ERROR,MachineState.ERROR,MachineState.START, 3, 3, 3, 4,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.ERROR,#10-17 - MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f - 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,#20-27 - MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f -) - -EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3) - -EUCTW_SM_MODEL = {'class_table': EUCTW_CLS, - 'class_factor': 7, - 'state_table': EUCTW_ST, - 'char_len_table': EUCTW_CHAR_LEN_TABLE, - 'name': 'x-euc-tw'} - -# GB2312 - -GB2312_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 3,3,3,3,3,3,3,3, # 30 - 37 - 3,3,1,1,1,1,1,1, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,4, # 78 - 7f - 5,6,6,6,6,6,6,6, # 80 - 87 - 6,6,6,6,6,6,6,6, # 88 - 8f - 6,6,6,6,6,6,6,6, # 90 - 97 - 6,6,6,6,6,6,6,6, # 98 - 9f - 6,6,6,6,6,6,6,6, # a0 - a7 - 6,6,6,6,6,6,6,6, # a8 - af - 6,6,6,6,6,6,6,6, # b0 - b7 - 6,6,6,6,6,6,6,6, # b8 - bf - 6,6,6,6,6,6,6,6, # c0 - c7 - 6,6,6,6,6,6,6,6, # c8 - cf - 6,6,6,6,6,6,6,6, # d0 - d7 - 6,6,6,6,6,6,6,6, # d8 - df - 6,6,6,6,6,6,6,6, # e0 - e7 - 6,6,6,6,6,6,6,6, # e8 - ef - 6,6,6,6,6,6,6,6, # f0 - f7 - 6,6,6,6,6,6,6,0 # f8 - ff -) - -GB2312_ST = ( - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, 3,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,#10-17 - 4,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f - MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#20-27 - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f -) - -# To be accurate, the length of class 6 can be either 2 or 4. -# But it is not necessary to discriminate between the two since -# it is used for frequency analysis only, and we are validating -# each code range there as well. So it is safe to set it to be -# 2 here. -GB2312_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 1, 2) - -GB2312_SM_MODEL = {'class_table': GB2312_CLS, - 'class_factor': 7, - 'state_table': GB2312_ST, - 'char_len_table': GB2312_CHAR_LEN_TABLE, - 'name': 'GB2312'} - -# Shift_JIS - -SJIS_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,1, # 78 - 7f - 3,3,3,3,3,2,2,3, # 80 - 87 - 3,3,3,3,3,3,3,3, # 88 - 8f - 3,3,3,3,3,3,3,3, # 90 - 97 - 3,3,3,3,3,3,3,3, # 98 - 9f - #0xa0 is illegal in sjis encoding, but some pages does - #contain such byte. We need to be more error forgiven. - 2,2,2,2,2,2,2,2, # a0 - a7 - 2,2,2,2,2,2,2,2, # a8 - af - 2,2,2,2,2,2,2,2, # b0 - b7 - 2,2,2,2,2,2,2,2, # b8 - bf - 2,2,2,2,2,2,2,2, # c0 - c7 - 2,2,2,2,2,2,2,2, # c8 - cf - 2,2,2,2,2,2,2,2, # d0 - d7 - 2,2,2,2,2,2,2,2, # d8 - df - 3,3,3,3,3,3,3,3, # e0 - e7 - 3,3,3,3,3,4,4,4, # e8 - ef - 3,3,3,3,3,3,3,3, # f0 - f7 - 3,3,3,3,3,0,0,0) # f8 - ff - - -SJIS_ST = ( - MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START #10-17 -) - -SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0) - -SJIS_SM_MODEL = {'class_table': SJIS_CLS, - 'class_factor': 6, - 'state_table': SJIS_ST, - 'char_len_table': SJIS_CHAR_LEN_TABLE, - 'name': 'Shift_JIS'} - -# UCS2-BE - -UCS2BE_CLS = ( - 0,0,0,0,0,0,0,0, # 00 - 07 - 0,0,1,0,0,2,0,0, # 08 - 0f - 0,0,0,0,0,0,0,0, # 10 - 17 - 0,0,0,3,0,0,0,0, # 18 - 1f - 0,0,0,0,0,0,0,0, # 20 - 27 - 0,3,3,3,3,3,0,0, # 28 - 2f - 0,0,0,0,0,0,0,0, # 30 - 37 - 0,0,0,0,0,0,0,0, # 38 - 3f - 0,0,0,0,0,0,0,0, # 40 - 47 - 0,0,0,0,0,0,0,0, # 48 - 4f - 0,0,0,0,0,0,0,0, # 50 - 57 - 0,0,0,0,0,0,0,0, # 58 - 5f - 0,0,0,0,0,0,0,0, # 60 - 67 - 0,0,0,0,0,0,0,0, # 68 - 6f - 0,0,0,0,0,0,0,0, # 70 - 77 - 0,0,0,0,0,0,0,0, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,0,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,0,0,0,0,0,0,0, # a0 - a7 - 0,0,0,0,0,0,0,0, # a8 - af - 0,0,0,0,0,0,0,0, # b0 - b7 - 0,0,0,0,0,0,0,0, # b8 - bf - 0,0,0,0,0,0,0,0, # c0 - c7 - 0,0,0,0,0,0,0,0, # c8 - cf - 0,0,0,0,0,0,0,0, # d0 - d7 - 0,0,0,0,0,0,0,0, # d8 - df - 0,0,0,0,0,0,0,0, # e0 - e7 - 0,0,0,0,0,0,0,0, # e8 - ef - 0,0,0,0,0,0,0,0, # f0 - f7 - 0,0,0,0,0,0,4,5 # f8 - ff -) - -UCS2BE_ST = ( - 5, 7, 7,MachineState.ERROR, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME, 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,#10-17 - 6, 6, 6, 6, 6,MachineState.ITS_ME, 6, 6,#18-1f - 6, 6, 6, 6, 5, 7, 7,MachineState.ERROR,#20-27 - 5, 8, 6, 6,MachineState.ERROR, 6, 6, 6,#28-2f - 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #30-37 -) - -UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2) - -UCS2BE_SM_MODEL = {'class_table': UCS2BE_CLS, - 'class_factor': 6, - 'state_table': UCS2BE_ST, - 'char_len_table': UCS2BE_CHAR_LEN_TABLE, - 'name': 'UTF-16BE'} - -# UCS2-LE - -UCS2LE_CLS = ( - 0,0,0,0,0,0,0,0, # 00 - 07 - 0,0,1,0,0,2,0,0, # 08 - 0f - 0,0,0,0,0,0,0,0, # 10 - 17 - 0,0,0,3,0,0,0,0, # 18 - 1f - 0,0,0,0,0,0,0,0, # 20 - 27 - 0,3,3,3,3,3,0,0, # 28 - 2f - 0,0,0,0,0,0,0,0, # 30 - 37 - 0,0,0,0,0,0,0,0, # 38 - 3f - 0,0,0,0,0,0,0,0, # 40 - 47 - 0,0,0,0,0,0,0,0, # 48 - 4f - 0,0,0,0,0,0,0,0, # 50 - 57 - 0,0,0,0,0,0,0,0, # 58 - 5f - 0,0,0,0,0,0,0,0, # 60 - 67 - 0,0,0,0,0,0,0,0, # 68 - 6f - 0,0,0,0,0,0,0,0, # 70 - 77 - 0,0,0,0,0,0,0,0, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,0,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,0,0,0,0,0,0,0, # a0 - a7 - 0,0,0,0,0,0,0,0, # a8 - af - 0,0,0,0,0,0,0,0, # b0 - b7 - 0,0,0,0,0,0,0,0, # b8 - bf - 0,0,0,0,0,0,0,0, # c0 - c7 - 0,0,0,0,0,0,0,0, # c8 - cf - 0,0,0,0,0,0,0,0, # d0 - d7 - 0,0,0,0,0,0,0,0, # d8 - df - 0,0,0,0,0,0,0,0, # e0 - e7 - 0,0,0,0,0,0,0,0, # e8 - ef - 0,0,0,0,0,0,0,0, # f0 - f7 - 0,0,0,0,0,0,4,5 # f8 - ff -) - -UCS2LE_ST = ( - 6, 6, 7, 6, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME, 5, 5, 5,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#10-17 - 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR, 6, 6,#18-1f - 7, 6, 8, 8, 5, 5, 5,MachineState.ERROR,#20-27 - 5, 5, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5,#28-2f - 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR,MachineState.START,MachineState.START #30-37 -) - -UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2) - -UCS2LE_SM_MODEL = {'class_table': UCS2LE_CLS, - 'class_factor': 6, - 'state_table': UCS2LE_ST, - 'char_len_table': UCS2LE_CHAR_LEN_TABLE, - 'name': 'UTF-16LE'} - -# UTF-8 - -UTF8_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 1,1,1,1,1,1,1,1, # 40 - 47 - 1,1,1,1,1,1,1,1, # 48 - 4f - 1,1,1,1,1,1,1,1, # 50 - 57 - 1,1,1,1,1,1,1,1, # 58 - 5f - 1,1,1,1,1,1,1,1, # 60 - 67 - 1,1,1,1,1,1,1,1, # 68 - 6f - 1,1,1,1,1,1,1,1, # 70 - 77 - 1,1,1,1,1,1,1,1, # 78 - 7f - 2,2,2,2,3,3,3,3, # 80 - 87 - 4,4,4,4,4,4,4,4, # 88 - 8f - 4,4,4,4,4,4,4,4, # 90 - 97 - 4,4,4,4,4,4,4,4, # 98 - 9f - 5,5,5,5,5,5,5,5, # a0 - a7 - 5,5,5,5,5,5,5,5, # a8 - af - 5,5,5,5,5,5,5,5, # b0 - b7 - 5,5,5,5,5,5,5,5, # b8 - bf - 0,0,6,6,6,6,6,6, # c0 - c7 - 6,6,6,6,6,6,6,6, # c8 - cf - 6,6,6,6,6,6,6,6, # d0 - d7 - 6,6,6,6,6,6,6,6, # d8 - df - 7,8,8,8,8,8,8,8, # e0 - e7 - 8,8,8,8,8,9,8,8, # e8 - ef - 10,11,11,11,11,11,11,11, # f0 - f7 - 12,13,13,13,14,15,0,0 # f8 - ff -) - -UTF8_ST = ( - MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12, 10,#00-07 - 9, 11, 8, 7, 6, 5, 4, 3,#08-0f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#20-27 - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#28-2f - MachineState.ERROR,MachineState.ERROR, 5, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#30-37 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#38-3f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#40-47 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#48-4f - MachineState.ERROR,MachineState.ERROR, 7, 7, 7, 7,MachineState.ERROR,MachineState.ERROR,#50-57 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#58-5f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 7, 7,MachineState.ERROR,MachineState.ERROR,#60-67 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#68-6f - MachineState.ERROR,MachineState.ERROR, 9, 9, 9, 9,MachineState.ERROR,MachineState.ERROR,#70-77 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#78-7f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 9,MachineState.ERROR,MachineState.ERROR,#80-87 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#88-8f - MachineState.ERROR,MachineState.ERROR, 12, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,#90-97 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#98-9f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12,MachineState.ERROR,MachineState.ERROR,#a0-a7 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#a8-af - MachineState.ERROR,MachineState.ERROR, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b0-b7 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b8-bf - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,#c0-c7 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR #c8-cf -) - -UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6) - -UTF8_SM_MODEL = {'class_table': UTF8_CLS, - 'class_factor': 16, - 'state_table': UTF8_ST, - 'char_len_table': UTF8_CHAR_LEN_TABLE, - 'name': 'UTF-8'} diff --git a/venv/lib/python3.6/site-packages/chardet/sbcharsetprober.py b/venv/lib/python3.6/site-packages/chardet/sbcharsetprober.py deleted file mode 100644 index 0adb51d..0000000 --- a/venv/lib/python3.6/site-packages/chardet/sbcharsetprober.py +++ /dev/null @@ -1,132 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import CharacterCategory, ProbingState, SequenceLikelihood - - -class SingleByteCharSetProber(CharSetProber): - SAMPLE_SIZE = 64 - SB_ENOUGH_REL_THRESHOLD = 1024 # 0.25 * SAMPLE_SIZE^2 - POSITIVE_SHORTCUT_THRESHOLD = 0.95 - NEGATIVE_SHORTCUT_THRESHOLD = 0.05 - - def __init__(self, model, reversed=False, name_prober=None): - super(SingleByteCharSetProber, self).__init__() - self._model = model - # TRUE if we need to reverse every pair in the model lookup - self._reversed = reversed - # Optional auxiliary prober for name decision - self._name_prober = name_prober - self._last_order = None - self._seq_counters = None - self._total_seqs = None - self._total_char = None - self._freq_char = None - self.reset() - - def reset(self): - super(SingleByteCharSetProber, self).reset() - # char order of last character - self._last_order = 255 - self._seq_counters = [0] * SequenceLikelihood.get_num_categories() - self._total_seqs = 0 - self._total_char = 0 - # characters that fall in our sampling range - self._freq_char = 0 - - @property - def charset_name(self): - if self._name_prober: - return self._name_prober.charset_name - else: - return self._model['charset_name'] - - @property - def language(self): - if self._name_prober: - return self._name_prober.language - else: - return self._model.get('language') - - def feed(self, byte_str): - if not self._model['keep_english_letter']: - byte_str = self.filter_international_words(byte_str) - if not byte_str: - return self.state - char_to_order_map = self._model['char_to_order_map'] - for i, c in enumerate(byte_str): - # XXX: Order is in range 1-64, so one would think we want 0-63 here, - # but that leads to 27 more test failures than before. - order = char_to_order_map[c] - # XXX: This was SYMBOL_CAT_ORDER before, with a value of 250, but - # CharacterCategory.SYMBOL is actually 253, so we use CONTROL - # to make it closer to the original intent. The only difference - # is whether or not we count digits and control characters for - # _total_char purposes. - if order < CharacterCategory.CONTROL: - self._total_char += 1 - if order < self.SAMPLE_SIZE: - self._freq_char += 1 - if self._last_order < self.SAMPLE_SIZE: - self._total_seqs += 1 - if not self._reversed: - i = (self._last_order * self.SAMPLE_SIZE) + order - model = self._model['precedence_matrix'][i] - else: # reverse the order of the letters in the lookup - i = (order * self.SAMPLE_SIZE) + self._last_order - model = self._model['precedence_matrix'][i] - self._seq_counters[model] += 1 - self._last_order = order - - charset_name = self._model['charset_name'] - if self.state == ProbingState.DETECTING: - if self._total_seqs > self.SB_ENOUGH_REL_THRESHOLD: - confidence = self.get_confidence() - if confidence > self.POSITIVE_SHORTCUT_THRESHOLD: - self.logger.debug('%s confidence = %s, we have a winner', - charset_name, confidence) - self._state = ProbingState.FOUND_IT - elif confidence < self.NEGATIVE_SHORTCUT_THRESHOLD: - self.logger.debug('%s confidence = %s, below negative ' - 'shortcut threshhold %s', charset_name, - confidence, - self.NEGATIVE_SHORTCUT_THRESHOLD) - self._state = ProbingState.NOT_ME - - return self.state - - def get_confidence(self): - r = 0.01 - if self._total_seqs > 0: - r = ((1.0 * self._seq_counters[SequenceLikelihood.POSITIVE]) / - self._total_seqs / self._model['typical_positive_ratio']) - r = r * self._freq_char / self._total_char - if r >= 1.0: - r = 0.99 - return r diff --git a/venv/lib/python3.6/site-packages/chardet/sbcsgroupprober.py b/venv/lib/python3.6/site-packages/chardet/sbcsgroupprober.py deleted file mode 100644 index 98e95dc..0000000 --- a/venv/lib/python3.6/site-packages/chardet/sbcsgroupprober.py +++ /dev/null @@ -1,73 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetgroupprober import CharSetGroupProber -from .sbcharsetprober import SingleByteCharSetProber -from .langcyrillicmodel import (Win1251CyrillicModel, Koi8rModel, - Latin5CyrillicModel, MacCyrillicModel, - Ibm866Model, Ibm855Model) -from .langgreekmodel import Latin7GreekModel, Win1253GreekModel -from .langbulgarianmodel import Latin5BulgarianModel, Win1251BulgarianModel -# from .langhungarianmodel import Latin2HungarianModel, Win1250HungarianModel -from .langthaimodel import TIS620ThaiModel -from .langhebrewmodel import Win1255HebrewModel -from .hebrewprober import HebrewProber -from .langturkishmodel import Latin5TurkishModel - - -class SBCSGroupProber(CharSetGroupProber): - def __init__(self): - super(SBCSGroupProber, self).__init__() - self.probers = [ - SingleByteCharSetProber(Win1251CyrillicModel), - SingleByteCharSetProber(Koi8rModel), - SingleByteCharSetProber(Latin5CyrillicModel), - SingleByteCharSetProber(MacCyrillicModel), - SingleByteCharSetProber(Ibm866Model), - SingleByteCharSetProber(Ibm855Model), - SingleByteCharSetProber(Latin7GreekModel), - SingleByteCharSetProber(Win1253GreekModel), - SingleByteCharSetProber(Latin5BulgarianModel), - SingleByteCharSetProber(Win1251BulgarianModel), - # TODO: Restore Hungarian encodings (iso-8859-2 and windows-1250) - # after we retrain model. - # SingleByteCharSetProber(Latin2HungarianModel), - # SingleByteCharSetProber(Win1250HungarianModel), - SingleByteCharSetProber(TIS620ThaiModel), - SingleByteCharSetProber(Latin5TurkishModel), - ] - hebrew_prober = HebrewProber() - logical_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, - False, hebrew_prober) - visual_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, True, - hebrew_prober) - hebrew_prober.set_model_probers(logical_hebrew_prober, visual_hebrew_prober) - self.probers.extend([hebrew_prober, logical_hebrew_prober, - visual_hebrew_prober]) - - self.reset() diff --git a/venv/lib/python3.6/site-packages/chardet/sjisprober.py b/venv/lib/python3.6/site-packages/chardet/sjisprober.py deleted file mode 100644 index 9e29623..0000000 --- a/venv/lib/python3.6/site-packages/chardet/sjisprober.py +++ /dev/null @@ -1,92 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import SJISDistributionAnalysis -from .jpcntx import SJISContextAnalysis -from .mbcssm import SJIS_SM_MODEL -from .enums import ProbingState, MachineState - - -class SJISProber(MultiByteCharSetProber): - def __init__(self): - super(SJISProber, self).__init__() - self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) - self.distribution_analyzer = SJISDistributionAnalysis() - self.context_analyzer = SJISContextAnalysis() - self.reset() - - def reset(self): - super(SJISProber, self).reset() - self.context_analyzer.reset() - - @property - def charset_name(self): - return self.context_analyzer.charset_name - - @property - def language(self): - return "Japanese" - - def feed(self, byte_str): - for i in range(len(byte_str)): - coding_state = self.coding_sm.next_state(byte_str[i]) - if coding_state == MachineState.ERROR: - self.logger.debug('%s %s prober hit error at byte %s', - self.charset_name, self.language, i) - self._state = ProbingState.NOT_ME - break - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - elif coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte_str[0] - self.context_analyzer.feed(self._last_char[2 - char_len:], - char_len) - self.distribution_analyzer.feed(self._last_char, char_len) - else: - self.context_analyzer.feed(byte_str[i + 1 - char_len:i + 3 - - char_len], char_len) - self.distribution_analyzer.feed(byte_str[i - 1:i + 1], - char_len) - - self._last_char[0] = byte_str[-1] - - if self.state == ProbingState.DETECTING: - if (self.context_analyzer.got_enough_data() and - (self.get_confidence() > self.SHORTCUT_THRESHOLD)): - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self): - context_conf = self.context_analyzer.get_confidence() - distrib_conf = self.distribution_analyzer.get_confidence() - return max(context_conf, distrib_conf) diff --git a/venv/lib/python3.6/site-packages/chardet/universaldetector.py b/venv/lib/python3.6/site-packages/chardet/universaldetector.py deleted file mode 100644 index 7b4e92d..0000000 --- a/venv/lib/python3.6/site-packages/chardet/universaldetector.py +++ /dev/null @@ -1,286 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### -""" -Module containing the UniversalDetector detector class, which is the primary -class a user of ``chardet`` should use. - -:author: Mark Pilgrim (initial port to Python) -:author: Shy Shalom (original C code) -:author: Dan Blanchard (major refactoring for 3.0) -:author: Ian Cordasco -""" - - -import codecs -import logging -import re - -from .charsetgroupprober import CharSetGroupProber -from .enums import InputState, LanguageFilter, ProbingState -from .escprober import EscCharSetProber -from .latin1prober import Latin1Prober -from .mbcsgroupprober import MBCSGroupProber -from .sbcsgroupprober import SBCSGroupProber - - -class UniversalDetector(object): - """ - The ``UniversalDetector`` class underlies the ``chardet.detect`` function - and coordinates all of the different charset probers. - - To get a ``dict`` containing an encoding and its confidence, you can simply - run: - - .. code:: - - u = UniversalDetector() - u.feed(some_bytes) - u.close() - detected = u.result - - """ - - MINIMUM_THRESHOLD = 0.20 - HIGH_BYTE_DETECTOR = re.compile(b'[\x80-\xFF]') - ESC_DETECTOR = re.compile(b'(\033|~{)') - WIN_BYTE_DETECTOR = re.compile(b'[\x80-\x9F]') - ISO_WIN_MAP = {'iso-8859-1': 'Windows-1252', - 'iso-8859-2': 'Windows-1250', - 'iso-8859-5': 'Windows-1251', - 'iso-8859-6': 'Windows-1256', - 'iso-8859-7': 'Windows-1253', - 'iso-8859-8': 'Windows-1255', - 'iso-8859-9': 'Windows-1254', - 'iso-8859-13': 'Windows-1257'} - - def __init__(self, lang_filter=LanguageFilter.ALL): - self._esc_charset_prober = None - self._charset_probers = [] - self.result = None - self.done = None - self._got_data = None - self._input_state = None - self._last_char = None - self.lang_filter = lang_filter - self.logger = logging.getLogger(__name__) - self._has_win_bytes = None - self.reset() - - def reset(self): - """ - Reset the UniversalDetector and all of its probers back to their - initial states. This is called by ``__init__``, so you only need to - call this directly in between analyses of different documents. - """ - self.result = {'encoding': None, 'confidence': 0.0, 'language': None} - self.done = False - self._got_data = False - self._has_win_bytes = False - self._input_state = InputState.PURE_ASCII - self._last_char = b'' - if self._esc_charset_prober: - self._esc_charset_prober.reset() - for prober in self._charset_probers: - prober.reset() - - def feed(self, byte_str): - """ - Takes a chunk of a document and feeds it through all of the relevant - charset probers. - - After calling ``feed``, you can check the value of the ``done`` - attribute to see if you need to continue feeding the - ``UniversalDetector`` more data, or if it has made a prediction - (in the ``result`` attribute). - - .. note:: - You should always call ``close`` when you're done feeding in your - document if ``done`` is not already ``True``. - """ - if self.done: - return - - if not len(byte_str): - return - - if not isinstance(byte_str, bytearray): - byte_str = bytearray(byte_str) - - # First check for known BOMs, since these are guaranteed to be correct - if not self._got_data: - # If the data starts with BOM, we know it is UTF - if byte_str.startswith(codecs.BOM_UTF8): - # EF BB BF UTF-8 with BOM - self.result = {'encoding': "UTF-8-SIG", - 'confidence': 1.0, - 'language': ''} - elif byte_str.startswith((codecs.BOM_UTF32_LE, - codecs.BOM_UTF32_BE)): - # FF FE 00 00 UTF-32, little-endian BOM - # 00 00 FE FF UTF-32, big-endian BOM - self.result = {'encoding': "UTF-32", - 'confidence': 1.0, - 'language': ''} - elif byte_str.startswith(b'\xFE\xFF\x00\x00'): - # FE FF 00 00 UCS-4, unusual octet order BOM (3412) - self.result = {'encoding': "X-ISO-10646-UCS-4-3412", - 'confidence': 1.0, - 'language': ''} - elif byte_str.startswith(b'\x00\x00\xFF\xFE'): - # 00 00 FF FE UCS-4, unusual octet order BOM (2143) - self.result = {'encoding': "X-ISO-10646-UCS-4-2143", - 'confidence': 1.0, - 'language': ''} - elif byte_str.startswith((codecs.BOM_LE, codecs.BOM_BE)): - # FF FE UTF-16, little endian BOM - # FE FF UTF-16, big endian BOM - self.result = {'encoding': "UTF-16", - 'confidence': 1.0, - 'language': ''} - - self._got_data = True - if self.result['encoding'] is not None: - self.done = True - return - - # If none of those matched and we've only see ASCII so far, check - # for high bytes and escape sequences - if self._input_state == InputState.PURE_ASCII: - if self.HIGH_BYTE_DETECTOR.search(byte_str): - self._input_state = InputState.HIGH_BYTE - elif self._input_state == InputState.PURE_ASCII and \ - self.ESC_DETECTOR.search(self._last_char + byte_str): - self._input_state = InputState.ESC_ASCII - - self._last_char = byte_str[-1:] - - # If we've seen escape sequences, use the EscCharSetProber, which - # uses a simple state machine to check for known escape sequences in - # HZ and ISO-2022 encodings, since those are the only encodings that - # use such sequences. - if self._input_state == InputState.ESC_ASCII: - if not self._esc_charset_prober: - self._esc_charset_prober = EscCharSetProber(self.lang_filter) - if self._esc_charset_prober.feed(byte_str) == ProbingState.FOUND_IT: - self.result = {'encoding': - self._esc_charset_prober.charset_name, - 'confidence': - self._esc_charset_prober.get_confidence(), - 'language': - self._esc_charset_prober.language} - self.done = True - # If we've seen high bytes (i.e., those with values greater than 127), - # we need to do more complicated checks using all our multi-byte and - # single-byte probers that are left. The single-byte probers - # use character bigram distributions to determine the encoding, whereas - # the multi-byte probers use a combination of character unigram and - # bigram distributions. - elif self._input_state == InputState.HIGH_BYTE: - if not self._charset_probers: - self._charset_probers = [MBCSGroupProber(self.lang_filter)] - # If we're checking non-CJK encodings, use single-byte prober - if self.lang_filter & LanguageFilter.NON_CJK: - self._charset_probers.append(SBCSGroupProber()) - self._charset_probers.append(Latin1Prober()) - for prober in self._charset_probers: - if prober.feed(byte_str) == ProbingState.FOUND_IT: - self.result = {'encoding': prober.charset_name, - 'confidence': prober.get_confidence(), - 'language': prober.language} - self.done = True - break - if self.WIN_BYTE_DETECTOR.search(byte_str): - self._has_win_bytes = True - - def close(self): - """ - Stop analyzing the current document and come up with a final - prediction. - - :returns: The ``result`` attribute, a ``dict`` with the keys - `encoding`, `confidence`, and `language`. - """ - # Don't bother with checks if we're already done - if self.done: - return self.result - self.done = True - - if not self._got_data: - self.logger.debug('no data received!') - - # Default to ASCII if it is all we've seen so far - elif self._input_state == InputState.PURE_ASCII: - self.result = {'encoding': 'ascii', - 'confidence': 1.0, - 'language': ''} - - # If we have seen non-ASCII, return the best that met MINIMUM_THRESHOLD - elif self._input_state == InputState.HIGH_BYTE: - prober_confidence = None - max_prober_confidence = 0.0 - max_prober = None - for prober in self._charset_probers: - if not prober: - continue - prober_confidence = prober.get_confidence() - if prober_confidence > max_prober_confidence: - max_prober_confidence = prober_confidence - max_prober = prober - if max_prober and (max_prober_confidence > self.MINIMUM_THRESHOLD): - charset_name = max_prober.charset_name - lower_charset_name = max_prober.charset_name.lower() - confidence = max_prober.get_confidence() - # Use Windows encoding name instead of ISO-8859 if we saw any - # extra Windows-specific bytes - if lower_charset_name.startswith('iso-8859'): - if self._has_win_bytes: - charset_name = self.ISO_WIN_MAP.get(lower_charset_name, - charset_name) - self.result = {'encoding': charset_name, - 'confidence': confidence, - 'language': max_prober.language} - - # Log all prober confidences if none met MINIMUM_THRESHOLD - if self.logger.getEffectiveLevel() == logging.DEBUG: - if self.result['encoding'] is None: - self.logger.debug('no probers hit minimum threshold') - for group_prober in self._charset_probers: - if not group_prober: - continue - if isinstance(group_prober, CharSetGroupProber): - for prober in group_prober.probers: - self.logger.debug('%s %s confidence = %s', - prober.charset_name, - prober.language, - prober.get_confidence()) - else: - self.logger.debug('%s %s confidence = %s', - prober.charset_name, - prober.language, - prober.get_confidence()) - return self.result diff --git a/venv/lib/python3.6/site-packages/chardet/utf8prober.py b/venv/lib/python3.6/site-packages/chardet/utf8prober.py deleted file mode 100644 index 6c3196c..0000000 --- a/venv/lib/python3.6/site-packages/chardet/utf8prober.py +++ /dev/null @@ -1,82 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import ProbingState, MachineState -from .codingstatemachine import CodingStateMachine -from .mbcssm import UTF8_SM_MODEL - - - -class UTF8Prober(CharSetProber): - ONE_CHAR_PROB = 0.5 - - def __init__(self): - super(UTF8Prober, self).__init__() - self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) - self._num_mb_chars = None - self.reset() - - def reset(self): - super(UTF8Prober, self).reset() - self.coding_sm.reset() - self._num_mb_chars = 0 - - @property - def charset_name(self): - return "utf-8" - - @property - def language(self): - return "" - - def feed(self, byte_str): - for c in byte_str: - coding_state = self.coding_sm.next_state(c) - if coding_state == MachineState.ERROR: - self._state = ProbingState.NOT_ME - break - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - elif coding_state == MachineState.START: - if self.coding_sm.get_current_charlen() >= 2: - self._num_mb_chars += 1 - - if self.state == ProbingState.DETECTING: - if self.get_confidence() > self.SHORTCUT_THRESHOLD: - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self): - unlike = 0.99 - if self._num_mb_chars < 6: - unlike *= self.ONE_CHAR_PROB ** self._num_mb_chars - return 1.0 - unlike - else: - return unlike diff --git a/venv/lib/python3.6/site-packages/chardet/version.py b/venv/lib/python3.6/site-packages/chardet/version.py deleted file mode 100644 index bb2a34a..0000000 --- a/venv/lib/python3.6/site-packages/chardet/version.py +++ /dev/null @@ -1,9 +0,0 @@ -""" -This module exists only to simplify retrieving the version number of chardet -from within setup.py and from chardet subpackages. - -:author: Dan Blanchard (dan.blanchard@gmail.com) -""" - -__version__ = "3.0.4" -VERSION = __version__.split('.') diff --git a/venv/lib/python3.6/site-packages/click/__init__.py b/venv/lib/python3.6/site-packages/click/__init__.py deleted file mode 100644 index d3c3366..0000000 --- a/venv/lib/python3.6/site-packages/click/__init__.py +++ /dev/null @@ -1,97 +0,0 @@ -# -*- coding: utf-8 -*- -""" -click -~~~~~ - -Click is a simple Python module inspired by the stdlib optparse to make -writing command line scripts fun. Unlike other modules, it's based -around a simple API that does not come with too much magic and is -composable. - -:copyright: © 2014 by the Pallets team. -:license: BSD, see LICENSE.rst for more details. -""" - -# Core classes -from .core import Context, BaseCommand, Command, MultiCommand, Group, \ - CommandCollection, Parameter, Option, Argument - -# Globals -from .globals import get_current_context - -# Decorators -from .decorators import pass_context, pass_obj, make_pass_decorator, \ - command, group, argument, option, confirmation_option, \ - password_option, version_option, help_option - -# Types -from .types import ParamType, File, Path, Choice, IntRange, Tuple, \ - DateTime, STRING, INT, FLOAT, BOOL, UUID, UNPROCESSED, FloatRange - -# Utilities -from .utils import echo, get_binary_stream, get_text_stream, open_file, \ - format_filename, get_app_dir, get_os_args - -# Terminal functions -from .termui import prompt, confirm, get_terminal_size, echo_via_pager, \ - progressbar, clear, style, unstyle, secho, edit, launch, getchar, \ - pause - -# Exceptions -from .exceptions import ClickException, UsageError, BadParameter, \ - FileError, Abort, NoSuchOption, BadOptionUsage, BadArgumentUsage, \ - MissingParameter - -# Formatting -from .formatting import HelpFormatter, wrap_text - -# Parsing -from .parser import OptionParser - - -__all__ = [ - # Core classes - 'Context', 'BaseCommand', 'Command', 'MultiCommand', 'Group', - 'CommandCollection', 'Parameter', 'Option', 'Argument', - - # Globals - 'get_current_context', - - # Decorators - 'pass_context', 'pass_obj', 'make_pass_decorator', 'command', 'group', - 'argument', 'option', 'confirmation_option', 'password_option', - 'version_option', 'help_option', - - # Types - 'ParamType', 'File', 'Path', 'Choice', 'IntRange', 'Tuple', - 'DateTime', 'STRING', 'INT', 'FLOAT', 'BOOL', 'UUID', 'UNPROCESSED', - 'FloatRange', - - # Utilities - 'echo', 'get_binary_stream', 'get_text_stream', 'open_file', - 'format_filename', 'get_app_dir', 'get_os_args', - - # Terminal functions - 'prompt', 'confirm', 'get_terminal_size', 'echo_via_pager', - 'progressbar', 'clear', 'style', 'unstyle', 'secho', 'edit', 'launch', - 'getchar', 'pause', - - # Exceptions - 'ClickException', 'UsageError', 'BadParameter', 'FileError', - 'Abort', 'NoSuchOption', 'BadOptionUsage', 'BadArgumentUsage', - 'MissingParameter', - - # Formatting - 'HelpFormatter', 'wrap_text', - - # Parsing - 'OptionParser', -] - - -# Controls if click should emit the warning about the use of unicode -# literals. -disable_unicode_literals_warning = False - - -__version__ = '7.0' diff --git a/venv/lib/python3.6/site-packages/click/__pycache__/__init__.cpython-36.pyc b/venv/lib/python3.6/site-packages/click/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 051936c0cb1321be737c870b52f499237148bcf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2618 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 diff --git a/venv/lib/python3.6/site-packages/click/__pycache__/_compat.cpython-36.pyc b/venv/lib/python3.6/site-packages/click/__pycache__/_compat.cpython-36.pyc deleted file mode 100644 index 6c30ff940ed43e536337881284219e3ff1ad0899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16749 zcmd6OTZ|l6dS2c7GCe&Pjwp(vD5_V|QXGmiqDZZz)pEHcha4^?YRDx=qSTVM*wd$a z*fV|8scMol?y()sCMzeAvDt?>jyFNFfP>g@jASACgUM1AZ}3Fkrv|0Rrt?8n0|l#J z?*)g-PXvd{PXLry*<*lWZJ6Fsi)EZ z3H6M67Uu=^d36-$MfIFIhVu(5RP*XMa6hRc^}ITPs~1&QEvQ9Yol-BTlW29i^_v16 zW(rt75xhh!Yc_F2`E>9FVD_S5c|x5s*s9Y8Q*~Fpq`rW@URL+i%jy+ey`o-KUqr93 zs@K$)aQ>n?qrQyuYwE1}3eI0r_tiOd9xczPEpPiCt>jr+cqux+g(a%}+)9RYKj;pT(=K@E4ZP)phqrU^LIbXh@Zj_f=MOeULo?~>tUYfJ4#)K*dJNbMAAZv_j%V(^0c@H=k#?cikaVsJ{XZz=nxHUH6%xU5&^?Rej< zptAW!uywIsjq2@IMQ{Dc!J{}^-CDm_Zfh4KgURRYle*|=E35zeBBtPOkD>P+M8>{R&NBj zjsgr{ZL4}~J)XmD71S!-M%2IeE0!*xFDZV!_(Ig|ywIt47S_7;hFW+vc%}YI<>mV? zR2%i`W>WgqcC%B77CT$amA&Icb`Q^S$LYB}Pr09Dfuy$*=XB6%RI0%$(4B77TYQgGvg{z|*G)M$t3VKulPUAcBkS2~?Q z&u8Ln7@@OfobMwSX9KO9YOo(w(5X z8J6m`Ql+$BzZQ-2a?gXWTb4!M#L%7vSt#(wZwYx2~DDbXqXSz{s z;Z@+6!)#ZgNb4L%)e|fT*}S74!6|n1-7)0!KHOixk)X3*W=rl?aX07&Y18OWlH%BmdBS(R54IOkMBP2!waMIbq?=g`4&HH(rz!pT+g z29EFq3Xsa~dA-c8>w#!K)=1=RxEr2X8$Gw?^|C*2L+&ObAQKn;<@)_@=cZxYT*8B~ zQ*XypBkUdLeZStSN4`Iwi@h*t)PyQ#&bf#OJRWDj&AKv9tY^^Z6+$ZDJ6XGEZ-4G# zt7)-6T2*8NUgJ4s_#3DY*~s2?!nw#1Zn(Hr>{%P`F4hLr#(uEB2lhXeDh=ly5M?8? zk%h1T_w0giqTEJ)BTMq^VtG(1PQ-;e)^-?GTGap&GSYD#EWEZA1!0`2HM-%Qc;eFi zYS5u*kF!Rc#2HGBKz|N!>8DYEX~?^=eSe$`oTu|R!f6ziJ%^QD#3IOIDQq8kC^@A2 zlon(t9!oev^632oJ^P~d!Ss#;46UBCi%I@4dn=u2TXWcX*8r8FAPi%Vr!ny2f{Y{$ zUT5!Iik4llx1agTVUst~MLZ&%j-m&d8f$23Y)nmQcxw7Q>BL!uby&TlDb*lVNXKy~ zbH1;FhVQT7nOS@Z8MjLh1v7bN1V+LsM5JOP>8K_RBRIN*dvUfNLMCkO4TnCBCaXA% z26MKbdg$n;o0WNIc^N#0#Y6$>`*Fedn{Cx?@Ve;xA9gDZ^F%+x;oa-+o|3uK)PVXF z3l2I&5P~ksM5MzPPz$L@^KKyz)iIIx@>zLO#m)5R;_4iZ@B)fdBtaO#)OVE!u>^sn zvLcdlDlZ~wLKQ?L8TTL$0XB{Lgqi`t_UWh4QRQnO=qluIE4Wvxw@dXF)3A_UpRjc1$ z=ypm}OVn7cpc;fBEG>*F{egLu+#=tTVd%~ zyM>nkHHNAMEfr|#v>NEBQg4;+20DZkk-h-SMz;eoqp6~THE7oPMR~GZl|=~p@=Q4> zEK73$;@(FKlPB!nAcTfna1wP&8qJ1cR9tn%V~ zW&pOPI*aqXPw^Lfyy^>CFRX6|v0WR(M}G-VseHG^+gul${aTNU-qxCb6;W^y9izB2xXn|Ec!7>XGO>^%7)*+@GbOc$NRx)wy z=`$kxT4Dlp46-RP5FHsI#zsPn42gl50t^N5=&~e9f1$+I|0Fsj$`^4SA_`UOrxN8n z8hwN#B#%Ex6hj&?!RV^$4?aSgln<_=rxBj+&;H?L_78w?u$ZNUT{MRFa)S1dW3UqE z!ywq?Y%H%1vpP+_U^DijpwakLTrUEye}KcdG3n$V*lY6p!x_z3&@bUVO(mvZMiEod zx2wJ{5=e6q%L3Bpctx6O4mQMrso)TW^e!HXp_R{jP9c+b^ON~veny_9G$pU|5O$+u zLU!w$0d_n=!wyF?gb}a@zsLDAjY@M(RnC5wqv5dh6%-@=r*eo^ALlHBXsR;R0J zBq!{E{~)CZq#gX9$C4O7H{R><{|}uG7v(_!O9r3Cz$IgnZXQ(80mlV$JJ05&Vi7>l|e80GFH= zz$h=_I#gRxBhD@RmoKd@U**M3UTB)Iap9W3a&6_p)oV*{K!2n-(cyq0vKMN9gx3-m zVu0Gg0dkyaPKqFBn9f88s2&mvH=g$E3dU8vRu44dAP8W9@v3+B=DWBE$0%+7Cmf#x zAZ~LDWtErxUpg>XV+3A@*G?V7sFO^LxY%(fj1X%Y!Y*CB@vKB%4C6_wKSfXd@wlq@ z9*_QU1mR6d#}$To;<(V>h|Q>WH-ei#>)%7f2A-};yxjprx{UYtgvUgJQh3nQpAjG~ zBMTZ_zmM~00SWOTSYSvBSVK^Jz^c$^UX9@}&90Jo7iRx2&?ICNV+wh2HT7-O_C|w}WpsYW(0N+W@i_B* z!Vrs~o zAbj&z#{q2gzxKpojW|${@W(S*O4x}p2cyMy9eoh`(urVSVBI-8Mv^-#nxYlFO~n>x zO#B3%Jsma)^de54xm#&;ABaFqi~Of|9JT#!9V@x-b`(HfT|<8(KoKwj>H*a)f@yDI zCK|fPuJQJ0f2r^);)yY@Xgc*}rblxi&io|?f%HAKXWxw039Mwoz8Mg?HK-HQzoD0| z;&EJP25^|S?$(2Q`gPoR2qskjGaOA8zMV21tCSit-f>(oLQGST;xQ7_V>Cj{Kq@R> zS_POsk~Nt=EoMJq>YIL#;5yDFQP%MlzRzdC%*aaG_JN)wc$^+9@d5NEu16qE?R`D`rD&VB~kQl66=BWg^7ywS5o-^jGvELJ1D9JJ_nk3K{P{62l^a<8T5L^=x zy}_c87Dm(#AwerV(1(ZwWgC&0#-9UOMc0Pjux{Xf%9bR3YVjGF#TYi$3P3j=+nB$0 z5>sQtOLO!|f-aNbtt^X0NSH}4aXAv0V;6zPahM-Lf~BQKNq>}36E`aZXq}=rXX_Sf z{}*8;DTZOyP2L!z?!e7_}*7h*0crF2NVQEeUZHqKJfXJ0BQ*Zn9`F`Xdp`m6y zgvP4X*Si`48e}}`h|dgXJI>!+x^gAS2I$AoD`-psXK=6$kBotTFwuVGl92%}5(im{ zS=~V=RTl++T>2?boI{0+F^NUEa&0_#4{;o%Z}bTS@*SQ{jzdyiXL_zN-&Dfbq=Bf~ z)n!PBCsBiD6P`|=lxK{dPV+D2ss0U|+B77Go_&GvGV!^@aFp4J%QZxX2zV@Q_l zfK*&`qogtmbcj@ZF(p;<^Z`yXvBwconWkGm0ja2&sdMCq_5*i@W@X>2puHg+awu}C zFg^lTi2~bx`BnvSVPyLl%_v1}Bn2VGn+VjE%nbKs1fXQFc2WF{Md&=r$AMWJ7jJao zBQ=90%^7DCz8OVV(<}J};$;+Ffq^~e{{(?oJ_7=Iyz{Qv~fNRD8#}=Zduk*_fKrNCNPbhU$DMW>D_+`vn_(_}}J@664$>9qA zG#^3VMx$RNaO9DJXOmhye;we-()EVGld0ya`Bd;KX!QO6*Wk&7{zTxd0lfdX2Y9$8 zKb}d!B^==?6jU)x1?xkju1IS?>K>iIU4&|I9ylm)2p{+y#3U3LrnQ$O&@__XSi^)i_7He8*`a zjY|cuOFh=|NNiIH!ns0#$pe08d(KA2;KKw41ReIc0o?|vRkG&~b90eExdI$GnTg&zr?08By z@NfqO*C0_2X@}C@fkm?xS>Lp3;+uaXul8L8irC9>PUSwv_C$RW6KSb@jbRC(2>m|s ziDT+XiyPu=nijB;hFkQ!@Y{)%(2FuX>tk!zQ3dHMyCL^Ru9)r^|`#ChM@$?oJ#RtZ}aoroi% zzy63j`Bo9{Oz|H48w%?TQ4VV|#5GwsC4&u5SO~d2D@Zal;rDEK<3_{dyR&N+(_tvrxcc zx6^6sC{QQTL@M&WQR!a0+ki#hy4!Bt4b0o*;!P0#RL3nh; zEHArXEL}r$+3#aUYeC)XW~EWOeed=HahIendjeb?>`SXh%qiEHb&j43OZN!GR=fKg zGQ5= za+N|L5R~rKqdO@Si{eXf&mc!yk+&A4U(A%N>R2`%9Uz+xq5ZcpA^PvISU@p98@rX( zmZ)c4;ayr7qFQ2)b0)h@;=PmT1()XLJu>Ychx@GUuEyLze-KXW(Mwfw#o%H3)woSzl{!4 zbDiEB*US$r=_8r!z4dinzS3|1s(~2@qq7 zjZV!$jz#n>XM1*d6wdr|YT2*_XI+MP8y6e`iE6rUl8odYpvVo+A{vF%5AJ1$(vmqu zdCm;SaiTn0Oh_vvi4@5Tb6?22I$zMggaPzFLJ?<#ir7L^t+YU3+4O0cALe?Ki<$Vv zxobC*rII%KMcju}Bi`J4)ZjuN!~Z*Yc9{5cC79$bLqGj|_O!jdZ%qeCSvMixejAxQ-M7|wzvqwG%*z)fZh-1X0iq^(KNgyFGU_I}lmwmLyP!7GUg z$4<01HVND_1?_?jh>Jszjq$r_FhT(|Hl*jA8qyC1bHOQE7-(-ouiO3o!fY9clU6 z0CD|m=wgJg@yrnSC@zw~PAPH74{$&74vjd--Xhn(lqLx%zNz?Av}?fjkKlww+-@MQ zGN6O#kA2}C8Vb}P2~1}R6I(I&21^uLME^Q!Kf1<(lt7Q-w=v68#UVdFNFk;v%kW#n zVhADG_t%emV-unnLP5MAMlcmLY~TRNPgwu3Za}qvgV)Caos%?KMX%pYgKgIcDc7E4 z3BS*mE}%#`lrxrsWLz2U*r1T?S^5YqUD|rw!Yet=4C=6oAv7&~_5-_F=62heD$M6i z$U@w#d2}1^#~w-9z~7JIF##&k@A#1i9w85VhA(BckQuH4>=NwWk4#QfrfO_nCUoT< z_5@=S+$ymo&(SyVWIhlQ|M#e;+(K=`IVQp()#?^MMj(5_zd?-uAfosVq(A%w{&7!# z63K_x29M|^lcy91-q~@D?ttmIs@nI9A80tOG&mpnz zap|AwZ-L@Se}7od^dz8K*#{O`mF>}t4+n6>b5~!z7p|PY-OXsg&;R8ew`8Ib9s-THoh}i0Q zB^vFifni}+B7luC`3iPJNRRSrvW;JiN&$>^w`{%C-43kok-qRcV`2&)HR$$M(un~` zOyGMJt*}+Hj|9*Bqy?#ZEWVU&xsvGKaYjRG&aFHg9n9rTnLXRWjL2@^kNW$m`esHv zA<+AvAG)j{ZimPmwbcp}%t!a7I^m&1`iXwey#jqdt)@D4Vv z6Sw%#^79&I8ClYfpbK?TJ0`$Fqw=XkfIt$(Ial7Z)y?Xk-w54-n}Lg4$^G^8=jq z57FnyDke5E$kVvkqO~ns-;$i_;l4B;$_z6Ea2kze!C-94fN}Eh`L{W2Kj}+1PToot z0*TS4jI7=hS zn?7X*R-LT6LBRoKTg0!kZ}#z5=uqO?gTCY{?eJfJh7QFvsrZiq#{-^A-7a z!&w0fBnJ%s^uK?PXK;z9e;RMB=$}D}1;d-h0LQa;@F`jHsn7}@8_{(TS8?thJ{*Oy zDU%r&lg|TSV?nQ(z2@+1BUGBS&?`C$8E7hJm)^a6>k2-03|e>Vy4@-l@PVmszA!Dj zcv7CZcxn0kTUS^8rE6E;dUNGwoMVO;K_309gn$A@@_i=ny^qzWSY^;f0i`?}Iv56T5O z$rF8y-Mq!(4Hj>*-Q*R9{UUMP^>yCnjzbd;d!JWdXK|ZFg~b|+8VYRFp?Qj}`y9t4 zgefyjhEI}Y9acYNp;?eOC7^9$P1~$avG`{!{s{`E|0LK&BUUuBC{j^jB96s|C{J>` zT-9jQfh(fF&zF9S#SdAWX2JEP{~e2ei=zCX*$!){Je_2vjp-7Wi^&!`8ZyHhMAOxQ zZOI6M;=`h|)Ft7cqex$B(f+(k z8)TL-|B3XfAa1Ca_X@c}9)FVKruEMr@HXGf!&#ldUp_xuI8t~rpW`3e<1ar^n1a7> zvdA~^IbhbE{k)9qqQ}Xs<2kcV-h*$K?~j;u3Qx%0x;+Te8lvPO;+HMi^VNEg2=wS&@#&UINSB_T1g> z?Mpqg(%rIWTsa3q5)%``E2O{>DpZPB2o#U-D4u@+#iJ;ypoW42%a z_xomc?_rrL_B7x0^mO-hfBn6`*1N{X{XhS`(g%O)dBgaMvE%2Ud=6K1&NK{VlnrGn zt7(=^xm#sR?snOhyHj@Lo-5~+t(>OY%9rykuk5u7nC^SgTkrw#Lijtx~zv znkY}SCd-qpedT?ofj+tBRBL~Ezm(nPbn8I*fN6wgV@BoIEd6oimG4r8@@(5vK1yTd zSyfcyuNvip&l#$uCSEnvM0jY+E+1CM)uh_@s#!jwrqq74xLZxD1GpbmGwLqf??I1Q zbr3xcN{>LDP>0nK^te~ut&XC_v2fybQ_skX?knFH<{I~_dsOhMv1OKzt9#Wkv^mi} zA@3h3KOpy$<&)CxzEQjT({{?bYRo;*I}bGawPwAxHeZQD-RjjV^;Wm(zx^&ZA-ZUnt3RKaquUE}c8WXF}VR%@uQw=v-M zq^fNdblT{YegO@tQP2)U6{>mPKU?c`H*|evH9i~s@#ljx?|k@?U}-}pd%4R zS6lP`SxhKwN8#Dv>8sCTPGJ~4f9aVE3s*19>nN5LwmLctR0tF_qj~=p33TBWP-)DK zCDRoZE?0Za7zkaDD^aXEy*Tl8wY?Hn;*D;Y*q2{AleqP$8pj*SSf?Ad(MsdniI01| zTdB6Adg2j# zc5p8VUN5ZI!Y)ylSnc?>Ii8q)KRJD)o9?q)wP_f@~fne%7kI*98TT+zn?HoVvv zfWEF8juD%&wQQ~V`uk0Te;cLP=DUWoXt!ni^B_AcXU!%1j5pyBfBwCA(Amvg+o;;Nok=I zUmB8is1m;(fzsn@yB6vqkTPc{Ha=DMxGn5cb_hRj=)-t>`(3BwR`+zb-aWO{t2foD z$HT|!k5wOCKP_yQ!JW)D-`z-xJLhnW=nnu4%Q8K4%CyW9{#@LPa`$leOvluBqfLzs zhre+Y&f$u_2oM^Oiw0!kX;n}@B#EuYR1s3bQRAwFdrnQLN!(qvPfg*TSNqj8?p|0> z2h@y679Zui)U1@pP(G**Nx3M}$taI!(y5fnqVhy0i6+&3>VAy150dW$?o;XkbrSde zYEC_f`?Pw8dIXe$t9dZqO{LWV@0peYefvcK-OurK+BbZd*aH zc=6UztgSWyz#s3VTcKGOJ3jzbR*ZoIXby6K*1!d{2YEne-~r|a1weP;1Lg-~-A5Iu zwBikl%2@OCx5tGoW3xCYqRtUt&pY#y@?fsCYB>uHUL3g@j|ez;JNz~)LpnD`YLu~~12$ru);<4UvMs>gE^ zi4%p*WuPX*wSE^Tew^S0!2<**3FZhMBzOnGLj!Bn3xMO1w%1^M-tS z98b|j0K;)16L$XjkP5?R-}3M@{PR)I%QYuQEnJZ${plSHH$VKyNF`8|TDXM0rce-8 z0m(JYEhvEjNzGbVoU`<|;bk%b+^JAkx)~GCnfhte?_Erx0#yb~RVr1yjfiFg^YYC8 zf!(voTGdDa{PE5y$#f`;F%g3k5t=ut0LQZ_q}x2_$OIBET(70tx4_bkYO@z6R=l)# zW73N>SCYw^DTV=U?jd#4-uu4o#e3 zh_3*Q2BWGSRD+v!Xt$+i2c{VoA=oWm>9tAUqQ3M6d@3odgl%wl+|h4?YSN8hx{l_N z2asYKxZb<-((KO5nnt%+P|cm6CSB_D0BWeARu!=#%SOoDV)E!c;QOr z>GM~T+;X!Qt=@UY`Z;#Qm0_&}jaxMP2Y1eS7p?7@IVn}B^nMgLbL~^Z#X=9XoEn&Q z_lU9%gQd1;joS;EB>wtSnuIr()8C3)Vz=sT{ce^p+fFqW(Q@Z0LlD;Dbu>*`%5pK~ z{>07+ONEWC`?JLh?H=RDuqeAl#X^xci!0F#F<)VxEdHUz`7#xy1^mW4IMt|0aiPM6r# z*9b&d6UA>cdmHNGRlLroTY^ot8?AUhnjfWE4wuZYjRMiC8|lu|8i2K6&KP1fm`9A! zv(5VK*}{7V&sO$quQ~dI19LM63m^yE#vWM9&J5Q!e6r=q1s&xVZasmo-kJqSEr6-x zN(IN?c}ATbfqrRJluAu91uLJ$EwN$F>K9qzrqa`llYA7y=~GdX2RXu;j*{GJr>CRD zQPquTuNd{=2ezuBdq0YCqC)_bJJe7+{~UADDw+M6om;=%b%au~!)VJ%sdP&q28c{- zw?0bLanomv#{{9GmHPJSprpYqgj0 z?CSRb!Z>9g)Ln^TTBj|$FDmrKIPB}eT(V!i z#M~%~!HjPMKkkB{L}+*@bt1YOUNKCEfew;sgP9Vr^!Msz|N z83~Eszyq)V%3UGeLD>*vsY?;y2~KfF=Z_4a?oi`w0e?_=roNcfK=EZt(ABGGkr(Je zAg*RD;M8O-d^jrw{W@C7eqguk0jN^yI6hn#QKxW#8gPFar7g~Gq9M+VGCu<@YwXKR z8K6##*9MjV6CIAh+*E4a3a`<`P26f1F%G3`c+eq%*uWGusSKtOm>R-Qvh)CfjJn2> zSk1Iv5*P6o#78olPCipc5CqQ1Qaz4Pq_4r}y&E^3$&_wpmcnXphjfu6ial(h<$$?8 z=u0a3k~xjb7bn}t8wXq45AGnMb`3Y$+5$!#G1^H81c}5MEihMVr67g}_RqH3)_ow? z*|Zh?RwpLIx!kHvC(fe|wvMt7!k?Wrwyez@q`!^WNQ_PO;HPp#l;{^Wd@>cD=>z%# zS?g@V`)%ylay)PMm2Yk4@zp%O2;W#*deI-SH1P1HKNXMJXCJm1ea{_u6bh^X+l~p_ z=ILWMifeY~e{dh)GKvNwmiLS2U4*a9w-dM~m8`~~N zYO@m6`=Lky9RRn&_!mKVBZmpWt>)ZR*<}a#v|Tn5)9+!H#GB%#Xquidr>g6^#ghN@ zg^Mp-xj;iuQ)6lpnLbA#He-pU(MR+ZJkAwTy}?f;_EK-TTO_`HwPr7-5uJ*V za-kjG%wCPvnjvIM>TE(B!GH7!*>n%Fie3K~7(XI|7-o@HoaF%WuL#=oK%3&mp$=-v zN|oxgl%`DIrYM>=`-gW@>>j_YMqR@nwF0kaa7CX47(jhBAXy%R+lMd;Wzh*hmaMg$ zMtB+I1(TaH2z9wxLxOcrkfevT2(ZxPSsFe!T=5u;!_*d~owXwE^2$kd;=o!lsSgm8 z!FO@@#I4IMEM`*w>rdSxXVq`N`R1G03R-O2Iz5#o;){F>Ux-6O3ssDoOvWd923x}} z>=xek;GQ9YwNM)T2Rdc~p5~rwO<@=OoNLZlC2Pjo?Wm4=jqpnR@)EpKPY@#v0twNJ z?<{MB|77Vt-pjTR%@UgMd#C31x(d;kJOoNa?O{;OOzqs`w82OY(G=M=h17MIND(Yc zpchdrs98G=m@WcCB9cW0Q*XYF{o$sb^%y6@-Jk}9fZR2ew8>~HoCc|^hAUbIAU1Zp z$oir6=TU1vYkZeallTJ=3fGSyZ2ai@{aO7X)??bRPxuzKIfd{V+C6fOPY|0@n-_s% z)57Y1(GRlUFm_xGMlN%3bG2Su4L0gwQ>8&=YLF>a$m)=aS@S$h$%t@6=jd1BKJgSMyQ+{ zU(omP3jx8s1jhgt7cMT~r|&~~?k)zg+Ew_06-3f1X(|cjVx@AuS8b+m^t0@Hk>I@q z3j`vLpF=6}fL(Zz@rGE)srN=tMOO((U#W#5mILLzEIH+{Z8UJ5JJx=fkBqYEqW}~c z5#tS>1$x4tf5OXow&(IH%AYqWPZQp(_kcI!IbKeBj<`RM-eb6);ZOk(8Y4)xNgEjU z6+^bs5!l_JUD#(QV~3VDWCJKR&NbXdo(98~)qPyq4G;Zbk?HS_3;Ie7dkwB%+7fp3 zsGRmfKtWBcxw^k=#6t8@e6`pZS5V*j$2f-avN1|=P8GH+{Uv;NLLr!}#*o(hQjD<` zQa79tQU+FY63(bYMg2jTAe$~)PYrV9y#AwcHb&SPn?g}LC&lc!a9 z<8-^%Y>IIKHv#qif;2yNJUUi(SOmLlVH@?U0CUq4xlZH4HpXM583{R%Gl#((5u&yb zi$*;8MqMNAW+O?&Mlf47DIzIJ9G#Kxw6$MBswgXajIYyFWg-v(?1(YIB)?i^s!;0> zvp>>;t*!*l^Q|?mr;7-BvlE4h+iSz5SewfW8%rb^YnJq5xgZ~_)LKga2uHD&Rf0e` ztPil`4o)BwBspn(oN|C{U_b`UKnl#j5M~6d2;(EYW+54vi}I0~I?6Ye{xsUxZ1%#> z$F(1qu)+NpFSUd>?I9yD#?f$?o8Pk3#6bvjkb6$@f1ZA2kW=PCSeGElSI9UGmv$ps zdW}5ZIm)6Vy#St_ecF-Gfm{R`iheUL4q#!UjQ4Pa3XRghQ>Cp`<$Ug%0p&D{tmi~L zDS6Sarg_bmjCS!wL;8qiyZ#`up!voWl@fZ)pvUBz59XL1w!i+(7mdrt^>1DqvcmPt zAf#QS&P??(GTCH-I&$Y7Xq^tU6ZnEI4bs*@aH)Nxv&IHhQ6;j8+k;4+oZ0Un>UAXn zFL@WFuc;q}0g!GxoqF8gk4;OQ=Pz8nDy$_!y>FemvY41UF|Qy4nnMN!eDe`Dv_b4i zUWbyEzXj9m&AI)c;NBAERs&0cC+oFXGZ3Ud#t!h~x=7_?5Z?61`9d7L++}9N6X)`! z%NI1MM?Rn#wbqxVr)0pxB!B6JG>5zIz2U}Er>fN@<`ZqEWsN9Wgm6O)H8)&_R08_>{W_Ci7%RRfAL^S>{ukN@cTk zbE$6y$8MX)=EhSAKJ~d|gJr*e0L#}uPCy+ho3204l28vNp#CucSUaM_f0-4s zvlMIkCkehl@T&lcxx9Dpeu(e5cVgf$MF#JQ`$muI5ccPgrP*e*H?*{ET(UPOQCL4V zFd-riK`UF)3}SoG=P1)(k+{iq7r10*#OgnJm8WAifF#6IgC64&h(5(MEvdbb%O+Fe zAI(f07^&kelpPMEELD;9p=U6ne1tI}%Xvs-Te_z!72{>wg84zraf>TtS0h`UW^IiX z!yngm4p&6~c63mn2%(yjg8~q=NXk3PQw7{}%2#8!yRx$J#J!;ENI5Mm-gf5W^|+S9 zApG$@ayh6=#9l{;0#-ZlLzhDm^N2P9L-2jDDhM?UB}|zVv!rw-s@_1J23W#D9GqT3 zD&%R5rhl8@4T9ex_!7aM_0xQOZF~Kx*W8~-C;Zm@Ch@>a_IC*d>?D$jh=onEbk$f7 zQ~~=vizL3uWD{%|MmH@z!x-iDnQO3X^jQV_X8oA*Q_4WgoN@<Fq`-b$P{qqoq%mSTa-ZF$gAKMK_ z^gm5a#;ioowh7EhHRC00H@=a7Isc;3wjlaQn)%cx?&pDhnu1Jl zzk#Xip8@FaKOUV8xL|7AWoVF4-P@meYvtJh`G>Jo>HHCU%MhboNgO$n_Pu=b3k1JJ zFaeO{U$`pz4RTHhUj*A{`C4|0T2%iEKp8xOY&A}Wg^BqVL$1Kxt56vK95;{*X<)Oc zrF;ad9mqSzIaxD_zy4&liKA|#JuIN-K3uYg-#}rshh`V2V(6Ibld$Cw)K8rns2E#P zF;>Hp=p@ckzGlIFus5Cl=fEq26-9ee9!4nr} zUSLV#?O3X=pzau^9_D~c`U~6d24uc3a7W__(2UQq`mhHZlb|~f>}a4YJefXKJJnNfl!$Riri%HFiHwRCV;JIV*9yI$W-=LrnLUaqky;@$#w1Pet{W zzBTUmbMmNv4ZYxbFU{>w)gWvQC1$?<6yBr~P5AU@`8d*iiMy<58l?&`wQ#!3WbhDL zi^)>`XY4?+m^i5s1!bWUS0QbO6B(j3v*4vDNYR%+ApgZ}~LEV5yb zSa7)HUne~=zyNxJ7M%o~1~pM2kgj}KK%}dp<->WPMMP@|Pv(@>AKO7?$bl^^>fgdR za9du+O@AN3D+H9}TG&RG_IG^To{N-7(fT(5KF0abfS}LryI#rLC-oOcikuWY@z`K>-Onke zU$VE9STOo%zQOzhbr#`6;3S#;+Gw;%yd8&^f_V*lWh3JJnf|7l>i+ltHR1-6Nf`4? zHcGa>*Uj#{+P`VEz2SGbMm0S!Rxo35pNT#nfXOMVrGY@7NIaZ3QV$1fm{hY{Z1B(q}SW$r_0y{wGpu3H1g!0`iv<7{>|jA=6ec z#{3gF^HXg`PtNb^2Trc)n>Y#bSLg~~>>B;Ceqj{CNX(nao6z5f8`M7#u6J>&4*ub3 zoJ+&0*oUaa^cT@rq*s4Z0u0bk!Leha;rhAL*Un#B?2p$rR?>Iu(VrYWW||P6y_uNv zeQ#Z@oZ_5s=U3yn3vAu?Scp&>X0rd8pZga8>ClH^ZeR-MJZs8YzK)U_JF{*(Dm`6UvAGk)55YhJ)uw zz=z6Hf0|_NG|H?O*sP1^xi%E4ldw8 z|0@UMi2T{v^$hOfY!3`w#3?i+Qrj->Vs=20!x~pMLOc(`&w#(oa|-a0#e9@=1VoDQ zU;M(Kya7Az-%!wB10ZL&q8l|Gm-A4gH*2d1qNN2{CNM}w#W_`+T)m?%WH%m`y^l+v zjcXjG!|y`rc{UZG{yOSL=;DH?gIEz!Bgc?dv~v*-#{XDJ_Dl@#~&xS zOh6vXh)mVBX^Y!leA-LwKbB z>m(9yM*l6FMFj6BxEmmG)Bmj@c@v2mOH53HFA}W~^G(F0phN#VJC(8-x2kQ1+Edh$ z#q>7_{*z!EO;SpQ`V(og=}AsFdJ@24>?iws#75{E?22<9Jndn7)05w4bp0dV!`?p6 Wn|z=DtzLntu#)4y1AVO0f&T@#HI0w} diff --git a/venv/lib/python3.6/site-packages/click/__pycache__/_textwrap.cpython-36.pyc b/venv/lib/python3.6/site-packages/click/__pycache__/_textwrap.cpython-36.pyc deleted file mode 100644 index 5dcfd260d5faa31fb7111bd3d86c7a40285d1145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1297 zcmZux&2HO95T5-ZMbnC!s7dS|f}*!FKY@mW04drc2VGhu0g-k=b2m0+ilTSP zSTU%Rl84EqPtX_WE9|u=zd|m_jHomM(p~ImcK&ww?YH{&+O_zfzemshk^uk0*1$bH zz~%0u(4bifDgE-2&3MWg`~q5N`3kf&FcmA23eA3lB)GzOm?X@P@_E&mMKjB)?8Mld z>>q|eIC#oTJ=L+Z5BUexnC z+40hu^11)anis}8qg8&|R%gyfd23Z!RK^e1nyGwnQRwE>$F9zDqe}C<@v_WZlZw1; zys*Z-0XxRC-+pu0%<99ssP7%OMXB$7Z;pzi?7PKbUKaV;Mk>093&ic9e(7(h)2z}Z zmi^G^01G*)25iJb7O^4D7^h^HceWru_#`vul!b%%vWttZ+5LX-Z5uxzLN zhe(K7gvy$hk5D;5JQhD7IoXsEoqmEp?mpv7v6P4s5fxw1nY0JE6S(73*#({4TNCem zjQH>=T37VS#KaN>J&Tjj@0hBc8JjhR_)-=PQOVg`7+`Och$vJ}=S7u-Jxr4L;JJO_ zMWGi+EzGcc6iY1FLSwhbQ_ZXL<(KGkBNTwVxQ%c`xW?>qZySoO_(?MGky2GQGfMeb zso7k&NIT_+N}ab^*?a6wI+A!~_ep$3;$s_YjqbtH8>i>y2-%27!{Kmk!{-;#_Yl8* dy!qEDi{ri~W&K|{AKmZ!`H_%xbW_NC@g6=KLRJ6( diff --git a/venv/lib/python3.6/site-packages/click/__pycache__/_unicodefun.cpython-36.pyc b/venv/lib/python3.6/site-packages/click/__pycache__/_unicodefun.cpython-36.pyc deleted file mode 100644 index a1083d6c0ce6121061d658f1d1ee7a00f85cf80f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3329 zcma)8%a7Z}8Rw7`MRC^~Ki2DKQ^JT{tdZ3gc2OHfQrOtqtpmed#BN;+Z3K!lT2Z1% zdSbFqGiPyGP{w>V3!UOlrOGkd#dbDKMMMj$zznm9zW$PQ|)00qN&7-wtL~VBjE} zT60S?4blr+Z4er5j~(tT*qm`^ZXZ6G;nt)h$1^r|$1SkaTG(TcdkZE%2dq73Gq8Qn zn%i$~VegMSGiw}-R~}k&II~|^yVjdquRse7wx3Jlt?KmmgdWOhDx^(&zu(WW>Gvz^ z*o)I7o^&@?tDxT>mb#P#Z;v7sX)P;99Vyu|NQV8rG#^B%svMxJ0;MCV)j^_1l{f4U zqIg1coO4n6ao!)M(VnW#mRUleewt_@>G7F3pB70fq`9%_NFUgH&QMM(C*g;Gx8yni z@9u2tX|Y`-#nzxqQoeOx+)M67zdYPF{5E61!9FarZgEsy?+=rVFM%f{`$qH+fK^?^ zU@@Ns%x%7P=3#Y~xwgmT22M}xN2($>GWPon3(l0!Em+K2wbZ(1V_RM}duIWw&MaWvE7ZnR1*cEh27M5{CtN1)}oCjc{q%aG1;b zabuNGX_;hu3V5F2Xqrn9&v0uR=_JoWB}6#Vx=;_cYkPK!C{2Y{h0Mp$f$G9lwu>V@ z%Co!MP!+jcJW0jANH^P(;;U*Icj%Fz(I6E+wmoSVOc>KvezQ~Z5vT`<+4?L9$bu8z9+8(e&SLcYzUumsei)c z+LAtn>d|$$3`-f31JVHk+Fe)+WTZKJWo4ILOM8<*e!?vJLz-Z(t<3%-T#GvsM}9^a zxI4FX8wsN|vA<^W8-vfEJ4YYQoN;OS!uOW>K+l)=&U1*`XS z9|6fG9qhi?#ho`_fEU=pK)wOB%QL^Gp|A2QGy4)G_>!5l`jg{NA7=`QQXw!SZK6|T z`-#l6smL_N-(H?`6A#N!fV=M+M-K0Ho2=Z5RGcKT4S%RwMXr*=%1iS&O2x6g6>Zv; zr!>z?ZDt|m_qb?1soGK$X%vfhUboc4t^4mB$951L|Md~)2}N6! zo{qf-AsEt>ERf%|n1)%7G>~YDq44)FpKRR^YF1QuAP}}DkL+W`mq})tD~-^f2xJ*4 z-joTc17Du*Biw=kLE}6dCVM3%0i&cEWka%i{MKZvh5=O;l*34+BHZa39>V6q!6=DG zq*g*Xg^oG+2q-sAlf98fW(y7DI&U}-bskETDv{TYLgXvpZrBKhd79=2v^#CJ{YWN+ zMLh_D5Wo6O_-v>D=-IPR8;<_xa z1<1H2B^Q+chccfUB?~yvlF<{}EZ>n;g7;Q=5Z+YB_Qzr6)%;fOGjMnOk05A@3e^E) zKj;@OOB8DXQ5d3zy&88gC~KE)l;79~vY-fLxeg7NWnmblV$#%=085_33FwYEgbErd zPUtiUVaFRc)eY1ego+NZr5BBE1V8?^X89mVQ-X?$rhdtv0$zDkZDU2@pHIr7T1S6XNHIjv3%+E% za;aylI*$)yQIHZUJ69-)ahZrD};oEhG7Jx@gP&-YTWae&g1?0DWga?o&dm zTwOWWd(ghJks^ zbpp0(uK`MTaBBM~-gxDjv28QkIgfWA;ste#)Hwp?`Zk@&$Dp&hDz`DofQH)`sy3S7 zX%XqVLupUZWg)FdkIp=4G%T;sZE817gJ2My5|6qGX&Mjzllu9usF7D|7<@3{+pFyj J$3N$v|1Vjh%|QSF diff --git a/venv/lib/python3.6/site-packages/click/__pycache__/_winconsole.cpython-36.pyc b/venv/lib/python3.6/site-packages/click/__pycache__/_winconsole.cpython-36.pyc deleted file mode 100644 index aad3ea56b8fd3da8e1492f4c7e869eebc8b247b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8741 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 JslSfm{2y+7n$!RQ diff --git a/venv/lib/python3.6/site-packages/click/__pycache__/formatting.cpython-36.pyc b/venv/lib/python3.6/site-packages/click/__pycache__/formatting.cpython-36.pyc deleted file mode 100644 index 99901efc0111ce36f685ce96678213452b2c3d3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8515 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 C_hn%K diff --git a/venv/lib/python3.6/site-packages/click/__pycache__/globals.cpython-36.pyc b/venv/lib/python3.6/site-packages/click/__pycache__/globals.cpython-36.pyc deleted file mode 100644 index 37aa0dfc5cb9db4a5ce7842a520297f99a1dc857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1844 zcmZux-HsbI6t-uQY&M$>QmYoYKr$7m1hrWNf>seipo&U+6QS*1zzQjG#!klBneoW> zWPcQHn%?pth*#hRc!jy;YIy{1;2h6Pn?|? z86m8{g~yIz5=791r1XqZBI%Z#1)?uP(RxMCLeUnTSLCcE_Cy!nZE+}i;sCyM#QqC1 z9NfVFWJt?)q9dL>k0|b8;JXjcGkEM%n63tnI4bBi5bgKL3(_JkaN#02@0rgjT&HA1 z?8vo5xTP=YPb3R|B%%c_I{alo$cc1?$t-iRWKm&^%p8jn6`iw4XHH(a5o4#ZvMk~m zn@d($DHykmvkQL3obE9gJc^|KpN;BorspdeIkqr5WjwpOh^3K@NwCUUs*PkS&B3Q~ zm9@l4lX0ik5*&DB<3*80<5|wFoz}Q!Ovp$Z?zCy_;U%YZ#+3Dja-&jiRC0x=7e&Gr z+OSwAxips9B8oAP+O&*fJ!2QKg40wjV+X-{BMMkB(mDuRWh{z$wp7`YDQDqE%-0HR z&N;FIj&HG8^VjocPBqI58^7(wBQ{Q@i^sEP^&d9Uxt#4XKB|n2Mr;k(Aw({O6yq`b za`ajCX`FMzQ)X2H85{!x%u0v!%}z}L#t@nDxn^sg6hOIUvx&~&lUlG$H|h3ZF{e8N z^R(tF;q#=*odoU|yhxCwngX~3&J0&pGX6FrV|fV~JSj4#Qu)0x+RR4&UfH&eN9Q+K z+1DSQVu2tyfW#r2Py@HiadPu7jA6UnTS~{BGi7J$HBt_~gPocet}lkF!sfhZG7!=b#qa&B*N4d%$&kL1^$4})G^@M+QdE|Z9^D@zMp4d@-Ro(^P(^@V~ zLGGa~~Xp5Qw>~2XH`-7M6d$4e1MOT5KOR^1C;f8D}B_aT6hS#6|0L3Cv zADO&pa?_}x(W&QcWYFeh*fI#9>`tdbMQ%DRdr$y%n#vB(bD0SUJdE6>kGYx-@t;0c zW)sE-aAKh`5E7WXFh{s-2Ik1a$G|H1Tj(%?0_foS;}e$_}s83+A0WjzLroVw!=zvWT z{z`wL8)%Sl`q7520IG-Ey8ivaF={*GN!=8XUr4OS+7x&t7QOI?kxoGEi-a$shgRZ5MwFD9Y^|TJ?A>6F0wB3aY?a?kZ@1kA$d`Kt5 yy>j2hMsfi?&LFu}sxaNY8Vu6!f7o&N#%K5IREr{!-(aD5H~p{^_U?Dv-S&SaH2X;a diff --git a/venv/lib/python3.6/site-packages/click/__pycache__/parser.cpython-36.pyc b/venv/lib/python3.6/site-packages/click/__pycache__/parser.cpython-36.pyc deleted file mode 100644 index 2424b4cde59c913d54750810082e94610dafa7b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11433 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 diff --git a/venv/lib/python3.6/site-packages/click/__pycache__/testing.cpython-36.pyc b/venv/lib/python3.6/site-packages/click/__pycache__/testing.cpython-36.pyc deleted file mode 100644 index 938b408af02cf19c2a93cfce37f75735873776a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11586 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 =RzIwY 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%0D@f4MZ+6x`Y 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 cmd_param.nargs: - break - if start_of_option(arg_str): - last_option = arg_str - - return True if last_option and last_option in cmd_param.opts else False - - -def is_incomplete_argument(current_params, cmd_param): - """ - :param current_params: the current params and values for this argument as already entered - :param cmd_param: the current command parameter - :return: whether or not the last argument is incomplete and corresponds to this cmd_param. In - other words whether or not the this cmd_param argument can still accept values - """ - if not isinstance(cmd_param, Argument): - return False - current_param_values = current_params[cmd_param.name] - if current_param_values is None: - return True - if cmd_param.nargs == -1: - return True - if isinstance(current_param_values, abc.Iterable) \ - and cmd_param.nargs > 1 and len(current_param_values) < cmd_param.nargs: - return True - return False - - -def get_user_autocompletions(ctx, args, incomplete, cmd_param): - """ - :param ctx: context associated with the parsed command - :param args: full list of args - :param incomplete: the incomplete text to autocomplete - :param cmd_param: command definition - :return: all the possible user-specified completions for the param - """ - results = [] - if isinstance(cmd_param.type, Choice): - # Choices don't support descriptions. - results = [(c, None) - for c in cmd_param.type.choices if str(c).startswith(incomplete)] - elif cmd_param.autocompletion is not None: - dynamic_completions = cmd_param.autocompletion(ctx=ctx, - args=args, - incomplete=incomplete) - results = [c if isinstance(c, tuple) else (c, None) - for c in dynamic_completions] - return results - - -def get_visible_commands_starting_with(ctx, starts_with): - """ - :param ctx: context associated with the parsed command - :starts_with: string that visible commands must start with. - :return: all visible (not hidden) commands that start with starts_with. - """ - for c in ctx.command.list_commands(ctx): - if c.startswith(starts_with): - command = ctx.command.get_command(ctx, c) - if not command.hidden: - yield command - - -def add_subcommand_completions(ctx, incomplete, completions_out): - # Add subcommand completions. - if isinstance(ctx.command, MultiCommand): - completions_out.extend( - [(c.name, c.get_short_help_str()) for c in get_visible_commands_starting_with(ctx, incomplete)]) - - # Walk up the context list and add any other completion possibilities from chained commands - while ctx.parent is not None: - ctx = ctx.parent - if isinstance(ctx.command, MultiCommand) and ctx.command.chain: - remaining_commands = [c for c in get_visible_commands_starting_with(ctx, incomplete) - if c.name not in ctx.protected_args] - completions_out.extend([(c.name, c.get_short_help_str()) for c in remaining_commands]) - - -def get_choices(cli, prog_name, args, incomplete): - """ - :param cli: command definition - :param prog_name: the program that is running - :param args: full list of args - :param incomplete: the incomplete text to autocomplete - :return: all the possible completions for the incomplete - """ - all_args = copy.deepcopy(args) - - ctx = resolve_ctx(cli, prog_name, args) - if ctx is None: - return [] - - # In newer versions of bash long opts with '='s are partitioned, but it's easier to parse - # without the '=' - if start_of_option(incomplete) and WORDBREAK in incomplete: - partition_incomplete = incomplete.partition(WORDBREAK) - all_args.append(partition_incomplete[0]) - incomplete = partition_incomplete[2] - elif incomplete == WORDBREAK: - incomplete = '' - - completions = [] - if start_of_option(incomplete): - # completions for partial options - for param in ctx.command.params: - if isinstance(param, Option) and not param.hidden: - param_opts = [param_opt for param_opt in param.opts + - param.secondary_opts if param_opt not in all_args or param.multiple] - completions.extend([(o, param.help) for o in param_opts if o.startswith(incomplete)]) - return completions - # completion for option values from user supplied values - for param in ctx.command.params: - if is_incomplete_option(all_args, param): - return get_user_autocompletions(ctx, all_args, incomplete, param) - # completion for argument values from user supplied values - for param in ctx.command.params: - if is_incomplete_argument(ctx.params, param): - return get_user_autocompletions(ctx, all_args, incomplete, param) - - add_subcommand_completions(ctx, incomplete, completions) - # Sort before returning so that proper ordering can be enforced in custom types. - return sorted(completions) - - -def do_complete(cli, prog_name, include_descriptions): - cwords = split_arg_string(os.environ['COMP_WORDS']) - cword = int(os.environ['COMP_CWORD']) - args = cwords[1:cword] - try: - incomplete = cwords[cword] - except IndexError: - incomplete = '' - - for item in get_choices(cli, prog_name, args, incomplete): - echo(item[0]) - if include_descriptions: - # ZSH has trouble dealing with empty array parameters when returned from commands, so use a well defined character '_' to indicate no description is present. - echo(item[1] if item[1] else '_') - - return True - - -def bashcomplete(cli, prog_name, complete_var, complete_instr): - if complete_instr.startswith('source'): - shell = 'zsh' if complete_instr == 'source_zsh' else 'bash' - echo(get_completion_script(prog_name, complete_var, shell)) - return True - elif complete_instr == 'complete' or complete_instr == 'complete_zsh': - return do_complete(cli, prog_name, complete_instr == 'complete_zsh') - return False diff --git a/venv/lib/python3.6/site-packages/click/_compat.py b/venv/lib/python3.6/site-packages/click/_compat.py deleted file mode 100644 index 937e230..0000000 --- a/venv/lib/python3.6/site-packages/click/_compat.py +++ /dev/null @@ -1,703 +0,0 @@ -import re -import io -import os -import sys -import codecs -from weakref import WeakKeyDictionary - - -PY2 = sys.version_info[0] == 2 -CYGWIN = sys.platform.startswith('cygwin') -# Determine local App Engine environment, per Google's own suggestion -APP_ENGINE = ('APPENGINE_RUNTIME' in os.environ and - 'Development/' in os.environ['SERVER_SOFTWARE']) -WIN = sys.platform.startswith('win') and not APP_ENGINE -DEFAULT_COLUMNS = 80 - - -_ansi_re = re.compile(r'\033\[((?:\d|;)*)([a-zA-Z])') - - -def get_filesystem_encoding(): - return sys.getfilesystemencoding() or sys.getdefaultencoding() - - -def _make_text_stream(stream, encoding, errors, - force_readable=False, force_writable=False): - if encoding is None: - encoding = get_best_encoding(stream) - if errors is None: - errors = 'replace' - return _NonClosingTextIOWrapper(stream, encoding, errors, - line_buffering=True, - force_readable=force_readable, - force_writable=force_writable) - - -def is_ascii_encoding(encoding): - """Checks if a given encoding is ascii.""" - try: - return codecs.lookup(encoding).name == 'ascii' - except LookupError: - return False - - -def get_best_encoding(stream): - """Returns the default stream encoding if not found.""" - rv = getattr(stream, 'encoding', None) or sys.getdefaultencoding() - if is_ascii_encoding(rv): - return 'utf-8' - return rv - - -class _NonClosingTextIOWrapper(io.TextIOWrapper): - - def __init__(self, stream, encoding, errors, - force_readable=False, force_writable=False, **extra): - self._stream = stream = _FixupStream(stream, force_readable, - force_writable) - io.TextIOWrapper.__init__(self, stream, encoding, errors, **extra) - - # The io module is a place where the Python 3 text behavior - # was forced upon Python 2, so we need to unbreak - # it to look like Python 2. - if PY2: - def write(self, x): - if isinstance(x, str) or is_bytes(x): - try: - self.flush() - except Exception: - pass - return self.buffer.write(str(x)) - return io.TextIOWrapper.write(self, x) - - def writelines(self, lines): - for line in lines: - self.write(line) - - def __del__(self): - try: - self.detach() - except Exception: - pass - - def isatty(self): - # https://bitbucket.org/pypy/pypy/issue/1803 - return self._stream.isatty() - - -class _FixupStream(object): - """The new io interface needs more from streams than streams - traditionally implement. As such, this fix-up code is necessary in - some circumstances. - - The forcing of readable and writable flags are there because some tools - put badly patched objects on sys (one such offender are certain version - of jupyter notebook). - """ - - def __init__(self, stream, force_readable=False, force_writable=False): - self._stream = stream - self._force_readable = force_readable - self._force_writable = force_writable - - def __getattr__(self, name): - return getattr(self._stream, name) - - def read1(self, size): - f = getattr(self._stream, 'read1', None) - if f is not None: - return f(size) - # We only dispatch to readline instead of read in Python 2 as we - # do not want cause problems with the different implementation - # of line buffering. - if PY2: - return self._stream.readline(size) - return self._stream.read(size) - - def readable(self): - if self._force_readable: - return True - x = getattr(self._stream, 'readable', None) - if x is not None: - return x() - try: - self._stream.read(0) - except Exception: - return False - return True - - def writable(self): - if self._force_writable: - return True - x = getattr(self._stream, 'writable', None) - if x is not None: - return x() - try: - self._stream.write('') - except Exception: - try: - self._stream.write(b'') - except Exception: - return False - return True - - def seekable(self): - x = getattr(self._stream, 'seekable', None) - if x is not None: - return x() - try: - self._stream.seek(self._stream.tell()) - except Exception: - return False - return True - - -if PY2: - text_type = unicode - bytes = str - raw_input = raw_input - string_types = (str, unicode) - int_types = (int, long) - iteritems = lambda x: x.iteritems() - range_type = xrange - - def is_bytes(x): - return isinstance(x, (buffer, bytearray)) - - _identifier_re = re.compile(r'^[a-zA-Z_][a-zA-Z0-9_]*$') - - # For Windows, we need to force stdout/stdin/stderr to binary if it's - # fetched for that. This obviously is not the most correct way to do - # it as it changes global state. Unfortunately, there does not seem to - # be a clear better way to do it as just reopening the file in binary - # mode does not change anything. - # - # An option would be to do what Python 3 does and to open the file as - # binary only, patch it back to the system, and then use a wrapper - # stream that converts newlines. It's not quite clear what's the - # correct option here. - # - # This code also lives in _winconsole for the fallback to the console - # emulation stream. - # - # There are also Windows environments where the `msvcrt` module is not - # available (which is why we use try-catch instead of the WIN variable - # here), such as the Google App Engine development server on Windows. In - # those cases there is just nothing we can do. - def set_binary_mode(f): - return f - - try: - import msvcrt - except ImportError: - pass - else: - def set_binary_mode(f): - try: - fileno = f.fileno() - except Exception: - pass - else: - msvcrt.setmode(fileno, os.O_BINARY) - return f - - try: - import fcntl - except ImportError: - pass - else: - def set_binary_mode(f): - try: - fileno = f.fileno() - except Exception: - pass - else: - flags = fcntl.fcntl(fileno, fcntl.F_GETFL) - fcntl.fcntl(fileno, fcntl.F_SETFL, flags & ~os.O_NONBLOCK) - return f - - def isidentifier(x): - return _identifier_re.search(x) is not None - - def get_binary_stdin(): - return set_binary_mode(sys.stdin) - - def get_binary_stdout(): - _wrap_std_stream('stdout') - return set_binary_mode(sys.stdout) - - def get_binary_stderr(): - _wrap_std_stream('stderr') - return set_binary_mode(sys.stderr) - - def get_text_stdin(encoding=None, errors=None): - rv = _get_windows_console_stream(sys.stdin, encoding, errors) - if rv is not None: - return rv - return _make_text_stream(sys.stdin, encoding, errors, - force_readable=True) - - def get_text_stdout(encoding=None, errors=None): - _wrap_std_stream('stdout') - rv = _get_windows_console_stream(sys.stdout, encoding, errors) - if rv is not None: - return rv - return _make_text_stream(sys.stdout, encoding, errors, - force_writable=True) - - def get_text_stderr(encoding=None, errors=None): - _wrap_std_stream('stderr') - rv = _get_windows_console_stream(sys.stderr, encoding, errors) - if rv is not None: - return rv - return _make_text_stream(sys.stderr, encoding, errors, - force_writable=True) - - def filename_to_ui(value): - if isinstance(value, bytes): - value = value.decode(get_filesystem_encoding(), 'replace') - return value -else: - import io - text_type = str - raw_input = input - string_types = (str,) - int_types = (int,) - range_type = range - isidentifier = lambda x: x.isidentifier() - iteritems = lambda x: iter(x.items()) - - def is_bytes(x): - return isinstance(x, (bytes, memoryview, bytearray)) - - def _is_binary_reader(stream, default=False): - try: - return isinstance(stream.read(0), bytes) - except Exception: - return default - # This happens in some cases where the stream was already - # closed. In this case, we assume the default. - - def _is_binary_writer(stream, default=False): - try: - stream.write(b'') - except Exception: - try: - stream.write('') - return False - except Exception: - pass - return default - return True - - def _find_binary_reader(stream): - # We need to figure out if the given stream is already binary. - # This can happen because the official docs recommend detaching - # the streams to get binary streams. Some code might do this, so - # we need to deal with this case explicitly. - if _is_binary_reader(stream, False): - return stream - - buf = getattr(stream, 'buffer', None) - - # Same situation here; this time we assume that the buffer is - # actually binary in case it's closed. - if buf is not None and _is_binary_reader(buf, True): - return buf - - def _find_binary_writer(stream): - # We need to figure out if the given stream is already binary. - # This can happen because the official docs recommend detatching - # the streams to get binary streams. Some code might do this, so - # we need to deal with this case explicitly. - if _is_binary_writer(stream, False): - return stream - - buf = getattr(stream, 'buffer', None) - - # Same situation here; this time we assume that the buffer is - # actually binary in case it's closed. - if buf is not None and _is_binary_writer(buf, True): - return buf - - def _stream_is_misconfigured(stream): - """A stream is misconfigured if its encoding is ASCII.""" - # If the stream does not have an encoding set, we assume it's set - # to ASCII. This appears to happen in certain unittest - # environments. It's not quite clear what the correct behavior is - # but this at least will force Click to recover somehow. - return is_ascii_encoding(getattr(stream, 'encoding', None) or 'ascii') - - def _is_compatible_text_stream(stream, encoding, errors): - stream_encoding = getattr(stream, 'encoding', None) - stream_errors = getattr(stream, 'errors', None) - - # Perfect match. - if stream_encoding == encoding and stream_errors == errors: - return True - - # Otherwise, it's only a compatible stream if we did not ask for - # an encoding. - if encoding is None: - return stream_encoding is not None - - return False - - def _force_correct_text_reader(text_reader, encoding, errors, - force_readable=False): - if _is_binary_reader(text_reader, False): - binary_reader = text_reader - else: - # If there is no target encoding set, we need to verify that the - # reader is not actually misconfigured. - if encoding is None and not _stream_is_misconfigured(text_reader): - return text_reader - - if _is_compatible_text_stream(text_reader, encoding, errors): - return text_reader - - # If the reader has no encoding, we try to find the underlying - # binary reader for it. If that fails because the environment is - # misconfigured, we silently go with the same reader because this - # is too common to happen. In that case, mojibake is better than - # exceptions. - binary_reader = _find_binary_reader(text_reader) - if binary_reader is None: - return text_reader - - # At this point, we default the errors to replace instead of strict - # because nobody handles those errors anyways and at this point - # we're so fundamentally fucked that nothing can repair it. - if errors is None: - errors = 'replace' - return _make_text_stream(binary_reader, encoding, errors, - force_readable=force_readable) - - def _force_correct_text_writer(text_writer, encoding, errors, - force_writable=False): - if _is_binary_writer(text_writer, False): - binary_writer = text_writer - else: - # If there is no target encoding set, we need to verify that the - # writer is not actually misconfigured. - if encoding is None and not _stream_is_misconfigured(text_writer): - return text_writer - - if _is_compatible_text_stream(text_writer, encoding, errors): - return text_writer - - # If the writer has no encoding, we try to find the underlying - # binary writer for it. If that fails because the environment is - # misconfigured, we silently go with the same writer because this - # is too common to happen. In that case, mojibake is better than - # exceptions. - binary_writer = _find_binary_writer(text_writer) - if binary_writer is None: - return text_writer - - # At this point, we default the errors to replace instead of strict - # because nobody handles those errors anyways and at this point - # we're so fundamentally fucked that nothing can repair it. - if errors is None: - errors = 'replace' - return _make_text_stream(binary_writer, encoding, errors, - force_writable=force_writable) - - def get_binary_stdin(): - reader = _find_binary_reader(sys.stdin) - if reader is None: - raise RuntimeError('Was not able to determine binary ' - 'stream for sys.stdin.') - return reader - - def get_binary_stdout(): - writer = _find_binary_writer(sys.stdout) - if writer is None: - raise RuntimeError('Was not able to determine binary ' - 'stream for sys.stdout.') - return writer - - def get_binary_stderr(): - writer = _find_binary_writer(sys.stderr) - if writer is None: - raise RuntimeError('Was not able to determine binary ' - 'stream for sys.stderr.') - return writer - - def get_text_stdin(encoding=None, errors=None): - rv = _get_windows_console_stream(sys.stdin, encoding, errors) - if rv is not None: - return rv - return _force_correct_text_reader(sys.stdin, encoding, errors, - force_readable=True) - - def get_text_stdout(encoding=None, errors=None): - rv = _get_windows_console_stream(sys.stdout, encoding, errors) - if rv is not None: - return rv - return _force_correct_text_writer(sys.stdout, encoding, errors, - force_writable=True) - - def get_text_stderr(encoding=None, errors=None): - rv = _get_windows_console_stream(sys.stderr, encoding, errors) - if rv is not None: - return rv - return _force_correct_text_writer(sys.stderr, encoding, errors, - force_writable=True) - - def filename_to_ui(value): - if isinstance(value, bytes): - value = value.decode(get_filesystem_encoding(), 'replace') - else: - value = value.encode('utf-8', 'surrogateescape') \ - .decode('utf-8', 'replace') - return value - - -def get_streerror(e, default=None): - if hasattr(e, 'strerror'): - msg = e.strerror - else: - if default is not None: - msg = default - else: - msg = str(e) - if isinstance(msg, bytes): - msg = msg.decode('utf-8', 'replace') - return msg - - -def open_stream(filename, mode='r', encoding=None, errors='strict', - atomic=False): - # Standard streams first. These are simple because they don't need - # special handling for the atomic flag. It's entirely ignored. - if filename == '-': - if any(m in mode for m in ['w', 'a', 'x']): - if 'b' in mode: - return get_binary_stdout(), False - return get_text_stdout(encoding=encoding, errors=errors), False - if 'b' in mode: - return get_binary_stdin(), False - return get_text_stdin(encoding=encoding, errors=errors), False - - # Non-atomic writes directly go out through the regular open functions. - if not atomic: - if encoding is None: - return open(filename, mode), True - return io.open(filename, mode, encoding=encoding, errors=errors), True - - # Some usability stuff for atomic writes - if 'a' in mode: - raise ValueError( - 'Appending to an existing file is not supported, because that ' - 'would involve an expensive `copy`-operation to a temporary ' - 'file. Open the file in normal `w`-mode and copy explicitly ' - 'if that\'s what you\'re after.' - ) - if 'x' in mode: - raise ValueError('Use the `overwrite`-parameter instead.') - if 'w' not in mode: - raise ValueError('Atomic writes only make sense with `w`-mode.') - - # Atomic writes are more complicated. They work by opening a file - # as a proxy in the same folder and then using the fdopen - # functionality to wrap it in a Python file. Then we wrap it in an - # atomic file that moves the file over on close. - import tempfile - fd, tmp_filename = tempfile.mkstemp(dir=os.path.dirname(filename), - prefix='.__atomic-write') - - if encoding is not None: - f = io.open(fd, mode, encoding=encoding, errors=errors) - else: - f = os.fdopen(fd, mode) - - return _AtomicFile(f, tmp_filename, os.path.realpath(filename)), True - - -# Used in a destructor call, needs extra protection from interpreter cleanup. -if hasattr(os, 'replace'): - _replace = os.replace - _can_replace = True -else: - _replace = os.rename - _can_replace = not WIN - - -class _AtomicFile(object): - - def __init__(self, f, tmp_filename, real_filename): - self._f = f - self._tmp_filename = tmp_filename - self._real_filename = real_filename - self.closed = False - - @property - def name(self): - return self._real_filename - - def close(self, delete=False): - if self.closed: - return - self._f.close() - if not _can_replace: - try: - os.remove(self._real_filename) - except OSError: - pass - _replace(self._tmp_filename, self._real_filename) - self.closed = True - - def __getattr__(self, name): - return getattr(self._f, name) - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - self.close(delete=exc_type is not None) - - def __repr__(self): - return repr(self._f) - - -auto_wrap_for_ansi = None -colorama = None -get_winterm_size = None - - -def strip_ansi(value): - return _ansi_re.sub('', value) - - -def should_strip_ansi(stream=None, color=None): - if color is None: - if stream is None: - stream = sys.stdin - return not isatty(stream) - return not color - - -# If we're on Windows, we provide transparent integration through -# colorama. This will make ANSI colors through the echo function -# work automatically. -if WIN: - # Windows has a smaller terminal - DEFAULT_COLUMNS = 79 - - from ._winconsole import _get_windows_console_stream, _wrap_std_stream - - def _get_argv_encoding(): - import locale - return locale.getpreferredencoding() - - if PY2: - def raw_input(prompt=''): - sys.stderr.flush() - if prompt: - stdout = _default_text_stdout() - stdout.write(prompt) - stdin = _default_text_stdin() - return stdin.readline().rstrip('\r\n') - - try: - import colorama - except ImportError: - pass - else: - _ansi_stream_wrappers = WeakKeyDictionary() - - def auto_wrap_for_ansi(stream, color=None): - """This function wraps a stream so that calls through colorama - are issued to the win32 console API to recolor on demand. It - also ensures to reset the colors if a write call is interrupted - to not destroy the console afterwards. - """ - try: - cached = _ansi_stream_wrappers.get(stream) - except Exception: - cached = None - if cached is not None: - return cached - strip = should_strip_ansi(stream, color) - ansi_wrapper = colorama.AnsiToWin32(stream, strip=strip) - rv = ansi_wrapper.stream - _write = rv.write - - def _safe_write(s): - try: - return _write(s) - except: - ansi_wrapper.reset_all() - raise - - rv.write = _safe_write - try: - _ansi_stream_wrappers[stream] = rv - except Exception: - pass - return rv - - def get_winterm_size(): - win = colorama.win32.GetConsoleScreenBufferInfo( - colorama.win32.STDOUT).srWindow - return win.Right - win.Left, win.Bottom - win.Top -else: - def _get_argv_encoding(): - return getattr(sys.stdin, 'encoding', None) or get_filesystem_encoding() - - _get_windows_console_stream = lambda *x: None - _wrap_std_stream = lambda *x: None - - -def term_len(x): - return len(strip_ansi(x)) - - -def isatty(stream): - try: - return stream.isatty() - except Exception: - return False - - -def _make_cached_stream_func(src_func, wrapper_func): - cache = WeakKeyDictionary() - def func(): - stream = src_func() - try: - rv = cache.get(stream) - except Exception: - rv = None - if rv is not None: - return rv - rv = wrapper_func() - try: - stream = src_func() # In case wrapper_func() modified the stream - cache[stream] = rv - except Exception: - pass - return rv - return func - - -_default_text_stdin = _make_cached_stream_func( - lambda: sys.stdin, get_text_stdin) -_default_text_stdout = _make_cached_stream_func( - lambda: sys.stdout, get_text_stdout) -_default_text_stderr = _make_cached_stream_func( - lambda: sys.stderr, get_text_stderr) - - -binary_streams = { - 'stdin': get_binary_stdin, - 'stdout': get_binary_stdout, - 'stderr': get_binary_stderr, -} - -text_streams = { - 'stdin': get_text_stdin, - 'stdout': get_text_stdout, - 'stderr': get_text_stderr, -} diff --git a/venv/lib/python3.6/site-packages/click/_termui_impl.py b/venv/lib/python3.6/site-packages/click/_termui_impl.py deleted file mode 100644 index 00a8e5e..0000000 --- a/venv/lib/python3.6/site-packages/click/_termui_impl.py +++ /dev/null @@ -1,621 +0,0 @@ -# -*- coding: utf-8 -*- -""" -click._termui_impl -~~~~~~~~~~~~~~~~~~ - -This module contains implementations for the termui module. To keep the -import time of Click down, some infrequently used functionality is -placed in this module and only imported as needed. - -:copyright: © 2014 by the Pallets team. -:license: BSD, see LICENSE.rst for more details. -""" - -import os -import sys -import time -import math -import contextlib -from ._compat import _default_text_stdout, range_type, PY2, isatty, \ - open_stream, strip_ansi, term_len, get_best_encoding, WIN, int_types, \ - CYGWIN -from .utils import echo -from .exceptions import ClickException - - -if os.name == 'nt': - BEFORE_BAR = '\r' - AFTER_BAR = '\n' -else: - BEFORE_BAR = '\r\033[?25l' - AFTER_BAR = '\033[?25h\n' - - -def _length_hint(obj): - """Returns the length hint of an object.""" - try: - return len(obj) - except (AttributeError, TypeError): - try: - get_hint = type(obj).__length_hint__ - except AttributeError: - return None - try: - hint = get_hint(obj) - except TypeError: - return None - if hint is NotImplemented or \ - not isinstance(hint, int_types) or \ - hint < 0: - return None - return hint - - -class ProgressBar(object): - - def __init__(self, iterable, length=None, fill_char='#', empty_char=' ', - bar_template='%(bar)s', info_sep=' ', show_eta=True, - show_percent=None, show_pos=False, item_show_func=None, - label=None, file=None, color=None, width=30): - self.fill_char = fill_char - self.empty_char = empty_char - self.bar_template = bar_template - self.info_sep = info_sep - self.show_eta = show_eta - self.show_percent = show_percent - self.show_pos = show_pos - self.item_show_func = item_show_func - self.label = label or '' - if file is None: - file = _default_text_stdout() - self.file = file - self.color = color - self.width = width - self.autowidth = width == 0 - - if length is None: - length = _length_hint(iterable) - if iterable is None: - if length is None: - raise TypeError('iterable or length is required') - iterable = range_type(length) - self.iter = iter(iterable) - self.length = length - self.length_known = length is not None - self.pos = 0 - self.avg = [] - self.start = self.last_eta = time.time() - self.eta_known = False - self.finished = False - self.max_width = None - self.entered = False - self.current_item = None - self.is_hidden = not isatty(self.file) - self._last_line = None - self.short_limit = 0.5 - - def __enter__(self): - self.entered = True - self.render_progress() - return self - - def __exit__(self, exc_type, exc_value, tb): - self.render_finish() - - def __iter__(self): - if not self.entered: - raise RuntimeError('You need to use progress bars in a with block.') - self.render_progress() - return self.generator() - - def is_fast(self): - return time.time() - self.start <= self.short_limit - - def render_finish(self): - if self.is_hidden or self.is_fast(): - return - self.file.write(AFTER_BAR) - self.file.flush() - - @property - def pct(self): - if self.finished: - return 1.0 - return min(self.pos / (float(self.length) or 1), 1.0) - - @property - def time_per_iteration(self): - if not self.avg: - return 0.0 - return sum(self.avg) / float(len(self.avg)) - - @property - def eta(self): - if self.length_known and not self.finished: - return self.time_per_iteration * (self.length - self.pos) - return 0.0 - - def format_eta(self): - if self.eta_known: - t = int(self.eta) - seconds = t % 60 - t //= 60 - minutes = t % 60 - t //= 60 - hours = t % 24 - t //= 24 - if t > 0: - days = t - return '%dd %02d:%02d:%02d' % (days, hours, minutes, seconds) - else: - return '%02d:%02d:%02d' % (hours, minutes, seconds) - return '' - - def format_pos(self): - pos = str(self.pos) - if self.length_known: - pos += '/%s' % self.length - return pos - - def format_pct(self): - return ('% 4d%%' % int(self.pct * 100))[1:] - - def format_bar(self): - if self.length_known: - bar_length = int(self.pct * self.width) - bar = self.fill_char * bar_length - bar += self.empty_char * (self.width - bar_length) - elif self.finished: - bar = self.fill_char * self.width - else: - bar = list(self.empty_char * (self.width or 1)) - if self.time_per_iteration != 0: - bar[int((math.cos(self.pos * self.time_per_iteration) - / 2.0 + 0.5) * self.width)] = self.fill_char - bar = ''.join(bar) - return bar - - def format_progress_line(self): - show_percent = self.show_percent - - info_bits = [] - if self.length_known and show_percent is None: - show_percent = not self.show_pos - - if self.show_pos: - info_bits.append(self.format_pos()) - if show_percent: - info_bits.append(self.format_pct()) - if self.show_eta and self.eta_known and not self.finished: - info_bits.append(self.format_eta()) - if self.item_show_func is not None: - item_info = self.item_show_func(self.current_item) - if item_info is not None: - info_bits.append(item_info) - - return (self.bar_template % { - 'label': self.label, - 'bar': self.format_bar(), - 'info': self.info_sep.join(info_bits) - }).rstrip() - - def render_progress(self): - from .termui import get_terminal_size - - if self.is_hidden: - return - - buf = [] - # Update width in case the terminal has been resized - if self.autowidth: - old_width = self.width - self.width = 0 - clutter_length = term_len(self.format_progress_line()) - new_width = max(0, get_terminal_size()[0] - clutter_length) - if new_width < old_width: - buf.append(BEFORE_BAR) - buf.append(' ' * self.max_width) - self.max_width = new_width - self.width = new_width - - clear_width = self.width - if self.max_width is not None: - clear_width = self.max_width - - buf.append(BEFORE_BAR) - line = self.format_progress_line() - line_len = term_len(line) - if self.max_width is None or self.max_width < line_len: - self.max_width = line_len - - buf.append(line) - buf.append(' ' * (clear_width - line_len)) - line = ''.join(buf) - # Render the line only if it changed. - - if line != self._last_line and not self.is_fast(): - self._last_line = line - echo(line, file=self.file, color=self.color, nl=False) - self.file.flush() - - def make_step(self, n_steps): - self.pos += n_steps - if self.length_known and self.pos >= self.length: - self.finished = True - - if (time.time() - self.last_eta) < 1.0: - return - - self.last_eta = time.time() - - # self.avg is a rolling list of length <= 7 of steps where steps are - # defined as time elapsed divided by the total progress through - # self.length. - if self.pos: - step = (time.time() - self.start) / self.pos - else: - step = time.time() - self.start - - self.avg = self.avg[-6:] + [step] - - self.eta_known = self.length_known - - def update(self, n_steps): - self.make_step(n_steps) - self.render_progress() - - def finish(self): - self.eta_known = 0 - self.current_item = None - self.finished = True - - def generator(self): - """ - Returns a generator which yields the items added to the bar during - construction, and updates the progress bar *after* the yielded block - returns. - """ - if not self.entered: - raise RuntimeError('You need to use progress bars in a with block.') - - if self.is_hidden: - for rv in self.iter: - yield rv - else: - for rv in self.iter: - self.current_item = rv - yield rv - self.update(1) - self.finish() - self.render_progress() - - -def pager(generator, color=None): - """Decide what method to use for paging through text.""" - stdout = _default_text_stdout() - if not isatty(sys.stdin) or not isatty(stdout): - return _nullpager(stdout, generator, color) - pager_cmd = (os.environ.get('PAGER', None) or '').strip() - if pager_cmd: - if WIN: - return _tempfilepager(generator, pager_cmd, color) - return _pipepager(generator, pager_cmd, color) - if os.environ.get('TERM') in ('dumb', 'emacs'): - return _nullpager(stdout, generator, color) - if WIN or sys.platform.startswith('os2'): - return _tempfilepager(generator, 'more <', color) - if hasattr(os, 'system') and os.system('(less) 2>/dev/null') == 0: - return _pipepager(generator, 'less', color) - - import tempfile - fd, filename = tempfile.mkstemp() - os.close(fd) - try: - if hasattr(os, 'system') and os.system('more "%s"' % filename) == 0: - return _pipepager(generator, 'more', color) - return _nullpager(stdout, generator, color) - finally: - os.unlink(filename) - - -def _pipepager(generator, cmd, color): - """Page through text by feeding it to another program. Invoking a - pager through this might support colors. - """ - import subprocess - env = dict(os.environ) - - # If we're piping to less we might support colors under the - # condition that - cmd_detail = cmd.rsplit('/', 1)[-1].split() - if color is None and cmd_detail[0] == 'less': - less_flags = os.environ.get('LESS', '') + ' '.join(cmd_detail[1:]) - if not less_flags: - env['LESS'] = '-R' - color = True - elif 'r' in less_flags or 'R' in less_flags: - color = True - - c = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, - env=env) - encoding = get_best_encoding(c.stdin) - try: - for text in generator: - if not color: - text = strip_ansi(text) - - c.stdin.write(text.encode(encoding, 'replace')) - except (IOError, KeyboardInterrupt): - pass - else: - c.stdin.close() - - # Less doesn't respect ^C, but catches it for its own UI purposes (aborting - # search or other commands inside less). - # - # That means when the user hits ^C, the parent process (click) terminates, - # but less is still alive, paging the output and messing up the terminal. - # - # If the user wants to make the pager exit on ^C, they should set - # `LESS='-K'`. It's not our decision to make. - while True: - try: - c.wait() - except KeyboardInterrupt: - pass - else: - break - - -def _tempfilepager(generator, cmd, color): - """Page through text by invoking a program on a temporary file.""" - import tempfile - filename = tempfile.mktemp() - # TODO: This never terminates if the passed generator never terminates. - text = "".join(generator) - if not color: - text = strip_ansi(text) - encoding = get_best_encoding(sys.stdout) - with open_stream(filename, 'wb')[0] as f: - f.write(text.encode(encoding)) - try: - os.system(cmd + ' "' + filename + '"') - finally: - os.unlink(filename) - - -def _nullpager(stream, generator, color): - """Simply print unformatted text. This is the ultimate fallback.""" - for text in generator: - if not color: - text = strip_ansi(text) - stream.write(text) - - -class Editor(object): - - def __init__(self, editor=None, env=None, require_save=True, - extension='.txt'): - self.editor = editor - self.env = env - self.require_save = require_save - self.extension = extension - - def get_editor(self): - if self.editor is not None: - return self.editor - for key in 'VISUAL', 'EDITOR': - rv = os.environ.get(key) - if rv: - return rv - if WIN: - return 'notepad' - for editor in 'vim', 'nano': - if os.system('which %s >/dev/null 2>&1' % editor) == 0: - return editor - return 'vi' - - def edit_file(self, filename): - import subprocess - editor = self.get_editor() - if self.env: - environ = os.environ.copy() - environ.update(self.env) - else: - environ = None - try: - c = subprocess.Popen('%s "%s"' % (editor, filename), - env=environ, shell=True) - exit_code = c.wait() - if exit_code != 0: - raise ClickException('%s: Editing failed!' % editor) - except OSError as e: - raise ClickException('%s: Editing failed: %s' % (editor, e)) - - def edit(self, text): - import tempfile - - text = text or '' - if text and not text.endswith('\n'): - text += '\n' - - fd, name = tempfile.mkstemp(prefix='editor-', suffix=self.extension) - try: - if WIN: - encoding = 'utf-8-sig' - text = text.replace('\n', '\r\n') - else: - encoding = 'utf-8' - text = text.encode(encoding) - - f = os.fdopen(fd, 'wb') - f.write(text) - f.close() - timestamp = os.path.getmtime(name) - - self.edit_file(name) - - if self.require_save \ - and os.path.getmtime(name) == timestamp: - return None - - f = open(name, 'rb') - try: - rv = f.read() - finally: - f.close() - return rv.decode('utf-8-sig').replace('\r\n', '\n') - finally: - os.unlink(name) - - -def open_url(url, wait=False, locate=False): - import subprocess - - def _unquote_file(url): - try: - import urllib - except ImportError: - import urllib - if url.startswith('file://'): - url = urllib.unquote(url[7:]) - return url - - if sys.platform == 'darwin': - args = ['open'] - if wait: - args.append('-W') - if locate: - args.append('-R') - args.append(_unquote_file(url)) - null = open('/dev/null', 'w') - try: - return subprocess.Popen(args, stderr=null).wait() - finally: - null.close() - elif WIN: - if locate: - url = _unquote_file(url) - args = 'explorer /select,"%s"' % _unquote_file( - url.replace('"', '')) - else: - args = 'start %s "" "%s"' % ( - wait and '/WAIT' or '', url.replace('"', '')) - return os.system(args) - elif CYGWIN: - if locate: - url = _unquote_file(url) - args = 'cygstart "%s"' % (os.path.dirname(url).replace('"', '')) - else: - args = 'cygstart %s "%s"' % ( - wait and '-w' or '', url.replace('"', '')) - return os.system(args) - - try: - if locate: - url = os.path.dirname(_unquote_file(url)) or '.' - else: - url = _unquote_file(url) - c = subprocess.Popen(['xdg-open', url]) - if wait: - return c.wait() - return 0 - except OSError: - if url.startswith(('http://', 'https://')) and not locate and not wait: - import webbrowser - webbrowser.open(url) - return 0 - return 1 - - -def _translate_ch_to_exc(ch): - if ch == u'\x03': - raise KeyboardInterrupt() - if ch == u'\x04' and not WIN: # Unix-like, Ctrl+D - raise EOFError() - if ch == u'\x1a' and WIN: # Windows, Ctrl+Z - raise EOFError() - - -if WIN: - import msvcrt - - @contextlib.contextmanager - def raw_terminal(): - yield - - def getchar(echo): - # The function `getch` will return a bytes object corresponding to - # the pressed character. Since Windows 10 build 1803, it will also - # return \x00 when called a second time after pressing a regular key. - # - # `getwch` does not share this probably-bugged behavior. Moreover, it - # returns a Unicode object by default, which is what we want. - # - # Either of these functions will return \x00 or \xe0 to indicate - # a special key, and you need to call the same function again to get - # the "rest" of the code. The fun part is that \u00e0 is - # "latin small letter a with grave", so if you type that on a French - # keyboard, you _also_ get a \xe0. - # E.g., consider the Up arrow. This returns \xe0 and then \x48. The - # resulting Unicode string reads as "a with grave" + "capital H". - # This is indistinguishable from when the user actually types - # "a with grave" and then "capital H". - # - # When \xe0 is returned, we assume it's part of a special-key sequence - # and call `getwch` again, but that means that when the user types - # the \u00e0 character, `getchar` doesn't return until a second - # character is typed. - # The alternative is returning immediately, but that would mess up - # cross-platform handling of arrow keys and others that start with - # \xe0. Another option is using `getch`, but then we can't reliably - # read non-ASCII characters, because return values of `getch` are - # limited to the current 8-bit codepage. - # - # Anyway, Click doesn't claim to do this Right(tm), and using `getwch` - # is doing the right thing in more situations than with `getch`. - if echo: - func = msvcrt.getwche - else: - func = msvcrt.getwch - - rv = func() - if rv in (u'\x00', u'\xe0'): - # \x00 and \xe0 are control characters that indicate special key, - # see above. - rv += func() - _translate_ch_to_exc(rv) - return rv -else: - import tty - import termios - - @contextlib.contextmanager - def raw_terminal(): - if not isatty(sys.stdin): - f = open('/dev/tty') - fd = f.fileno() - else: - fd = sys.stdin.fileno() - f = None - try: - old_settings = termios.tcgetattr(fd) - try: - tty.setraw(fd) - yield fd - finally: - termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) - sys.stdout.flush() - if f is not None: - f.close() - except termios.error: - pass - - def getchar(echo): - with raw_terminal() as fd: - ch = os.read(fd, 32) - ch = ch.decode(get_best_encoding(sys.stdin), 'replace') - if echo and isatty(sys.stdout): - sys.stdout.write(ch) - _translate_ch_to_exc(ch) - return ch diff --git a/venv/lib/python3.6/site-packages/click/_textwrap.py b/venv/lib/python3.6/site-packages/click/_textwrap.py deleted file mode 100644 index 7e77603..0000000 --- a/venv/lib/python3.6/site-packages/click/_textwrap.py +++ /dev/null @@ -1,38 +0,0 @@ -import textwrap -from contextlib import contextmanager - - -class TextWrapper(textwrap.TextWrapper): - - def _handle_long_word(self, reversed_chunks, cur_line, cur_len, width): - space_left = max(width - cur_len, 1) - - if self.break_long_words: - last = reversed_chunks[-1] - cut = last[:space_left] - res = last[space_left:] - cur_line.append(cut) - reversed_chunks[-1] = res - elif not cur_line: - cur_line.append(reversed_chunks.pop()) - - @contextmanager - def extra_indent(self, indent): - old_initial_indent = self.initial_indent - old_subsequent_indent = self.subsequent_indent - self.initial_indent += indent - self.subsequent_indent += indent - try: - yield - finally: - self.initial_indent = old_initial_indent - self.subsequent_indent = old_subsequent_indent - - def indent_only(self, text): - rv = [] - for idx, line in enumerate(text.splitlines()): - indent = self.initial_indent - if idx > 0: - indent = self.subsequent_indent - rv.append(indent + line) - return '\n'.join(rv) diff --git a/venv/lib/python3.6/site-packages/click/_unicodefun.py b/venv/lib/python3.6/site-packages/click/_unicodefun.py deleted file mode 100644 index 620edff..0000000 --- a/venv/lib/python3.6/site-packages/click/_unicodefun.py +++ /dev/null @@ -1,125 +0,0 @@ -import os -import sys -import codecs - -from ._compat import PY2 - - -# If someone wants to vendor click, we want to ensure the -# correct package is discovered. Ideally we could use a -# relative import here but unfortunately Python does not -# support that. -click = sys.modules[__name__.rsplit('.', 1)[0]] - - -def _find_unicode_literals_frame(): - import __future__ - if not hasattr(sys, '_getframe'): # not all Python implementations have it - return 0 - frm = sys._getframe(1) - idx = 1 - while frm is not None: - if frm.f_globals.get('__name__', '').startswith('click.'): - frm = frm.f_back - idx += 1 - elif frm.f_code.co_flags & __future__.unicode_literals.compiler_flag: - return idx - else: - break - return 0 - - -def _check_for_unicode_literals(): - if not __debug__: - return - if not PY2 or click.disable_unicode_literals_warning: - return - bad_frame = _find_unicode_literals_frame() - if bad_frame <= 0: - return - from warnings import warn - warn(Warning('Click detected the use of the unicode_literals ' - '__future__ import. This is heavily discouraged ' - 'because it can introduce subtle bugs in your ' - 'code. You should instead use explicit u"" literals ' - 'for your unicode strings. For more information see ' - 'https://click.palletsprojects.com/python3/'), - stacklevel=bad_frame) - - -def _verify_python3_env(): - """Ensures that the environment is good for unicode on Python 3.""" - if PY2: - return - try: - import locale - fs_enc = codecs.lookup(locale.getpreferredencoding()).name - except Exception: - fs_enc = 'ascii' - if fs_enc != 'ascii': - return - - extra = '' - if os.name == 'posix': - import subprocess - try: - rv = subprocess.Popen(['locale', '-a'], stdout=subprocess.PIPE, - stderr=subprocess.PIPE).communicate()[0] - except OSError: - rv = b'' - good_locales = set() - has_c_utf8 = False - - # Make sure we're operating on text here. - if isinstance(rv, bytes): - rv = rv.decode('ascii', 'replace') - - for line in rv.splitlines(): - locale = line.strip() - if locale.lower().endswith(('.utf-8', '.utf8')): - good_locales.add(locale) - if locale.lower() in ('c.utf8', 'c.utf-8'): - has_c_utf8 = True - - extra += '\n\n' - if not good_locales: - extra += ( - 'Additional information: on this system no suitable UTF-8\n' - 'locales were discovered. This most likely requires resolving\n' - 'by reconfiguring the locale system.' - ) - elif has_c_utf8: - extra += ( - 'This system supports the C.UTF-8 locale which is recommended.\n' - 'You might be able to resolve your issue by exporting the\n' - 'following environment variables:\n\n' - ' export LC_ALL=C.UTF-8\n' - ' export LANG=C.UTF-8' - ) - else: - extra += ( - 'This system lists a couple of UTF-8 supporting locales that\n' - 'you can pick from. The following suitable locales were\n' - 'discovered: %s' - ) % ', '.join(sorted(good_locales)) - - bad_locale = None - for locale in os.environ.get('LC_ALL'), os.environ.get('LANG'): - if locale and locale.lower().endswith(('.utf-8', '.utf8')): - bad_locale = locale - if locale is not None: - break - if bad_locale is not None: - extra += ( - '\n\nClick discovered that you exported a UTF-8 locale\n' - 'but the locale system could not pick up from it because\n' - 'it does not exist. The exported locale is "%s" but it\n' - 'is not supported' - ) % bad_locale - - raise RuntimeError( - 'Click will abort further execution because Python 3 was' - ' configured to use ASCII as encoding for the environment.' - ' Consult https://click.palletsprojects.com/en/7.x/python3/ for' - ' mitigation steps.' + extra - ) diff --git a/venv/lib/python3.6/site-packages/click/_winconsole.py b/venv/lib/python3.6/site-packages/click/_winconsole.py deleted file mode 100644 index bbb080d..0000000 --- a/venv/lib/python3.6/site-packages/click/_winconsole.py +++ /dev/null @@ -1,307 +0,0 @@ -# -*- coding: utf-8 -*- -# This module is based on the excellent work by Adam Bartoš who -# provided a lot of what went into the implementation here in -# the discussion to issue1602 in the Python bug tracker. -# -# There are some general differences in regards to how this works -# compared to the original patches as we do not need to patch -# the entire interpreter but just work in our little world of -# echo and prmopt. - -import io -import os -import sys -import zlib -import time -import ctypes -import msvcrt -from ._compat import _NonClosingTextIOWrapper, text_type, PY2 -from ctypes import byref, POINTER, c_int, c_char, c_char_p, \ - c_void_p, py_object, c_ssize_t, c_ulong, windll, WINFUNCTYPE -try: - from ctypes import pythonapi - PyObject_GetBuffer = pythonapi.PyObject_GetBuffer - PyBuffer_Release = pythonapi.PyBuffer_Release -except ImportError: - pythonapi = None -from ctypes.wintypes import LPWSTR, LPCWSTR - - -c_ssize_p = POINTER(c_ssize_t) - -kernel32 = windll.kernel32 -GetStdHandle = kernel32.GetStdHandle -ReadConsoleW = kernel32.ReadConsoleW -WriteConsoleW = kernel32.WriteConsoleW -GetLastError = kernel32.GetLastError -GetCommandLineW = WINFUNCTYPE(LPWSTR)( - ('GetCommandLineW', windll.kernel32)) -CommandLineToArgvW = WINFUNCTYPE( - POINTER(LPWSTR), LPCWSTR, POINTER(c_int))( - ('CommandLineToArgvW', windll.shell32)) - - -STDIN_HANDLE = GetStdHandle(-10) -STDOUT_HANDLE = GetStdHandle(-11) -STDERR_HANDLE = GetStdHandle(-12) - - -PyBUF_SIMPLE = 0 -PyBUF_WRITABLE = 1 - -ERROR_SUCCESS = 0 -ERROR_NOT_ENOUGH_MEMORY = 8 -ERROR_OPERATION_ABORTED = 995 - -STDIN_FILENO = 0 -STDOUT_FILENO = 1 -STDERR_FILENO = 2 - -EOF = b'\x1a' -MAX_BYTES_WRITTEN = 32767 - - -class Py_buffer(ctypes.Structure): - _fields_ = [ - ('buf', c_void_p), - ('obj', py_object), - ('len', c_ssize_t), - ('itemsize', c_ssize_t), - ('readonly', c_int), - ('ndim', c_int), - ('format', c_char_p), - ('shape', c_ssize_p), - ('strides', c_ssize_p), - ('suboffsets', c_ssize_p), - ('internal', c_void_p) - ] - - if PY2: - _fields_.insert(-1, ('smalltable', c_ssize_t * 2)) - - -# On PyPy we cannot get buffers so our ability to operate here is -# serverly limited. -if pythonapi is None: - get_buffer = None -else: - def get_buffer(obj, writable=False): - buf = Py_buffer() - flags = PyBUF_WRITABLE if writable else PyBUF_SIMPLE - PyObject_GetBuffer(py_object(obj), byref(buf), flags) - try: - buffer_type = c_char * buf.len - return buffer_type.from_address(buf.buf) - finally: - PyBuffer_Release(byref(buf)) - - -class _WindowsConsoleRawIOBase(io.RawIOBase): - - def __init__(self, handle): - self.handle = handle - - def isatty(self): - io.RawIOBase.isatty(self) - return True - - -class _WindowsConsoleReader(_WindowsConsoleRawIOBase): - - def readable(self): - return True - - def readinto(self, b): - bytes_to_be_read = len(b) - if not bytes_to_be_read: - return 0 - elif bytes_to_be_read % 2: - raise ValueError('cannot read odd number of bytes from ' - 'UTF-16-LE encoded console') - - buffer = get_buffer(b, writable=True) - code_units_to_be_read = bytes_to_be_read // 2 - code_units_read = c_ulong() - - rv = ReadConsoleW(self.handle, buffer, code_units_to_be_read, - byref(code_units_read), None) - if GetLastError() == ERROR_OPERATION_ABORTED: - # wait for KeyboardInterrupt - time.sleep(0.1) - if not rv: - raise OSError('Windows error: %s' % GetLastError()) - - if buffer[0] == EOF: - return 0 - return 2 * code_units_read.value - - -class _WindowsConsoleWriter(_WindowsConsoleRawIOBase): - - def writable(self): - return True - - @staticmethod - def _get_error_message(errno): - if errno == ERROR_SUCCESS: - return 'ERROR_SUCCESS' - elif errno == ERROR_NOT_ENOUGH_MEMORY: - return 'ERROR_NOT_ENOUGH_MEMORY' - return 'Windows error %s' % errno - - def write(self, b): - bytes_to_be_written = len(b) - buf = get_buffer(b) - code_units_to_be_written = min(bytes_to_be_written, - MAX_BYTES_WRITTEN) // 2 - code_units_written = c_ulong() - - WriteConsoleW(self.handle, buf, code_units_to_be_written, - byref(code_units_written), None) - bytes_written = 2 * code_units_written.value - - if bytes_written == 0 and bytes_to_be_written > 0: - raise OSError(self._get_error_message(GetLastError())) - return bytes_written - - -class ConsoleStream(object): - - def __init__(self, text_stream, byte_stream): - self._text_stream = text_stream - self.buffer = byte_stream - - @property - def name(self): - return self.buffer.name - - def write(self, x): - if isinstance(x, text_type): - return self._text_stream.write(x) - try: - self.flush() - except Exception: - pass - return self.buffer.write(x) - - def writelines(self, lines): - for line in lines: - self.write(line) - - def __getattr__(self, name): - return getattr(self._text_stream, name) - - def isatty(self): - return self.buffer.isatty() - - def __repr__(self): - return '' % ( - self.name, - self.encoding, - ) - - -class WindowsChunkedWriter(object): - """ - Wraps a stream (such as stdout), acting as a transparent proxy for all - attribute access apart from method 'write()' which we wrap to write in - limited chunks due to a Windows limitation on binary console streams. - """ - def __init__(self, wrapped): - # double-underscore everything to prevent clashes with names of - # attributes on the wrapped stream object. - self.__wrapped = wrapped - - def __getattr__(self, name): - return getattr(self.__wrapped, name) - - def write(self, text): - total_to_write = len(text) - written = 0 - - while written < total_to_write: - to_write = min(total_to_write - written, MAX_BYTES_WRITTEN) - self.__wrapped.write(text[written:written+to_write]) - written += to_write - - -_wrapped_std_streams = set() - - -def _wrap_std_stream(name): - # Python 2 & Windows 7 and below - if PY2 and sys.getwindowsversion()[:2] <= (6, 1) and name not in _wrapped_std_streams: - setattr(sys, name, WindowsChunkedWriter(getattr(sys, name))) - _wrapped_std_streams.add(name) - - -def _get_text_stdin(buffer_stream): - text_stream = _NonClosingTextIOWrapper( - io.BufferedReader(_WindowsConsoleReader(STDIN_HANDLE)), - 'utf-16-le', 'strict', line_buffering=True) - return ConsoleStream(text_stream, buffer_stream) - - -def _get_text_stdout(buffer_stream): - text_stream = _NonClosingTextIOWrapper( - io.BufferedWriter(_WindowsConsoleWriter(STDOUT_HANDLE)), - 'utf-16-le', 'strict', line_buffering=True) - return ConsoleStream(text_stream, buffer_stream) - - -def _get_text_stderr(buffer_stream): - text_stream = _NonClosingTextIOWrapper( - io.BufferedWriter(_WindowsConsoleWriter(STDERR_HANDLE)), - 'utf-16-le', 'strict', line_buffering=True) - return ConsoleStream(text_stream, buffer_stream) - - -if PY2: - def _hash_py_argv(): - return zlib.crc32('\x00'.join(sys.argv[1:])) - - _initial_argv_hash = _hash_py_argv() - - def _get_windows_argv(): - argc = c_int(0) - argv_unicode = CommandLineToArgvW(GetCommandLineW(), byref(argc)) - argv = [argv_unicode[i] for i in range(0, argc.value)] - - if not hasattr(sys, 'frozen'): - argv = argv[1:] - while len(argv) > 0: - arg = argv[0] - if not arg.startswith('-') or arg == '-': - break - argv = argv[1:] - if arg.startswith(('-c', '-m')): - break - - return argv[1:] - - -_stream_factories = { - 0: _get_text_stdin, - 1: _get_text_stdout, - 2: _get_text_stderr, -} - - -def _get_windows_console_stream(f, encoding, errors): - if get_buffer is not None and \ - encoding in ('utf-16-le', None) \ - and errors in ('strict', None) and \ - hasattr(f, 'isatty') and f.isatty(): - func = _stream_factories.get(f.fileno()) - if func is not None: - if not PY2: - f = getattr(f, 'buffer', None) - if f is None: - return None - else: - # If we are on Python 2 we need to set the stream that we - # deal with to binary mode as otherwise the exercise if a - # bit moot. The same problems apply as for - # get_binary_stdin and friends from _compat. - msvcrt.setmode(f.fileno(), os.O_BINARY) - return func(f) diff --git a/venv/lib/python3.6/site-packages/click/core.py b/venv/lib/python3.6/site-packages/click/core.py deleted file mode 100644 index 7a1e342..0000000 --- a/venv/lib/python3.6/site-packages/click/core.py +++ /dev/null @@ -1,1856 +0,0 @@ -import errno -import inspect -import os -import sys -from contextlib import contextmanager -from itertools import repeat -from functools import update_wrapper - -from .types import convert_type, IntRange, BOOL -from .utils import PacifyFlushWrapper, make_str, make_default_short_help, \ - echo, get_os_args -from .exceptions import ClickException, UsageError, BadParameter, Abort, \ - MissingParameter, Exit -from .termui import prompt, confirm, style -from .formatting import HelpFormatter, join_options -from .parser import OptionParser, split_opt -from .globals import push_context, pop_context - -from ._compat import PY2, isidentifier, iteritems, string_types -from ._unicodefun import _check_for_unicode_literals, _verify_python3_env - - -_missing = object() - - -SUBCOMMAND_METAVAR = 'COMMAND [ARGS]...' -SUBCOMMANDS_METAVAR = 'COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...' - -DEPRECATED_HELP_NOTICE = ' (DEPRECATED)' -DEPRECATED_INVOKE_NOTICE = 'DeprecationWarning: ' + \ - 'The command %(name)s is deprecated.' - - -def _maybe_show_deprecated_notice(cmd): - if cmd.deprecated: - echo(style(DEPRECATED_INVOKE_NOTICE % {'name': cmd.name}, fg='red'), err=True) - - -def fast_exit(code): - """Exit without garbage collection, this speeds up exit by about 10ms for - things like bash completion. - """ - sys.stdout.flush() - sys.stderr.flush() - os._exit(code) - - -def _bashcomplete(cmd, prog_name, complete_var=None): - """Internal handler for the bash completion support.""" - if complete_var is None: - complete_var = '_%s_COMPLETE' % (prog_name.replace('-', '_')).upper() - complete_instr = os.environ.get(complete_var) - if not complete_instr: - return - - from ._bashcomplete import bashcomplete - if bashcomplete(cmd, prog_name, complete_var, complete_instr): - fast_exit(1) - - -def _check_multicommand(base_command, cmd_name, cmd, register=False): - if not base_command.chain or not isinstance(cmd, MultiCommand): - return - if register: - hint = 'It is not possible to add multi commands as children to ' \ - 'another multi command that is in chain mode' - else: - hint = 'Found a multi command as subcommand to a multi command ' \ - 'that is in chain mode. This is not supported' - raise RuntimeError('%s. Command "%s" is set to chain and "%s" was ' - 'added as subcommand but it in itself is a ' - 'multi command. ("%s" is a %s within a chained ' - '%s named "%s").' % ( - hint, base_command.name, cmd_name, - cmd_name, cmd.__class__.__name__, - base_command.__class__.__name__, - base_command.name)) - - -def batch(iterable, batch_size): - return list(zip(*repeat(iter(iterable), batch_size))) - - -def invoke_param_callback(callback, ctx, param, value): - code = getattr(callback, '__code__', None) - args = getattr(code, 'co_argcount', 3) - - if args < 3: - # This will become a warning in Click 3.0: - from warnings import warn - warn(Warning('Invoked legacy parameter callback "%s". The new ' - 'signature for such callbacks starting with ' - 'click 2.0 is (ctx, param, value).' - % callback), stacklevel=3) - return callback(ctx, value) - return callback(ctx, param, value) - - -@contextmanager -def augment_usage_errors(ctx, param=None): - """Context manager that attaches extra information to exceptions that - fly. - """ - try: - yield - except BadParameter as e: - if e.ctx is None: - e.ctx = ctx - if param is not None and e.param is None: - e.param = param - raise - except UsageError as e: - if e.ctx is None: - e.ctx = ctx - raise - - -def iter_params_for_processing(invocation_order, declaration_order): - """Given a sequence of parameters in the order as should be considered - for processing and an iterable of parameters that exist, this returns - a list in the correct order as they should be processed. - """ - def sort_key(item): - try: - idx = invocation_order.index(item) - except ValueError: - idx = float('inf') - return (not item.is_eager, idx) - - return sorted(declaration_order, key=sort_key) - - -class Context(object): - """The context is a special internal object that holds state relevant - for the script execution at every single level. It's normally invisible - to commands unless they opt-in to getting access to it. - - The context is useful as it can pass internal objects around and can - control special execution features such as reading data from - environment variables. - - A context can be used as context manager in which case it will call - :meth:`close` on teardown. - - .. versionadded:: 2.0 - Added the `resilient_parsing`, `help_option_names`, - `token_normalize_func` parameters. - - .. versionadded:: 3.0 - Added the `allow_extra_args` and `allow_interspersed_args` - parameters. - - .. versionadded:: 4.0 - Added the `color`, `ignore_unknown_options`, and - `max_content_width` parameters. - - :param command: the command class for this context. - :param parent: the parent context. - :param info_name: the info name for this invocation. Generally this - is the most descriptive name for the script or - command. For the toplevel script it is usually - the name of the script, for commands below it it's - the name of the script. - :param obj: an arbitrary object of user data. - :param auto_envvar_prefix: the prefix to use for automatic environment - variables. If this is `None` then reading - from environment variables is disabled. This - does not affect manually set environment - variables which are always read. - :param default_map: a dictionary (like object) with default values - for parameters. - :param terminal_width: the width of the terminal. The default is - inherit from parent context. If no context - defines the terminal width then auto - detection will be applied. - :param max_content_width: the maximum width for content rendered by - Click (this currently only affects help - pages). This defaults to 80 characters if - not overridden. In other words: even if the - terminal is larger than that, Click will not - format things wider than 80 characters by - default. In addition to that, formatters might - add some safety mapping on the right. - :param resilient_parsing: if this flag is enabled then Click will - parse without any interactivity or callback - invocation. Default values will also be - ignored. This is useful for implementing - things such as completion support. - :param allow_extra_args: if this is set to `True` then extra arguments - at the end will not raise an error and will be - kept on the context. The default is to inherit - from the command. - :param allow_interspersed_args: if this is set to `False` then options - and arguments cannot be mixed. The - default is to inherit from the command. - :param ignore_unknown_options: instructs click to ignore options it does - not know and keeps them for later - processing. - :param help_option_names: optionally a list of strings that define how - the default help parameter is named. The - default is ``['--help']``. - :param token_normalize_func: an optional function that is used to - normalize tokens (options, choices, - etc.). This for instance can be used to - implement case insensitive behavior. - :param color: controls if the terminal supports ANSI colors or not. The - default is autodetection. This is only needed if ANSI - codes are used in texts that Click prints which is by - default not the case. This for instance would affect - help output. - """ - - def __init__(self, command, parent=None, info_name=None, obj=None, - auto_envvar_prefix=None, default_map=None, - terminal_width=None, max_content_width=None, - resilient_parsing=False, allow_extra_args=None, - allow_interspersed_args=None, - ignore_unknown_options=None, help_option_names=None, - token_normalize_func=None, color=None): - #: the parent context or `None` if none exists. - self.parent = parent - #: the :class:`Command` for this context. - self.command = command - #: the descriptive information name - self.info_name = info_name - #: the parsed parameters except if the value is hidden in which - #: case it's not remembered. - self.params = {} - #: the leftover arguments. - self.args = [] - #: protected arguments. These are arguments that are prepended - #: to `args` when certain parsing scenarios are encountered but - #: must be never propagated to another arguments. This is used - #: to implement nested parsing. - self.protected_args = [] - if obj is None and parent is not None: - obj = parent.obj - #: the user object stored. - self.obj = obj - self._meta = getattr(parent, 'meta', {}) - - #: A dictionary (-like object) with defaults for parameters. - if default_map is None \ - and parent is not None \ - and parent.default_map is not None: - default_map = parent.default_map.get(info_name) - self.default_map = default_map - - #: This flag indicates if a subcommand is going to be executed. A - #: group callback can use this information to figure out if it's - #: being executed directly or because the execution flow passes - #: onwards to a subcommand. By default it's None, but it can be - #: the name of the subcommand to execute. - #: - #: If chaining is enabled this will be set to ``'*'`` in case - #: any commands are executed. It is however not possible to - #: figure out which ones. If you require this knowledge you - #: should use a :func:`resultcallback`. - self.invoked_subcommand = None - - if terminal_width is None and parent is not None: - terminal_width = parent.terminal_width - #: The width of the terminal (None is autodetection). - self.terminal_width = terminal_width - - if max_content_width is None and parent is not None: - max_content_width = parent.max_content_width - #: The maximum width of formatted content (None implies a sensible - #: default which is 80 for most things). - self.max_content_width = max_content_width - - if allow_extra_args is None: - allow_extra_args = command.allow_extra_args - #: Indicates if the context allows extra args or if it should - #: fail on parsing. - #: - #: .. versionadded:: 3.0 - self.allow_extra_args = allow_extra_args - - if allow_interspersed_args is None: - allow_interspersed_args = command.allow_interspersed_args - #: Indicates if the context allows mixing of arguments and - #: options or not. - #: - #: .. versionadded:: 3.0 - self.allow_interspersed_args = allow_interspersed_args - - if ignore_unknown_options is None: - ignore_unknown_options = command.ignore_unknown_options - #: Instructs click to ignore options that a command does not - #: understand and will store it on the context for later - #: processing. This is primarily useful for situations where you - #: want to call into external programs. Generally this pattern is - #: strongly discouraged because it's not possibly to losslessly - #: forward all arguments. - #: - #: .. versionadded:: 4.0 - self.ignore_unknown_options = ignore_unknown_options - - if help_option_names is None: - if parent is not None: - help_option_names = parent.help_option_names - else: - help_option_names = ['--help'] - - #: The names for the help options. - self.help_option_names = help_option_names - - if token_normalize_func is None and parent is not None: - token_normalize_func = parent.token_normalize_func - - #: An optional normalization function for tokens. This is - #: options, choices, commands etc. - self.token_normalize_func = token_normalize_func - - #: Indicates if resilient parsing is enabled. In that case Click - #: will do its best to not cause any failures and default values - #: will be ignored. Useful for completion. - self.resilient_parsing = resilient_parsing - - # If there is no envvar prefix yet, but the parent has one and - # the command on this level has a name, we can expand the envvar - # prefix automatically. - if auto_envvar_prefix is None: - if parent is not None \ - and parent.auto_envvar_prefix is not None and \ - self.info_name is not None: - auto_envvar_prefix = '%s_%s' % (parent.auto_envvar_prefix, - self.info_name.upper()) - else: - auto_envvar_prefix = auto_envvar_prefix.upper() - self.auto_envvar_prefix = auto_envvar_prefix - - if color is None and parent is not None: - color = parent.color - - #: Controls if styling output is wanted or not. - self.color = color - - self._close_callbacks = [] - self._depth = 0 - - def __enter__(self): - self._depth += 1 - push_context(self) - return self - - def __exit__(self, exc_type, exc_value, tb): - self._depth -= 1 - if self._depth == 0: - self.close() - pop_context() - - @contextmanager - def scope(self, cleanup=True): - """This helper method can be used with the context object to promote - it to the current thread local (see :func:`get_current_context`). - The default behavior of this is to invoke the cleanup functions which - can be disabled by setting `cleanup` to `False`. The cleanup - functions are typically used for things such as closing file handles. - - If the cleanup is intended the context object can also be directly - used as a context manager. - - Example usage:: - - with ctx.scope(): - assert get_current_context() is ctx - - This is equivalent:: - - with ctx: - assert get_current_context() is ctx - - .. versionadded:: 5.0 - - :param cleanup: controls if the cleanup functions should be run or - not. The default is to run these functions. In - some situations the context only wants to be - temporarily pushed in which case this can be disabled. - Nested pushes automatically defer the cleanup. - """ - if not cleanup: - self._depth += 1 - try: - with self as rv: - yield rv - finally: - if not cleanup: - self._depth -= 1 - - @property - def meta(self): - """This is a dictionary which is shared with all the contexts - that are nested. It exists so that click utilities can store some - state here if they need to. It is however the responsibility of - that code to manage this dictionary well. - - The keys are supposed to be unique dotted strings. For instance - module paths are a good choice for it. What is stored in there is - irrelevant for the operation of click. However what is important is - that code that places data here adheres to the general semantics of - the system. - - Example usage:: - - LANG_KEY = __name__ + '.lang' - - def set_language(value): - ctx = get_current_context() - ctx.meta[LANG_KEY] = value - - def get_language(): - return get_current_context().meta.get(LANG_KEY, 'en_US') - - .. versionadded:: 5.0 - """ - return self._meta - - def make_formatter(self): - """Creates the formatter for the help and usage output.""" - return HelpFormatter(width=self.terminal_width, - max_width=self.max_content_width) - - def call_on_close(self, f): - """This decorator remembers a function as callback that should be - executed when the context tears down. This is most useful to bind - resource handling to the script execution. For instance, file objects - opened by the :class:`File` type will register their close callbacks - here. - - :param f: the function to execute on teardown. - """ - self._close_callbacks.append(f) - return f - - def close(self): - """Invokes all close callbacks.""" - for cb in self._close_callbacks: - cb() - self._close_callbacks = [] - - @property - def command_path(self): - """The computed command path. This is used for the ``usage`` - information on the help page. It's automatically created by - combining the info names of the chain of contexts to the root. - """ - rv = '' - if self.info_name is not None: - rv = self.info_name - if self.parent is not None: - rv = self.parent.command_path + ' ' + rv - return rv.lstrip() - - def find_root(self): - """Finds the outermost context.""" - node = self - while node.parent is not None: - node = node.parent - return node - - def find_object(self, object_type): - """Finds the closest object of a given type.""" - node = self - while node is not None: - if isinstance(node.obj, object_type): - return node.obj - node = node.parent - - def ensure_object(self, object_type): - """Like :meth:`find_object` but sets the innermost object to a - new instance of `object_type` if it does not exist. - """ - rv = self.find_object(object_type) - if rv is None: - self.obj = rv = object_type() - return rv - - def lookup_default(self, name): - """Looks up the default for a parameter name. This by default - looks into the :attr:`default_map` if available. - """ - if self.default_map is not None: - rv = self.default_map.get(name) - if callable(rv): - rv = rv() - return rv - - def fail(self, message): - """Aborts the execution of the program with a specific error - message. - - :param message: the error message to fail with. - """ - raise UsageError(message, self) - - def abort(self): - """Aborts the script.""" - raise Abort() - - def exit(self, code=0): - """Exits the application with a given exit code.""" - raise Exit(code) - - def get_usage(self): - """Helper method to get formatted usage string for the current - context and command. - """ - return self.command.get_usage(self) - - def get_help(self): - """Helper method to get formatted help page for the current - context and command. - """ - return self.command.get_help(self) - - def invoke(*args, **kwargs): - """Invokes a command callback in exactly the way it expects. There - are two ways to invoke this method: - - 1. the first argument can be a callback and all other arguments and - keyword arguments are forwarded directly to the function. - 2. the first argument is a click command object. In that case all - arguments are forwarded as well but proper click parameters - (options and click arguments) must be keyword arguments and Click - will fill in defaults. - - Note that before Click 3.2 keyword arguments were not properly filled - in against the intention of this code and no context was created. For - more information about this change and why it was done in a bugfix - release see :ref:`upgrade-to-3.2`. - """ - self, callback = args[:2] - ctx = self - - # It's also possible to invoke another command which might or - # might not have a callback. In that case we also fill - # in defaults and make a new context for this command. - if isinstance(callback, Command): - other_cmd = callback - callback = other_cmd.callback - ctx = Context(other_cmd, info_name=other_cmd.name, parent=self) - if callback is None: - raise TypeError('The given command does not have a ' - 'callback that can be invoked.') - - for param in other_cmd.params: - if param.name not in kwargs and param.expose_value: - kwargs[param.name] = param.get_default(ctx) - - args = args[2:] - with augment_usage_errors(self): - with ctx: - return callback(*args, **kwargs) - - def forward(*args, **kwargs): - """Similar to :meth:`invoke` but fills in default keyword - arguments from the current context if the other command expects - it. This cannot invoke callbacks directly, only other commands. - """ - self, cmd = args[:2] - - # It's also possible to invoke another command which might or - # might not have a callback. - if not isinstance(cmd, Command): - raise TypeError('Callback is not a command.') - - for param in self.params: - if param not in kwargs: - kwargs[param] = self.params[param] - - return self.invoke(cmd, **kwargs) - - -class BaseCommand(object): - """The base command implements the minimal API contract of commands. - Most code will never use this as it does not implement a lot of useful - functionality but it can act as the direct subclass of alternative - parsing methods that do not depend on the Click parser. - - For instance, this can be used to bridge Click and other systems like - argparse or docopt. - - Because base commands do not implement a lot of the API that other - parts of Click take for granted, they are not supported for all - operations. For instance, they cannot be used with the decorators - usually and they have no built-in callback system. - - .. versionchanged:: 2.0 - Added the `context_settings` parameter. - - :param name: the name of the command to use unless a group overrides it. - :param context_settings: an optional dictionary with defaults that are - passed to the context object. - """ - #: the default for the :attr:`Context.allow_extra_args` flag. - allow_extra_args = False - #: the default for the :attr:`Context.allow_interspersed_args` flag. - allow_interspersed_args = True - #: the default for the :attr:`Context.ignore_unknown_options` flag. - ignore_unknown_options = False - - def __init__(self, name, context_settings=None): - #: the name the command thinks it has. Upon registering a command - #: on a :class:`Group` the group will default the command name - #: with this information. You should instead use the - #: :class:`Context`\'s :attr:`~Context.info_name` attribute. - self.name = name - if context_settings is None: - context_settings = {} - #: an optional dictionary with defaults passed to the context. - self.context_settings = context_settings - - def get_usage(self, ctx): - raise NotImplementedError('Base commands cannot get usage') - - def get_help(self, ctx): - raise NotImplementedError('Base commands cannot get help') - - def make_context(self, info_name, args, parent=None, **extra): - """This function when given an info name and arguments will kick - off the parsing and create a new :class:`Context`. It does not - invoke the actual command callback though. - - :param info_name: the info name for this invokation. Generally this - is the most descriptive name for the script or - command. For the toplevel script it's usually - the name of the script, for commands below it it's - the name of the script. - :param args: the arguments to parse as list of strings. - :param parent: the parent context if available. - :param extra: extra keyword arguments forwarded to the context - constructor. - """ - for key, value in iteritems(self.context_settings): - if key not in extra: - extra[key] = value - ctx = Context(self, info_name=info_name, parent=parent, **extra) - with ctx.scope(cleanup=False): - self.parse_args(ctx, args) - return ctx - - def parse_args(self, ctx, args): - """Given a context and a list of arguments this creates the parser - and parses the arguments, then modifies the context as necessary. - This is automatically invoked by :meth:`make_context`. - """ - raise NotImplementedError('Base commands do not know how to parse ' - 'arguments.') - - def invoke(self, ctx): - """Given a context, this invokes the command. The default - implementation is raising a not implemented error. - """ - raise NotImplementedError('Base commands are not invokable by default') - - def main(self, args=None, prog_name=None, complete_var=None, - standalone_mode=True, **extra): - """This is the way to invoke a script with all the bells and - whistles as a command line application. This will always terminate - the application after a call. If this is not wanted, ``SystemExit`` - needs to be caught. - - This method is also available by directly calling the instance of - a :class:`Command`. - - .. versionadded:: 3.0 - Added the `standalone_mode` flag to control the standalone mode. - - :param args: the arguments that should be used for parsing. If not - provided, ``sys.argv[1:]`` is used. - :param prog_name: the program name that should be used. By default - the program name is constructed by taking the file - name from ``sys.argv[0]``. - :param complete_var: the environment variable that controls the - bash completion support. The default is - ``"__COMPLETE"`` with prog_name in - uppercase. - :param standalone_mode: the default behavior is to invoke the script - in standalone mode. Click will then - handle exceptions and convert them into - error messages and the function will never - return but shut down the interpreter. If - this is set to `False` they will be - propagated to the caller and the return - value of this function is the return value - of :meth:`invoke`. - :param extra: extra keyword arguments are forwarded to the context - constructor. See :class:`Context` for more information. - """ - # If we are in Python 3, we will verify that the environment is - # sane at this point or reject further execution to avoid a - # broken script. - if not PY2: - _verify_python3_env() - else: - _check_for_unicode_literals() - - if args is None: - args = get_os_args() - else: - args = list(args) - - if prog_name is None: - prog_name = make_str(os.path.basename( - sys.argv and sys.argv[0] or __file__)) - - # Hook for the Bash completion. This only activates if the Bash - # completion is actually enabled, otherwise this is quite a fast - # noop. - _bashcomplete(self, prog_name, complete_var) - - try: - try: - with self.make_context(prog_name, args, **extra) as ctx: - rv = self.invoke(ctx) - if not standalone_mode: - return rv - # it's not safe to `ctx.exit(rv)` here! - # note that `rv` may actually contain data like "1" which - # has obvious effects - # more subtle case: `rv=[None, None]` can come out of - # chained commands which all returned `None` -- so it's not - # even always obvious that `rv` indicates success/failure - # by its truthiness/falsiness - ctx.exit() - except (EOFError, KeyboardInterrupt): - echo(file=sys.stderr) - raise Abort() - except ClickException as e: - if not standalone_mode: - raise - e.show() - sys.exit(e.exit_code) - except IOError as e: - if e.errno == errno.EPIPE: - sys.stdout = PacifyFlushWrapper(sys.stdout) - sys.stderr = PacifyFlushWrapper(sys.stderr) - sys.exit(1) - else: - raise - except Exit as e: - if standalone_mode: - sys.exit(e.exit_code) - else: - # in non-standalone mode, return the exit code - # note that this is only reached if `self.invoke` above raises - # an Exit explicitly -- thus bypassing the check there which - # would return its result - # the results of non-standalone execution may therefore be - # somewhat ambiguous: if there are codepaths which lead to - # `ctx.exit(1)` and to `return 1`, the caller won't be able to - # tell the difference between the two - return e.exit_code - except Abort: - if not standalone_mode: - raise - echo('Aborted!', file=sys.stderr) - sys.exit(1) - - def __call__(self, *args, **kwargs): - """Alias for :meth:`main`.""" - return self.main(*args, **kwargs) - - -class Command(BaseCommand): - """Commands are the basic building block of command line interfaces in - Click. A basic command handles command line parsing and might dispatch - more parsing to commands nested below it. - - .. versionchanged:: 2.0 - Added the `context_settings` parameter. - - :param name: the name of the command to use unless a group overrides it. - :param context_settings: an optional dictionary with defaults that are - passed to the context object. - :param callback: the callback to invoke. This is optional. - :param params: the parameters to register with this command. This can - be either :class:`Option` or :class:`Argument` objects. - :param help: the help string to use for this command. - :param epilog: like the help string but it's printed at the end of the - help page after everything else. - :param short_help: the short help to use for this command. This is - shown on the command listing of the parent command. - :param add_help_option: by default each command registers a ``--help`` - option. This can be disabled by this parameter. - :param hidden: hide this command from help outputs. - - :param deprecated: issues a message indicating that - the command is deprecated. - """ - - def __init__(self, name, context_settings=None, callback=None, - params=None, help=None, epilog=None, short_help=None, - options_metavar='[OPTIONS]', add_help_option=True, - hidden=False, deprecated=False): - BaseCommand.__init__(self, name, context_settings) - #: the callback to execute when the command fires. This might be - #: `None` in which case nothing happens. - self.callback = callback - #: the list of parameters for this command in the order they - #: should show up in the help page and execute. Eager parameters - #: will automatically be handled before non eager ones. - self.params = params or [] - # if a form feed (page break) is found in the help text, truncate help - # text to the content preceding the first form feed - if help and '\f' in help: - help = help.split('\f', 1)[0] - self.help = help - self.epilog = epilog - self.options_metavar = options_metavar - self.short_help = short_help - self.add_help_option = add_help_option - self.hidden = hidden - self.deprecated = deprecated - - def get_usage(self, ctx): - formatter = ctx.make_formatter() - self.format_usage(ctx, formatter) - return formatter.getvalue().rstrip('\n') - - def get_params(self, ctx): - rv = self.params - help_option = self.get_help_option(ctx) - if help_option is not None: - rv = rv + [help_option] - return rv - - def format_usage(self, ctx, formatter): - """Writes the usage line into the formatter.""" - pieces = self.collect_usage_pieces(ctx) - formatter.write_usage(ctx.command_path, ' '.join(pieces)) - - def collect_usage_pieces(self, ctx): - """Returns all the pieces that go into the usage line and returns - it as a list of strings. - """ - rv = [self.options_metavar] - for param in self.get_params(ctx): - rv.extend(param.get_usage_pieces(ctx)) - return rv - - def get_help_option_names(self, ctx): - """Returns the names for the help option.""" - all_names = set(ctx.help_option_names) - for param in self.params: - all_names.difference_update(param.opts) - all_names.difference_update(param.secondary_opts) - return all_names - - def get_help_option(self, ctx): - """Returns the help option object.""" - help_options = self.get_help_option_names(ctx) - if not help_options or not self.add_help_option: - return - - def show_help(ctx, param, value): - if value and not ctx.resilient_parsing: - echo(ctx.get_help(), color=ctx.color) - ctx.exit() - return Option(help_options, is_flag=True, - is_eager=True, expose_value=False, - callback=show_help, - help='Show this message and exit.') - - def make_parser(self, ctx): - """Creates the underlying option parser for this command.""" - parser = OptionParser(ctx) - for param in self.get_params(ctx): - param.add_to_parser(parser, ctx) - return parser - - def get_help(self, ctx): - """Formats the help into a string and returns it. This creates a - formatter and will call into the following formatting methods: - """ - formatter = ctx.make_formatter() - self.format_help(ctx, formatter) - return formatter.getvalue().rstrip('\n') - - def get_short_help_str(self, limit=45): - """Gets short help for the command or makes it by shortening the long help string.""" - return self.short_help or self.help and make_default_short_help(self.help, limit) or '' - - def format_help(self, ctx, formatter): - """Writes the help into the formatter if it exists. - - This calls into the following methods: - - - :meth:`format_usage` - - :meth:`format_help_text` - - :meth:`format_options` - - :meth:`format_epilog` - """ - self.format_usage(ctx, formatter) - self.format_help_text(ctx, formatter) - self.format_options(ctx, formatter) - self.format_epilog(ctx, formatter) - - def format_help_text(self, ctx, formatter): - """Writes the help text to the formatter if it exists.""" - if self.help: - formatter.write_paragraph() - with formatter.indentation(): - help_text = self.help - if self.deprecated: - help_text += DEPRECATED_HELP_NOTICE - formatter.write_text(help_text) - elif self.deprecated: - formatter.write_paragraph() - with formatter.indentation(): - formatter.write_text(DEPRECATED_HELP_NOTICE) - - def format_options(self, ctx, formatter): - """Writes all the options into the formatter if they exist.""" - opts = [] - for param in self.get_params(ctx): - rv = param.get_help_record(ctx) - if rv is not None: - opts.append(rv) - - if opts: - with formatter.section('Options'): - formatter.write_dl(opts) - - def format_epilog(self, ctx, formatter): - """Writes the epilog into the formatter if it exists.""" - if self.epilog: - formatter.write_paragraph() - with formatter.indentation(): - formatter.write_text(self.epilog) - - def parse_args(self, ctx, args): - parser = self.make_parser(ctx) - opts, args, param_order = parser.parse_args(args=args) - - for param in iter_params_for_processing( - param_order, self.get_params(ctx)): - value, args = param.handle_parse_result(ctx, opts, args) - - if args and not ctx.allow_extra_args and not ctx.resilient_parsing: - ctx.fail('Got unexpected extra argument%s (%s)' - % (len(args) != 1 and 's' or '', - ' '.join(map(make_str, args)))) - - ctx.args = args - return args - - def invoke(self, ctx): - """Given a context, this invokes the attached callback (if it exists) - in the right way. - """ - _maybe_show_deprecated_notice(self) - if self.callback is not None: - return ctx.invoke(self.callback, **ctx.params) - - -class MultiCommand(Command): - """A multi command is the basic implementation of a command that - dispatches to subcommands. The most common version is the - :class:`Group`. - - :param invoke_without_command: this controls how the multi command itself - is invoked. By default it's only invoked - if a subcommand is provided. - :param no_args_is_help: this controls what happens if no arguments are - provided. This option is enabled by default if - `invoke_without_command` is disabled or disabled - if it's enabled. If enabled this will add - ``--help`` as argument if no arguments are - passed. - :param subcommand_metavar: the string that is used in the documentation - to indicate the subcommand place. - :param chain: if this is set to `True` chaining of multiple subcommands - is enabled. This restricts the form of commands in that - they cannot have optional arguments but it allows - multiple commands to be chained together. - :param result_callback: the result callback to attach to this multi - command. - """ - allow_extra_args = True - allow_interspersed_args = False - - def __init__(self, name=None, invoke_without_command=False, - no_args_is_help=None, subcommand_metavar=None, - chain=False, result_callback=None, **attrs): - Command.__init__(self, name, **attrs) - if no_args_is_help is None: - no_args_is_help = not invoke_without_command - self.no_args_is_help = no_args_is_help - self.invoke_without_command = invoke_without_command - if subcommand_metavar is None: - if chain: - subcommand_metavar = SUBCOMMANDS_METAVAR - else: - subcommand_metavar = SUBCOMMAND_METAVAR - self.subcommand_metavar = subcommand_metavar - self.chain = chain - #: The result callback that is stored. This can be set or - #: overridden with the :func:`resultcallback` decorator. - self.result_callback = result_callback - - if self.chain: - for param in self.params: - if isinstance(param, Argument) and not param.required: - raise RuntimeError('Multi commands in chain mode cannot ' - 'have optional arguments.') - - def collect_usage_pieces(self, ctx): - rv = Command.collect_usage_pieces(self, ctx) - rv.append(self.subcommand_metavar) - return rv - - def format_options(self, ctx, formatter): - Command.format_options(self, ctx, formatter) - self.format_commands(ctx, formatter) - - def resultcallback(self, replace=False): - """Adds a result callback to the chain command. By default if a - result callback is already registered this will chain them but - this can be disabled with the `replace` parameter. The result - callback is invoked with the return value of the subcommand - (or the list of return values from all subcommands if chaining - is enabled) as well as the parameters as they would be passed - to the main callback. - - Example:: - - @click.group() - @click.option('-i', '--input', default=23) - def cli(input): - return 42 - - @cli.resultcallback() - def process_result(result, input): - return result + input - - .. versionadded:: 3.0 - - :param replace: if set to `True` an already existing result - callback will be removed. - """ - def decorator(f): - old_callback = self.result_callback - if old_callback is None or replace: - self.result_callback = f - return f - def function(__value, *args, **kwargs): - return f(old_callback(__value, *args, **kwargs), - *args, **kwargs) - self.result_callback = rv = update_wrapper(function, f) - return rv - return decorator - - def format_commands(self, ctx, formatter): - """Extra format methods for multi methods that adds all the commands - after the options. - """ - commands = [] - for subcommand in self.list_commands(ctx): - cmd = self.get_command(ctx, subcommand) - # What is this, the tool lied about a command. Ignore it - if cmd is None: - continue - if cmd.hidden: - continue - - commands.append((subcommand, cmd)) - - # allow for 3 times the default spacing - if len(commands): - limit = formatter.width - 6 - max(len(cmd[0]) for cmd in commands) - - rows = [] - for subcommand, cmd in commands: - help = cmd.get_short_help_str(limit) - rows.append((subcommand, help)) - - if rows: - with formatter.section('Commands'): - formatter.write_dl(rows) - - def parse_args(self, ctx, args): - if not args and self.no_args_is_help and not ctx.resilient_parsing: - echo(ctx.get_help(), color=ctx.color) - ctx.exit() - - rest = Command.parse_args(self, ctx, args) - if self.chain: - ctx.protected_args = rest - ctx.args = [] - elif rest: - ctx.protected_args, ctx.args = rest[:1], rest[1:] - - return ctx.args - - def invoke(self, ctx): - def _process_result(value): - if self.result_callback is not None: - value = ctx.invoke(self.result_callback, value, - **ctx.params) - return value - - if not ctx.protected_args: - # If we are invoked without command the chain flag controls - # how this happens. If we are not in chain mode, the return - # value here is the return value of the command. - # If however we are in chain mode, the return value is the - # return value of the result processor invoked with an empty - # list (which means that no subcommand actually was executed). - if self.invoke_without_command: - if not self.chain: - return Command.invoke(self, ctx) - with ctx: - Command.invoke(self, ctx) - return _process_result([]) - ctx.fail('Missing command.') - - # Fetch args back out - args = ctx.protected_args + ctx.args - ctx.args = [] - ctx.protected_args = [] - - # If we're not in chain mode, we only allow the invocation of a - # single command but we also inform the current context about the - # name of the command to invoke. - if not self.chain: - # Make sure the context is entered so we do not clean up - # resources until the result processor has worked. - with ctx: - cmd_name, cmd, args = self.resolve_command(ctx, args) - ctx.invoked_subcommand = cmd_name - Command.invoke(self, ctx) - sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) - with sub_ctx: - return _process_result(sub_ctx.command.invoke(sub_ctx)) - - # In chain mode we create the contexts step by step, but after the - # base command has been invoked. Because at that point we do not - # know the subcommands yet, the invoked subcommand attribute is - # set to ``*`` to inform the command that subcommands are executed - # but nothing else. - with ctx: - ctx.invoked_subcommand = args and '*' or None - Command.invoke(self, ctx) - - # Otherwise we make every single context and invoke them in a - # chain. In that case the return value to the result processor - # is the list of all invoked subcommand's results. - contexts = [] - while args: - cmd_name, cmd, args = self.resolve_command(ctx, args) - sub_ctx = cmd.make_context(cmd_name, args, parent=ctx, - allow_extra_args=True, - allow_interspersed_args=False) - contexts.append(sub_ctx) - args, sub_ctx.args = sub_ctx.args, [] - - rv = [] - for sub_ctx in contexts: - with sub_ctx: - rv.append(sub_ctx.command.invoke(sub_ctx)) - return _process_result(rv) - - def resolve_command(self, ctx, args): - cmd_name = make_str(args[0]) - original_cmd_name = cmd_name - - # Get the command - cmd = self.get_command(ctx, cmd_name) - - # If we can't find the command but there is a normalization - # function available, we try with that one. - if cmd is None and ctx.token_normalize_func is not None: - cmd_name = ctx.token_normalize_func(cmd_name) - cmd = self.get_command(ctx, cmd_name) - - # If we don't find the command we want to show an error message - # to the user that it was not provided. However, there is - # something else we should do: if the first argument looks like - # an option we want to kick off parsing again for arguments to - # resolve things like --help which now should go to the main - # place. - if cmd is None and not ctx.resilient_parsing: - if split_opt(cmd_name)[0]: - self.parse_args(ctx, ctx.args) - ctx.fail('No such command "%s".' % original_cmd_name) - - return cmd_name, cmd, args[1:] - - def get_command(self, ctx, cmd_name): - """Given a context and a command name, this returns a - :class:`Command` object if it exists or returns `None`. - """ - raise NotImplementedError() - - def list_commands(self, ctx): - """Returns a list of subcommand names in the order they should - appear. - """ - return [] - - -class Group(MultiCommand): - """A group allows a command to have subcommands attached. This is the - most common way to implement nesting in Click. - - :param commands: a dictionary of commands. - """ - - def __init__(self, name=None, commands=None, **attrs): - MultiCommand.__init__(self, name, **attrs) - #: the registered subcommands by their exported names. - self.commands = commands or {} - - def add_command(self, cmd, name=None): - """Registers another :class:`Command` with this group. If the name - is not provided, the name of the command is used. - """ - name = name or cmd.name - if name is None: - raise TypeError('Command has no name.') - _check_multicommand(self, name, cmd, register=True) - self.commands[name] = cmd - - def command(self, *args, **kwargs): - """A shortcut decorator for declaring and attaching a command to - the group. This takes the same arguments as :func:`command` but - immediately registers the created command with this instance by - calling into :meth:`add_command`. - """ - def decorator(f): - cmd = command(*args, **kwargs)(f) - self.add_command(cmd) - return cmd - return decorator - - def group(self, *args, **kwargs): - """A shortcut decorator for declaring and attaching a group to - the group. This takes the same arguments as :func:`group` but - immediately registers the created command with this instance by - calling into :meth:`add_command`. - """ - def decorator(f): - cmd = group(*args, **kwargs)(f) - self.add_command(cmd) - return cmd - return decorator - - def get_command(self, ctx, cmd_name): - return self.commands.get(cmd_name) - - def list_commands(self, ctx): - return sorted(self.commands) - - -class CommandCollection(MultiCommand): - """A command collection is a multi command that merges multiple multi - commands together into one. This is a straightforward implementation - that accepts a list of different multi commands as sources and - provides all the commands for each of them. - """ - - def __init__(self, name=None, sources=None, **attrs): - MultiCommand.__init__(self, name, **attrs) - #: The list of registered multi commands. - self.sources = sources or [] - - def add_source(self, multi_cmd): - """Adds a new multi command to the chain dispatcher.""" - self.sources.append(multi_cmd) - - def get_command(self, ctx, cmd_name): - for source in self.sources: - rv = source.get_command(ctx, cmd_name) - if rv is not None: - if self.chain: - _check_multicommand(self, cmd_name, rv) - return rv - - def list_commands(self, ctx): - rv = set() - for source in self.sources: - rv.update(source.list_commands(ctx)) - return sorted(rv) - - -class Parameter(object): - r"""A parameter to a command comes in two versions: they are either - :class:`Option`\s or :class:`Argument`\s. Other subclasses are currently - not supported by design as some of the internals for parsing are - intentionally not finalized. - - Some settings are supported by both options and arguments. - - .. versionchanged:: 2.0 - Changed signature for parameter callback to also be passed the - parameter. In Click 2.0, the old callback format will still work, - but it will raise a warning to give you change to migrate the - code easier. - - :param param_decls: the parameter declarations for this option or - argument. This is a list of flags or argument - names. - :param type: the type that should be used. Either a :class:`ParamType` - or a Python type. The later is converted into the former - automatically if supported. - :param required: controls if this is optional or not. - :param default: the default value if omitted. This can also be a callable, - in which case it's invoked when the default is needed - without any arguments. - :param callback: a callback that should be executed after the parameter - was matched. This is called as ``fn(ctx, param, - value)`` and needs to return the value. Before Click - 2.0, the signature was ``(ctx, value)``. - :param nargs: the number of arguments to match. If not ``1`` the return - value is a tuple instead of single value. The default for - nargs is ``1`` (except if the type is a tuple, then it's - the arity of the tuple). - :param metavar: how the value is represented in the help page. - :param expose_value: if this is `True` then the value is passed onwards - to the command callback and stored on the context, - otherwise it's skipped. - :param is_eager: eager values are processed before non eager ones. This - should not be set for arguments or it will inverse the - order of processing. - :param envvar: a string or list of strings that are environment variables - that should be checked. - """ - param_type_name = 'parameter' - - def __init__(self, param_decls=None, type=None, required=False, - default=None, callback=None, nargs=None, metavar=None, - expose_value=True, is_eager=False, envvar=None, - autocompletion=None): - self.name, self.opts, self.secondary_opts = \ - self._parse_decls(param_decls or (), expose_value) - - self.type = convert_type(type, default) - - # Default nargs to what the type tells us if we have that - # information available. - if nargs is None: - if self.type.is_composite: - nargs = self.type.arity - else: - nargs = 1 - - self.required = required - self.callback = callback - self.nargs = nargs - self.multiple = False - self.expose_value = expose_value - self.default = default - self.is_eager = is_eager - self.metavar = metavar - self.envvar = envvar - self.autocompletion = autocompletion - - @property - def human_readable_name(self): - """Returns the human readable name of this parameter. This is the - same as the name for options, but the metavar for arguments. - """ - return self.name - - def make_metavar(self): - if self.metavar is not None: - return self.metavar - metavar = self.type.get_metavar(self) - if metavar is None: - metavar = self.type.name.upper() - if self.nargs != 1: - metavar += '...' - return metavar - - def get_default(self, ctx): - """Given a context variable this calculates the default value.""" - # Otherwise go with the regular default. - if callable(self.default): - rv = self.default() - else: - rv = self.default - return self.type_cast_value(ctx, rv) - - def add_to_parser(self, parser, ctx): - pass - - def consume_value(self, ctx, opts): - value = opts.get(self.name) - if value is None: - value = self.value_from_envvar(ctx) - if value is None: - value = ctx.lookup_default(self.name) - return value - - def type_cast_value(self, ctx, value): - """Given a value this runs it properly through the type system. - This automatically handles things like `nargs` and `multiple` as - well as composite types. - """ - if self.type.is_composite: - if self.nargs <= 1: - raise TypeError('Attempted to invoke composite type ' - 'but nargs has been set to %s. This is ' - 'not supported; nargs needs to be set to ' - 'a fixed value > 1.' % self.nargs) - if self.multiple: - return tuple(self.type(x or (), self, ctx) for x in value or ()) - return self.type(value or (), self, ctx) - - def _convert(value, level): - if level == 0: - return self.type(value, self, ctx) - return tuple(_convert(x, level - 1) for x in value or ()) - return _convert(value, (self.nargs != 1) + bool(self.multiple)) - - def process_value(self, ctx, value): - """Given a value and context this runs the logic to convert the - value as necessary. - """ - # If the value we were given is None we do nothing. This way - # code that calls this can easily figure out if something was - # not provided. Otherwise it would be converted into an empty - # tuple for multiple invocations which is inconvenient. - if value is not None: - return self.type_cast_value(ctx, value) - - def value_is_missing(self, value): - if value is None: - return True - if (self.nargs != 1 or self.multiple) and value == (): - return True - return False - - def full_process_value(self, ctx, value): - value = self.process_value(ctx, value) - - if value is None and not ctx.resilient_parsing: - value = self.get_default(ctx) - - if self.required and self.value_is_missing(value): - raise MissingParameter(ctx=ctx, param=self) - - return value - - def resolve_envvar_value(self, ctx): - if self.envvar is None: - return - if isinstance(self.envvar, (tuple, list)): - for envvar in self.envvar: - rv = os.environ.get(envvar) - if rv is not None: - return rv - else: - return os.environ.get(self.envvar) - - def value_from_envvar(self, ctx): - rv = self.resolve_envvar_value(ctx) - if rv is not None and self.nargs != 1: - rv = self.type.split_envvar_value(rv) - return rv - - def handle_parse_result(self, ctx, opts, args): - with augment_usage_errors(ctx, param=self): - value = self.consume_value(ctx, opts) - try: - value = self.full_process_value(ctx, value) - except Exception: - if not ctx.resilient_parsing: - raise - value = None - if self.callback is not None: - try: - value = invoke_param_callback( - self.callback, ctx, self, value) - except Exception: - if not ctx.resilient_parsing: - raise - - if self.expose_value: - ctx.params[self.name] = value - return value, args - - def get_help_record(self, ctx): - pass - - def get_usage_pieces(self, ctx): - return [] - - def get_error_hint(self, ctx): - """Get a stringified version of the param for use in error messages to - indicate which param caused the error. - """ - hint_list = self.opts or [self.human_readable_name] - return ' / '.join('"%s"' % x for x in hint_list) - - -class Option(Parameter): - """Options are usually optional values on the command line and - have some extra features that arguments don't have. - - All other parameters are passed onwards to the parameter constructor. - - :param show_default: controls if the default value should be shown on the - help page. Normally, defaults are not shown. If this - value is a string, it shows the string instead of the - value. This is particularly useful for dynamic options. - :param show_envvar: controls if an environment variable should be shown on - the help page. Normally, environment variables - are not shown. - :param prompt: if set to `True` or a non empty string then the user will be - prompted for input. If set to `True` the prompt will be the - option name capitalized. - :param confirmation_prompt: if set then the value will need to be confirmed - if it was prompted for. - :param hide_input: if this is `True` then the input on the prompt will be - hidden from the user. This is useful for password - input. - :param is_flag: forces this option to act as a flag. The default is - auto detection. - :param flag_value: which value should be used for this flag if it's - enabled. This is set to a boolean automatically if - the option string contains a slash to mark two options. - :param multiple: if this is set to `True` then the argument is accepted - multiple times and recorded. This is similar to ``nargs`` - in how it works but supports arbitrary number of - arguments. - :param count: this flag makes an option increment an integer. - :param allow_from_autoenv: if this is enabled then the value of this - parameter will be pulled from an environment - variable in case a prefix is defined on the - context. - :param help: the help string. - :param hidden: hide this option from help outputs. - """ - param_type_name = 'option' - - def __init__(self, param_decls=None, show_default=False, - prompt=False, confirmation_prompt=False, - hide_input=False, is_flag=None, flag_value=None, - multiple=False, count=False, allow_from_autoenv=True, - type=None, help=None, hidden=False, show_choices=True, - show_envvar=False, **attrs): - default_is_missing = attrs.get('default', _missing) is _missing - Parameter.__init__(self, param_decls, type=type, **attrs) - - if prompt is True: - prompt_text = self.name.replace('_', ' ').capitalize() - elif prompt is False: - prompt_text = None - else: - prompt_text = prompt - self.prompt = prompt_text - self.confirmation_prompt = confirmation_prompt - self.hide_input = hide_input - self.hidden = hidden - - # Flags - if is_flag is None: - if flag_value is not None: - is_flag = True - else: - is_flag = bool(self.secondary_opts) - if is_flag and default_is_missing: - self.default = False - if flag_value is None: - flag_value = not self.default - self.is_flag = is_flag - self.flag_value = flag_value - if self.is_flag and isinstance(self.flag_value, bool) \ - and type is None: - self.type = BOOL - self.is_bool_flag = True - else: - self.is_bool_flag = False - - # Counting - self.count = count - if count: - if type is None: - self.type = IntRange(min=0) - if default_is_missing: - self.default = 0 - - self.multiple = multiple - self.allow_from_autoenv = allow_from_autoenv - self.help = help - self.show_default = show_default - self.show_choices = show_choices - self.show_envvar = show_envvar - - # Sanity check for stuff we don't support - if __debug__: - if self.nargs < 0: - raise TypeError('Options cannot have nargs < 0') - if self.prompt and self.is_flag and not self.is_bool_flag: - raise TypeError('Cannot prompt for flags that are not bools.') - if not self.is_bool_flag and self.secondary_opts: - raise TypeError('Got secondary option for non boolean flag.') - if self.is_bool_flag and self.hide_input \ - and self.prompt is not None: - raise TypeError('Hidden input does not work with boolean ' - 'flag prompts.') - if self.count: - if self.multiple: - raise TypeError('Options cannot be multiple and count ' - 'at the same time.') - elif self.is_flag: - raise TypeError('Options cannot be count and flags at ' - 'the same time.') - - def _parse_decls(self, decls, expose_value): - opts = [] - secondary_opts = [] - name = None - possible_names = [] - - for decl in decls: - if isidentifier(decl): - if name is not None: - raise TypeError('Name defined twice') - name = decl - else: - split_char = decl[:1] == '/' and ';' or '/' - if split_char in decl: - first, second = decl.split(split_char, 1) - first = first.rstrip() - if first: - possible_names.append(split_opt(first)) - opts.append(first) - second = second.lstrip() - if second: - secondary_opts.append(second.lstrip()) - else: - possible_names.append(split_opt(decl)) - opts.append(decl) - - if name is None and possible_names: - possible_names.sort(key=lambda x: -len(x[0])) # group long options first - name = possible_names[0][1].replace('-', '_').lower() - if not isidentifier(name): - name = None - - if name is None: - if not expose_value: - return None, opts, secondary_opts - raise TypeError('Could not determine name for option') - - if not opts and not secondary_opts: - raise TypeError('No options defined but a name was passed (%s). ' - 'Did you mean to declare an argument instead ' - 'of an option?' % name) - - return name, opts, secondary_opts - - def add_to_parser(self, parser, ctx): - kwargs = { - 'dest': self.name, - 'nargs': self.nargs, - 'obj': self, - } - - if self.multiple: - action = 'append' - elif self.count: - action = 'count' - else: - action = 'store' - - if self.is_flag: - kwargs.pop('nargs', None) - if self.is_bool_flag and self.secondary_opts: - parser.add_option(self.opts, action=action + '_const', - const=True, **kwargs) - parser.add_option(self.secondary_opts, action=action + - '_const', const=False, **kwargs) - else: - parser.add_option(self.opts, action=action + '_const', - const=self.flag_value, - **kwargs) - else: - kwargs['action'] = action - parser.add_option(self.opts, **kwargs) - - def get_help_record(self, ctx): - if self.hidden: - return - any_prefix_is_slash = [] - - def _write_opts(opts): - rv, any_slashes = join_options(opts) - if any_slashes: - any_prefix_is_slash[:] = [True] - if not self.is_flag and not self.count: - rv += ' ' + self.make_metavar() - return rv - - rv = [_write_opts(self.opts)] - if self.secondary_opts: - rv.append(_write_opts(self.secondary_opts)) - - help = self.help or '' - extra = [] - if self.show_envvar: - envvar = self.envvar - if envvar is None: - if self.allow_from_autoenv and \ - ctx.auto_envvar_prefix is not None: - envvar = '%s_%s' % (ctx.auto_envvar_prefix, self.name.upper()) - if envvar is not None: - extra.append('env var: %s' % ( - ', '.join('%s' % d for d in envvar) - if isinstance(envvar, (list, tuple)) - else envvar, )) - if self.default is not None and self.show_default: - if isinstance(self.show_default, string_types): - default_string = '({})'.format(self.show_default) - elif isinstance(self.default, (list, tuple)): - default_string = ', '.join('%s' % d for d in self.default) - elif inspect.isfunction(self.default): - default_string = "(dynamic)" - else: - default_string = self.default - extra.append('default: {}'.format(default_string)) - - if self.required: - extra.append('required') - if extra: - help = '%s[%s]' % (help and help + ' ' or '', '; '.join(extra)) - - return ((any_prefix_is_slash and '; ' or ' / ').join(rv), help) - - def get_default(self, ctx): - # If we're a non boolean flag out default is more complex because - # we need to look at all flags in the same group to figure out - # if we're the the default one in which case we return the flag - # value as default. - if self.is_flag and not self.is_bool_flag: - for param in ctx.command.params: - if param.name == self.name and param.default: - return param.flag_value - return None - return Parameter.get_default(self, ctx) - - def prompt_for_value(self, ctx): - """This is an alternative flow that can be activated in the full - value processing if a value does not exist. It will prompt the - user until a valid value exists and then returns the processed - value as result. - """ - # Calculate the default before prompting anything to be stable. - default = self.get_default(ctx) - - # If this is a prompt for a flag we need to handle this - # differently. - if self.is_bool_flag: - return confirm(self.prompt, default) - - return prompt(self.prompt, default=default, type=self.type, - hide_input=self.hide_input, show_choices=self.show_choices, - confirmation_prompt=self.confirmation_prompt, - value_proc=lambda x: self.process_value(ctx, x)) - - def resolve_envvar_value(self, ctx): - rv = Parameter.resolve_envvar_value(self, ctx) - if rv is not None: - return rv - if self.allow_from_autoenv and \ - ctx.auto_envvar_prefix is not None: - envvar = '%s_%s' % (ctx.auto_envvar_prefix, self.name.upper()) - return os.environ.get(envvar) - - def value_from_envvar(self, ctx): - rv = self.resolve_envvar_value(ctx) - if rv is None: - return None - value_depth = (self.nargs != 1) + bool(self.multiple) - if value_depth > 0 and rv is not None: - rv = self.type.split_envvar_value(rv) - if self.multiple and self.nargs != 1: - rv = batch(rv, self.nargs) - return rv - - def full_process_value(self, ctx, value): - if value is None and self.prompt is not None \ - and not ctx.resilient_parsing: - return self.prompt_for_value(ctx) - return Parameter.full_process_value(self, ctx, value) - - -class Argument(Parameter): - """Arguments are positional parameters to a command. They generally - provide fewer features than options but can have infinite ``nargs`` - and are required by default. - - All parameters are passed onwards to the parameter constructor. - """ - param_type_name = 'argument' - - def __init__(self, param_decls, required=None, **attrs): - if required is None: - if attrs.get('default') is not None: - required = False - else: - required = attrs.get('nargs', 1) > 0 - Parameter.__init__(self, param_decls, required=required, **attrs) - if self.default is not None and self.nargs < 0: - raise TypeError('nargs=-1 in combination with a default value ' - 'is not supported.') - - @property - def human_readable_name(self): - if self.metavar is not None: - return self.metavar - return self.name.upper() - - def make_metavar(self): - if self.metavar is not None: - return self.metavar - var = self.type.get_metavar(self) - if not var: - var = self.name.upper() - if not self.required: - var = '[%s]' % var - if self.nargs != 1: - var += '...' - return var - - def _parse_decls(self, decls, expose_value): - if not decls: - if not expose_value: - return None, [], [] - raise TypeError('Could not determine name for argument') - if len(decls) == 1: - name = arg = decls[0] - name = name.replace('-', '_').lower() - else: - raise TypeError('Arguments take exactly one ' - 'parameter declaration, got %d' % len(decls)) - return name, [arg], [] - - def get_usage_pieces(self, ctx): - return [self.make_metavar()] - - def get_error_hint(self, ctx): - return '"%s"' % self.make_metavar() - - def add_to_parser(self, parser, ctx): - parser.add_argument(dest=self.name, nargs=self.nargs, - obj=self) - - -# Circular dependency between decorators and core -from .decorators import command, group diff --git a/venv/lib/python3.6/site-packages/click/decorators.py b/venv/lib/python3.6/site-packages/click/decorators.py deleted file mode 100644 index c57c530..0000000 --- a/venv/lib/python3.6/site-packages/click/decorators.py +++ /dev/null @@ -1,311 +0,0 @@ -import sys -import inspect - -from functools import update_wrapper - -from ._compat import iteritems -from ._unicodefun import _check_for_unicode_literals -from .utils import echo -from .globals import get_current_context - - -def pass_context(f): - """Marks a callback as wanting to receive the current context - object as first argument. - """ - def new_func(*args, **kwargs): - return f(get_current_context(), *args, **kwargs) - return update_wrapper(new_func, f) - - -def pass_obj(f): - """Similar to :func:`pass_context`, but only pass the object on the - context onwards (:attr:`Context.obj`). This is useful if that object - represents the state of a nested system. - """ - def new_func(*args, **kwargs): - return f(get_current_context().obj, *args, **kwargs) - return update_wrapper(new_func, f) - - -def make_pass_decorator(object_type, ensure=False): - """Given an object type this creates a decorator that will work - similar to :func:`pass_obj` but instead of passing the object of the - current context, it will find the innermost context of type - :func:`object_type`. - - This generates a decorator that works roughly like this:: - - from functools import update_wrapper - - def decorator(f): - @pass_context - def new_func(ctx, *args, **kwargs): - obj = ctx.find_object(object_type) - return ctx.invoke(f, obj, *args, **kwargs) - return update_wrapper(new_func, f) - return decorator - - :param object_type: the type of the object to pass. - :param ensure: if set to `True`, a new object will be created and - remembered on the context if it's not there yet. - """ - def decorator(f): - def new_func(*args, **kwargs): - ctx = get_current_context() - if ensure: - obj = ctx.ensure_object(object_type) - else: - obj = ctx.find_object(object_type) - if obj is None: - raise RuntimeError('Managed to invoke callback without a ' - 'context object of type %r existing' - % object_type.__name__) - return ctx.invoke(f, obj, *args, **kwargs) - return update_wrapper(new_func, f) - return decorator - - -def _make_command(f, name, attrs, cls): - if isinstance(f, Command): - raise TypeError('Attempted to convert a callback into a ' - 'command twice.') - try: - params = f.__click_params__ - params.reverse() - del f.__click_params__ - except AttributeError: - params = [] - help = attrs.get('help') - if help is None: - help = inspect.getdoc(f) - if isinstance(help, bytes): - help = help.decode('utf-8') - else: - help = inspect.cleandoc(help) - attrs['help'] = help - _check_for_unicode_literals() - return cls(name=name or f.__name__.lower().replace('_', '-'), - callback=f, params=params, **attrs) - - -def command(name=None, cls=None, **attrs): - r"""Creates a new :class:`Command` and uses the decorated function as - callback. This will also automatically attach all decorated - :func:`option`\s and :func:`argument`\s as parameters to the command. - - The name of the command defaults to the name of the function. If you - want to change that, you can pass the intended name as the first - argument. - - All keyword arguments are forwarded to the underlying command class. - - Once decorated the function turns into a :class:`Command` instance - that can be invoked as a command line utility or be attached to a - command :class:`Group`. - - :param name: the name of the command. This defaults to the function - name with underscores replaced by dashes. - :param cls: the command class to instantiate. This defaults to - :class:`Command`. - """ - if cls is None: - cls = Command - def decorator(f): - cmd = _make_command(f, name, attrs, cls) - cmd.__doc__ = f.__doc__ - return cmd - return decorator - - -def group(name=None, **attrs): - """Creates a new :class:`Group` with a function as callback. This - works otherwise the same as :func:`command` just that the `cls` - parameter is set to :class:`Group`. - """ - attrs.setdefault('cls', Group) - return command(name, **attrs) - - -def _param_memo(f, param): - if isinstance(f, Command): - f.params.append(param) - else: - if not hasattr(f, '__click_params__'): - f.__click_params__ = [] - f.__click_params__.append(param) - - -def argument(*param_decls, **attrs): - """Attaches an argument to the command. All positional arguments are - passed as parameter declarations to :class:`Argument`; all keyword - arguments are forwarded unchanged (except ``cls``). - This is equivalent to creating an :class:`Argument` instance manually - and attaching it to the :attr:`Command.params` list. - - :param cls: the argument class to instantiate. This defaults to - :class:`Argument`. - """ - def decorator(f): - ArgumentClass = attrs.pop('cls', Argument) - _param_memo(f, ArgumentClass(param_decls, **attrs)) - return f - return decorator - - -def option(*param_decls, **attrs): - """Attaches an option to the command. All positional arguments are - passed as parameter declarations to :class:`Option`; all keyword - arguments are forwarded unchanged (except ``cls``). - This is equivalent to creating an :class:`Option` instance manually - and attaching it to the :attr:`Command.params` list. - - :param cls: the option class to instantiate. This defaults to - :class:`Option`. - """ - def decorator(f): - # Issue 926, copy attrs, so pre-defined options can re-use the same cls= - option_attrs = attrs.copy() - - if 'help' in option_attrs: - option_attrs['help'] = inspect.cleandoc(option_attrs['help']) - OptionClass = option_attrs.pop('cls', Option) - _param_memo(f, OptionClass(param_decls, **option_attrs)) - return f - return decorator - - -def confirmation_option(*param_decls, **attrs): - """Shortcut for confirmation prompts that can be ignored by passing - ``--yes`` as parameter. - - This is equivalent to decorating a function with :func:`option` with - the following parameters:: - - def callback(ctx, param, value): - if not value: - ctx.abort() - - @click.command() - @click.option('--yes', is_flag=True, callback=callback, - expose_value=False, prompt='Do you want to continue?') - def dropdb(): - pass - """ - def decorator(f): - def callback(ctx, param, value): - if not value: - ctx.abort() - attrs.setdefault('is_flag', True) - attrs.setdefault('callback', callback) - attrs.setdefault('expose_value', False) - attrs.setdefault('prompt', 'Do you want to continue?') - attrs.setdefault('help', 'Confirm the action without prompting.') - return option(*(param_decls or ('--yes',)), **attrs)(f) - return decorator - - -def password_option(*param_decls, **attrs): - """Shortcut for password prompts. - - This is equivalent to decorating a function with :func:`option` with - the following parameters:: - - @click.command() - @click.option('--password', prompt=True, confirmation_prompt=True, - hide_input=True) - def changeadmin(password): - pass - """ - def decorator(f): - attrs.setdefault('prompt', True) - attrs.setdefault('confirmation_prompt', True) - attrs.setdefault('hide_input', True) - return option(*(param_decls or ('--password',)), **attrs)(f) - return decorator - - -def version_option(version=None, *param_decls, **attrs): - """Adds a ``--version`` option which immediately ends the program - printing out the version number. This is implemented as an eager - option that prints the version and exits the program in the callback. - - :param version: the version number to show. If not provided Click - attempts an auto discovery via setuptools. - :param prog_name: the name of the program (defaults to autodetection) - :param message: custom message to show instead of the default - (``'%(prog)s, version %(version)s'``) - :param others: everything else is forwarded to :func:`option`. - """ - if version is None: - if hasattr(sys, '_getframe'): - module = sys._getframe(1).f_globals.get('__name__') - else: - module = '' - - def decorator(f): - prog_name = attrs.pop('prog_name', None) - message = attrs.pop('message', '%(prog)s, version %(version)s') - - def callback(ctx, param, value): - if not value or ctx.resilient_parsing: - return - prog = prog_name - if prog is None: - prog = ctx.find_root().info_name - ver = version - if ver is None: - try: - import pkg_resources - except ImportError: - pass - else: - for dist in pkg_resources.working_set: - scripts = dist.get_entry_map().get('console_scripts') or {} - for script_name, entry_point in iteritems(scripts): - if entry_point.module_name == module: - ver = dist.version - break - if ver is None: - raise RuntimeError('Could not determine version') - echo(message % { - 'prog': prog, - 'version': ver, - }, color=ctx.color) - ctx.exit() - - attrs.setdefault('is_flag', True) - attrs.setdefault('expose_value', False) - attrs.setdefault('is_eager', True) - attrs.setdefault('help', 'Show the version and exit.') - attrs['callback'] = callback - return option(*(param_decls or ('--version',)), **attrs)(f) - return decorator - - -def help_option(*param_decls, **attrs): - """Adds a ``--help`` option which immediately ends the program - printing out the help page. This is usually unnecessary to add as - this is added by default to all commands unless suppressed. - - Like :func:`version_option`, this is implemented as eager option that - prints in the callback and exits. - - All arguments are forwarded to :func:`option`. - """ - def decorator(f): - def callback(ctx, param, value): - if value and not ctx.resilient_parsing: - echo(ctx.get_help(), color=ctx.color) - ctx.exit() - attrs.setdefault('is_flag', True) - attrs.setdefault('expose_value', False) - attrs.setdefault('help', 'Show this message and exit.') - attrs.setdefault('is_eager', True) - attrs['callback'] = callback - return option(*(param_decls or ('--help',)), **attrs)(f) - return decorator - - -# Circular dependencies between core and decorators -from .core import Command, Group, Argument, Option diff --git a/venv/lib/python3.6/site-packages/click/exceptions.py b/venv/lib/python3.6/site-packages/click/exceptions.py deleted file mode 100644 index 6fa1765..0000000 --- a/venv/lib/python3.6/site-packages/click/exceptions.py +++ /dev/null @@ -1,235 +0,0 @@ -from ._compat import PY2, filename_to_ui, get_text_stderr -from .utils import echo - - -def _join_param_hints(param_hint): - if isinstance(param_hint, (tuple, list)): - return ' / '.join('"%s"' % x for x in param_hint) - return param_hint - - -class ClickException(Exception): - """An exception that Click can handle and show to the user.""" - - #: The exit code for this exception - exit_code = 1 - - def __init__(self, message): - ctor_msg = message - if PY2: - if ctor_msg is not None: - ctor_msg = ctor_msg.encode('utf-8') - Exception.__init__(self, ctor_msg) - self.message = message - - def format_message(self): - return self.message - - def __str__(self): - return self.message - - if PY2: - __unicode__ = __str__ - - def __str__(self): - return self.message.encode('utf-8') - - def show(self, file=None): - if file is None: - file = get_text_stderr() - echo('Error: %s' % self.format_message(), file=file) - - -class UsageError(ClickException): - """An internal exception that signals a usage error. This typically - aborts any further handling. - - :param message: the error message to display. - :param ctx: optionally the context that caused this error. Click will - fill in the context automatically in some situations. - """ - exit_code = 2 - - def __init__(self, message, ctx=None): - ClickException.__init__(self, message) - self.ctx = ctx - self.cmd = self.ctx and self.ctx.command or None - - def show(self, file=None): - if file is None: - file = get_text_stderr() - color = None - hint = '' - if (self.cmd is not None and - self.cmd.get_help_option(self.ctx) is not None): - hint = ('Try "%s %s" for help.\n' - % (self.ctx.command_path, self.ctx.help_option_names[0])) - if self.ctx is not None: - color = self.ctx.color - echo(self.ctx.get_usage() + '\n%s' % hint, file=file, color=color) - echo('Error: %s' % self.format_message(), file=file, color=color) - - -class BadParameter(UsageError): - """An exception that formats out a standardized error message for a - bad parameter. This is useful when thrown from a callback or type as - Click will attach contextual information to it (for instance, which - parameter it is). - - .. versionadded:: 2.0 - - :param param: the parameter object that caused this error. This can - be left out, and Click will attach this info itself - if possible. - :param param_hint: a string that shows up as parameter name. This - can be used as alternative to `param` in cases - where custom validation should happen. If it is - a string it's used as such, if it's a list then - each item is quoted and separated. - """ - - def __init__(self, message, ctx=None, param=None, - param_hint=None): - UsageError.__init__(self, message, ctx) - self.param = param - self.param_hint = param_hint - - def format_message(self): - if self.param_hint is not None: - param_hint = self.param_hint - elif self.param is not None: - param_hint = self.param.get_error_hint(self.ctx) - else: - return 'Invalid value: %s' % self.message - param_hint = _join_param_hints(param_hint) - - return 'Invalid value for %s: %s' % (param_hint, self.message) - - -class MissingParameter(BadParameter): - """Raised if click required an option or argument but it was not - provided when invoking the script. - - .. versionadded:: 4.0 - - :param param_type: a string that indicates the type of the parameter. - The default is to inherit the parameter type from - the given `param`. Valid values are ``'parameter'``, - ``'option'`` or ``'argument'``. - """ - - def __init__(self, message=None, ctx=None, param=None, - param_hint=None, param_type=None): - BadParameter.__init__(self, message, ctx, param, param_hint) - self.param_type = param_type - - def format_message(self): - if self.param_hint is not None: - param_hint = self.param_hint - elif self.param is not None: - param_hint = self.param.get_error_hint(self.ctx) - else: - param_hint = None - param_hint = _join_param_hints(param_hint) - - param_type = self.param_type - if param_type is None and self.param is not None: - param_type = self.param.param_type_name - - msg = self.message - if self.param is not None: - msg_extra = self.param.type.get_missing_message(self.param) - if msg_extra: - if msg: - msg += '. ' + msg_extra - else: - msg = msg_extra - - return 'Missing %s%s%s%s' % ( - param_type, - param_hint and ' %s' % param_hint or '', - msg and '. ' or '.', - msg or '', - ) - - -class NoSuchOption(UsageError): - """Raised if click attempted to handle an option that does not - exist. - - .. versionadded:: 4.0 - """ - - def __init__(self, option_name, message=None, possibilities=None, - ctx=None): - if message is None: - message = 'no such option: %s' % option_name - UsageError.__init__(self, message, ctx) - self.option_name = option_name - self.possibilities = possibilities - - def format_message(self): - bits = [self.message] - if self.possibilities: - if len(self.possibilities) == 1: - bits.append('Did you mean %s?' % self.possibilities[0]) - else: - possibilities = sorted(self.possibilities) - bits.append('(Possible options: %s)' % ', '.join(possibilities)) - return ' '.join(bits) - - -class BadOptionUsage(UsageError): - """Raised if an option is generally supplied but the use of the option - was incorrect. This is for instance raised if the number of arguments - for an option is not correct. - - .. versionadded:: 4.0 - - :param option_name: the name of the option being used incorrectly. - """ - - def __init__(self, option_name, message, ctx=None): - UsageError.__init__(self, message, ctx) - self.option_name = option_name - - -class BadArgumentUsage(UsageError): - """Raised if an argument is generally supplied but the use of the argument - was incorrect. This is for instance raised if the number of values - for an argument is not correct. - - .. versionadded:: 6.0 - """ - - def __init__(self, message, ctx=None): - UsageError.__init__(self, message, ctx) - - -class FileError(ClickException): - """Raised if a file cannot be opened.""" - - def __init__(self, filename, hint=None): - ui_filename = filename_to_ui(filename) - if hint is None: - hint = 'unknown error' - ClickException.__init__(self, hint) - self.ui_filename = ui_filename - self.filename = filename - - def format_message(self): - return 'Could not open file %s: %s' % (self.ui_filename, self.message) - - -class Abort(RuntimeError): - """An internal signalling exception that signals Click to abort.""" - - -class Exit(RuntimeError): - """An exception that indicates that the application should exit with some - status code. - - :param code: the status code to exit with. - """ - def __init__(self, code=0): - self.exit_code = code diff --git a/venv/lib/python3.6/site-packages/click/formatting.py b/venv/lib/python3.6/site-packages/click/formatting.py deleted file mode 100644 index a3d6a4d..0000000 --- a/venv/lib/python3.6/site-packages/click/formatting.py +++ /dev/null @@ -1,256 +0,0 @@ -from contextlib import contextmanager -from .termui import get_terminal_size -from .parser import split_opt -from ._compat import term_len - - -# Can force a width. This is used by the test system -FORCED_WIDTH = None - - -def measure_table(rows): - widths = {} - for row in rows: - for idx, col in enumerate(row): - widths[idx] = max(widths.get(idx, 0), term_len(col)) - return tuple(y for x, y in sorted(widths.items())) - - -def iter_rows(rows, col_count): - for row in rows: - row = tuple(row) - yield row + ('',) * (col_count - len(row)) - - -def wrap_text(text, width=78, initial_indent='', subsequent_indent='', - preserve_paragraphs=False): - """A helper function that intelligently wraps text. By default, it - assumes that it operates on a single paragraph of text but if the - `preserve_paragraphs` parameter is provided it will intelligently - handle paragraphs (defined by two empty lines). - - If paragraphs are handled, a paragraph can be prefixed with an empty - line containing the ``\\b`` character (``\\x08``) to indicate that - no rewrapping should happen in that block. - - :param text: the text that should be rewrapped. - :param width: the maximum width for the text. - :param initial_indent: the initial indent that should be placed on the - first line as a string. - :param subsequent_indent: the indent string that should be placed on - each consecutive line. - :param preserve_paragraphs: if this flag is set then the wrapping will - intelligently handle paragraphs. - """ - from ._textwrap import TextWrapper - text = text.expandtabs() - wrapper = TextWrapper(width, initial_indent=initial_indent, - subsequent_indent=subsequent_indent, - replace_whitespace=False) - if not preserve_paragraphs: - return wrapper.fill(text) - - p = [] - buf = [] - indent = None - - def _flush_par(): - if not buf: - return - if buf[0].strip() == '\b': - p.append((indent or 0, True, '\n'.join(buf[1:]))) - else: - p.append((indent or 0, False, ' '.join(buf))) - del buf[:] - - for line in text.splitlines(): - if not line: - _flush_par() - indent = None - else: - if indent is None: - orig_len = term_len(line) - line = line.lstrip() - indent = orig_len - term_len(line) - buf.append(line) - _flush_par() - - rv = [] - for indent, raw, text in p: - with wrapper.extra_indent(' ' * indent): - if raw: - rv.append(wrapper.indent_only(text)) - else: - rv.append(wrapper.fill(text)) - - return '\n\n'.join(rv) - - -class HelpFormatter(object): - """This class helps with formatting text-based help pages. It's - usually just needed for very special internal cases, but it's also - exposed so that developers can write their own fancy outputs. - - At present, it always writes into memory. - - :param indent_increment: the additional increment for each level. - :param width: the width for the text. This defaults to the terminal - width clamped to a maximum of 78. - """ - - def __init__(self, indent_increment=2, width=None, max_width=None): - self.indent_increment = indent_increment - if max_width is None: - max_width = 80 - if width is None: - width = FORCED_WIDTH - if width is None: - width = max(min(get_terminal_size()[0], max_width) - 2, 50) - self.width = width - self.current_indent = 0 - self.buffer = [] - - def write(self, string): - """Writes a unicode string into the internal buffer.""" - self.buffer.append(string) - - def indent(self): - """Increases the indentation.""" - self.current_indent += self.indent_increment - - def dedent(self): - """Decreases the indentation.""" - self.current_indent -= self.indent_increment - - def write_usage(self, prog, args='', prefix='Usage: '): - """Writes a usage line into the buffer. - - :param prog: the program name. - :param args: whitespace separated list of arguments. - :param prefix: the prefix for the first line. - """ - usage_prefix = '%*s%s ' % (self.current_indent, prefix, prog) - text_width = self.width - self.current_indent - - if text_width >= (term_len(usage_prefix) + 20): - # The arguments will fit to the right of the prefix. - indent = ' ' * term_len(usage_prefix) - self.write(wrap_text(args, text_width, - initial_indent=usage_prefix, - subsequent_indent=indent)) - else: - # The prefix is too long, put the arguments on the next line. - self.write(usage_prefix) - self.write('\n') - indent = ' ' * (max(self.current_indent, term_len(prefix)) + 4) - self.write(wrap_text(args, text_width, - initial_indent=indent, - subsequent_indent=indent)) - - self.write('\n') - - def write_heading(self, heading): - """Writes a heading into the buffer.""" - self.write('%*s%s:\n' % (self.current_indent, '', heading)) - - def write_paragraph(self): - """Writes a paragraph into the buffer.""" - if self.buffer: - self.write('\n') - - def write_text(self, text): - """Writes re-indented text into the buffer. This rewraps and - preserves paragraphs. - """ - text_width = max(self.width - self.current_indent, 11) - indent = ' ' * self.current_indent - self.write(wrap_text(text, text_width, - initial_indent=indent, - subsequent_indent=indent, - preserve_paragraphs=True)) - self.write('\n') - - def write_dl(self, rows, col_max=30, col_spacing=2): - """Writes a definition list into the buffer. This is how options - and commands are usually formatted. - - :param rows: a list of two item tuples for the terms and values. - :param col_max: the maximum width of the first column. - :param col_spacing: the number of spaces between the first and - second column. - """ - rows = list(rows) - widths = measure_table(rows) - if len(widths) != 2: - raise TypeError('Expected two columns for definition list') - - first_col = min(widths[0], col_max) + col_spacing - - for first, second in iter_rows(rows, len(widths)): - self.write('%*s%s' % (self.current_indent, '', first)) - if not second: - self.write('\n') - continue - if term_len(first) <= first_col - col_spacing: - self.write(' ' * (first_col - term_len(first))) - else: - self.write('\n') - self.write(' ' * (first_col + self.current_indent)) - - text_width = max(self.width - first_col - 2, 10) - lines = iter(wrap_text(second, text_width).splitlines()) - if lines: - self.write(next(lines) + '\n') - for line in lines: - self.write('%*s%s\n' % ( - first_col + self.current_indent, '', line)) - else: - self.write('\n') - - @contextmanager - def section(self, name): - """Helpful context manager that writes a paragraph, a heading, - and the indents. - - :param name: the section name that is written as heading. - """ - self.write_paragraph() - self.write_heading(name) - self.indent() - try: - yield - finally: - self.dedent() - - @contextmanager - def indentation(self): - """A context manager that increases the indentation.""" - self.indent() - try: - yield - finally: - self.dedent() - - def getvalue(self): - """Returns the buffer contents.""" - return ''.join(self.buffer) - - -def join_options(options): - """Given a list of option strings this joins them in the most appropriate - way and returns them in the form ``(formatted_string, - any_prefix_is_slash)`` where the second item in the tuple is a flag that - indicates if any of the option prefixes was a slash. - """ - rv = [] - any_prefix_is_slash = False - for opt in options: - prefix = split_opt(opt)[0] - if prefix == '/': - any_prefix_is_slash = True - rv.append((len(prefix), opt)) - - rv.sort(key=lambda x: x[0]) - - rv = ', '.join(x[1] for x in rv) - return rv, any_prefix_is_slash diff --git a/venv/lib/python3.6/site-packages/click/globals.py b/venv/lib/python3.6/site-packages/click/globals.py deleted file mode 100644 index 843b594..0000000 --- a/venv/lib/python3.6/site-packages/click/globals.py +++ /dev/null @@ -1,48 +0,0 @@ -from threading import local - - -_local = local() - - -def get_current_context(silent=False): - """Returns the current click context. This can be used as a way to - access the current context object from anywhere. This is a more implicit - alternative to the :func:`pass_context` decorator. This function is - primarily useful for helpers such as :func:`echo` which might be - interested in changing its behavior based on the current context. - - To push the current context, :meth:`Context.scope` can be used. - - .. versionadded:: 5.0 - - :param silent: is set to `True` the return value is `None` if no context - is available. The default behavior is to raise a - :exc:`RuntimeError`. - """ - try: - return getattr(_local, 'stack')[-1] - except (AttributeError, IndexError): - if not silent: - raise RuntimeError('There is no active click context.') - - -def push_context(ctx): - """Pushes a new context to the current stack.""" - _local.__dict__.setdefault('stack', []).append(ctx) - - -def pop_context(): - """Removes the top level from the stack.""" - _local.stack.pop() - - -def resolve_color_default(color=None): - """"Internal helper to get the default value of the color flag. If a - value is passed it's returned unchanged, otherwise it's looked up from - the current context. - """ - if color is not None: - return color - ctx = get_current_context(silent=True) - if ctx is not None: - return ctx.color diff --git a/venv/lib/python3.6/site-packages/click/parser.py b/venv/lib/python3.6/site-packages/click/parser.py deleted file mode 100644 index 1c3ae9c..0000000 --- a/venv/lib/python3.6/site-packages/click/parser.py +++ /dev/null @@ -1,427 +0,0 @@ -# -*- coding: utf-8 -*- -""" -click.parser -~~~~~~~~~~~~ - -This module started out as largely a copy paste from the stdlib's -optparse module with the features removed that we do not need from -optparse because we implement them in Click on a higher level (for -instance type handling, help formatting and a lot more). - -The plan is to remove more and more from here over time. - -The reason this is a different module and not optparse from the stdlib -is that there are differences in 2.x and 3.x about the error messages -generated and optparse in the stdlib uses gettext for no good reason -and might cause us issues. -""" - -import re -from collections import deque -from .exceptions import UsageError, NoSuchOption, BadOptionUsage, \ - BadArgumentUsage - - -def _unpack_args(args, nargs_spec): - """Given an iterable of arguments and an iterable of nargs specifications, - it returns a tuple with all the unpacked arguments at the first index - and all remaining arguments as the second. - - The nargs specification is the number of arguments that should be consumed - or `-1` to indicate that this position should eat up all the remainders. - - Missing items are filled with `None`. - """ - args = deque(args) - nargs_spec = deque(nargs_spec) - rv = [] - spos = None - - def _fetch(c): - try: - if spos is None: - return c.popleft() - else: - return c.pop() - except IndexError: - return None - - while nargs_spec: - nargs = _fetch(nargs_spec) - if nargs == 1: - rv.append(_fetch(args)) - elif nargs > 1: - x = [_fetch(args) for _ in range(nargs)] - # If we're reversed, we're pulling in the arguments in reverse, - # so we need to turn them around. - if spos is not None: - x.reverse() - rv.append(tuple(x)) - elif nargs < 0: - if spos is not None: - raise TypeError('Cannot have two nargs < 0') - spos = len(rv) - rv.append(None) - - # spos is the position of the wildcard (star). If it's not `None`, - # we fill it with the remainder. - if spos is not None: - rv[spos] = tuple(args) - args = [] - rv[spos + 1:] = reversed(rv[spos + 1:]) - - return tuple(rv), list(args) - - -def _error_opt_args(nargs, opt): - if nargs == 1: - raise BadOptionUsage(opt, '%s option requires an argument' % opt) - raise BadOptionUsage(opt, '%s option requires %d arguments' % (opt, nargs)) - - -def split_opt(opt): - first = opt[:1] - if first.isalnum(): - return '', opt - if opt[1:2] == first: - return opt[:2], opt[2:] - return first, opt[1:] - - -def normalize_opt(opt, ctx): - if ctx is None or ctx.token_normalize_func is None: - return opt - prefix, opt = split_opt(opt) - return prefix + ctx.token_normalize_func(opt) - - -def split_arg_string(string): - """Given an argument string this attempts to split it into small parts.""" - rv = [] - for match in re.finditer(r"('([^'\\]*(?:\\.[^'\\]*)*)'" - r'|"([^"\\]*(?:\\.[^"\\]*)*)"' - r'|\S+)\s*', string, re.S): - arg = match.group().strip() - if arg[:1] == arg[-1:] and arg[:1] in '"\'': - arg = arg[1:-1].encode('ascii', 'backslashreplace') \ - .decode('unicode-escape') - try: - arg = type(string)(arg) - except UnicodeError: - pass - rv.append(arg) - return rv - - -class Option(object): - - def __init__(self, opts, dest, action=None, nargs=1, const=None, obj=None): - self._short_opts = [] - self._long_opts = [] - self.prefixes = set() - - for opt in opts: - prefix, value = split_opt(opt) - if not prefix: - raise ValueError('Invalid start character for option (%s)' - % opt) - self.prefixes.add(prefix[0]) - if len(prefix) == 1 and len(value) == 1: - self._short_opts.append(opt) - else: - self._long_opts.append(opt) - self.prefixes.add(prefix) - - if action is None: - action = 'store' - - self.dest = dest - self.action = action - self.nargs = nargs - self.const = const - self.obj = obj - - @property - def takes_value(self): - return self.action in ('store', 'append') - - def process(self, value, state): - if self.action == 'store': - state.opts[self.dest] = value - elif self.action == 'store_const': - state.opts[self.dest] = self.const - elif self.action == 'append': - state.opts.setdefault(self.dest, []).append(value) - elif self.action == 'append_const': - state.opts.setdefault(self.dest, []).append(self.const) - elif self.action == 'count': - state.opts[self.dest] = state.opts.get(self.dest, 0) + 1 - else: - raise ValueError('unknown action %r' % self.action) - state.order.append(self.obj) - - -class Argument(object): - - def __init__(self, dest, nargs=1, obj=None): - self.dest = dest - self.nargs = nargs - self.obj = obj - - def process(self, value, state): - if self.nargs > 1: - holes = sum(1 for x in value if x is None) - if holes == len(value): - value = None - elif holes != 0: - raise BadArgumentUsage('argument %s takes %d values' - % (self.dest, self.nargs)) - state.opts[self.dest] = value - state.order.append(self.obj) - - -class ParsingState(object): - - def __init__(self, rargs): - self.opts = {} - self.largs = [] - self.rargs = rargs - self.order = [] - - -class OptionParser(object): - """The option parser is an internal class that is ultimately used to - parse options and arguments. It's modelled after optparse and brings - a similar but vastly simplified API. It should generally not be used - directly as the high level Click classes wrap it for you. - - It's not nearly as extensible as optparse or argparse as it does not - implement features that are implemented on a higher level (such as - types or defaults). - - :param ctx: optionally the :class:`~click.Context` where this parser - should go with. - """ - - def __init__(self, ctx=None): - #: The :class:`~click.Context` for this parser. This might be - #: `None` for some advanced use cases. - self.ctx = ctx - #: This controls how the parser deals with interspersed arguments. - #: If this is set to `False`, the parser will stop on the first - #: non-option. Click uses this to implement nested subcommands - #: safely. - self.allow_interspersed_args = True - #: This tells the parser how to deal with unknown options. By - #: default it will error out (which is sensible), but there is a - #: second mode where it will ignore it and continue processing - #: after shifting all the unknown options into the resulting args. - self.ignore_unknown_options = False - if ctx is not None: - self.allow_interspersed_args = ctx.allow_interspersed_args - self.ignore_unknown_options = ctx.ignore_unknown_options - self._short_opt = {} - self._long_opt = {} - self._opt_prefixes = set(['-', '--']) - self._args = [] - - def add_option(self, opts, dest, action=None, nargs=1, const=None, - obj=None): - """Adds a new option named `dest` to the parser. The destination - is not inferred (unlike with optparse) and needs to be explicitly - provided. Action can be any of ``store``, ``store_const``, - ``append``, ``appnd_const`` or ``count``. - - The `obj` can be used to identify the option in the order list - that is returned from the parser. - """ - if obj is None: - obj = dest - opts = [normalize_opt(opt, self.ctx) for opt in opts] - option = Option(opts, dest, action=action, nargs=nargs, - const=const, obj=obj) - self._opt_prefixes.update(option.prefixes) - for opt in option._short_opts: - self._short_opt[opt] = option - for opt in option._long_opts: - self._long_opt[opt] = option - - def add_argument(self, dest, nargs=1, obj=None): - """Adds a positional argument named `dest` to the parser. - - The `obj` can be used to identify the option in the order list - that is returned from the parser. - """ - if obj is None: - obj = dest - self._args.append(Argument(dest=dest, nargs=nargs, obj=obj)) - - def parse_args(self, args): - """Parses positional arguments and returns ``(values, args, order)`` - for the parsed options and arguments as well as the leftover - arguments if there are any. The order is a list of objects as they - appear on the command line. If arguments appear multiple times they - will be memorized multiple times as well. - """ - state = ParsingState(args) - try: - self._process_args_for_options(state) - self._process_args_for_args(state) - except UsageError: - if self.ctx is None or not self.ctx.resilient_parsing: - raise - return state.opts, state.largs, state.order - - def _process_args_for_args(self, state): - pargs, args = _unpack_args(state.largs + state.rargs, - [x.nargs for x in self._args]) - - for idx, arg in enumerate(self._args): - arg.process(pargs[idx], state) - - state.largs = args - state.rargs = [] - - def _process_args_for_options(self, state): - while state.rargs: - arg = state.rargs.pop(0) - arglen = len(arg) - # Double dashes always handled explicitly regardless of what - # prefixes are valid. - if arg == '--': - return - elif arg[:1] in self._opt_prefixes and arglen > 1: - self._process_opts(arg, state) - elif self.allow_interspersed_args: - state.largs.append(arg) - else: - state.rargs.insert(0, arg) - return - - # Say this is the original argument list: - # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)] - # ^ - # (we are about to process arg(i)). - # - # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of - # [arg0, ..., arg(i-1)] (any options and their arguments will have - # been removed from largs). - # - # The while loop will usually consume 1 or more arguments per pass. - # If it consumes 1 (eg. arg is an option that takes no arguments), - # then after _process_arg() is done the situation is: - # - # largs = subset of [arg0, ..., arg(i)] - # rargs = [arg(i+1), ..., arg(N-1)] - # - # If allow_interspersed_args is false, largs will always be - # *empty* -- still a subset of [arg0, ..., arg(i-1)], but - # not a very interesting subset! - - def _match_long_opt(self, opt, explicit_value, state): - if opt not in self._long_opt: - possibilities = [word for word in self._long_opt - if word.startswith(opt)] - raise NoSuchOption(opt, possibilities=possibilities, ctx=self.ctx) - - option = self._long_opt[opt] - if option.takes_value: - # At this point it's safe to modify rargs by injecting the - # explicit value, because no exception is raised in this - # branch. This means that the inserted value will be fully - # consumed. - if explicit_value is not None: - state.rargs.insert(0, explicit_value) - - nargs = option.nargs - if len(state.rargs) < nargs: - _error_opt_args(nargs, opt) - elif nargs == 1: - value = state.rargs.pop(0) - else: - value = tuple(state.rargs[:nargs]) - del state.rargs[:nargs] - - elif explicit_value is not None: - raise BadOptionUsage(opt, '%s option does not take a value' % opt) - - else: - value = None - - option.process(value, state) - - def _match_short_opt(self, arg, state): - stop = False - i = 1 - prefix = arg[0] - unknown_options = [] - - for ch in arg[1:]: - opt = normalize_opt(prefix + ch, self.ctx) - option = self._short_opt.get(opt) - i += 1 - - if not option: - if self.ignore_unknown_options: - unknown_options.append(ch) - continue - raise NoSuchOption(opt, ctx=self.ctx) - if option.takes_value: - # Any characters left in arg? Pretend they're the - # next arg, and stop consuming characters of arg. - if i < len(arg): - state.rargs.insert(0, arg[i:]) - stop = True - - nargs = option.nargs - if len(state.rargs) < nargs: - _error_opt_args(nargs, opt) - elif nargs == 1: - value = state.rargs.pop(0) - else: - value = tuple(state.rargs[:nargs]) - del state.rargs[:nargs] - - else: - value = None - - option.process(value, state) - - if stop: - break - - # If we got any unknown options we re-combinate the string of the - # remaining options and re-attach the prefix, then report that - # to the state as new larg. This way there is basic combinatorics - # that can be achieved while still ignoring unknown arguments. - if self.ignore_unknown_options and unknown_options: - state.largs.append(prefix + ''.join(unknown_options)) - - def _process_opts(self, arg, state): - explicit_value = None - # Long option handling happens in two parts. The first part is - # supporting explicitly attached values. In any case, we will try - # to long match the option first. - if '=' in arg: - long_opt, explicit_value = arg.split('=', 1) - else: - long_opt = arg - norm_long_opt = normalize_opt(long_opt, self.ctx) - - # At this point we will match the (assumed) long option through - # the long option matching code. Note that this allows options - # like "-foo" to be matched as long options. - try: - self._match_long_opt(norm_long_opt, explicit_value, state) - except NoSuchOption: - # At this point the long option matching failed, and we need - # to try with short options. However there is a special rule - # which says, that if we have a two character options prefix - # (applies to "--foo" for instance), we do not dispatch to the - # short option code and will instead raise the no option - # error. - if arg[:2] not in self._opt_prefixes: - return self._match_short_opt(arg, state) - if not self.ignore_unknown_options: - raise - state.largs.append(arg) diff --git a/venv/lib/python3.6/site-packages/click/termui.py b/venv/lib/python3.6/site-packages/click/termui.py deleted file mode 100644 index bf9a3aa..0000000 --- a/venv/lib/python3.6/site-packages/click/termui.py +++ /dev/null @@ -1,606 +0,0 @@ -import os -import sys -import struct -import inspect -import itertools - -from ._compat import raw_input, text_type, string_types, \ - isatty, strip_ansi, get_winterm_size, DEFAULT_COLUMNS, WIN -from .utils import echo -from .exceptions import Abort, UsageError -from .types import convert_type, Choice, Path -from .globals import resolve_color_default - - -# The prompt functions to use. The doc tools currently override these -# functions to customize how they work. -visible_prompt_func = raw_input - -_ansi_colors = { - 'black': 30, - 'red': 31, - 'green': 32, - 'yellow': 33, - 'blue': 34, - 'magenta': 35, - 'cyan': 36, - 'white': 37, - 'reset': 39, - 'bright_black': 90, - 'bright_red': 91, - 'bright_green': 92, - 'bright_yellow': 93, - 'bright_blue': 94, - 'bright_magenta': 95, - 'bright_cyan': 96, - 'bright_white': 97, -} -_ansi_reset_all = '\033[0m' - - -def hidden_prompt_func(prompt): - import getpass - return getpass.getpass(prompt) - - -def _build_prompt(text, suffix, show_default=False, default=None, show_choices=True, type=None): - prompt = text - if type is not None and show_choices and isinstance(type, Choice): - prompt += ' (' + ", ".join(map(str, type.choices)) + ')' - if default is not None and show_default: - prompt = '%s [%s]' % (prompt, default) - return prompt + suffix - - -def prompt(text, default=None, hide_input=False, confirmation_prompt=False, - type=None, value_proc=None, prompt_suffix=': ', show_default=True, - err=False, show_choices=True): - """Prompts a user for input. This is a convenience function that can - be used to prompt a user for input later. - - If the user aborts the input by sending a interrupt signal, this - function will catch it and raise a :exc:`Abort` exception. - - .. versionadded:: 7.0 - Added the show_choices parameter. - - .. versionadded:: 6.0 - Added unicode support for cmd.exe on Windows. - - .. versionadded:: 4.0 - Added the `err` parameter. - - :param text: the text to show for the prompt. - :param default: the default value to use if no input happens. If this - is not given it will prompt until it's aborted. - :param hide_input: if this is set to true then the input value will - be hidden. - :param confirmation_prompt: asks for confirmation for the value. - :param type: the type to use to check the value against. - :param value_proc: if this parameter is provided it's a function that - is invoked instead of the type conversion to - convert a value. - :param prompt_suffix: a suffix that should be added to the prompt. - :param show_default: shows or hides the default value in the prompt. - :param err: if set to true the file defaults to ``stderr`` instead of - ``stdout``, the same as with echo. - :param show_choices: Show or hide choices if the passed type is a Choice. - For example if type is a Choice of either day or week, - show_choices is true and text is "Group by" then the - prompt will be "Group by (day, week): ". - """ - result = None - - def prompt_func(text): - f = hide_input and hidden_prompt_func or visible_prompt_func - try: - # Write the prompt separately so that we get nice - # coloring through colorama on Windows - echo(text, nl=False, err=err) - return f('') - except (KeyboardInterrupt, EOFError): - # getpass doesn't print a newline if the user aborts input with ^C. - # Allegedly this behavior is inherited from getpass(3). - # A doc bug has been filed at https://bugs.python.org/issue24711 - if hide_input: - echo(None, err=err) - raise Abort() - - if value_proc is None: - value_proc = convert_type(type, default) - - prompt = _build_prompt(text, prompt_suffix, show_default, default, show_choices, type) - - while 1: - while 1: - value = prompt_func(prompt) - if value: - break - elif default is not None: - if isinstance(value_proc, Path): - # validate Path default value(exists, dir_okay etc.) - value = default - break - return default - try: - result = value_proc(value) - except UsageError as e: - echo('Error: %s' % e.message, err=err) - continue - if not confirmation_prompt: - return result - while 1: - value2 = prompt_func('Repeat for confirmation: ') - if value2: - break - if value == value2: - return result - echo('Error: the two entered values do not match', err=err) - - -def confirm(text, default=False, abort=False, prompt_suffix=': ', - show_default=True, err=False): - """Prompts for confirmation (yes/no question). - - If the user aborts the input by sending a interrupt signal this - function will catch it and raise a :exc:`Abort` exception. - - .. versionadded:: 4.0 - Added the `err` parameter. - - :param text: the question to ask. - :param default: the default for the prompt. - :param abort: if this is set to `True` a negative answer aborts the - exception by raising :exc:`Abort`. - :param prompt_suffix: a suffix that should be added to the prompt. - :param show_default: shows or hides the default value in the prompt. - :param err: if set to true the file defaults to ``stderr`` instead of - ``stdout``, the same as with echo. - """ - prompt = _build_prompt(text, prompt_suffix, show_default, - default and 'Y/n' or 'y/N') - while 1: - try: - # Write the prompt separately so that we get nice - # coloring through colorama on Windows - echo(prompt, nl=False, err=err) - value = visible_prompt_func('').lower().strip() - except (KeyboardInterrupt, EOFError): - raise Abort() - if value in ('y', 'yes'): - rv = True - elif value in ('n', 'no'): - rv = False - elif value == '': - rv = default - else: - echo('Error: invalid input', err=err) - continue - break - if abort and not rv: - raise Abort() - return rv - - -def get_terminal_size(): - """Returns the current size of the terminal as tuple in the form - ``(width, height)`` in columns and rows. - """ - # If shutil has get_terminal_size() (Python 3.3 and later) use that - if sys.version_info >= (3, 3): - import shutil - shutil_get_terminal_size = getattr(shutil, 'get_terminal_size', None) - if shutil_get_terminal_size: - sz = shutil_get_terminal_size() - return sz.columns, sz.lines - - # We provide a sensible default for get_winterm_size() when being invoked - # inside a subprocess. Without this, it would not provide a useful input. - if get_winterm_size is not None: - size = get_winterm_size() - if size == (0, 0): - return (79, 24) - else: - return size - - def ioctl_gwinsz(fd): - try: - import fcntl - import termios - cr = struct.unpack( - 'hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234')) - except Exception: - return - return cr - - cr = ioctl_gwinsz(0) or ioctl_gwinsz(1) or ioctl_gwinsz(2) - if not cr: - try: - fd = os.open(os.ctermid(), os.O_RDONLY) - try: - cr = ioctl_gwinsz(fd) - finally: - os.close(fd) - except Exception: - pass - if not cr or not cr[0] or not cr[1]: - cr = (os.environ.get('LINES', 25), - os.environ.get('COLUMNS', DEFAULT_COLUMNS)) - return int(cr[1]), int(cr[0]) - - -def echo_via_pager(text_or_generator, color=None): - """This function takes a text and shows it via an environment specific - pager on stdout. - - .. versionchanged:: 3.0 - Added the `color` flag. - - :param text_or_generator: the text to page, or alternatively, a - generator emitting the text to page. - :param color: controls if the pager supports ANSI colors or not. The - default is autodetection. - """ - color = resolve_color_default(color) - - if inspect.isgeneratorfunction(text_or_generator): - i = text_or_generator() - elif isinstance(text_or_generator, string_types): - i = [text_or_generator] - else: - i = iter(text_or_generator) - - # convert every element of i to a text type if necessary - text_generator = (el if isinstance(el, string_types) else text_type(el) - for el in i) - - from ._termui_impl import pager - return pager(itertools.chain(text_generator, "\n"), color) - - -def progressbar(iterable=None, length=None, label=None, show_eta=True, - show_percent=None, show_pos=False, - item_show_func=None, fill_char='#', empty_char='-', - bar_template='%(label)s [%(bar)s] %(info)s', - info_sep=' ', width=36, file=None, color=None): - """This function creates an iterable context manager that can be used - to iterate over something while showing a progress bar. It will - either iterate over the `iterable` or `length` items (that are counted - up). While iteration happens, this function will print a rendered - progress bar to the given `file` (defaults to stdout) and will attempt - to calculate remaining time and more. By default, this progress bar - will not be rendered if the file is not a terminal. - - The context manager creates the progress bar. When the context - manager is entered the progress bar is already displayed. With every - iteration over the progress bar, the iterable passed to the bar is - advanced and the bar is updated. When the context manager exits, - a newline is printed and the progress bar is finalized on screen. - - No printing must happen or the progress bar will be unintentionally - destroyed. - - Example usage:: - - with progressbar(items) as bar: - for item in bar: - do_something_with(item) - - Alternatively, if no iterable is specified, one can manually update the - progress bar through the `update()` method instead of directly - iterating over the progress bar. The update method accepts the number - of steps to increment the bar with:: - - with progressbar(length=chunks.total_bytes) as bar: - for chunk in chunks: - process_chunk(chunk) - bar.update(chunks.bytes) - - .. versionadded:: 2.0 - - .. versionadded:: 4.0 - Added the `color` parameter. Added a `update` method to the - progressbar object. - - :param iterable: an iterable to iterate over. If not provided the length - is required. - :param length: the number of items to iterate over. By default the - progressbar will attempt to ask the iterator about its - length, which might or might not work. If an iterable is - also provided this parameter can be used to override the - length. If an iterable is not provided the progress bar - will iterate over a range of that length. - :param label: the label to show next to the progress bar. - :param show_eta: enables or disables the estimated time display. This is - automatically disabled if the length cannot be - determined. - :param show_percent: enables or disables the percentage display. The - default is `True` if the iterable has a length or - `False` if not. - :param show_pos: enables or disables the absolute position display. The - default is `False`. - :param item_show_func: a function called with the current item which - can return a string to show the current item - next to the progress bar. Note that the current - item can be `None`! - :param fill_char: the character to use to show the filled part of the - progress bar. - :param empty_char: the character to use to show the non-filled part of - the progress bar. - :param bar_template: the format string to use as template for the bar. - The parameters in it are ``label`` for the label, - ``bar`` for the progress bar and ``info`` for the - info section. - :param info_sep: the separator between multiple info items (eta etc.) - :param width: the width of the progress bar in characters, 0 means full - terminal width - :param file: the file to write to. If this is not a terminal then - only the label is printed. - :param color: controls if the terminal supports ANSI colors or not. The - default is autodetection. This is only needed if ANSI - codes are included anywhere in the progress bar output - which is not the case by default. - """ - from ._termui_impl import ProgressBar - color = resolve_color_default(color) - return ProgressBar(iterable=iterable, length=length, show_eta=show_eta, - show_percent=show_percent, show_pos=show_pos, - item_show_func=item_show_func, fill_char=fill_char, - empty_char=empty_char, bar_template=bar_template, - info_sep=info_sep, file=file, label=label, - width=width, color=color) - - -def clear(): - """Clears the terminal screen. This will have the effect of clearing - the whole visible space of the terminal and moving the cursor to the - top left. This does not do anything if not connected to a terminal. - - .. versionadded:: 2.0 - """ - if not isatty(sys.stdout): - return - # If we're on Windows and we don't have colorama available, then we - # clear the screen by shelling out. Otherwise we can use an escape - # sequence. - if WIN: - os.system('cls') - else: - sys.stdout.write('\033[2J\033[1;1H') - - -def style(text, fg=None, bg=None, bold=None, dim=None, underline=None, - blink=None, reverse=None, reset=True): - """Styles a text with ANSI styles and returns the new string. By - default the styling is self contained which means that at the end - of the string a reset code is issued. This can be prevented by - passing ``reset=False``. - - Examples:: - - click.echo(click.style('Hello World!', fg='green')) - click.echo(click.style('ATTENTION!', blink=True)) - click.echo(click.style('Some things', reverse=True, fg='cyan')) - - Supported color names: - - * ``black`` (might be a gray) - * ``red`` - * ``green`` - * ``yellow`` (might be an orange) - * ``blue`` - * ``magenta`` - * ``cyan`` - * ``white`` (might be light gray) - * ``bright_black`` - * ``bright_red`` - * ``bright_green`` - * ``bright_yellow`` - * ``bright_blue`` - * ``bright_magenta`` - * ``bright_cyan`` - * ``bright_white`` - * ``reset`` (reset the color code only) - - .. versionadded:: 2.0 - - .. versionadded:: 7.0 - Added support for bright colors. - - :param text: the string to style with ansi codes. - :param fg: if provided this will become the foreground color. - :param bg: if provided this will become the background color. - :param bold: if provided this will enable or disable bold mode. - :param dim: if provided this will enable or disable dim mode. This is - badly supported. - :param underline: if provided this will enable or disable underline. - :param blink: if provided this will enable or disable blinking. - :param reverse: if provided this will enable or disable inverse - rendering (foreground becomes background and the - other way round). - :param reset: by default a reset-all code is added at the end of the - string which means that styles do not carry over. This - can be disabled to compose styles. - """ - bits = [] - if fg: - try: - bits.append('\033[%dm' % (_ansi_colors[fg])) - except KeyError: - raise TypeError('Unknown color %r' % fg) - if bg: - try: - bits.append('\033[%dm' % (_ansi_colors[bg] + 10)) - except KeyError: - raise TypeError('Unknown color %r' % bg) - if bold is not None: - bits.append('\033[%dm' % (1 if bold else 22)) - if dim is not None: - bits.append('\033[%dm' % (2 if dim else 22)) - if underline is not None: - bits.append('\033[%dm' % (4 if underline else 24)) - if blink is not None: - bits.append('\033[%dm' % (5 if blink else 25)) - if reverse is not None: - bits.append('\033[%dm' % (7 if reverse else 27)) - bits.append(text) - if reset: - bits.append(_ansi_reset_all) - return ''.join(bits) - - -def unstyle(text): - """Removes ANSI styling information from a string. Usually it's not - necessary to use this function as Click's echo function will - automatically remove styling if necessary. - - .. versionadded:: 2.0 - - :param text: the text to remove style information from. - """ - return strip_ansi(text) - - -def secho(message=None, file=None, nl=True, err=False, color=None, **styles): - """This function combines :func:`echo` and :func:`style` into one - call. As such the following two calls are the same:: - - click.secho('Hello World!', fg='green') - click.echo(click.style('Hello World!', fg='green')) - - All keyword arguments are forwarded to the underlying functions - depending on which one they go with. - - .. versionadded:: 2.0 - """ - if message is not None: - message = style(message, **styles) - return echo(message, file=file, nl=nl, err=err, color=color) - - -def edit(text=None, editor=None, env=None, require_save=True, - extension='.txt', filename=None): - r"""Edits the given text in the defined editor. If an editor is given - (should be the full path to the executable but the regular operating - system search path is used for finding the executable) it overrides - the detected editor. Optionally, some environment variables can be - used. If the editor is closed without changes, `None` is returned. In - case a file is edited directly the return value is always `None` and - `require_save` and `extension` are ignored. - - If the editor cannot be opened a :exc:`UsageError` is raised. - - Note for Windows: to simplify cross-platform usage, the newlines are - automatically converted from POSIX to Windows and vice versa. As such, - the message here will have ``\n`` as newline markers. - - :param text: the text to edit. - :param editor: optionally the editor to use. Defaults to automatic - detection. - :param env: environment variables to forward to the editor. - :param require_save: if this is true, then not saving in the editor - will make the return value become `None`. - :param extension: the extension to tell the editor about. This defaults - to `.txt` but changing this might change syntax - highlighting. - :param filename: if provided it will edit this file instead of the - provided text contents. It will not use a temporary - file as an indirection in that case. - """ - from ._termui_impl import Editor - editor = Editor(editor=editor, env=env, require_save=require_save, - extension=extension) - if filename is None: - return editor.edit(text) - editor.edit_file(filename) - - -def launch(url, wait=False, locate=False): - """This function launches the given URL (or filename) in the default - viewer application for this file type. If this is an executable, it - might launch the executable in a new session. The return value is - the exit code of the launched application. Usually, ``0`` indicates - success. - - Examples:: - - click.launch('https://click.palletsprojects.com/') - click.launch('/my/downloaded/file', locate=True) - - .. versionadded:: 2.0 - - :param url: URL or filename of the thing to launch. - :param wait: waits for the program to stop. - :param locate: if this is set to `True` then instead of launching the - application associated with the URL it will attempt to - launch a file manager with the file located. This - might have weird effects if the URL does not point to - the filesystem. - """ - from ._termui_impl import open_url - return open_url(url, wait=wait, locate=locate) - - -# If this is provided, getchar() calls into this instead. This is used -# for unittesting purposes. -_getchar = None - - -def getchar(echo=False): - """Fetches a single character from the terminal and returns it. This - will always return a unicode character and under certain rare - circumstances this might return more than one character. The - situations which more than one character is returned is when for - whatever reason multiple characters end up in the terminal buffer or - standard input was not actually a terminal. - - Note that this will always read from the terminal, even if something - is piped into the standard input. - - Note for Windows: in rare cases when typing non-ASCII characters, this - function might wait for a second character and then return both at once. - This is because certain Unicode characters look like special-key markers. - - .. versionadded:: 2.0 - - :param echo: if set to `True`, the character read will also show up on - the terminal. The default is to not show it. - """ - f = _getchar - if f is None: - from ._termui_impl import getchar as f - return f(echo) - - -def raw_terminal(): - from ._termui_impl import raw_terminal as f - return f() - - -def pause(info='Press any key to continue ...', err=False): - """This command stops execution and waits for the user to press any - key to continue. This is similar to the Windows batch "pause" - command. If the program is not run through a terminal, this command - will instead do nothing. - - .. versionadded:: 2.0 - - .. versionadded:: 4.0 - Added the `err` parameter. - - :param info: the info string to print before pausing. - :param err: if set to message goes to ``stderr`` instead of - ``stdout``, the same as with echo. - """ - if not isatty(sys.stdin) or not isatty(sys.stdout): - return - try: - if info: - echo(info, nl=False, err=err) - try: - getchar() - except (KeyboardInterrupt, EOFError): - pass - finally: - if info: - echo(err=err) diff --git a/venv/lib/python3.6/site-packages/click/testing.py b/venv/lib/python3.6/site-packages/click/testing.py deleted file mode 100644 index 1b2924e..0000000 --- a/venv/lib/python3.6/site-packages/click/testing.py +++ /dev/null @@ -1,374 +0,0 @@ -import os -import sys -import shutil -import tempfile -import contextlib -import shlex - -from ._compat import iteritems, PY2, string_types - - -# If someone wants to vendor click, we want to ensure the -# correct package is discovered. Ideally we could use a -# relative import here but unfortunately Python does not -# support that. -clickpkg = sys.modules[__name__.rsplit('.', 1)[0]] - - -if PY2: - from cStringIO import StringIO -else: - import io - from ._compat import _find_binary_reader - - -class EchoingStdin(object): - - def __init__(self, input, output): - self._input = input - self._output = output - - def __getattr__(self, x): - return getattr(self._input, x) - - def _echo(self, rv): - self._output.write(rv) - return rv - - def read(self, n=-1): - return self._echo(self._input.read(n)) - - def readline(self, n=-1): - return self._echo(self._input.readline(n)) - - def readlines(self): - return [self._echo(x) for x in self._input.readlines()] - - def __iter__(self): - return iter(self._echo(x) for x in self._input) - - def __repr__(self): - return repr(self._input) - - -def make_input_stream(input, charset): - # Is already an input stream. - if hasattr(input, 'read'): - if PY2: - return input - rv = _find_binary_reader(input) - if rv is not None: - return rv - raise TypeError('Could not find binary reader for input stream.') - - if input is None: - input = b'' - elif not isinstance(input, bytes): - input = input.encode(charset) - if PY2: - return StringIO(input) - return io.BytesIO(input) - - -class Result(object): - """Holds the captured result of an invoked CLI script.""" - - def __init__(self, runner, stdout_bytes, stderr_bytes, exit_code, - exception, exc_info=None): - #: The runner that created the result - self.runner = runner - #: The standard output as bytes. - self.stdout_bytes = stdout_bytes - #: The standard error as bytes, or False(y) if not available - self.stderr_bytes = stderr_bytes - #: The exit code as integer. - self.exit_code = exit_code - #: The exception that happened if one did. - self.exception = exception - #: The traceback - self.exc_info = exc_info - - @property - def output(self): - """The (standard) output as unicode string.""" - return self.stdout - - @property - def stdout(self): - """The standard output as unicode string.""" - return self.stdout_bytes.decode(self.runner.charset, 'replace') \ - .replace('\r\n', '\n') - - @property - def stderr(self): - """The standard error as unicode string.""" - if not self.stderr_bytes: - raise ValueError("stderr not separately captured") - return self.stderr_bytes.decode(self.runner.charset, 'replace') \ - .replace('\r\n', '\n') - - - def __repr__(self): - return '<%s %s>' % ( - type(self).__name__, - self.exception and repr(self.exception) or 'okay', - ) - - -class CliRunner(object): - """The CLI runner provides functionality to invoke a Click command line - script for unittesting purposes in a isolated environment. This only - works in single-threaded systems without any concurrency as it changes the - global interpreter state. - - :param charset: the character set for the input and output data. This is - UTF-8 by default and should not be changed currently as - the reporting to Click only works in Python 2 properly. - :param env: a dictionary with environment variables for overriding. - :param echo_stdin: if this is set to `True`, then reading from stdin writes - to stdout. This is useful for showing examples in - some circumstances. Note that regular prompts - will automatically echo the input. - :param mix_stderr: if this is set to `False`, then stdout and stderr are - preserved as independent streams. This is useful for - Unix-philosophy apps that have predictable stdout and - noisy stderr, such that each may be measured - independently - """ - - def __init__(self, charset=None, env=None, echo_stdin=False, - mix_stderr=True): - if charset is None: - charset = 'utf-8' - self.charset = charset - self.env = env or {} - self.echo_stdin = echo_stdin - self.mix_stderr = mix_stderr - - def get_default_prog_name(self, cli): - """Given a command object it will return the default program name - for it. The default is the `name` attribute or ``"root"`` if not - set. - """ - return cli.name or 'root' - - def make_env(self, overrides=None): - """Returns the environment overrides for invoking a script.""" - rv = dict(self.env) - if overrides: - rv.update(overrides) - return rv - - @contextlib.contextmanager - def isolation(self, input=None, env=None, color=False): - """A context manager that sets up the isolation for invoking of a - command line tool. This sets up stdin with the given input data - and `os.environ` with the overrides from the given dictionary. - This also rebinds some internals in Click to be mocked (like the - prompt functionality). - - This is automatically done in the :meth:`invoke` method. - - .. versionadded:: 4.0 - The ``color`` parameter was added. - - :param input: the input stream to put into sys.stdin. - :param env: the environment overrides as dictionary. - :param color: whether the output should contain color codes. The - application can still override this explicitly. - """ - input = make_input_stream(input, self.charset) - - old_stdin = sys.stdin - old_stdout = sys.stdout - old_stderr = sys.stderr - old_forced_width = clickpkg.formatting.FORCED_WIDTH - clickpkg.formatting.FORCED_WIDTH = 80 - - env = self.make_env(env) - - if PY2: - bytes_output = StringIO() - if self.echo_stdin: - input = EchoingStdin(input, bytes_output) - sys.stdout = bytes_output - if not self.mix_stderr: - bytes_error = StringIO() - sys.stderr = bytes_error - else: - bytes_output = io.BytesIO() - if self.echo_stdin: - input = EchoingStdin(input, bytes_output) - input = io.TextIOWrapper(input, encoding=self.charset) - sys.stdout = io.TextIOWrapper( - bytes_output, encoding=self.charset) - if not self.mix_stderr: - bytes_error = io.BytesIO() - sys.stderr = io.TextIOWrapper( - bytes_error, encoding=self.charset) - - if self.mix_stderr: - sys.stderr = sys.stdout - - sys.stdin = input - - def visible_input(prompt=None): - sys.stdout.write(prompt or '') - val = input.readline().rstrip('\r\n') - sys.stdout.write(val + '\n') - sys.stdout.flush() - return val - - def hidden_input(prompt=None): - sys.stdout.write((prompt or '') + '\n') - sys.stdout.flush() - return input.readline().rstrip('\r\n') - - def _getchar(echo): - char = sys.stdin.read(1) - if echo: - sys.stdout.write(char) - sys.stdout.flush() - return char - - default_color = color - - def should_strip_ansi(stream=None, color=None): - if color is None: - return not default_color - return not color - - old_visible_prompt_func = clickpkg.termui.visible_prompt_func - old_hidden_prompt_func = clickpkg.termui.hidden_prompt_func - old__getchar_func = clickpkg.termui._getchar - old_should_strip_ansi = clickpkg.utils.should_strip_ansi - clickpkg.termui.visible_prompt_func = visible_input - clickpkg.termui.hidden_prompt_func = hidden_input - clickpkg.termui._getchar = _getchar - clickpkg.utils.should_strip_ansi = should_strip_ansi - - old_env = {} - try: - for key, value in iteritems(env): - old_env[key] = os.environ.get(key) - if value is None: - try: - del os.environ[key] - except Exception: - pass - else: - os.environ[key] = value - yield (bytes_output, not self.mix_stderr and bytes_error) - finally: - for key, value in iteritems(old_env): - if value is None: - try: - del os.environ[key] - except Exception: - pass - else: - os.environ[key] = value - sys.stdout = old_stdout - sys.stderr = old_stderr - sys.stdin = old_stdin - clickpkg.termui.visible_prompt_func = old_visible_prompt_func - clickpkg.termui.hidden_prompt_func = old_hidden_prompt_func - clickpkg.termui._getchar = old__getchar_func - clickpkg.utils.should_strip_ansi = old_should_strip_ansi - clickpkg.formatting.FORCED_WIDTH = old_forced_width - - def invoke(self, cli, args=None, input=None, env=None, - catch_exceptions=True, color=False, mix_stderr=False, **extra): - """Invokes a command in an isolated environment. The arguments are - forwarded directly to the command line script, the `extra` keyword - arguments are passed to the :meth:`~clickpkg.Command.main` function of - the command. - - This returns a :class:`Result` object. - - .. versionadded:: 3.0 - The ``catch_exceptions`` parameter was added. - - .. versionchanged:: 3.0 - The result object now has an `exc_info` attribute with the - traceback if available. - - .. versionadded:: 4.0 - The ``color`` parameter was added. - - :param cli: the command to invoke - :param args: the arguments to invoke. It may be given as an iterable - or a string. When given as string it will be interpreted - as a Unix shell command. More details at - :func:`shlex.split`. - :param input: the input data for `sys.stdin`. - :param env: the environment overrides. - :param catch_exceptions: Whether to catch any other exceptions than - ``SystemExit``. - :param extra: the keyword arguments to pass to :meth:`main`. - :param color: whether the output should contain color codes. The - application can still override this explicitly. - """ - exc_info = None - with self.isolation(input=input, env=env, color=color) as outstreams: - exception = None - exit_code = 0 - - if isinstance(args, string_types): - args = shlex.split(args) - - try: - prog_name = extra.pop("prog_name") - except KeyError: - prog_name = self.get_default_prog_name(cli) - - try: - cli.main(args=args or (), prog_name=prog_name, **extra) - except SystemExit as e: - exc_info = sys.exc_info() - exit_code = e.code - if exit_code is None: - exit_code = 0 - - if exit_code != 0: - exception = e - - if not isinstance(exit_code, int): - sys.stdout.write(str(exit_code)) - sys.stdout.write('\n') - exit_code = 1 - - except Exception as e: - if not catch_exceptions: - raise - exception = e - exit_code = 1 - exc_info = sys.exc_info() - finally: - sys.stdout.flush() - stdout = outstreams[0].getvalue() - stderr = outstreams[1] and outstreams[1].getvalue() - - return Result(runner=self, - stdout_bytes=stdout, - stderr_bytes=stderr, - exit_code=exit_code, - exception=exception, - exc_info=exc_info) - - @contextlib.contextmanager - def isolated_filesystem(self): - """A context manager that creates a temporary folder and changes - the current working directory to it for isolated filesystem tests. - """ - cwd = os.getcwd() - t = tempfile.mkdtemp() - os.chdir(t) - try: - yield t - finally: - os.chdir(cwd) - try: - shutil.rmtree(t) - except (OSError, IOError): - pass diff --git a/venv/lib/python3.6/site-packages/click/types.py b/venv/lib/python3.6/site-packages/click/types.py deleted file mode 100644 index 1f88032..0000000 --- a/venv/lib/python3.6/site-packages/click/types.py +++ /dev/null @@ -1,668 +0,0 @@ -import os -import stat -from datetime import datetime - -from ._compat import open_stream, text_type, filename_to_ui, \ - get_filesystem_encoding, get_streerror, _get_argv_encoding, PY2 -from .exceptions import BadParameter -from .utils import safecall, LazyFile - - -class ParamType(object): - """Helper for converting values through types. The following is - necessary for a valid type: - - * it needs a name - * it needs to pass through None unchanged - * it needs to convert from a string - * it needs to convert its result type through unchanged - (eg: needs to be idempotent) - * it needs to be able to deal with param and context being `None`. - This can be the case when the object is used with prompt - inputs. - """ - is_composite = False - - #: the descriptive name of this type - name = None - - #: if a list of this type is expected and the value is pulled from a - #: string environment variable, this is what splits it up. `None` - #: means any whitespace. For all parameters the general rule is that - #: whitespace splits them up. The exception are paths and files which - #: are split by ``os.path.pathsep`` by default (":" on Unix and ";" on - #: Windows). - envvar_list_splitter = None - - def __call__(self, value, param=None, ctx=None): - if value is not None: - return self.convert(value, param, ctx) - - def get_metavar(self, param): - """Returns the metavar default for this param if it provides one.""" - - def get_missing_message(self, param): - """Optionally might return extra information about a missing - parameter. - - .. versionadded:: 2.0 - """ - - def convert(self, value, param, ctx): - """Converts the value. This is not invoked for values that are - `None` (the missing value). - """ - return value - - def split_envvar_value(self, rv): - """Given a value from an environment variable this splits it up - into small chunks depending on the defined envvar list splitter. - - If the splitter is set to `None`, which means that whitespace splits, - then leading and trailing whitespace is ignored. Otherwise, leading - and trailing splitters usually lead to empty items being included. - """ - return (rv or '').split(self.envvar_list_splitter) - - def fail(self, message, param=None, ctx=None): - """Helper method to fail with an invalid value message.""" - raise BadParameter(message, ctx=ctx, param=param) - - -class CompositeParamType(ParamType): - is_composite = True - - @property - def arity(self): - raise NotImplementedError() - - -class FuncParamType(ParamType): - - def __init__(self, func): - self.name = func.__name__ - self.func = func - - def convert(self, value, param, ctx): - try: - return self.func(value) - except ValueError: - try: - value = text_type(value) - except UnicodeError: - value = str(value).decode('utf-8', 'replace') - self.fail(value, param, ctx) - - -class UnprocessedParamType(ParamType): - name = 'text' - - def convert(self, value, param, ctx): - return value - - def __repr__(self): - return 'UNPROCESSED' - - -class StringParamType(ParamType): - name = 'text' - - def convert(self, value, param, ctx): - if isinstance(value, bytes): - enc = _get_argv_encoding() - try: - value = value.decode(enc) - except UnicodeError: - fs_enc = get_filesystem_encoding() - if fs_enc != enc: - try: - value = value.decode(fs_enc) - except UnicodeError: - value = value.decode('utf-8', 'replace') - return value - return value - - def __repr__(self): - return 'STRING' - - -class Choice(ParamType): - """The choice type allows a value to be checked against a fixed set - of supported values. All of these values have to be strings. - - You should only pass a list or tuple of choices. Other iterables - (like generators) may lead to surprising results. - - See :ref:`choice-opts` for an example. - - :param case_sensitive: Set to false to make choices case - insensitive. Defaults to true. - """ - - name = 'choice' - - def __init__(self, choices, case_sensitive=True): - self.choices = choices - self.case_sensitive = case_sensitive - - def get_metavar(self, param): - return '[%s]' % '|'.join(self.choices) - - def get_missing_message(self, param): - return 'Choose from:\n\t%s.' % ',\n\t'.join(self.choices) - - def convert(self, value, param, ctx): - # Exact match - if value in self.choices: - return value - - # Match through normalization and case sensitivity - # first do token_normalize_func, then lowercase - # preserve original `value` to produce an accurate message in - # `self.fail` - normed_value = value - normed_choices = self.choices - - if ctx is not None and \ - ctx.token_normalize_func is not None: - normed_value = ctx.token_normalize_func(value) - normed_choices = [ctx.token_normalize_func(choice) for choice in - self.choices] - - if not self.case_sensitive: - normed_value = normed_value.lower() - normed_choices = [choice.lower() for choice in normed_choices] - - if normed_value in normed_choices: - return normed_value - - self.fail('invalid choice: %s. (choose from %s)' % - (value, ', '.join(self.choices)), param, ctx) - - def __repr__(self): - return 'Choice(%r)' % list(self.choices) - - -class DateTime(ParamType): - """The DateTime type converts date strings into `datetime` objects. - - The format strings which are checked are configurable, but default to some - common (non-timezone aware) ISO 8601 formats. - - When specifying *DateTime* formats, you should only pass a list or a tuple. - Other iterables, like generators, may lead to surprising results. - - The format strings are processed using ``datetime.strptime``, and this - consequently defines the format strings which are allowed. - - Parsing is tried using each format, in order, and the first format which - parses successfully is used. - - :param formats: A list or tuple of date format strings, in the order in - which they should be tried. Defaults to - ``'%Y-%m-%d'``, ``'%Y-%m-%dT%H:%M:%S'``, - ``'%Y-%m-%d %H:%M:%S'``. - """ - name = 'datetime' - - def __init__(self, formats=None): - self.formats = formats or [ - '%Y-%m-%d', - '%Y-%m-%dT%H:%M:%S', - '%Y-%m-%d %H:%M:%S' - ] - - def get_metavar(self, param): - return '[{}]'.format('|'.join(self.formats)) - - def _try_to_convert_date(self, value, format): - try: - return datetime.strptime(value, format) - except ValueError: - return None - - def convert(self, value, param, ctx): - # Exact match - for format in self.formats: - dtime = self._try_to_convert_date(value, format) - if dtime: - return dtime - - self.fail( - 'invalid datetime format: {}. (choose from {})'.format( - value, ', '.join(self.formats))) - - def __repr__(self): - return 'DateTime' - - -class IntParamType(ParamType): - name = 'integer' - - def convert(self, value, param, ctx): - try: - return int(value) - except (ValueError, UnicodeError): - self.fail('%s is not a valid integer' % value, param, ctx) - - def __repr__(self): - return 'INT' - - -class IntRange(IntParamType): - """A parameter that works similar to :data:`click.INT` but restricts - the value to fit into a range. The default behavior is to fail if the - value falls outside the range, but it can also be silently clamped - between the two edges. - - See :ref:`ranges` for an example. - """ - name = 'integer range' - - def __init__(self, min=None, max=None, clamp=False): - self.min = min - self.max = max - self.clamp = clamp - - def convert(self, value, param, ctx): - rv = IntParamType.convert(self, value, param, ctx) - if self.clamp: - if self.min is not None and rv < self.min: - return self.min - if self.max is not None and rv > self.max: - return self.max - if self.min is not None and rv < self.min or \ - self.max is not None and rv > self.max: - if self.min is None: - self.fail('%s is bigger than the maximum valid value ' - '%s.' % (rv, self.max), param, ctx) - elif self.max is None: - self.fail('%s is smaller than the minimum valid value ' - '%s.' % (rv, self.min), param, ctx) - else: - self.fail('%s is not in the valid range of %s to %s.' - % (rv, self.min, self.max), param, ctx) - return rv - - def __repr__(self): - return 'IntRange(%r, %r)' % (self.min, self.max) - - -class FloatParamType(ParamType): - name = 'float' - - def convert(self, value, param, ctx): - try: - return float(value) - except (UnicodeError, ValueError): - self.fail('%s is not a valid floating point value' % - value, param, ctx) - - def __repr__(self): - return 'FLOAT' - - -class FloatRange(FloatParamType): - """A parameter that works similar to :data:`click.FLOAT` but restricts - the value to fit into a range. The default behavior is to fail if the - value falls outside the range, but it can also be silently clamped - between the two edges. - - See :ref:`ranges` for an example. - """ - name = 'float range' - - def __init__(self, min=None, max=None, clamp=False): - self.min = min - self.max = max - self.clamp = clamp - - def convert(self, value, param, ctx): - rv = FloatParamType.convert(self, value, param, ctx) - if self.clamp: - if self.min is not None and rv < self.min: - return self.min - if self.max is not None and rv > self.max: - return self.max - if self.min is not None and rv < self.min or \ - self.max is not None and rv > self.max: - if self.min is None: - self.fail('%s is bigger than the maximum valid value ' - '%s.' % (rv, self.max), param, ctx) - elif self.max is None: - self.fail('%s is smaller than the minimum valid value ' - '%s.' % (rv, self.min), param, ctx) - else: - self.fail('%s is not in the valid range of %s to %s.' - % (rv, self.min, self.max), param, ctx) - return rv - - def __repr__(self): - return 'FloatRange(%r, %r)' % (self.min, self.max) - - -class BoolParamType(ParamType): - name = 'boolean' - - def convert(self, value, param, ctx): - if isinstance(value, bool): - return bool(value) - value = value.lower() - if value in ('true', 't', '1', 'yes', 'y'): - return True - elif value in ('false', 'f', '0', 'no', 'n'): - return False - self.fail('%s is not a valid boolean' % value, param, ctx) - - def __repr__(self): - return 'BOOL' - - -class UUIDParameterType(ParamType): - name = 'uuid' - - def convert(self, value, param, ctx): - import uuid - try: - if PY2 and isinstance(value, text_type): - value = value.encode('ascii') - return uuid.UUID(value) - except (UnicodeError, ValueError): - self.fail('%s is not a valid UUID value' % value, param, ctx) - - def __repr__(self): - return 'UUID' - - -class File(ParamType): - """Declares a parameter to be a file for reading or writing. The file - is automatically closed once the context tears down (after the command - finished working). - - Files can be opened for reading or writing. The special value ``-`` - indicates stdin or stdout depending on the mode. - - By default, the file is opened for reading text data, but it can also be - opened in binary mode or for writing. The encoding parameter can be used - to force a specific encoding. - - The `lazy` flag controls if the file should be opened immediately or upon - first IO. The default is to be non-lazy for standard input and output - streams as well as files opened for reading, `lazy` otherwise. When opening a - file lazily for reading, it is still opened temporarily for validation, but - will not be held open until first IO. lazy is mainly useful when opening - for writing to avoid creating the file until it is needed. - - Starting with Click 2.0, files can also be opened atomically in which - case all writes go into a separate file in the same folder and upon - completion the file will be moved over to the original location. This - is useful if a file regularly read by other users is modified. - - See :ref:`file-args` for more information. - """ - name = 'filename' - envvar_list_splitter = os.path.pathsep - - def __init__(self, mode='r', encoding=None, errors='strict', lazy=None, - atomic=False): - self.mode = mode - self.encoding = encoding - self.errors = errors - self.lazy = lazy - self.atomic = atomic - - def resolve_lazy_flag(self, value): - if self.lazy is not None: - return self.lazy - if value == '-': - return False - elif 'w' in self.mode: - return True - return False - - def convert(self, value, param, ctx): - try: - if hasattr(value, 'read') or hasattr(value, 'write'): - return value - - lazy = self.resolve_lazy_flag(value) - - if lazy: - f = LazyFile(value, self.mode, self.encoding, self.errors, - atomic=self.atomic) - if ctx is not None: - ctx.call_on_close(f.close_intelligently) - return f - - f, should_close = open_stream(value, self.mode, - self.encoding, self.errors, - atomic=self.atomic) - # If a context is provided, we automatically close the file - # at the end of the context execution (or flush out). If a - # context does not exist, it's the caller's responsibility to - # properly close the file. This for instance happens when the - # type is used with prompts. - if ctx is not None: - if should_close: - ctx.call_on_close(safecall(f.close)) - else: - ctx.call_on_close(safecall(f.flush)) - return f - except (IOError, OSError) as e: - self.fail('Could not open file: %s: %s' % ( - filename_to_ui(value), - get_streerror(e), - ), param, ctx) - - -class Path(ParamType): - """The path type is similar to the :class:`File` type but it performs - different checks. First of all, instead of returning an open file - handle it returns just the filename. Secondly, it can perform various - basic checks about what the file or directory should be. - - .. versionchanged:: 6.0 - `allow_dash` was added. - - :param exists: if set to true, the file or directory needs to exist for - this value to be valid. If this is not required and a - file does indeed not exist, then all further checks are - silently skipped. - :param file_okay: controls if a file is a possible value. - :param dir_okay: controls if a directory is a possible value. - :param writable: if true, a writable check is performed. - :param readable: if true, a readable check is performed. - :param resolve_path: if this is true, then the path is fully resolved - before the value is passed onwards. This means - that it's absolute and symlinks are resolved. It - will not expand a tilde-prefix, as this is - supposed to be done by the shell only. - :param allow_dash: If this is set to `True`, a single dash to indicate - standard streams is permitted. - :param path_type: optionally a string type that should be used to - represent the path. The default is `None` which - means the return value will be either bytes or - unicode depending on what makes most sense given the - input data Click deals with. - """ - envvar_list_splitter = os.path.pathsep - - def __init__(self, exists=False, file_okay=True, dir_okay=True, - writable=False, readable=True, resolve_path=False, - allow_dash=False, path_type=None): - self.exists = exists - self.file_okay = file_okay - self.dir_okay = dir_okay - self.writable = writable - self.readable = readable - self.resolve_path = resolve_path - self.allow_dash = allow_dash - self.type = path_type - - if self.file_okay and not self.dir_okay: - self.name = 'file' - self.path_type = 'File' - elif self.dir_okay and not self.file_okay: - self.name = 'directory' - self.path_type = 'Directory' - else: - self.name = 'path' - self.path_type = 'Path' - - def coerce_path_result(self, rv): - if self.type is not None and not isinstance(rv, self.type): - if self.type is text_type: - rv = rv.decode(get_filesystem_encoding()) - else: - rv = rv.encode(get_filesystem_encoding()) - return rv - - def convert(self, value, param, ctx): - rv = value - - is_dash = self.file_okay and self.allow_dash and rv in (b'-', '-') - - if not is_dash: - if self.resolve_path: - rv = os.path.realpath(rv) - - try: - st = os.stat(rv) - except OSError: - if not self.exists: - return self.coerce_path_result(rv) - self.fail('%s "%s" does not exist.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - - if not self.file_okay and stat.S_ISREG(st.st_mode): - self.fail('%s "%s" is a file.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - if not self.dir_okay and stat.S_ISDIR(st.st_mode): - self.fail('%s "%s" is a directory.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - if self.writable and not os.access(value, os.W_OK): - self.fail('%s "%s" is not writable.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - if self.readable and not os.access(value, os.R_OK): - self.fail('%s "%s" is not readable.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - - return self.coerce_path_result(rv) - - -class Tuple(CompositeParamType): - """The default behavior of Click is to apply a type on a value directly. - This works well in most cases, except for when `nargs` is set to a fixed - count and different types should be used for different items. In this - case the :class:`Tuple` type can be used. This type can only be used - if `nargs` is set to a fixed number. - - For more information see :ref:`tuple-type`. - - This can be selected by using a Python tuple literal as a type. - - :param types: a list of types that should be used for the tuple items. - """ - - def __init__(self, types): - self.types = [convert_type(ty) for ty in types] - - @property - def name(self): - return "<" + " ".join(ty.name for ty in self.types) + ">" - - @property - def arity(self): - return len(self.types) - - def convert(self, value, param, ctx): - if len(value) != len(self.types): - raise TypeError('It would appear that nargs is set to conflict ' - 'with the composite type arity.') - return tuple(ty(x, param, ctx) for ty, x in zip(self.types, value)) - - -def convert_type(ty, default=None): - """Converts a callable or python ty into the most appropriate param - ty. - """ - guessed_type = False - if ty is None and default is not None: - if isinstance(default, tuple): - ty = tuple(map(type, default)) - else: - ty = type(default) - guessed_type = True - - if isinstance(ty, tuple): - return Tuple(ty) - if isinstance(ty, ParamType): - return ty - if ty is text_type or ty is str or ty is None: - return STRING - if ty is int: - return INT - # Booleans are only okay if not guessed. This is done because for - # flags the default value is actually a bit of a lie in that it - # indicates which of the flags is the one we want. See get_default() - # for more information. - if ty is bool and not guessed_type: - return BOOL - if ty is float: - return FLOAT - if guessed_type: - return STRING - - # Catch a common mistake - if __debug__: - try: - if issubclass(ty, ParamType): - raise AssertionError('Attempted to use an uninstantiated ' - 'parameter type (%s).' % ty) - except TypeError: - pass - return FuncParamType(ty) - - -#: A dummy parameter type that just does nothing. From a user's -#: perspective this appears to just be the same as `STRING` but internally -#: no string conversion takes place. This is necessary to achieve the -#: same bytes/unicode behavior on Python 2/3 in situations where you want -#: to not convert argument types. This is usually useful when working -#: with file paths as they can appear in bytes and unicode. -#: -#: For path related uses the :class:`Path` type is a better choice but -#: there are situations where an unprocessed type is useful which is why -#: it is is provided. -#: -#: .. versionadded:: 4.0 -UNPROCESSED = UnprocessedParamType() - -#: A unicode string parameter type which is the implicit default. This -#: can also be selected by using ``str`` as type. -STRING = StringParamType() - -#: An integer parameter. This can also be selected by using ``int`` as -#: type. -INT = IntParamType() - -#: A floating point value parameter. This can also be selected by using -#: ``float`` as type. -FLOAT = FloatParamType() - -#: A boolean parameter. This is the default for boolean flags. This can -#: also be selected by using ``bool`` as a type. -BOOL = BoolParamType() - -#: A UUID parameter. -UUID = UUIDParameterType() diff --git a/venv/lib/python3.6/site-packages/click/utils.py b/venv/lib/python3.6/site-packages/click/utils.py deleted file mode 100644 index fc84369..0000000 --- a/venv/lib/python3.6/site-packages/click/utils.py +++ /dev/null @@ -1,440 +0,0 @@ -import os -import sys - -from .globals import resolve_color_default - -from ._compat import text_type, open_stream, get_filesystem_encoding, \ - get_streerror, string_types, PY2, binary_streams, text_streams, \ - filename_to_ui, auto_wrap_for_ansi, strip_ansi, should_strip_ansi, \ - _default_text_stdout, _default_text_stderr, is_bytes, WIN - -if not PY2: - from ._compat import _find_binary_writer -elif WIN: - from ._winconsole import _get_windows_argv, \ - _hash_py_argv, _initial_argv_hash - - -echo_native_types = string_types + (bytes, bytearray) - - -def _posixify(name): - return '-'.join(name.split()).lower() - - -def safecall(func): - """Wraps a function so that it swallows exceptions.""" - def wrapper(*args, **kwargs): - try: - return func(*args, **kwargs) - except Exception: - pass - return wrapper - - -def make_str(value): - """Converts a value into a valid string.""" - if isinstance(value, bytes): - try: - return value.decode(get_filesystem_encoding()) - except UnicodeError: - return value.decode('utf-8', 'replace') - return text_type(value) - - -def make_default_short_help(help, max_length=45): - """Return a condensed version of help string.""" - words = help.split() - total_length = 0 - result = [] - done = False - - for word in words: - if word[-1:] == '.': - done = True - new_length = result and 1 + len(word) or len(word) - if total_length + new_length > max_length: - result.append('...') - done = True - else: - if result: - result.append(' ') - result.append(word) - if done: - break - total_length += new_length - - return ''.join(result) - - -class LazyFile(object): - """A lazy file works like a regular file but it does not fully open - the file but it does perform some basic checks early to see if the - filename parameter does make sense. This is useful for safely opening - files for writing. - """ - - def __init__(self, filename, mode='r', encoding=None, errors='strict', - atomic=False): - self.name = filename - self.mode = mode - self.encoding = encoding - self.errors = errors - self.atomic = atomic - - if filename == '-': - self._f, self.should_close = open_stream(filename, mode, - encoding, errors) - else: - if 'r' in mode: - # Open and close the file in case we're opening it for - # reading so that we can catch at least some errors in - # some cases early. - open(filename, mode).close() - self._f = None - self.should_close = True - - def __getattr__(self, name): - return getattr(self.open(), name) - - def __repr__(self): - if self._f is not None: - return repr(self._f) - return '' % (self.name, self.mode) - - def open(self): - """Opens the file if it's not yet open. This call might fail with - a :exc:`FileError`. Not handling this error will produce an error - that Click shows. - """ - if self._f is not None: - return self._f - try: - rv, self.should_close = open_stream(self.name, self.mode, - self.encoding, - self.errors, - atomic=self.atomic) - except (IOError, OSError) as e: - from .exceptions import FileError - raise FileError(self.name, hint=get_streerror(e)) - self._f = rv - return rv - - def close(self): - """Closes the underlying file, no matter what.""" - if self._f is not None: - self._f.close() - - def close_intelligently(self): - """This function only closes the file if it was opened by the lazy - file wrapper. For instance this will never close stdin. - """ - if self.should_close: - self.close() - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - self.close_intelligently() - - def __iter__(self): - self.open() - return iter(self._f) - - -class KeepOpenFile(object): - - def __init__(self, file): - self._file = file - - def __getattr__(self, name): - return getattr(self._file, name) - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - pass - - def __repr__(self): - return repr(self._file) - - def __iter__(self): - return iter(self._file) - - -def echo(message=None, file=None, nl=True, err=False, color=None): - """Prints a message plus a newline to the given file or stdout. On - first sight, this looks like the print function, but it has improved - support for handling Unicode and binary data that does not fail no - matter how badly configured the system is. - - Primarily it means that you can print binary data as well as Unicode - data on both 2.x and 3.x to the given file in the most appropriate way - possible. This is a very carefree function in that it will try its - best to not fail. As of Click 6.0 this includes support for unicode - output on the Windows console. - - In addition to that, if `colorama`_ is installed, the echo function will - also support clever handling of ANSI codes. Essentially it will then - do the following: - - - add transparent handling of ANSI color codes on Windows. - - hide ANSI codes automatically if the destination file is not a - terminal. - - .. _colorama: https://pypi.org/project/colorama/ - - .. versionchanged:: 6.0 - As of Click 6.0 the echo function will properly support unicode - output on the windows console. Not that click does not modify - the interpreter in any way which means that `sys.stdout` or the - print statement or function will still not provide unicode support. - - .. versionchanged:: 2.0 - Starting with version 2.0 of Click, the echo function will work - with colorama if it's installed. - - .. versionadded:: 3.0 - The `err` parameter was added. - - .. versionchanged:: 4.0 - Added the `color` flag. - - :param message: the message to print - :param file: the file to write to (defaults to ``stdout``) - :param err: if set to true the file defaults to ``stderr`` instead of - ``stdout``. This is faster and easier than calling - :func:`get_text_stderr` yourself. - :param nl: if set to `True` (the default) a newline is printed afterwards. - :param color: controls if the terminal supports ANSI colors or not. The - default is autodetection. - """ - if file is None: - if err: - file = _default_text_stderr() - else: - file = _default_text_stdout() - - # Convert non bytes/text into the native string type. - if message is not None and not isinstance(message, echo_native_types): - message = text_type(message) - - if nl: - message = message or u'' - if isinstance(message, text_type): - message += u'\n' - else: - message += b'\n' - - # If there is a message, and we're in Python 3, and the value looks - # like bytes, we manually need to find the binary stream and write the - # message in there. This is done separately so that most stream - # types will work as you would expect. Eg: you can write to StringIO - # for other cases. - if message and not PY2 and is_bytes(message): - binary_file = _find_binary_writer(file) - if binary_file is not None: - file.flush() - binary_file.write(message) - binary_file.flush() - return - - # ANSI-style support. If there is no message or we are dealing with - # bytes nothing is happening. If we are connected to a file we want - # to strip colors. If we are on windows we either wrap the stream - # to strip the color or we use the colorama support to translate the - # ansi codes to API calls. - if message and not is_bytes(message): - color = resolve_color_default(color) - if should_strip_ansi(file, color): - message = strip_ansi(message) - elif WIN: - if auto_wrap_for_ansi is not None: - file = auto_wrap_for_ansi(file) - elif not color: - message = strip_ansi(message) - - if message: - file.write(message) - file.flush() - - -def get_binary_stream(name): - """Returns a system stream for byte processing. This essentially - returns the stream from the sys module with the given name but it - solves some compatibility issues between different Python versions. - Primarily this function is necessary for getting binary streams on - Python 3. - - :param name: the name of the stream to open. Valid names are ``'stdin'``, - ``'stdout'`` and ``'stderr'`` - """ - opener = binary_streams.get(name) - if opener is None: - raise TypeError('Unknown standard stream %r' % name) - return opener() - - -def get_text_stream(name, encoding=None, errors='strict'): - """Returns a system stream for text processing. This usually returns - a wrapped stream around a binary stream returned from - :func:`get_binary_stream` but it also can take shortcuts on Python 3 - for already correctly configured streams. - - :param name: the name of the stream to open. Valid names are ``'stdin'``, - ``'stdout'`` and ``'stderr'`` - :param encoding: overrides the detected default encoding. - :param errors: overrides the default error mode. - """ - opener = text_streams.get(name) - if opener is None: - raise TypeError('Unknown standard stream %r' % name) - return opener(encoding, errors) - - -def open_file(filename, mode='r', encoding=None, errors='strict', - lazy=False, atomic=False): - """This is similar to how the :class:`File` works but for manual - usage. Files are opened non lazy by default. This can open regular - files as well as stdin/stdout if ``'-'`` is passed. - - If stdin/stdout is returned the stream is wrapped so that the context - manager will not close the stream accidentally. This makes it possible - to always use the function like this without having to worry to - accidentally close a standard stream:: - - with open_file(filename) as f: - ... - - .. versionadded:: 3.0 - - :param filename: the name of the file to open (or ``'-'`` for stdin/stdout). - :param mode: the mode in which to open the file. - :param encoding: the encoding to use. - :param errors: the error handling for this file. - :param lazy: can be flipped to true to open the file lazily. - :param atomic: in atomic mode writes go into a temporary file and it's - moved on close. - """ - if lazy: - return LazyFile(filename, mode, encoding, errors, atomic=atomic) - f, should_close = open_stream(filename, mode, encoding, errors, - atomic=atomic) - if not should_close: - f = KeepOpenFile(f) - return f - - -def get_os_args(): - """This returns the argument part of sys.argv in the most appropriate - form for processing. What this means is that this return value is in - a format that works for Click to process but does not necessarily - correspond well to what's actually standard for the interpreter. - - On most environments the return value is ``sys.argv[:1]`` unchanged. - However if you are on Windows and running Python 2 the return value - will actually be a list of unicode strings instead because the - default behavior on that platform otherwise will not be able to - carry all possible values that sys.argv can have. - - .. versionadded:: 6.0 - """ - # We can only extract the unicode argv if sys.argv has not been - # changed since the startup of the application. - if PY2 and WIN and _initial_argv_hash == _hash_py_argv(): - return _get_windows_argv() - return sys.argv[1:] - - -def format_filename(filename, shorten=False): - """Formats a filename for user display. The main purpose of this - function is to ensure that the filename can be displayed at all. This - will decode the filename to unicode if necessary in a way that it will - not fail. Optionally, it can shorten the filename to not include the - full path to the filename. - - :param filename: formats a filename for UI display. This will also convert - the filename into unicode without failing. - :param shorten: this optionally shortens the filename to strip of the - path that leads up to it. - """ - if shorten: - filename = os.path.basename(filename) - return filename_to_ui(filename) - - -def get_app_dir(app_name, roaming=True, force_posix=False): - r"""Returns the config folder for the application. The default behavior - is to return whatever is most appropriate for the operating system. - - To give you an idea, for an app called ``"Foo Bar"``, something like - the following folders could be returned: - - Mac OS X: - ``~/Library/Application Support/Foo Bar`` - Mac OS X (POSIX): - ``~/.foo-bar`` - Unix: - ``~/.config/foo-bar`` - Unix (POSIX): - ``~/.foo-bar`` - Win XP (roaming): - ``C:\Documents and Settings\\Local Settings\Application Data\Foo Bar`` - Win XP (not roaming): - ``C:\Documents and Settings\\Application Data\Foo Bar`` - Win 7 (roaming): - ``C:\Users\\AppData\Roaming\Foo Bar`` - Win 7 (not roaming): - ``C:\Users\\AppData\Local\Foo Bar`` - - .. versionadded:: 2.0 - - :param app_name: the application name. This should be properly capitalized - and can contain whitespace. - :param roaming: controls if the folder should be roaming or not on Windows. - Has no affect otherwise. - :param force_posix: if this is set to `True` then on any POSIX system the - folder will be stored in the home folder with a leading - dot instead of the XDG config home or darwin's - application support folder. - """ - if WIN: - key = roaming and 'APPDATA' or 'LOCALAPPDATA' - folder = os.environ.get(key) - if folder is None: - folder = os.path.expanduser('~') - return os.path.join(folder, app_name) - if force_posix: - return os.path.join(os.path.expanduser('~/.' + _posixify(app_name))) - if sys.platform == 'darwin': - return os.path.join(os.path.expanduser( - '~/Library/Application Support'), app_name) - return os.path.join( - os.environ.get('XDG_CONFIG_HOME', os.path.expanduser('~/.config')), - _posixify(app_name)) - - -class PacifyFlushWrapper(object): - """This wrapper is used to catch and suppress BrokenPipeErrors resulting - from ``.flush()`` being called on broken pipe during the shutdown/final-GC - of the Python interpreter. Notably ``.flush()`` is always called on - ``sys.stdout`` and ``sys.stderr``. So as to have minimal impact on any - other cleanup code, and the case where the underlying file is not a broken - pipe, all calls and attributes are proxied. - """ - - def __init__(self, wrapped): - self.wrapped = wrapped - - def flush(self): - try: - self.wrapped.flush() - except IOError as e: - import errno - if e.errno != errno.EPIPE: - raise - - def __getattr__(self, attr): - return getattr(self.wrapped, attr) diff --git a/venv/lib/python3.6/site-packages/easy_install.py b/venv/lib/python3.6/site-packages/easy_install.py deleted file mode 100644 index d87e984..0000000 --- a/venv/lib/python3.6/site-packages/easy_install.py +++ /dev/null @@ -1,5 +0,0 @@ -"""Run the EasyInstall command""" - -if __name__ == '__main__': - from setuptools.command.easy_install import main - main() diff --git a/venv/lib/python3.6/site-packages/flask/__init__.py b/venv/lib/python3.6/site-packages/flask/__init__.py deleted file mode 100644 index ded1982..0000000 --- a/venv/lib/python3.6/site-packages/flask/__init__.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask - ~~~~~ - - A microframework based on Werkzeug. It's extensively documented - and follows best practice patterns. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -__version__ = '1.0.2' - -# utilities we import from Werkzeug and Jinja2 that are unused -# in the module but are exported as public interface. -from werkzeug.exceptions import abort -from werkzeug.utils import redirect -from jinja2 import Markup, escape - -from .app import Flask, Request, Response -from .config import Config -from .helpers import url_for, flash, send_file, send_from_directory, \ - get_flashed_messages, get_template_attribute, make_response, safe_join, \ - stream_with_context -from .globals import current_app, g, request, session, _request_ctx_stack, \ - _app_ctx_stack -from .ctx import has_request_context, has_app_context, \ - after_this_request, copy_current_request_context -from .blueprints import Blueprint -from .templating import render_template, render_template_string - -# the signals -from .signals import signals_available, template_rendered, request_started, \ - request_finished, got_request_exception, request_tearing_down, \ - appcontext_tearing_down, appcontext_pushed, \ - appcontext_popped, message_flashed, before_render_template - -# We're not exposing the actual json module but a convenient wrapper around -# it. -from . import json - -# This was the only thing that Flask used to export at one point and it had -# a more generic name. -jsonify = json.jsonify - -# backwards compat, goes away in 1.0 -from .sessions import SecureCookieSession as Session -json_available = True diff --git a/venv/lib/python3.6/site-packages/flask/__main__.py b/venv/lib/python3.6/site-packages/flask/__main__.py deleted file mode 100644 index 4aee654..0000000 --- a/venv/lib/python3.6/site-packages/flask/__main__.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.__main__ - ~~~~~~~~~~~~~~ - - Alias for flask.run for the command line. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -if __name__ == '__main__': - from .cli import main - main(as_module=True) diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/__init__.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 81e4f944d6674e39e82482bdd9a79d33dffbe384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1792 zcmZ8hTW=Fb6kcD~u^lIla{~elBwP%MorFthN-GMb5>ksQQmN9Y(rE1++Z)f>-Oh|j z!b9KtQ}_>k>QjHiJho5#g+BG1jUAvX`SUs7oIUs12lMmQzy4_a@_X6y{_#F}@+d#U zpShRwywKxbnB%!H9~M*|3cQf>P%f$>lz1tVOR5Y$_o2cosFy=u%|Vq{p~h=a=k<)M zsCj7cMkddx1z6;Z(Bw^6;!DutEm-Euu)!IvMByoeBY&M>@~-kmnl!<{_9AdMO%n~{Kw$!JakN1X8{C||hMAHZ8Ir^E;;=A{d*~Kt z#2|_zGeTx%nAnTbaqesa+K_~w+L<%+#$G2&?dM?a38^WdK>?^ zPtA`8XRb26CPweju|FLEZ;-*q)qC&h1M)%eZ?|h9?WR$>)0;#p+<77oqJ!Y^X*c_T zbm_8>yF%dpSs^+p26+leI8pLz>ZoA|#eA_?&((8_`DMiI0?V)GQ7b(3>&0@Rp8F4k C+A4zp diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/__main__.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/__main__.cpython-36.pyc deleted file mode 100644 index fc32b9290e86e35b2a8eea9631bbf11b7fb170bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmY*V%}T>S5Z+BCK7cn* zo_vN}J^2cr+@uzCV859izL{_Mj@oVa<8Aw47bEnE{)BDnGxPMG0glE9FvoK%+u;_s zrKRk#jS<+~;Tta)Bi0 zt9_yY$nDMLU^p7o5-Q1naLAdE+IP#=`qnSw1oCj{RHxs2c)ZCpRS7R73_Yi8Qp%Hv z(rO@P3QT23Qe>51OO!QDs^L2ba+LCa4Vx)}ns8C|muN Q%BgF1=!OBuYT+&X1K31$m;e9( diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/_compat.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/_compat.cpython-36.pyc deleted file mode 100644 index ee21b0302863cda38a09cb38e81ce9078d41b9c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3191 zcmbVO-EtH~6z-mx{bjQd2!TM9_McVQAeLf9q!5f0C9aXA1h%Z|nw{=VhRn{4-Mx@a zMK4&Y^iE&Hcks$9pP_HP;uXB|oSw~wfJ*6Xbx-%{?eCoa&QH&KGc)zye{Ftq>kuJ- zkf)yGFun>+e@zJyq)P-9UP8N6()*sE3q<%^Ue_0aC_N_KK>GTDEOpDW)TiBwtU_NC zWw%xr756?Qs_xwYq*^jFXm$@%M6D-B2D9B+7@ro0MB_2-9+g4&Sh_Cf5KqqaJw%kp z;aw9m6U^oW^Y9e&2w)zbV$K(s@`RWjQ@}ndj)9%W#GE(|?~`J_yC6?VDo%{OpQ*Zi zgNT!2;V}^l^7Pp6E{-mY7UklY{M4XCzBDF}=p7=wugGn3m)s#~lM?(rBKJt@IY~Pp z^5v~MU|lZO#HsEAtj>e{B`04kh?d7O2@F4^_h;h znasQnFh&udj60R#-n%Y>+9iMVc^9 zbi4ipBeC ziZ6v9Y%hI=EH62(mnK}d^O3DyPQpP?gjZ$}8X8e$=niN`Q=H}o3=HVLPse0Todqq= z2CKcSux^eT%2(7{g-&3|0VX{l_lU;ACrsiNocfB!vM0cTy z!hgWt4Ch9Lk?e)h7U#D4FgBa}l9q2hliQLb0fxP22(T3;RTyi@K$%9*5n6|zItHTy zTu;NN3M=43GM<H zEox4-j3I#pbqVBkc1lCjKmQ>_!XeIwX&hxjLL8K3iX#YnO!sHJ?o#v;LP8@uZ^nZ> zkpr0;%}vI!_@x`|%Sjf6iM|4ZBEvyNh2tvc>Lly~a{MUK&tTiRze9T;l@;Mt#qh$| zo*ojT9y1;DRlf<{4e|r|f%f691YWAbGi2<42R&wh@cSet;{d8hu=B=sB|{@w=!!Rs zphjti832+2_{|C05kO8KRECenw3nm{snqqJRtFce@4#Pisk9F>C1fg!kXwB4jSaI# zW0m_6vh+u?>yHtNb{t2oKw&+wK^hLEt((nQbG&o3OB!Ie9cUmvBtv%V*X$7_lW6%jmIZ21L}!^FQouf(0QC|pw|AE6RQZ)x6F zXJPi4oy|x2h)-@*9;f~6fM=1KtGEq=YtOSqYN1a>fFE0;1P&?NfPb-}rU8g$Xj+O; z>EwDWOr@I`t&(~b*41m+y^bB0XZ0?2?tuFp`bNDC-5N9pSfy3ZN!B5-TW2slMHWF# zSb~4p#?$Vx{_4Gpw#H)tbik(;90E>KGjiK-3=rEWYK@y{>&L0FGtkKmpcVh1)g0=_ z4{C*^*-D(^7-9kfA`r5m;utxYak8^~=Lxp3;9xOV%? z&sREp_1@||etrG!7dLM6mAg0B6;^*+&U*Jz4<6k%Khat$1K)ouN@Z|@b+FA1|Bf#B zCMt653L2?zK^J&cuSu(ZKm%H)We+$678|tT)k|fN;%r|A<8pOApbdJY;!zJ)=U^Ai IV04831?pS3asU7T diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/app.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/app.cpython-36.pyc deleted file mode 100644 index a545d9eadaab4893f47ece1bfbdb262ac0023bf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70866 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

n2@=} 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 U`y;2Cq#rSD?qW0@wOUvH2BwziSpWb4 diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/blueprints.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/blueprints.cpython-36.pyc deleted file mode 100644 index ea0694ebf3694b013f58357bd02c557ab771bdc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20455 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 diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/config.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/config.cpython-36.pyc deleted file mode 100644 index 7b0035765e3efc177b031e2dc455082db955a172..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9958 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 XR0i?Sl}w`o-BpY_GHSiBboqY(L(Bpv diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/ctx.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/ctx.cpython-36.pyc deleted file mode 100644 index 680abd79fb60560254df8cead8f9e80d370b2bea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13928 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 CpNVz= diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/debughelpers.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/debughelpers.cpython-36.pyc deleted file mode 100644 index bd0951867f0c5101e1075e0d40820fdabc9af349..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6567 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 diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/helpers.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/helpers.cpython-36.pyc deleted file mode 100644 index 85576a81f08555e6284679750852647de00f6870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33027 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 diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/logging.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/logging.cpython-36.pyc deleted file mode 100644 index ad400230835858d5a4a6a9c427abc7fbfcf020bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2348 zcmZuz-EP}96ei_=#Yx&?-MXuBz>35`s&p;T4n`0RZIZS?&=p9x0^SOX7AaYdEV(4r z#6jAd6xj9vyV)D`33juqUF{ikyQ{uJuXYY)yU98Mrby}V{CxbrBi~+LcK`l!<)=TI zg#1I!T@{#r3qP%35Tr*06;49OPS2q@uOyXT#onvED%`6{ZCvlw;ayGClg7B&Yf>WX zq9K}Z$QkXmL`%4DNY9m((UNSzleTP+mSMFbmd@xIg`I7&3>K@RazHvOxq-lLm~egQ zC0P{3Y2>~>f4Ocq$R<-2M?=$Pf4yb5Zhn1}4W`TtC40h?L>kSEx#bf1n<>X^u@|EBC5c_+R5+thcY;1afoLF zM}ZV#!}3H~oZ1tcrObjMw@^J zlnL8Z zvw=EJ;dnQT#;leORc+W=o|X%<_pPl+rt)~Awmayz1o-5uA=iEDpg-H`Z6zpqz3nYF zJl*Tmipw7*UQ~EGEt<1^x@e)8c?4oE>J#93Y9Oh42~g1pa)pmD@Rftp2$3ck3Q&5q4JAHlw<=Cp>4&sGnP3oUw~G9fwpa^ZqH(5 sq$*mAsZHWs^0sl?3YuG`JhtIK5YeB)P<1fzCXDS$d%1blrLe003ulC;^Z)<= diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/sessions.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/sessions.cpython-36.pyc deleted file mode 100644 index b90af75b8866fc411ce34652f6f5d870c2cea7f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12195 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 DTU?5O diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/templating.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/templating.cpython-36.pyc deleted file mode 100644 index 86b5184138bb29f5f3b1b22fcad2421606b3752d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4929 zcmd5=O>^8x8P?a#$YXo#WSx)=DOL%glG$?XBtWv|N^RxKSpvqSNQz`tp=5cwXRNVC z8h2|P+oj=v_e23liodWoegG#<9QXyga@xPZiRbOs$YWQsaNvMk-P7tX_4~Zf`_ca4 z{CxB8e{H?J`;lS%)0lc3v>&3#92GNsgPF{V&4J}x1KW27HNR#W%w|qpA2j^N!1Z1A zUW;c2O}{yq^=I*3XN|86f9?x|xoqYugUxW~*!FF_H`y%SXSs#}PA?;<<@(rAA)`U{TG^zd}!Q0}f|d@zi|EJ}K+^EYRnrs{o;IefsAOnTW4_qIjE zdfdxW@264H5AUw%S!$ zn$WR|#aCJkzL{pv(ow>`F=>TWoDT%w8*!Nho$MfxS=iYvT0uA*p1fn$xe^7A*$Fo1 zthl(%agIqxFqzPylh9+AZH^)Y1p*AC9Y~?01cW1=4-0a)A#jFQL4z;7_ z^W5k==&`A%Uqj15%Yt%hM=zi9Za9iF0HxHzy-u2B{2=p&BJFS~Q?cTC&yzmy0L`sZ zwyk9a>6XNVC{4D!Fk#+SZ%ZS+S(v?|QBExy<)n69)N$&<&eEZ1pe34A%~Caos%`sq ztO06%9dO~du*Ck?hFHMhzwWGNgW>8h8s6F-MKQbe8NVOh5APkUJ|j}CDr&8kGJsku z!^7f}fN9w(ER_l>xnMJfJdet7>So<^OxJ9x(lo_6^j65z6bt1cioAr18@|a5-(se3 zGvErcJIol56Bc>fqs-e0r6r^x4e4#iBR&*Sl6mjcXJiV-hnW{;UMEbTH$DWX$O_axNr=6% zg|ee+DNIT5E{K9###i7<_heW4`M5FRE6uFFwnYp#w5KADOaSTE+ z^MR3>eJeM*82O`V8o8Mpfz1p+V{I1oSQ%2=@h^7-4>KP0;&eNVgFYE`pht@ZGP!9} zbAupCqAUms8@zx~I+Dj-aRDbN8tITAlZqs|T13BCLUj{Gx~L3jbZmC;>>}7~zl8L|HNXrlQShx^&YRUJ8zp{CLF(l7`9?6iL>s^o@9f zvzeQ1Q|YK}iHjIg?J3wQHT{Sd(=LX2^vV0hsdUvLi0PqUD(cJE(ST!vJ7ng^hPZ?_ zoMCPq!^NR(Puk$1e`)>Ai;YLmH-lH}KS$%$da&_}M^B$`e$jR`qw4T~-KbYw2zopV zWI7TZ9`FN%tSEt(UYzdkhB9m0O1xrr%B~A{0`nPxi{{Cu_i<`T9?<|f=ggz4ACUcI zMJ4?V7R{q5>HmyI<nX#?HZ8!U2+-PmN!1zO}}+asBX0UhkV4gK;Bwn6c}MdwFB* zyf%_c4g$z-Q@k(@`okWLFO9@{W8^k)tLL@6(Y23Z$$Lw$bq;~tVT@cMck!iqZsqo| zjW^nLM*Kd96U;37{%_$R!2)|z)NsDGSzIkKJaNWEP|!9AGeRqq?M5*lL>U*QCy?SA zmI^Yaf+7N(nm@<*_NceR<0056zE9)i2ih~5V;*%}MOC}%dE>v3lkA{!3ZyR^rGp|jP?3PhQ9uhtk}F!^uJtPr z?%-23Y8@LO?3J+%+MUe2nIn(U^Y(6nex+NnwV}?Pjv9(MRcMqjXC=E5n3WF7e!O7g)2bXh;W&)qq*ulzr?kI!Ycx~+61_>Iud2DKj>lU`;nfA04 z{fhc%$Pj0XRvaNAoj4^a+B9e*;V2v$DTz`b|B}cBHA6nd9L<_DT)BmTZ4^mC)=)6P zI!eG==6UPr2Oj|K^eHymO+nd|_?W88RDG8!+E$a8%uoZ#Q@T5`+bbAYMNtZL zZO3wLx8^RnuGWzo7gCBZ{VX(ALUR9_lpg zMWehb>|vHpYwSh1q(xIu1g$7Yrbl9`ERA%it_d){zD1FcsFUF`fVUc`1OifI=;Izo z6bk`t7O6Jigchvt0dM5f%h)TcGN&G+UJSR4)pzDazz`4BE;GaSttjmJA&KtRU!c!K!Ns6%PdEsb_g`@eB{jrN6^eO^2D14r}PyY@bt(-LET3 z-W8PWtE-WqE4WVZ8u}_I)&B?-)BT3_qf+@uB$L@@~_-}C|(6Rsk diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/testing.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/testing.cpython-36.pyc deleted file mode 100644 index 390afac193cd536cdb6c0fae873f0392d4fcbbf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7832 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 OXS7E%-rfFlN%>z?Hm&ji diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/views.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/views.cpython-36.pyc deleted file mode 100644 index 24cf75663f8ce1bdc88c2d7b1853415213d0fcea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4737 zcma)AOLH5?5#ARbgeZ!VY$<-k8C9YJ;ZPu*RK+QjtP-P#t%^*mBw4P&Q7x7`17gX= zE;KVMiY&;LGL({h$t^#^hx~(_a>^mUV6QplFXWW3XBPkk%1M?rgWZ{)o}TWnAH!ds zKHd2HUsrxFE?Cw-tz*v;-mjyn1Rb}!7Pq+*+e4@8*!1qk?$GOcwk0au;}u@zHD2dS zyunZH)+cti`l-d2`RNxHKP_q#w_C^e3O|GIGhzwf4ScWiv-mzMJkb#KiG$Ho{M-Yp zbw2wCHf=CG{Wwtj?Wd7AQ0Dua`O`214+oKA!<1*SU?Z76jkr)O#42@VCs2YjvzA4P z8buPHJBLgU1WOZ;MG3pP7bLrByWrIc)6t=fb_cq{{`Nil#pXwwQ~G;B91E?O7QwJ> zHtxhxC=w+)>^Bc?t}`VByL;!xt?dW5SU;5zNeae=4x(7K8~?I#pq8E2qmpfe#t*#PEECxf^TDPVWofG^#g+4w%ByFxy*Xo!>G)GS<4*P_C-Td^{!{+1pQkv$X z&lVN7rbOIdXGt&=3(RPR6gra$Yknr;IAxdBr6#*&CV|+4hq{@^+wnGR9hScu2p^R;yt5)j%ZdFwFprM3dUM2vZqo!2&jlv)$cb2cAev z3aTiMXX+L(vyco%(1W0W$N{k<&6^cda2aSw0j`{_!DA03PC#}i%JRHVgE)g9_ljzOX5=Z@0@>^$?mkwvW!VQwaJ~ z-%pxw6Sp=@4BH^TQti=UzPcDyZjq`SbXMi)ZNhkaks>s+M1V%=g|<~Ox|h~V`=!%& zsVI0+|IQg(dzQR9wqH5EjdusX&a(?NdeeHm{M;LRubhefo%3YLV~K%owGhDKnFC?Jxc9V2O{NBZr-_m~Kf`N~8H z*||x9Gj3)HVew5_v&1NvM7oRu1eb@e;cA}G7Gk0a0;o(50?FY`MZ%kH9HP+BG7Aw# z5L4$mo})5^+08>hp!O3q^&@nzoIUH6^~(N}{oENldjP-~?=YOb-E#5N za&r%EfU;&EqUiEpNsi}!*c_lSdmyj%sXyol}*nnI}puV1#0-Zk(oqksEq zoT9E!*G$=n!lp3~M0wr!DdqWo-thgRZ1jD34t(;O@AEXoOs$OW`8#DD;Rl&chp2}_ zzpTkxmD~+um3zcYzK!J)1+;})s>p_^H1f9G`J55k93ZcilHSD<^)5QAvFcUrs$Iun zmTSdZ9ba|(X!-cjS`GOQs3on*mwo>UVp4G&`5ukGPu-8HBfA)N=ckM=iz7)!!{o)s zI-}ENjJ<`X=%xOF=i={_=hSPG24=R$yRkj}Du(WOo%z!0BOGw|MZN32v^=X@0S3H$ z<#Q7n=^PIaN8;#r_%3Q*Qz%b8WKPus{E%c&JPSFDs8Bzk@8SrB{}Un%c2O=7MFG>$ z00L4~(deCEst79D(tzc}*>lGB*crPMmo715cfTg@Yj+t!mc#4bgPY7hx<)A`K+D3N`)N zfz~4`^iiIg5=-SZl*?3my|9gp32v%&fz34VPSzHVwRsSw+T@v zPPd}{TDEKxrP-E_OZP+LiFMa=i~?Rm3#E|jL_&x>juwLy3pW!Fimc>~xr~8@MO!B> zaV09s%LGs{jiNJP6g51`Q7P0YO*kq>0}|r_Q~b2qZNxb7ETHVV&Z54lW@Z-`7O-9q zSFv8NTmTY{3kqWUPEig}GNJG}K=ekb+v}l<2X!fpYO|BY6*u=yiX%jkNeFbhxBipTI z1{s*WHE@uD$ diff --git a/venv/lib/python3.6/site-packages/flask/__pycache__/wrappers.cpython-36.pyc b/venv/lib/python3.6/site-packages/flask/__pycache__/wrappers.cpython-36.pyc deleted file mode 100644 index 95de6d8795b4365480c0e2a73680c93876a464c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6738 zcmai2OK&7s6|SnTe!A`PI1rLBL^mNM)4|i8Nf3!zQIurxOdKXo7#k*(Myjr^d)qF% z9-Uj&<8jl@B94?*7Oari5f&(j6$=&!A;bzH!4Ien3s&JLu;M$n9^JNkNLy9D^*Z<5 zbH4MPbMDK_%dNltY32UCZ)w`UwYgsv<2P``Bb>NqX!UNjmb$kUjC>J@Fo{{RFW9}E+gq&oh+UQ9 z!?B1H=7gL{5s#uU7M*VPWzUU9$I{!|PkQXHU$B?1-?+{O$4bikj_(VSD4d|Hrs?^f zEAVlTy|wd$bruW3?rh!M+}_z_!$`6ql7exOIG!JOTVG-gT1QV?Z#n#Kra{L@>-jKk z+$}WGQ}ZB>LcF@CLgEw%*@8BdfONUPku3Hsh3Ug>!RZ-&xuY97N z>Q)_NlULQak$J#s@=MCny4B)szWj-1E%6mtdNpmnv-95eyWT@DoJ?;@Q{1tUSqN+U!oOLEVU_`1}31YqC?Oq>dhlia6`fZR)`V3xu z#Pb)wtKP^LMuILb?t1sejdGsJ>Ur^#_WYemRY~kr(ng_C+KLlLCh-w8P8%ZRY6KLS zvG9kf5hPz|av3)I@5V+Fj5bEz=-OcH`TW|e;uY@|=lc&gZczYjs4&_nBBDDwPU~K5 z(*mxLnQJ&{^_tPpCzne+bn`b#&ya`cP@ZXEK%P0(V1Iq```vvnW=EdyGdBtm0ikjP zK|%1D@gMD=(o8fzyZQ*DE0bq|*Mp1qd;MI=erKHltU?}nG2EV%;*?4Q!TSB}C=~sE z7Rcl-#9L!eB+3dMT`plk%9hz_g)WH(J2+wjrB<7)%#1^txau~Z(0>Y1WtlbxWEn#2 zXM|2;8&g$X$K4mjoCL&3wuwM-9va%HB+#TRewx+dPG zUkk@74yD(hF_>256{VZ;q?YK1&Dqrs^c_8iXGZ)Yht?QXrWI~{rk|L{D~Wkfotmfm zN%fu<4oxko9k%3eb?v04Ym;}ThJ48J4AOr|((fB5^^?Z5KCKRosb*{8v$$KI*691W zcN!rScg)MO7a=c^ zW1(~`m~u!NV;xMRARUFu;kF++96V~%Q^83BC>1G*m&#B=^T5K{?CgQ#j{*LejVb70 z49bP`&*sRghq;}ASl&fC+u92$chUO=_b3B9{*iMGIT9HWOs@=2*qcRBE+>YHAyViL z{da|Wm2!ZPGLrGUvx-107eN;B!WdbWUl6N;22ztkJEcNSD9|Wh93|g)Jcub%g)=9U zWU?5t4-M&uP?QvKokrTWm2|F*oi;Xo-y6kVEHB})e2h*M{%Mum5T~u5ka0I@IqBnz zJ=AHbfKIE*s8%hriJC4o37@GUAEdglnlN_Y_%>bHRx^7KSLawjQs{mUM|>40ZFx;^ z87R8=&QP^{#tsQ?&>Z5ih;8+S(}kVL2rwR>UjuF5OhQXiFTmlY;Xf%ub<-Y zV?8lWwT}^!D)9aV=D(@XM;x9bwUFO0{jHF!-0j8T3kg$ea|I{3mrhU-Ls*Zf9?Js9 z$zMip)>X&rKky2K4;QFW&jdrU%N<+aj!os&-zR}bj66$ z|6HWZ(z?6vgnO!LL1NF!mJC(wE(vE2>p{RdiG-K}-z*yD3#Qm`!Yn*WjUX%lX*hcj zHOFMf(U=`MVS?~<5;hR~&I1oJ>9z|QsHDhfgX4KQhz7Mh%(HMQMfr8T`)c{w_T-sc zifSmN{hHZyVAZ$Br*>(`|u}|Z+ZGSj+{QODXwt3{*w){Fx z|23S_1}al@4asp9(iF{ETvJ?0QfW?2s-mPy`gM#b{A0RmR86B{w3pkBMx}LC(lZxF z`Kw^`29Ee`oaPI2ZdfLcDvp|{^9nb!f*j*2uc>hp<2rAsaf>&3OO@pY!fi>CT<4#N zIYM+%foDZ`#_s4*N}z{KRe4>;?xG0_2B@%!%9Uf`7}On{p?Dlc9zaAn6Tz?WJH76KUCa>N_R=gI4{&D8BT$O(R-8Vn5Z@#y^yScq< z-`U*0z56yw3{>7jZ;u^{=3wZfIEgkK#!>XRXL=p1uQE@_2m+m3KoM@sKcA(1dt0nhH&}u-8&h? ziKL69!1mFvi4c#E_67Q63M~-qdIn?aG)i3-b{ud(+89eDelVEo=Tt~8_JgFP|BKS_ z^_D(aEev0n>x{XHG8CF#%*`#I=Xz%B!vV4IqNW-)yV>Hdl;zgv*QpB(Da*m-jw3)?H%ID=;C@RXx zcpVoM6;th0*R{luy#y7C>|r$~;FOK3ZB6!Q|HH2Z^%J}|&EMzLoSNH{#{v`t9%{#A zgL2h1D#j$43H{j9h-hcaWe^T*`HQ%ZWvLNtNZ)l?AFlQxPSf zhAi2@3B?~O;Mi)b{J1ZC+P0F{XsW#3qw!qcQ7LBw_kM#zr5sIfRZYEyf)0sCpM0aR z)VYZ}ZOKT~Gjw{EPT!^zImT+1F<@Pm(KrD}?GnZEIeL$ZKjlEVP9xG_PODiqBveH> zVoI8gC3DF%%^GUZTD#S*sWj!{LHR2>&-glSUC4(j3({uQr`k|gd9XnnR-bC7W;Nid zx}@)&-@*L^$zrcAFF+7x$W29ivp50Xi{xR-Gb$X2m@zmAokSx4P+~!8 z1)>kx+q>`HnRP;WX_e<&@WPMAUP8eFic~p}M^x*ok0HdB0$WZQDdZ`e5*BUQfQ?)S zbfgr^%hxlxE^rQoU1;3THdGSa1C^maQ}hoT0DUxXk+>HoV$6Thf{F%=yFdjA#`TBPSEa zNeo&NC5mn_*Y}XbW;i;tNpOBga#r1wz9o~tNgI`gMY4<+9eTo!y@|+olP1kXJWMwB zlfXaIX%Sf}MkZz;{ykNjWz>UG#xEFQ!3L13Q~!>4iXESC7Q4mWiyJ;AbJBbiuXMyu z;dHj9NQ|Tc9yJb#^^M7|7uOa&GEy%uFy8y&)~3C)Wo@1*E@sBr!47x!a zH%R+G;D`w%jaAb?!%|b0I{_AzxT2$!@xj', - endpoint='static', - host=static_host, - view_func=self.send_static_file - ) - - #: The click command line context for this application. Commands - #: registered here show up in the :command:`flask` command once the - #: application has been discovered. The default commands are - #: provided by Flask itself and can be overridden. - #: - #: This is an instance of a :class:`click.Group` object. - self.cli = cli.AppGroup(self.name) - - @locked_cached_property - def name(self): - """The name of the application. This is usually the import name - with the difference that it's guessed from the run file if the - import name is main. This name is used as a display name when - Flask needs the name of the application. It can be set and overridden - to change the value. - - .. versionadded:: 0.8 - """ - if self.import_name == '__main__': - fn = getattr(sys.modules['__main__'], '__file__', None) - if fn is None: - return '__main__' - return os.path.splitext(os.path.basename(fn))[0] - return self.import_name - - @property - def propagate_exceptions(self): - """Returns the value of the ``PROPAGATE_EXCEPTIONS`` configuration - value in case it's set, otherwise a sensible default is returned. - - .. versionadded:: 0.7 - """ - rv = self.config['PROPAGATE_EXCEPTIONS'] - if rv is not None: - return rv - return self.testing or self.debug - - @property - def preserve_context_on_exception(self): - """Returns the value of the ``PRESERVE_CONTEXT_ON_EXCEPTION`` - configuration value in case it's set, otherwise a sensible default - is returned. - - .. versionadded:: 0.7 - """ - rv = self.config['PRESERVE_CONTEXT_ON_EXCEPTION'] - if rv is not None: - return rv - return self.debug - - @locked_cached_property - def logger(self): - """The ``'flask.app'`` logger, a standard Python - :class:`~logging.Logger`. - - In debug mode, the logger's :attr:`~logging.Logger.level` will be set - to :data:`~logging.DEBUG`. - - If there are no handlers configured, a default handler will be added. - See :ref:`logging` for more information. - - .. versionchanged:: 1.0 - Behavior was simplified. The logger is always named - ``flask.app``. The level is only set during configuration, it - doesn't check ``app.debug`` each time. Only one format is used, - not different ones depending on ``app.debug``. No handlers are - removed, and a handler is only added if no handlers are already - configured. - - .. versionadded:: 0.3 - """ - return create_logger(self) - - @locked_cached_property - def jinja_env(self): - """The Jinja2 environment used to load templates.""" - return self.create_jinja_environment() - - @property - def got_first_request(self): - """This attribute is set to ``True`` if the application started - handling the first request. - - .. versionadded:: 0.8 - """ - return self._got_first_request - - def make_config(self, instance_relative=False): - """Used to create the config attribute by the Flask constructor. - The `instance_relative` parameter is passed in from the constructor - of Flask (there named `instance_relative_config`) and indicates if - the config should be relative to the instance path or the root path - of the application. - - .. versionadded:: 0.8 - """ - root_path = self.root_path - if instance_relative: - root_path = self.instance_path - defaults = dict(self.default_config) - defaults['ENV'] = get_env() - defaults['DEBUG'] = get_debug_flag() - return self.config_class(root_path, defaults) - - def auto_find_instance_path(self): - """Tries to locate the instance path if it was not provided to the - constructor of the application class. It will basically calculate - the path to a folder named ``instance`` next to your main file or - the package. - - .. versionadded:: 0.8 - """ - prefix, package_path = find_package(self.import_name) - if prefix is None: - return os.path.join(package_path, 'instance') - return os.path.join(prefix, 'var', self.name + '-instance') - - def open_instance_resource(self, resource, mode='rb'): - """Opens a resource from the application's instance folder - (:attr:`instance_path`). Otherwise works like - :meth:`open_resource`. Instance resources can also be opened for - writing. - - :param resource: the name of the resource. To access resources within - subfolders use forward slashes as separator. - :param mode: resource file opening mode, default is 'rb'. - """ - return open(os.path.join(self.instance_path, resource), mode) - - def _get_templates_auto_reload(self): - """Reload templates when they are changed. Used by - :meth:`create_jinja_environment`. - - This attribute can be configured with :data:`TEMPLATES_AUTO_RELOAD`. If - not set, it will be enabled in debug mode. - - .. versionadded:: 1.0 - This property was added but the underlying config and behavior - already existed. - """ - rv = self.config['TEMPLATES_AUTO_RELOAD'] - return rv if rv is not None else self.debug - - def _set_templates_auto_reload(self, value): - self.config['TEMPLATES_AUTO_RELOAD'] = value - - templates_auto_reload = property( - _get_templates_auto_reload, _set_templates_auto_reload - ) - del _get_templates_auto_reload, _set_templates_auto_reload - - def create_jinja_environment(self): - """Creates the Jinja2 environment based on :attr:`jinja_options` - and :meth:`select_jinja_autoescape`. Since 0.7 this also adds - the Jinja2 globals and filters after initialization. Override - this function to customize the behavior. - - .. versionadded:: 0.5 - .. versionchanged:: 0.11 - ``Environment.auto_reload`` set in accordance with - ``TEMPLATES_AUTO_RELOAD`` configuration option. - """ - options = dict(self.jinja_options) - - if 'autoescape' not in options: - options['autoescape'] = self.select_jinja_autoescape - - if 'auto_reload' not in options: - options['auto_reload'] = self.templates_auto_reload - - rv = self.jinja_environment(self, **options) - rv.globals.update( - url_for=url_for, - get_flashed_messages=get_flashed_messages, - config=self.config, - # request, session and g are normally added with the - # context processor for efficiency reasons but for imported - # templates we also want the proxies in there. - request=request, - session=session, - g=g - ) - rv.filters['tojson'] = json.tojson_filter - return rv - - def create_global_jinja_loader(self): - """Creates the loader for the Jinja2 environment. Can be used to - override just the loader and keeping the rest unchanged. It's - discouraged to override this function. Instead one should override - the :meth:`jinja_loader` function instead. - - The global loader dispatches between the loaders of the application - and the individual blueprints. - - .. versionadded:: 0.7 - """ - return DispatchingJinjaLoader(self) - - def select_jinja_autoescape(self, filename): - """Returns ``True`` if autoescaping should be active for the given - template name. If no template name is given, returns `True`. - - .. versionadded:: 0.5 - """ - if filename is None: - return True - return filename.endswith(('.html', '.htm', '.xml', '.xhtml')) - - def update_template_context(self, context): - """Update the template context with some commonly used variables. - This injects request, session, config and g into the template - context as well as everything template context processors want - to inject. Note that the as of Flask 0.6, the original values - in the context will not be overridden if a context processor - decides to return a value with the same key. - - :param context: the context as a dictionary that is updated in place - to add extra variables. - """ - funcs = self.template_context_processors[None] - reqctx = _request_ctx_stack.top - if reqctx is not None: - bp = reqctx.request.blueprint - if bp is not None and bp in self.template_context_processors: - funcs = chain(funcs, self.template_context_processors[bp]) - orig_ctx = context.copy() - for func in funcs: - context.update(func()) - # make sure the original values win. This makes it possible to - # easier add new variables in context processors without breaking - # existing views. - context.update(orig_ctx) - - def make_shell_context(self): - """Returns the shell context for an interactive shell for this - application. This runs all the registered shell context - processors. - - .. versionadded:: 0.11 - """ - rv = {'app': self, 'g': g} - for processor in self.shell_context_processors: - rv.update(processor()) - return rv - - #: What environment the app is running in. Flask and extensions may - #: enable behaviors based on the environment, such as enabling debug - #: mode. This maps to the :data:`ENV` config key. This is set by the - #: :envvar:`FLASK_ENV` environment variable and may not behave as - #: expected if set in code. - #: - #: **Do not enable development when deploying in production.** - #: - #: Default: ``'production'`` - env = ConfigAttribute('ENV') - - def _get_debug(self): - return self.config['DEBUG'] - - def _set_debug(self, value): - self.config['DEBUG'] = value - self.jinja_env.auto_reload = self.templates_auto_reload - - #: Whether debug mode is enabled. When using ``flask run`` to start - #: the development server, an interactive debugger will be shown for - #: unhandled exceptions, and the server will be reloaded when code - #: changes. This maps to the :data:`DEBUG` config key. This is - #: enabled when :attr:`env` is ``'development'`` and is overridden - #: by the ``FLASK_DEBUG`` environment variable. It may not behave as - #: expected if set in code. - #: - #: **Do not enable debug mode when deploying in production.** - #: - #: Default: ``True`` if :attr:`env` is ``'development'``, or - #: ``False`` otherwise. - debug = property(_get_debug, _set_debug) - del _get_debug, _set_debug - - def run(self, host=None, port=None, debug=None, - load_dotenv=True, **options): - """Runs the application on a local development server. - - Do not use ``run()`` in a production setting. It is not intended to - meet security and performance requirements for a production server. - Instead, see :ref:`deployment` for WSGI server recommendations. - - If the :attr:`debug` flag is set the server will automatically reload - for code changes and show a debugger in case an exception happened. - - If you want to run the application in debug mode, but disable the - code execution on the interactive debugger, you can pass - ``use_evalex=False`` as parameter. This will keep the debugger's - traceback screen active, but disable code execution. - - It is not recommended to use this function for development with - automatic reloading as this is badly supported. Instead you should - be using the :command:`flask` command line script's ``run`` support. - - .. admonition:: Keep in Mind - - Flask will suppress any server error with a generic error page - unless it is in debug mode. As such to enable just the - interactive debugger without the code reloading, you have to - invoke :meth:`run` with ``debug=True`` and ``use_reloader=False``. - Setting ``use_debugger`` to ``True`` without being in debug mode - won't catch any exceptions because there won't be any to - catch. - - :param host: the hostname to listen on. Set this to ``'0.0.0.0'`` to - have the server available externally as well. Defaults to - ``'127.0.0.1'`` or the host in the ``SERVER_NAME`` config variable - if present. - :param port: the port of the webserver. Defaults to ``5000`` or the - port defined in the ``SERVER_NAME`` config variable if present. - :param debug: if given, enable or disable debug mode. See - :attr:`debug`. - :param load_dotenv: Load the nearest :file:`.env` and :file:`.flaskenv` - files to set environment variables. Will also change the working - directory to the directory containing the first file found. - :param options: the options to be forwarded to the underlying Werkzeug - server. See :func:`werkzeug.serving.run_simple` for more - information. - - .. versionchanged:: 1.0 - If installed, python-dotenv will be used to load environment - variables from :file:`.env` and :file:`.flaskenv` files. - - If set, the :envvar:`FLASK_ENV` and :envvar:`FLASK_DEBUG` - environment variables will override :attr:`env` and - :attr:`debug`. - - Threaded mode is enabled by default. - - .. versionchanged:: 0.10 - The default port is now picked from the ``SERVER_NAME`` - variable. - """ - # Change this into a no-op if the server is invoked from the - # command line. Have a look at cli.py for more information. - if os.environ.get('FLASK_RUN_FROM_CLI') == 'true': - from .debughelpers import explain_ignored_app_run - explain_ignored_app_run() - return - - if get_load_dotenv(load_dotenv): - cli.load_dotenv() - - # if set, let env vars override previous values - if 'FLASK_ENV' in os.environ: - self.env = get_env() - self.debug = get_debug_flag() - elif 'FLASK_DEBUG' in os.environ: - self.debug = get_debug_flag() - - # debug passed to method overrides all other sources - if debug is not None: - self.debug = bool(debug) - - _host = '127.0.0.1' - _port = 5000 - server_name = self.config.get('SERVER_NAME') - sn_host, sn_port = None, None - - if server_name: - sn_host, _, sn_port = server_name.partition(':') - - host = host or sn_host or _host - port = int(port or sn_port or _port) - - options.setdefault('use_reloader', self.debug) - options.setdefault('use_debugger', self.debug) - options.setdefault('threaded', True) - - cli.show_server_banner(self.env, self.debug, self.name, False) - - from werkzeug.serving import run_simple - - try: - run_simple(host, port, self, **options) - finally: - # reset the first request information if the development server - # reset normally. This makes it possible to restart the server - # without reloader and that stuff from an interactive shell. - self._got_first_request = False - - def test_client(self, use_cookies=True, **kwargs): - """Creates a test client for this application. For information - about unit testing head over to :ref:`testing`. - - Note that if you are testing for assertions or exceptions in your - application code, you must set ``app.testing = True`` in order for the - exceptions to propagate to the test client. Otherwise, the exception - will be handled by the application (not visible to the test client) and - the only indication of an AssertionError or other exception will be a - 500 status code response to the test client. See the :attr:`testing` - attribute. For example:: - - app.testing = True - client = app.test_client() - - The test client can be used in a ``with`` block to defer the closing down - of the context until the end of the ``with`` block. This is useful if - you want to access the context locals for testing:: - - with app.test_client() as c: - rv = c.get('/?vodka=42') - assert request.args['vodka'] == '42' - - Additionally, you may pass optional keyword arguments that will then - be passed to the application's :attr:`test_client_class` constructor. - For example:: - - from flask.testing import FlaskClient - - class CustomClient(FlaskClient): - def __init__(self, *args, **kwargs): - self._authentication = kwargs.pop("authentication") - super(CustomClient,self).__init__( *args, **kwargs) - - app.test_client_class = CustomClient - client = app.test_client(authentication='Basic ....') - - See :class:`~flask.testing.FlaskClient` for more information. - - .. versionchanged:: 0.4 - added support for ``with`` block usage for the client. - - .. versionadded:: 0.7 - The `use_cookies` parameter was added as well as the ability - to override the client to be used by setting the - :attr:`test_client_class` attribute. - - .. versionchanged:: 0.11 - Added `**kwargs` to support passing additional keyword arguments to - the constructor of :attr:`test_client_class`. - """ - cls = self.test_client_class - if cls is None: - from flask.testing import FlaskClient as cls - return cls(self, self.response_class, use_cookies=use_cookies, **kwargs) - - def test_cli_runner(self, **kwargs): - """Create a CLI runner for testing CLI commands. - See :ref:`testing-cli`. - - Returns an instance of :attr:`test_cli_runner_class`, by default - :class:`~flask.testing.FlaskCliRunner`. The Flask app object is - passed as the first argument. - - .. versionadded:: 1.0 - """ - cls = self.test_cli_runner_class - - if cls is None: - from flask.testing import FlaskCliRunner as cls - - return cls(self, **kwargs) - - def open_session(self, request): - """Creates or opens a new session. Default implementation stores all - session data in a signed cookie. This requires that the - :attr:`secret_key` is set. Instead of overriding this method - we recommend replacing the :class:`session_interface`. - - .. deprecated: 1.0 - Will be removed in 1.1. Use ``session_interface.open_session`` - instead. - - :param request: an instance of :attr:`request_class`. - """ - - warnings.warn(DeprecationWarning( - '"open_session" is deprecated and will be removed in 1.1. Use' - ' "session_interface.open_session" instead.' - )) - return self.session_interface.open_session(self, request) - - def save_session(self, session, response): - """Saves the session if it needs updates. For the default - implementation, check :meth:`open_session`. Instead of overriding this - method we recommend replacing the :class:`session_interface`. - - .. deprecated: 1.0 - Will be removed in 1.1. Use ``session_interface.save_session`` - instead. - - :param session: the session to be saved (a - :class:`~werkzeug.contrib.securecookie.SecureCookie` - object) - :param response: an instance of :attr:`response_class` - """ - - warnings.warn(DeprecationWarning( - '"save_session" is deprecated and will be removed in 1.1. Use' - ' "session_interface.save_session" instead.' - )) - return self.session_interface.save_session(self, session, response) - - def make_null_session(self): - """Creates a new instance of a missing session. Instead of overriding - this method we recommend replacing the :class:`session_interface`. - - .. deprecated: 1.0 - Will be removed in 1.1. Use ``session_interface.make_null_session`` - instead. - - .. versionadded:: 0.7 - """ - - warnings.warn(DeprecationWarning( - '"make_null_session" is deprecated and will be removed in 1.1. Use' - ' "session_interface.make_null_session" instead.' - )) - return self.session_interface.make_null_session(self) - - @setupmethod - def register_blueprint(self, blueprint, **options): - """Register a :class:`~flask.Blueprint` on the application. Keyword - arguments passed to this method will override the defaults set on the - blueprint. - - Calls the blueprint's :meth:`~flask.Blueprint.register` method after - recording the blueprint in the application's :attr:`blueprints`. - - :param blueprint: The blueprint to register. - :param url_prefix: Blueprint routes will be prefixed with this. - :param subdomain: Blueprint routes will match on this subdomain. - :param url_defaults: Blueprint routes will use these default values for - view arguments. - :param options: Additional keyword arguments are passed to - :class:`~flask.blueprints.BlueprintSetupState`. They can be - accessed in :meth:`~flask.Blueprint.record` callbacks. - - .. versionadded:: 0.7 - """ - first_registration = False - - if blueprint.name in self.blueprints: - assert self.blueprints[blueprint.name] is blueprint, ( - 'A name collision occurred between blueprints %r and %r. Both' - ' share the same name "%s". Blueprints that are created on the' - ' fly need unique names.' % ( - blueprint, self.blueprints[blueprint.name], blueprint.name - ) - ) - else: - self.blueprints[blueprint.name] = blueprint - self._blueprint_order.append(blueprint) - first_registration = True - - blueprint.register(self, options, first_registration) - - def iter_blueprints(self): - """Iterates over all blueprints by the order they were registered. - - .. versionadded:: 0.11 - """ - return iter(self._blueprint_order) - - @setupmethod - def add_url_rule(self, rule, endpoint=None, view_func=None, - provide_automatic_options=None, **options): - """Connects a URL rule. Works exactly like the :meth:`route` - decorator. If a view_func is provided it will be registered with the - endpoint. - - Basically this example:: - - @app.route('/') - def index(): - pass - - Is equivalent to the following:: - - def index(): - pass - app.add_url_rule('/', 'index', index) - - If the view_func is not provided you will need to connect the endpoint - to a view function like so:: - - app.view_functions['index'] = index - - Internally :meth:`route` invokes :meth:`add_url_rule` so if you want - to customize the behavior via subclassing you only need to change - this method. - - For more information refer to :ref:`url-route-registrations`. - - .. versionchanged:: 0.2 - `view_func` parameter added. - - .. versionchanged:: 0.6 - ``OPTIONS`` is added automatically as method. - - :param rule: the URL rule as string - :param endpoint: the endpoint for the registered URL rule. Flask - itself assumes the name of the view function as - endpoint - :param view_func: the function to call when serving a request to the - provided endpoint - :param provide_automatic_options: controls whether the ``OPTIONS`` - method should be added automatically. This can also be controlled - by setting the ``view_func.provide_automatic_options = False`` - before adding the rule. - :param options: the options to be forwarded to the underlying - :class:`~werkzeug.routing.Rule` object. A change - to Werkzeug is handling of method options. methods - is a list of methods this rule should be limited - to (``GET``, ``POST`` etc.). By default a rule - just listens for ``GET`` (and implicitly ``HEAD``). - Starting with Flask 0.6, ``OPTIONS`` is implicitly - added and handled by the standard request handling. - """ - if endpoint is None: - endpoint = _endpoint_from_view_func(view_func) - options['endpoint'] = endpoint - methods = options.pop('methods', None) - - # if the methods are not given and the view_func object knows its - # methods we can use that instead. If neither exists, we go with - # a tuple of only ``GET`` as default. - if methods is None: - methods = getattr(view_func, 'methods', None) or ('GET',) - if isinstance(methods, string_types): - raise TypeError('Allowed methods have to be iterables of strings, ' - 'for example: @app.route(..., methods=["POST"])') - methods = set(item.upper() for item in methods) - - # Methods that should always be added - required_methods = set(getattr(view_func, 'required_methods', ())) - - # starting with Flask 0.8 the view_func object can disable and - # force-enable the automatic options handling. - if provide_automatic_options is None: - provide_automatic_options = getattr(view_func, - 'provide_automatic_options', None) - - if provide_automatic_options is None: - if 'OPTIONS' not in methods: - provide_automatic_options = True - required_methods.add('OPTIONS') - else: - provide_automatic_options = False - - # Add the required methods now. - methods |= required_methods - - rule = self.url_rule_class(rule, methods=methods, **options) - rule.provide_automatic_options = provide_automatic_options - - self.url_map.add(rule) - if view_func is not None: - old_func = self.view_functions.get(endpoint) - if old_func is not None and old_func != view_func: - raise AssertionError('View function mapping is overwriting an ' - 'existing endpoint function: %s' % endpoint) - self.view_functions[endpoint] = view_func - - def route(self, rule, **options): - """A decorator that is used to register a view function for a - given URL rule. This does the same thing as :meth:`add_url_rule` - but is intended for decorator usage:: - - @app.route('/') - def index(): - return 'Hello World' - - For more information refer to :ref:`url-route-registrations`. - - :param rule: the URL rule as string - :param endpoint: the endpoint for the registered URL rule. Flask - itself assumes the name of the view function as - endpoint - :param options: the options to be forwarded to the underlying - :class:`~werkzeug.routing.Rule` object. A change - to Werkzeug is handling of method options. methods - is a list of methods this rule should be limited - to (``GET``, ``POST`` etc.). By default a rule - just listens for ``GET`` (and implicitly ``HEAD``). - Starting with Flask 0.6, ``OPTIONS`` is implicitly - added and handled by the standard request handling. - """ - def decorator(f): - endpoint = options.pop('endpoint', None) - self.add_url_rule(rule, endpoint, f, **options) - return f - return decorator - - @setupmethod - def endpoint(self, endpoint): - """A decorator to register a function as an endpoint. - Example:: - - @app.endpoint('example.endpoint') - def example(): - return "example" - - :param endpoint: the name of the endpoint - """ - def decorator(f): - self.view_functions[endpoint] = f - return f - return decorator - - @staticmethod - def _get_exc_class_and_code(exc_class_or_code): - """Ensure that we register only exceptions as handler keys""" - if isinstance(exc_class_or_code, integer_types): - exc_class = default_exceptions[exc_class_or_code] - else: - exc_class = exc_class_or_code - - assert issubclass(exc_class, Exception) - - if issubclass(exc_class, HTTPException): - return exc_class, exc_class.code - else: - return exc_class, None - - @setupmethod - def errorhandler(self, code_or_exception): - """Register a function to handle errors by code or exception class. - - A decorator that is used to register a function given an - error code. Example:: - - @app.errorhandler(404) - def page_not_found(error): - return 'This page does not exist', 404 - - You can also register handlers for arbitrary exceptions:: - - @app.errorhandler(DatabaseError) - def special_exception_handler(error): - return 'Database connection failed', 500 - - .. versionadded:: 0.7 - Use :meth:`register_error_handler` instead of modifying - :attr:`error_handler_spec` directly, for application wide error - handlers. - - .. versionadded:: 0.7 - One can now additionally also register custom exception types - that do not necessarily have to be a subclass of the - :class:`~werkzeug.exceptions.HTTPException` class. - - :param code_or_exception: the code as integer for the handler, or - an arbitrary exception - """ - def decorator(f): - self._register_error_handler(None, code_or_exception, f) - return f - return decorator - - @setupmethod - def register_error_handler(self, code_or_exception, f): - """Alternative error attach function to the :meth:`errorhandler` - decorator that is more straightforward to use for non decorator - usage. - - .. versionadded:: 0.7 - """ - self._register_error_handler(None, code_or_exception, f) - - @setupmethod - def _register_error_handler(self, key, code_or_exception, f): - """ - :type key: None|str - :type code_or_exception: int|T<=Exception - :type f: callable - """ - if isinstance(code_or_exception, HTTPException): # old broken behavior - raise ValueError( - 'Tried to register a handler for an exception instance {0!r}.' - ' Handlers can only be registered for exception classes or' - ' HTTP error codes.'.format(code_or_exception) - ) - - try: - exc_class, code = self._get_exc_class_and_code(code_or_exception) - except KeyError: - raise KeyError( - "'{0}' is not a recognized HTTP error code. Use a subclass of" - " HTTPException with that code instead.".format(code_or_exception) - ) - - handlers = self.error_handler_spec.setdefault(key, {}).setdefault(code, {}) - handlers[exc_class] = f - - @setupmethod - def template_filter(self, name=None): - """A decorator that is used to register custom template filter. - You can specify a name for the filter, otherwise the function - name will be used. Example:: - - @app.template_filter() - def reverse(s): - return s[::-1] - - :param name: the optional name of the filter, otherwise the - function name will be used. - """ - def decorator(f): - self.add_template_filter(f, name=name) - return f - return decorator - - @setupmethod - def add_template_filter(self, f, name=None): - """Register a custom template filter. Works exactly like the - :meth:`template_filter` decorator. - - :param name: the optional name of the filter, otherwise the - function name will be used. - """ - self.jinja_env.filters[name or f.__name__] = f - - @setupmethod - def template_test(self, name=None): - """A decorator that is used to register custom template test. - You can specify a name for the test, otherwise the function - name will be used. Example:: - - @app.template_test() - def is_prime(n): - if n == 2: - return True - for i in range(2, int(math.ceil(math.sqrt(n))) + 1): - if n % i == 0: - return False - return True - - .. versionadded:: 0.10 - - :param name: the optional name of the test, otherwise the - function name will be used. - """ - def decorator(f): - self.add_template_test(f, name=name) - return f - return decorator - - @setupmethod - def add_template_test(self, f, name=None): - """Register a custom template test. Works exactly like the - :meth:`template_test` decorator. - - .. versionadded:: 0.10 - - :param name: the optional name of the test, otherwise the - function name will be used. - """ - self.jinja_env.tests[name or f.__name__] = f - - @setupmethod - def template_global(self, name=None): - """A decorator that is used to register a custom template global function. - You can specify a name for the global function, otherwise the function - name will be used. Example:: - - @app.template_global() - def double(n): - return 2 * n - - .. versionadded:: 0.10 - - :param name: the optional name of the global function, otherwise the - function name will be used. - """ - def decorator(f): - self.add_template_global(f, name=name) - return f - return decorator - - @setupmethod - def add_template_global(self, f, name=None): - """Register a custom template global function. Works exactly like the - :meth:`template_global` decorator. - - .. versionadded:: 0.10 - - :param name: the optional name of the global function, otherwise the - function name will be used. - """ - self.jinja_env.globals[name or f.__name__] = f - - @setupmethod - def before_request(self, f): - """Registers a function to run before each request. - - For example, this can be used to open a database connection, or to load - the logged in user from the session. - - The function will be called without any arguments. If it returns a - non-None value, the value is handled as if it was the return value from - the view, and further request handling is stopped. - """ - self.before_request_funcs.setdefault(None, []).append(f) - return f - - @setupmethod - def before_first_request(self, f): - """Registers a function to be run before the first request to this - instance of the application. - - The function will be called without any arguments and its return - value is ignored. - - .. versionadded:: 0.8 - """ - self.before_first_request_funcs.append(f) - return f - - @setupmethod - def after_request(self, f): - """Register a function to be run after each request. - - Your function must take one parameter, an instance of - :attr:`response_class` and return a new response object or the - same (see :meth:`process_response`). - - As of Flask 0.7 this function might not be executed at the end of the - request in case an unhandled exception occurred. - """ - self.after_request_funcs.setdefault(None, []).append(f) - return f - - @setupmethod - def teardown_request(self, f): - """Register a function to be run at the end of each request, - regardless of whether there was an exception or not. These functions - are executed when the request context is popped, even if not an - actual request was performed. - - Example:: - - ctx = app.test_request_context() - ctx.push() - ... - ctx.pop() - - When ``ctx.pop()`` is executed in the above example, the teardown - functions are called just before the request context moves from the - stack of active contexts. This becomes relevant if you are using - such constructs in tests. - - Generally teardown functions must take every necessary step to avoid - that they will fail. If they do execute code that might fail they - will have to surround the execution of these code by try/except - statements and log occurring errors. - - When a teardown function was called because of an exception it will - be passed an error object. - - The return values of teardown functions are ignored. - - .. admonition:: Debug Note - - In debug mode Flask will not tear down a request on an exception - immediately. Instead it will keep it alive so that the interactive - debugger can still access it. This behavior can be controlled - by the ``PRESERVE_CONTEXT_ON_EXCEPTION`` configuration variable. - """ - self.teardown_request_funcs.setdefault(None, []).append(f) - return f - - @setupmethod - def teardown_appcontext(self, f): - """Registers a function to be called when the application context - ends. These functions are typically also called when the request - context is popped. - - Example:: - - ctx = app.app_context() - ctx.push() - ... - ctx.pop() - - When ``ctx.pop()`` is executed in the above example, the teardown - functions are called just before the app context moves from the - stack of active contexts. This becomes relevant if you are using - such constructs in tests. - - Since a request context typically also manages an application - context it would also be called when you pop a request context. - - When a teardown function was called because of an unhandled exception - it will be passed an error object. If an :meth:`errorhandler` is - registered, it will handle the exception and the teardown will not - receive it. - - The return values of teardown functions are ignored. - - .. versionadded:: 0.9 - """ - self.teardown_appcontext_funcs.append(f) - return f - - @setupmethod - def context_processor(self, f): - """Registers a template context processor function.""" - self.template_context_processors[None].append(f) - return f - - @setupmethod - def shell_context_processor(self, f): - """Registers a shell context processor function. - - .. versionadded:: 0.11 - """ - self.shell_context_processors.append(f) - return f - - @setupmethod - def url_value_preprocessor(self, f): - """Register a URL value preprocessor function for all view - functions in the application. These functions will be called before the - :meth:`before_request` functions. - - The function can modify the values captured from the matched url before - they are passed to the view. For example, this can be used to pop a - common language code value and place it in ``g`` rather than pass it to - every view. - - The function is passed the endpoint name and values dict. The return - value is ignored. - """ - self.url_value_preprocessors.setdefault(None, []).append(f) - return f - - @setupmethod - def url_defaults(self, f): - """Callback function for URL defaults for all view functions of the - application. It's called with the endpoint and values and should - update the values passed in place. - """ - self.url_default_functions.setdefault(None, []).append(f) - return f - - def _find_error_handler(self, e): - """Return a registered error handler for an exception in this order: - blueprint handler for a specific code, app handler for a specific code, - blueprint handler for an exception class, app handler for an exception - class, or ``None`` if a suitable handler is not found. - """ - exc_class, code = self._get_exc_class_and_code(type(e)) - - for name, c in ( - (request.blueprint, code), (None, code), - (request.blueprint, None), (None, None) - ): - handler_map = self.error_handler_spec.setdefault(name, {}).get(c) - - if not handler_map: - continue - - for cls in exc_class.__mro__: - handler = handler_map.get(cls) - - if handler is not None: - return handler - - def handle_http_exception(self, e): - """Handles an HTTP exception. By default this will invoke the - registered error handlers and fall back to returning the - exception as response. - - .. versionadded:: 0.3 - """ - # Proxy exceptions don't have error codes. We want to always return - # those unchanged as errors - if e.code is None: - return e - - handler = self._find_error_handler(e) - if handler is None: - return e - return handler(e) - - def trap_http_exception(self, e): - """Checks if an HTTP exception should be trapped or not. By default - this will return ``False`` for all exceptions except for a bad request - key error if ``TRAP_BAD_REQUEST_ERRORS`` is set to ``True``. It - also returns ``True`` if ``TRAP_HTTP_EXCEPTIONS`` is set to ``True``. - - This is called for all HTTP exceptions raised by a view function. - If it returns ``True`` for any exception the error handler for this - exception is not called and it shows up as regular exception in the - traceback. This is helpful for debugging implicitly raised HTTP - exceptions. - - .. versionchanged:: 1.0 - Bad request errors are not trapped by default in debug mode. - - .. versionadded:: 0.8 - """ - if self.config['TRAP_HTTP_EXCEPTIONS']: - return True - - trap_bad_request = self.config['TRAP_BAD_REQUEST_ERRORS'] - - # if unset, trap key errors in debug mode - if ( - trap_bad_request is None and self.debug - and isinstance(e, BadRequestKeyError) - ): - return True - - if trap_bad_request: - return isinstance(e, BadRequest) - - return False - - def handle_user_exception(self, e): - """This method is called whenever an exception occurs that should be - handled. A special case are - :class:`~werkzeug.exception.HTTPException`\s which are forwarded by - this function to the :meth:`handle_http_exception` method. This - function will either return a response value or reraise the - exception with the same traceback. - - .. versionchanged:: 1.0 - Key errors raised from request data like ``form`` show the the bad - key in debug mode rather than a generic bad request message. - - .. versionadded:: 0.7 - """ - exc_type, exc_value, tb = sys.exc_info() - assert exc_value is e - # ensure not to trash sys.exc_info() at that point in case someone - # wants the traceback preserved in handle_http_exception. Of course - # we cannot prevent users from trashing it themselves in a custom - # trap_http_exception method so that's their fault then. - - # MultiDict passes the key to the exception, but that's ignored - # when generating the response message. Set an informative - # description for key errors in debug mode or when trapping errors. - if ( - (self.debug or self.config['TRAP_BAD_REQUEST_ERRORS']) - and isinstance(e, BadRequestKeyError) - # only set it if it's still the default description - and e.description is BadRequestKeyError.description - ): - e.description = "KeyError: '{0}'".format(*e.args) - - if isinstance(e, HTTPException) and not self.trap_http_exception(e): - return self.handle_http_exception(e) - - handler = self._find_error_handler(e) - - if handler is None: - reraise(exc_type, exc_value, tb) - return handler(e) - - def handle_exception(self, e): - """Default exception handling that kicks in when an exception - occurs that is not caught. In debug mode the exception will - be re-raised immediately, otherwise it is logged and the handler - for a 500 internal server error is used. If no such handler - exists, a default 500 internal server error message is displayed. - - .. versionadded:: 0.3 - """ - exc_type, exc_value, tb = sys.exc_info() - - got_request_exception.send(self, exception=e) - handler = self._find_error_handler(InternalServerError()) - - if self.propagate_exceptions: - # if we want to repropagate the exception, we can attempt to - # raise it with the whole traceback in case we can do that - # (the function was actually called from the except part) - # otherwise, we just raise the error again - if exc_value is e: - reraise(exc_type, exc_value, tb) - else: - raise e - - self.log_exception((exc_type, exc_value, tb)) - if handler is None: - return InternalServerError() - return self.finalize_request(handler(e), from_error_handler=True) - - def log_exception(self, exc_info): - """Logs an exception. This is called by :meth:`handle_exception` - if debugging is disabled and right before the handler is called. - The default implementation logs the exception as error on the - :attr:`logger`. - - .. versionadded:: 0.8 - """ - self.logger.error('Exception on %s [%s]' % ( - request.path, - request.method - ), exc_info=exc_info) - - def raise_routing_exception(self, request): - """Exceptions that are recording during routing are reraised with - this method. During debug we are not reraising redirect requests - for non ``GET``, ``HEAD``, or ``OPTIONS`` requests and we're raising - a different error instead to help debug situations. - - :internal: - """ - if not self.debug \ - or not isinstance(request.routing_exception, RequestRedirect) \ - or request.method in ('GET', 'HEAD', 'OPTIONS'): - raise request.routing_exception - - from .debughelpers import FormDataRoutingRedirect - raise FormDataRoutingRedirect(request) - - def dispatch_request(self): - """Does the request dispatching. Matches the URL and returns the - return value of the view or error handler. This does not have to - be a response object. In order to convert the return value to a - proper response object, call :func:`make_response`. - - .. versionchanged:: 0.7 - This no longer does the exception handling, this code was - moved to the new :meth:`full_dispatch_request`. - """ - req = _request_ctx_stack.top.request - if req.routing_exception is not None: - self.raise_routing_exception(req) - rule = req.url_rule - # if we provide automatic options for this URL and the - # request came with the OPTIONS method, reply automatically - if getattr(rule, 'provide_automatic_options', False) \ - and req.method == 'OPTIONS': - return self.make_default_options_response() - # otherwise dispatch to the handler for that endpoint - return self.view_functions[rule.endpoint](**req.view_args) - - def full_dispatch_request(self): - """Dispatches the request and on top of that performs request - pre and postprocessing as well as HTTP exception catching and - error handling. - - .. versionadded:: 0.7 - """ - self.try_trigger_before_first_request_functions() - try: - request_started.send(self) - rv = self.preprocess_request() - if rv is None: - rv = self.dispatch_request() - except Exception as e: - rv = self.handle_user_exception(e) - return self.finalize_request(rv) - - def finalize_request(self, rv, from_error_handler=False): - """Given the return value from a view function this finalizes - the request by converting it into a response and invoking the - postprocessing functions. This is invoked for both normal - request dispatching as well as error handlers. - - Because this means that it might be called as a result of a - failure a special safe mode is available which can be enabled - with the `from_error_handler` flag. If enabled, failures in - response processing will be logged and otherwise ignored. - - :internal: - """ - response = self.make_response(rv) - try: - response = self.process_response(response) - request_finished.send(self, response=response) - except Exception: - if not from_error_handler: - raise - self.logger.exception('Request finalizing failed with an ' - 'error while handling an error') - return response - - def try_trigger_before_first_request_functions(self): - """Called before each request and will ensure that it triggers - the :attr:`before_first_request_funcs` and only exactly once per - application instance (which means process usually). - - :internal: - """ - if self._got_first_request: - return - with self._before_request_lock: - if self._got_first_request: - return - for func in self.before_first_request_funcs: - func() - self._got_first_request = True - - def make_default_options_response(self): - """This method is called to create the default ``OPTIONS`` response. - This can be changed through subclassing to change the default - behavior of ``OPTIONS`` responses. - - .. versionadded:: 0.7 - """ - adapter = _request_ctx_stack.top.url_adapter - if hasattr(adapter, 'allowed_methods'): - methods = adapter.allowed_methods() - else: - # fallback for Werkzeug < 0.7 - methods = [] - try: - adapter.match(method='--') - except MethodNotAllowed as e: - methods = e.valid_methods - except HTTPException as e: - pass - rv = self.response_class() - rv.allow.update(methods) - return rv - - def should_ignore_error(self, error): - """This is called to figure out if an error should be ignored - or not as far as the teardown system is concerned. If this - function returns ``True`` then the teardown handlers will not be - passed the error. - - .. versionadded:: 0.10 - """ - return False - - def make_response(self, rv): - """Convert the return value from a view function to an instance of - :attr:`response_class`. - - :param rv: the return value from the view function. The view function - must return a response. Returning ``None``, or the view ending - without returning, is not allowed. The following types are allowed - for ``view_rv``: - - ``str`` (``unicode`` in Python 2) - A response object is created with the string encoded to UTF-8 - as the body. - - ``bytes`` (``str`` in Python 2) - A response object is created with the bytes as the body. - - ``tuple`` - Either ``(body, status, headers)``, ``(body, status)``, or - ``(body, headers)``, where ``body`` is any of the other types - allowed here, ``status`` is a string or an integer, and - ``headers`` is a dictionary or a list of ``(key, value)`` - tuples. If ``body`` is a :attr:`response_class` instance, - ``status`` overwrites the exiting value and ``headers`` are - extended. - - :attr:`response_class` - The object is returned unchanged. - - other :class:`~werkzeug.wrappers.Response` class - The object is coerced to :attr:`response_class`. - - :func:`callable` - The function is called as a WSGI application. The result is - used to create a response object. - - .. versionchanged:: 0.9 - Previously a tuple was interpreted as the arguments for the - response object. - """ - - status = headers = None - - # unpack tuple returns - if isinstance(rv, tuple): - len_rv = len(rv) - - # a 3-tuple is unpacked directly - if len_rv == 3: - rv, status, headers = rv - # decide if a 2-tuple has status or headers - elif len_rv == 2: - if isinstance(rv[1], (Headers, dict, tuple, list)): - rv, headers = rv - else: - rv, status = rv - # other sized tuples are not allowed - else: - raise TypeError( - 'The view function did not return a valid response tuple.' - ' The tuple must have the form (body, status, headers),' - ' (body, status), or (body, headers).' - ) - - # the body must not be None - if rv is None: - raise TypeError( - 'The view function did not return a valid response. The' - ' function either returned None or ended without a return' - ' statement.' - ) - - # make sure the body is an instance of the response class - if not isinstance(rv, self.response_class): - if isinstance(rv, (text_type, bytes, bytearray)): - # let the response class set the status and headers instead of - # waiting to do it manually, so that the class can handle any - # special logic - rv = self.response_class(rv, status=status, headers=headers) - status = headers = None - else: - # evaluate a WSGI callable, or coerce a different response - # class to the correct type - try: - rv = self.response_class.force_type(rv, request.environ) - except TypeError as e: - new_error = TypeError( - '{e}\nThe view function did not return a valid' - ' response. The return type must be a string, tuple,' - ' Response instance, or WSGI callable, but it was a' - ' {rv.__class__.__name__}.'.format(e=e, rv=rv) - ) - reraise(TypeError, new_error, sys.exc_info()[2]) - - # prefer the status if it was provided - if status is not None: - if isinstance(status, (text_type, bytes, bytearray)): - rv.status = status - else: - rv.status_code = status - - # extend existing headers with provided headers - if headers: - rv.headers.extend(headers) - - return rv - - def create_url_adapter(self, request): - """Creates a URL adapter for the given request. The URL adapter - is created at a point where the request context is not yet set - up so the request is passed explicitly. - - .. versionadded:: 0.6 - - .. versionchanged:: 0.9 - This can now also be called without a request object when the - URL adapter is created for the application context. - - .. versionchanged:: 1.0 - :data:`SERVER_NAME` no longer implicitly enables subdomain - matching. Use :attr:`subdomain_matching` instead. - """ - if request is not None: - # If subdomain matching is disabled (the default), use the - # default subdomain in all cases. This should be the default - # in Werkzeug but it currently does not have that feature. - subdomain = ((self.url_map.default_subdomain or None) - if not self.subdomain_matching else None) - return self.url_map.bind_to_environ( - request.environ, - server_name=self.config['SERVER_NAME'], - subdomain=subdomain) - # We need at the very least the server name to be set for this - # to work. - if self.config['SERVER_NAME'] is not None: - return self.url_map.bind( - self.config['SERVER_NAME'], - script_name=self.config['APPLICATION_ROOT'], - url_scheme=self.config['PREFERRED_URL_SCHEME']) - - def inject_url_defaults(self, endpoint, values): - """Injects the URL defaults for the given endpoint directly into - the values dictionary passed. This is used internally and - automatically called on URL building. - - .. versionadded:: 0.7 - """ - funcs = self.url_default_functions.get(None, ()) - if '.' in endpoint: - bp = endpoint.rsplit('.', 1)[0] - funcs = chain(funcs, self.url_default_functions.get(bp, ())) - for func in funcs: - func(endpoint, values) - - def handle_url_build_error(self, error, endpoint, values): - """Handle :class:`~werkzeug.routing.BuildError` on :meth:`url_for`. - """ - exc_type, exc_value, tb = sys.exc_info() - for handler in self.url_build_error_handlers: - try: - rv = handler(error, endpoint, values) - if rv is not None: - return rv - except BuildError as e: - # make error available outside except block (py3) - error = e - - # At this point we want to reraise the exception. If the error is - # still the same one we can reraise it with the original traceback, - # otherwise we raise it from here. - if error is exc_value: - reraise(exc_type, exc_value, tb) - raise error - - def preprocess_request(self): - """Called before the request is dispatched. Calls - :attr:`url_value_preprocessors` registered with the app and the - current blueprint (if any). Then calls :attr:`before_request_funcs` - registered with the app and the blueprint. - - If any :meth:`before_request` handler returns a non-None value, the - value is handled as if it was the return value from the view, and - further request handling is stopped. - """ - - bp = _request_ctx_stack.top.request.blueprint - - funcs = self.url_value_preprocessors.get(None, ()) - if bp is not None and bp in self.url_value_preprocessors: - funcs = chain(funcs, self.url_value_preprocessors[bp]) - for func in funcs: - func(request.endpoint, request.view_args) - - funcs = self.before_request_funcs.get(None, ()) - if bp is not None and bp in self.before_request_funcs: - funcs = chain(funcs, self.before_request_funcs[bp]) - for func in funcs: - rv = func() - if rv is not None: - return rv - - def process_response(self, response): - """Can be overridden in order to modify the response object - before it's sent to the WSGI server. By default this will - call all the :meth:`after_request` decorated functions. - - .. versionchanged:: 0.5 - As of Flask 0.5 the functions registered for after request - execution are called in reverse order of registration. - - :param response: a :attr:`response_class` object. - :return: a new response object or the same, has to be an - instance of :attr:`response_class`. - """ - ctx = _request_ctx_stack.top - bp = ctx.request.blueprint - funcs = ctx._after_request_functions - if bp is not None and bp in self.after_request_funcs: - funcs = chain(funcs, reversed(self.after_request_funcs[bp])) - if None in self.after_request_funcs: - funcs = chain(funcs, reversed(self.after_request_funcs[None])) - for handler in funcs: - response = handler(response) - if not self.session_interface.is_null_session(ctx.session): - self.session_interface.save_session(self, ctx.session, response) - return response - - def do_teardown_request(self, exc=_sentinel): - """Called after the request is dispatched and the response is - returned, right before the request context is popped. - - This calls all functions decorated with - :meth:`teardown_request`, and :meth:`Blueprint.teardown_request` - if a blueprint handled the request. Finally, the - :data:`request_tearing_down` signal is sent. - - This is called by - :meth:`RequestContext.pop() `, - which may be delayed during testing to maintain access to - resources. - - :param exc: An unhandled exception raised while dispatching the - request. Detected from the current exception information if - not passed. Passed to each teardown function. - - .. versionchanged:: 0.9 - Added the ``exc`` argument. - """ - if exc is _sentinel: - exc = sys.exc_info()[1] - funcs = reversed(self.teardown_request_funcs.get(None, ())) - bp = _request_ctx_stack.top.request.blueprint - if bp is not None and bp in self.teardown_request_funcs: - funcs = chain(funcs, reversed(self.teardown_request_funcs[bp])) - for func in funcs: - func(exc) - request_tearing_down.send(self, exc=exc) - - def do_teardown_appcontext(self, exc=_sentinel): - """Called right before the application context is popped. - - When handling a request, the application context is popped - after the request context. See :meth:`do_teardown_request`. - - This calls all functions decorated with - :meth:`teardown_appcontext`. Then the - :data:`appcontext_tearing_down` signal is sent. - - This is called by - :meth:`AppContext.pop() `. - - .. versionadded:: 0.9 - """ - if exc is _sentinel: - exc = sys.exc_info()[1] - for func in reversed(self.teardown_appcontext_funcs): - func(exc) - appcontext_tearing_down.send(self, exc=exc) - - def app_context(self): - """Create an :class:`~flask.ctx.AppContext`. Use as a ``with`` - block to push the context, which will make :data:`current_app` - point at this application. - - An application context is automatically pushed by - :meth:`RequestContext.push() ` - when handling a request, and when running a CLI command. Use - this to manually create a context outside of these situations. - - :: - - with app.app_context(): - init_db() - - See :doc:`/appcontext`. - - .. versionadded:: 0.9 - """ - return AppContext(self) - - def request_context(self, environ): - """Create a :class:`~flask.ctx.RequestContext` representing a - WSGI environment. Use a ``with`` block to push the context, - which will make :data:`request` point at this request. - - See :doc:`/reqcontext`. - - Typically you should not call this from your own code. A request - context is automatically pushed by the :meth:`wsgi_app` when - handling a request. Use :meth:`test_request_context` to create - an environment and context instead of this method. - - :param environ: a WSGI environment - """ - return RequestContext(self, environ) - - def test_request_context(self, *args, **kwargs): - """Create a :class:`~flask.ctx.RequestContext` for a WSGI - environment created from the given values. This is mostly useful - during testing, where you may want to run a function that uses - request data without dispatching a full request. - - See :doc:`/reqcontext`. - - Use a ``with`` block to push the context, which will make - :data:`request` point at the request for the created - environment. :: - - with test_request_context(...): - generate_report() - - When using the shell, it may be easier to push and pop the - context manually to avoid indentation. :: - - ctx = app.test_request_context(...) - ctx.push() - ... - ctx.pop() - - Takes the same arguments as Werkzeug's - :class:`~werkzeug.test.EnvironBuilder`, with some defaults from - the application. See the linked Werkzeug docs for most of the - available arguments. Flask-specific behavior is listed here. - - :param path: URL path being requested. - :param base_url: Base URL where the app is being served, which - ``path`` is relative to. If not given, built from - :data:`PREFERRED_URL_SCHEME`, ``subdomain``, - :data:`SERVER_NAME`, and :data:`APPLICATION_ROOT`. - :param subdomain: Subdomain name to append to - :data:`SERVER_NAME`. - :param url_scheme: Scheme to use instead of - :data:`PREFERRED_URL_SCHEME`. - :param data: The request body, either as a string or a dict of - form keys and values. - :param json: If given, this is serialized as JSON and passed as - ``data``. Also defaults ``content_type`` to - ``application/json``. - :param args: other positional arguments passed to - :class:`~werkzeug.test.EnvironBuilder`. - :param kwargs: other keyword arguments passed to - :class:`~werkzeug.test.EnvironBuilder`. - """ - from flask.testing import make_test_environ_builder - - builder = make_test_environ_builder(self, *args, **kwargs) - - try: - return self.request_context(builder.get_environ()) - finally: - builder.close() - - def wsgi_app(self, environ, start_response): - """The actual WSGI application. This is not implemented in - :meth:`__call__` so that middlewares can be applied without - losing a reference to the app object. Instead of doing this:: - - app = MyMiddleware(app) - - It's a better idea to do this instead:: - - app.wsgi_app = MyMiddleware(app.wsgi_app) - - Then you still have the original application object around and - can continue to call methods on it. - - .. versionchanged:: 0.7 - Teardown events for the request and app contexts are called - even if an unhandled error occurs. Other events may not be - called depending on when an error occurs during dispatch. - See :ref:`callbacks-and-errors`. - - :param environ: A WSGI environment. - :param start_response: A callable accepting a status code, - a list of headers, and an optional exception context to - start the response. - """ - ctx = self.request_context(environ) - error = None - try: - try: - ctx.push() - response = self.full_dispatch_request() - except Exception as e: - error = e - response = self.handle_exception(e) - except: - error = sys.exc_info()[1] - raise - return response(environ, start_response) - finally: - if self.should_ignore_error(error): - error = None - ctx.auto_pop(error) - - def __call__(self, environ, start_response): - """The WSGI server calls the Flask application object as the - WSGI application. This calls :meth:`wsgi_app` which can be - wrapped to applying middleware.""" - return self.wsgi_app(environ, start_response) - - def __repr__(self): - return '<%s %r>' % ( - self.__class__.__name__, - self.name, - ) diff --git a/venv/lib/python3.6/site-packages/flask/blueprints.py b/venv/lib/python3.6/site-packages/flask/blueprints.py deleted file mode 100644 index 5ce5561..0000000 --- a/venv/lib/python3.6/site-packages/flask/blueprints.py +++ /dev/null @@ -1,448 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.blueprints - ~~~~~~~~~~~~~~~~ - - Blueprints are the recommended way to implement larger or more - pluggable applications in Flask 0.7 and later. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" -from functools import update_wrapper -from werkzeug.urls import url_join - -from .helpers import _PackageBoundObject, _endpoint_from_view_func - - -class BlueprintSetupState(object): - """Temporary holder object for registering a blueprint with the - application. An instance of this class is created by the - :meth:`~flask.Blueprint.make_setup_state` method and later passed - to all register callback functions. - """ - - def __init__(self, blueprint, app, options, first_registration): - #: a reference to the current application - self.app = app - - #: a reference to the blueprint that created this setup state. - self.blueprint = blueprint - - #: a dictionary with all options that were passed to the - #: :meth:`~flask.Flask.register_blueprint` method. - self.options = options - - #: as blueprints can be registered multiple times with the - #: application and not everything wants to be registered - #: multiple times on it, this attribute can be used to figure - #: out if the blueprint was registered in the past already. - self.first_registration = first_registration - - subdomain = self.options.get('subdomain') - if subdomain is None: - subdomain = self.blueprint.subdomain - - #: The subdomain that the blueprint should be active for, ``None`` - #: otherwise. - self.subdomain = subdomain - - url_prefix = self.options.get('url_prefix') - if url_prefix is None: - url_prefix = self.blueprint.url_prefix - #: The prefix that should be used for all URLs defined on the - #: blueprint. - self.url_prefix = url_prefix - - #: A dictionary with URL defaults that is added to each and every - #: URL that was defined with the blueprint. - self.url_defaults = dict(self.blueprint.url_values_defaults) - self.url_defaults.update(self.options.get('url_defaults', ())) - - def add_url_rule(self, rule, endpoint=None, view_func=None, **options): - """A helper method to register a rule (and optionally a view function) - to the application. The endpoint is automatically prefixed with the - blueprint's name. - """ - if self.url_prefix is not None: - if rule: - rule = '/'.join(( - self.url_prefix.rstrip('/'), rule.lstrip('/'))) - else: - rule = self.url_prefix - options.setdefault('subdomain', self.subdomain) - if endpoint is None: - endpoint = _endpoint_from_view_func(view_func) - defaults = self.url_defaults - if 'defaults' in options: - defaults = dict(defaults, **options.pop('defaults')) - self.app.add_url_rule(rule, '%s.%s' % (self.blueprint.name, endpoint), - view_func, defaults=defaults, **options) - - -class Blueprint(_PackageBoundObject): - """Represents a blueprint. A blueprint is an object that records - functions that will be called with the - :class:`~flask.blueprints.BlueprintSetupState` later to register functions - or other things on the main application. See :ref:`blueprints` for more - information. - - .. versionadded:: 0.7 - """ - - warn_on_modifications = False - _got_registered_once = False - - #: Blueprint local JSON decoder class to use. - #: Set to ``None`` to use the app's :class:`~flask.app.Flask.json_encoder`. - json_encoder = None - #: Blueprint local JSON decoder class to use. - #: Set to ``None`` to use the app's :class:`~flask.app.Flask.json_decoder`. - json_decoder = None - - # TODO remove the next three attrs when Sphinx :inherited-members: works - # https://github.com/sphinx-doc/sphinx/issues/741 - - #: The name of the package or module that this app belongs to. Do not - #: change this once it is set by the constructor. - import_name = None - - #: Location of the template files to be added to the template lookup. - #: ``None`` if templates should not be added. - template_folder = None - - #: Absolute path to the package on the filesystem. Used to look up - #: resources contained in the package. - root_path = None - - def __init__(self, name, import_name, static_folder=None, - static_url_path=None, template_folder=None, - url_prefix=None, subdomain=None, url_defaults=None, - root_path=None): - _PackageBoundObject.__init__(self, import_name, template_folder, - root_path=root_path) - self.name = name - self.url_prefix = url_prefix - self.subdomain = subdomain - self.static_folder = static_folder - self.static_url_path = static_url_path - self.deferred_functions = [] - if url_defaults is None: - url_defaults = {} - self.url_values_defaults = url_defaults - - def record(self, func): - """Registers a function that is called when the blueprint is - registered on the application. This function is called with the - state as argument as returned by the :meth:`make_setup_state` - method. - """ - if self._got_registered_once and self.warn_on_modifications: - from warnings import warn - warn(Warning('The blueprint was already registered once ' - 'but is getting modified now. These changes ' - 'will not show up.')) - self.deferred_functions.append(func) - - def record_once(self, func): - """Works like :meth:`record` but wraps the function in another - function that will ensure the function is only called once. If the - blueprint is registered a second time on the application, the - function passed is not called. - """ - def wrapper(state): - if state.first_registration: - func(state) - return self.record(update_wrapper(wrapper, func)) - - def make_setup_state(self, app, options, first_registration=False): - """Creates an instance of :meth:`~flask.blueprints.BlueprintSetupState` - object that is later passed to the register callback functions. - Subclasses can override this to return a subclass of the setup state. - """ - return BlueprintSetupState(self, app, options, first_registration) - - def register(self, app, options, first_registration=False): - """Called by :meth:`Flask.register_blueprint` to register all views - and callbacks registered on the blueprint with the application. Creates - a :class:`.BlueprintSetupState` and calls each :meth:`record` callback - with it. - - :param app: The application this blueprint is being registered with. - :param options: Keyword arguments forwarded from - :meth:`~Flask.register_blueprint`. - :param first_registration: Whether this is the first time this - blueprint has been registered on the application. - """ - self._got_registered_once = True - state = self.make_setup_state(app, options, first_registration) - - if self.has_static_folder: - state.add_url_rule( - self.static_url_path + '/', - view_func=self.send_static_file, endpoint='static' - ) - - for deferred in self.deferred_functions: - deferred(state) - - def route(self, rule, **options): - """Like :meth:`Flask.route` but for a blueprint. The endpoint for the - :func:`url_for` function is prefixed with the name of the blueprint. - """ - def decorator(f): - endpoint = options.pop("endpoint", f.__name__) - self.add_url_rule(rule, endpoint, f, **options) - return f - return decorator - - def add_url_rule(self, rule, endpoint=None, view_func=None, **options): - """Like :meth:`Flask.add_url_rule` but for a blueprint. The endpoint for - the :func:`url_for` function is prefixed with the name of the blueprint. - """ - if endpoint: - assert '.' not in endpoint, "Blueprint endpoints should not contain dots" - if view_func and hasattr(view_func, '__name__'): - assert '.' not in view_func.__name__, "Blueprint view function name should not contain dots" - self.record(lambda s: - s.add_url_rule(rule, endpoint, view_func, **options)) - - def endpoint(self, endpoint): - """Like :meth:`Flask.endpoint` but for a blueprint. This does not - prefix the endpoint with the blueprint name, this has to be done - explicitly by the user of this method. If the endpoint is prefixed - with a `.` it will be registered to the current blueprint, otherwise - it's an application independent endpoint. - """ - def decorator(f): - def register_endpoint(state): - state.app.view_functions[endpoint] = f - self.record_once(register_endpoint) - return f - return decorator - - def app_template_filter(self, name=None): - """Register a custom template filter, available application wide. Like - :meth:`Flask.template_filter` but for a blueprint. - - :param name: the optional name of the filter, otherwise the - function name will be used. - """ - def decorator(f): - self.add_app_template_filter(f, name=name) - return f - return decorator - - def add_app_template_filter(self, f, name=None): - """Register a custom template filter, available application wide. Like - :meth:`Flask.add_template_filter` but for a blueprint. Works exactly - like the :meth:`app_template_filter` decorator. - - :param name: the optional name of the filter, otherwise the - function name will be used. - """ - def register_template(state): - state.app.jinja_env.filters[name or f.__name__] = f - self.record_once(register_template) - - def app_template_test(self, name=None): - """Register a custom template test, available application wide. Like - :meth:`Flask.template_test` but for a blueprint. - - .. versionadded:: 0.10 - - :param name: the optional name of the test, otherwise the - function name will be used. - """ - def decorator(f): - self.add_app_template_test(f, name=name) - return f - return decorator - - def add_app_template_test(self, f, name=None): - """Register a custom template test, available application wide. Like - :meth:`Flask.add_template_test` but for a blueprint. Works exactly - like the :meth:`app_template_test` decorator. - - .. versionadded:: 0.10 - - :param name: the optional name of the test, otherwise the - function name will be used. - """ - def register_template(state): - state.app.jinja_env.tests[name or f.__name__] = f - self.record_once(register_template) - - def app_template_global(self, name=None): - """Register a custom template global, available application wide. Like - :meth:`Flask.template_global` but for a blueprint. - - .. versionadded:: 0.10 - - :param name: the optional name of the global, otherwise the - function name will be used. - """ - def decorator(f): - self.add_app_template_global(f, name=name) - return f - return decorator - - def add_app_template_global(self, f, name=None): - """Register a custom template global, available application wide. Like - :meth:`Flask.add_template_global` but for a blueprint. Works exactly - like the :meth:`app_template_global` decorator. - - .. versionadded:: 0.10 - - :param name: the optional name of the global, otherwise the - function name will be used. - """ - def register_template(state): - state.app.jinja_env.globals[name or f.__name__] = f - self.record_once(register_template) - - def before_request(self, f): - """Like :meth:`Flask.before_request` but for a blueprint. This function - is only executed before each request that is handled by a function of - that blueprint. - """ - self.record_once(lambda s: s.app.before_request_funcs - .setdefault(self.name, []).append(f)) - return f - - def before_app_request(self, f): - """Like :meth:`Flask.before_request`. Such a function is executed - before each request, even if outside of a blueprint. - """ - self.record_once(lambda s: s.app.before_request_funcs - .setdefault(None, []).append(f)) - return f - - def before_app_first_request(self, f): - """Like :meth:`Flask.before_first_request`. Such a function is - executed before the first request to the application. - """ - self.record_once(lambda s: s.app.before_first_request_funcs.append(f)) - return f - - def after_request(self, f): - """Like :meth:`Flask.after_request` but for a blueprint. This function - is only executed after each request that is handled by a function of - that blueprint. - """ - self.record_once(lambda s: s.app.after_request_funcs - .setdefault(self.name, []).append(f)) - return f - - def after_app_request(self, f): - """Like :meth:`Flask.after_request` but for a blueprint. Such a function - is executed after each request, even if outside of the blueprint. - """ - self.record_once(lambda s: s.app.after_request_funcs - .setdefault(None, []).append(f)) - return f - - def teardown_request(self, f): - """Like :meth:`Flask.teardown_request` but for a blueprint. This - function is only executed when tearing down requests handled by a - function of that blueprint. Teardown request functions are executed - when the request context is popped, even when no actual request was - performed. - """ - self.record_once(lambda s: s.app.teardown_request_funcs - .setdefault(self.name, []).append(f)) - return f - - def teardown_app_request(self, f): - """Like :meth:`Flask.teardown_request` but for a blueprint. Such a - function is executed when tearing down each request, even if outside of - the blueprint. - """ - self.record_once(lambda s: s.app.teardown_request_funcs - .setdefault(None, []).append(f)) - return f - - def context_processor(self, f): - """Like :meth:`Flask.context_processor` but for a blueprint. This - function is only executed for requests handled by a blueprint. - """ - self.record_once(lambda s: s.app.template_context_processors - .setdefault(self.name, []).append(f)) - return f - - def app_context_processor(self, f): - """Like :meth:`Flask.context_processor` but for a blueprint. Such a - function is executed each request, even if outside of the blueprint. - """ - self.record_once(lambda s: s.app.template_context_processors - .setdefault(None, []).append(f)) - return f - - def app_errorhandler(self, code): - """Like :meth:`Flask.errorhandler` but for a blueprint. This - handler is used for all requests, even if outside of the blueprint. - """ - def decorator(f): - self.record_once(lambda s: s.app.errorhandler(code)(f)) - return f - return decorator - - def url_value_preprocessor(self, f): - """Registers a function as URL value preprocessor for this - blueprint. It's called before the view functions are called and - can modify the url values provided. - """ - self.record_once(lambda s: s.app.url_value_preprocessors - .setdefault(self.name, []).append(f)) - return f - - def url_defaults(self, f): - """Callback function for URL defaults for this blueprint. It's called - with the endpoint and values and should update the values passed - in place. - """ - self.record_once(lambda s: s.app.url_default_functions - .setdefault(self.name, []).append(f)) - return f - - def app_url_value_preprocessor(self, f): - """Same as :meth:`url_value_preprocessor` but application wide. - """ - self.record_once(lambda s: s.app.url_value_preprocessors - .setdefault(None, []).append(f)) - return f - - def app_url_defaults(self, f): - """Same as :meth:`url_defaults` but application wide. - """ - self.record_once(lambda s: s.app.url_default_functions - .setdefault(None, []).append(f)) - return f - - def errorhandler(self, code_or_exception): - """Registers an error handler that becomes active for this blueprint - only. Please be aware that routing does not happen local to a - blueprint so an error handler for 404 usually is not handled by - a blueprint unless it is caused inside a view function. Another - special case is the 500 internal server error which is always looked - up from the application. - - Otherwise works as the :meth:`~flask.Flask.errorhandler` decorator - of the :class:`~flask.Flask` object. - """ - def decorator(f): - self.record_once(lambda s: s.app._register_error_handler( - self.name, code_or_exception, f)) - return f - return decorator - - def register_error_handler(self, code_or_exception, f): - """Non-decorator version of the :meth:`errorhandler` error attach - function, akin to the :meth:`~flask.Flask.register_error_handler` - application-wide function of the :class:`~flask.Flask` object but - for error handlers limited to this blueprint. - - .. versionadded:: 0.11 - """ - self.record_once(lambda s: s.app._register_error_handler( - self.name, code_or_exception, f)) diff --git a/venv/lib/python3.6/site-packages/flask/cli.py b/venv/lib/python3.6/site-packages/flask/cli.py deleted file mode 100644 index efc1733..0000000 --- a/venv/lib/python3.6/site-packages/flask/cli.py +++ /dev/null @@ -1,898 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.cli - ~~~~~~~~~ - - A simple command line application to run flask apps. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -from __future__ import print_function - -import ast -import inspect -import os -import re -import ssl -import sys -import traceback -from functools import update_wrapper -from operator import attrgetter -from threading import Lock, Thread - -import click -from werkzeug.utils import import_string - -from . import __version__ -from ._compat import getargspec, iteritems, reraise, text_type -from .globals import current_app -from .helpers import get_debug_flag, get_env, get_load_dotenv - -try: - import dotenv -except ImportError: - dotenv = None - - -class NoAppException(click.UsageError): - """Raised if an application cannot be found or loaded.""" - - -def find_best_app(script_info, module): - """Given a module instance this tries to find the best possible - application in the module or raises an exception. - """ - from . import Flask - - # Search for the most common names first. - for attr_name in ('app', 'application'): - app = getattr(module, attr_name, None) - - if isinstance(app, Flask): - return app - - # Otherwise find the only object that is a Flask instance. - matches = [ - v for k, v in iteritems(module.__dict__) if isinstance(v, Flask) - ] - - if len(matches) == 1: - return matches[0] - elif len(matches) > 1: - raise NoAppException( - 'Detected multiple Flask applications in module "{module}". Use ' - '"FLASK_APP={module}:name" to specify the correct ' - 'one.'.format(module=module.__name__) - ) - - # Search for app factory functions. - for attr_name in ('create_app', 'make_app'): - app_factory = getattr(module, attr_name, None) - - if inspect.isfunction(app_factory): - try: - app = call_factory(script_info, app_factory) - - if isinstance(app, Flask): - return app - except TypeError: - if not _called_with_wrong_args(app_factory): - raise - raise NoAppException( - 'Detected factory "{factory}" in module "{module}", but ' - 'could not call it without arguments. Use ' - '"FLASK_APP=\'{module}:{factory}(args)\'" to specify ' - 'arguments.'.format( - factory=attr_name, module=module.__name__ - ) - ) - - raise NoAppException( - 'Failed to find Flask application or factory in module "{module}". ' - 'Use "FLASK_APP={module}:name to specify one.'.format( - module=module.__name__ - ) - ) - - -def call_factory(script_info, app_factory, arguments=()): - """Takes an app factory, a ``script_info` object and optionally a tuple - of arguments. Checks for the existence of a script_info argument and calls - the app_factory depending on that and the arguments provided. - """ - args_spec = getargspec(app_factory) - arg_names = args_spec.args - arg_defaults = args_spec.defaults - - if 'script_info' in arg_names: - return app_factory(*arguments, script_info=script_info) - elif arguments: - return app_factory(*arguments) - elif not arguments and len(arg_names) == 1 and arg_defaults is None: - return app_factory(script_info) - - return app_factory() - - -def _called_with_wrong_args(factory): - """Check whether calling a function raised a ``TypeError`` because - the call failed or because something in the factory raised the - error. - - :param factory: the factory function that was called - :return: true if the call failed - """ - tb = sys.exc_info()[2] - - try: - while tb is not None: - if tb.tb_frame.f_code is factory.__code__: - # in the factory, it was called successfully - return False - - tb = tb.tb_next - - # didn't reach the factory - return True - finally: - del tb - - -def find_app_by_string(script_info, module, app_name): - """Checks if the given string is a variable name or a function. If it is a - function, it checks for specified arguments and whether it takes a - ``script_info`` argument and calls the function with the appropriate - arguments. - """ - from flask import Flask - match = re.match(r'^ *([^ ()]+) *(?:\((.*?) *,? *\))? *$', app_name) - - if not match: - raise NoAppException( - '"{name}" is not a valid variable name or function ' - 'expression.'.format(name=app_name) - ) - - name, args = match.groups() - - try: - attr = getattr(module, name) - except AttributeError as e: - raise NoAppException(e.args[0]) - - if inspect.isfunction(attr): - if args: - try: - args = ast.literal_eval('({args},)'.format(args=args)) - except (ValueError, SyntaxError)as e: - raise NoAppException( - 'Could not parse the arguments in ' - '"{app_name}".'.format(e=e, app_name=app_name) - ) - else: - args = () - - try: - app = call_factory(script_info, attr, args) - except TypeError as e: - if not _called_with_wrong_args(attr): - raise - - raise NoAppException( - '{e}\nThe factory "{app_name}" in module "{module}" could not ' - 'be called with the specified arguments.'.format( - e=e, app_name=app_name, module=module.__name__ - ) - ) - else: - app = attr - - if isinstance(app, Flask): - return app - - raise NoAppException( - 'A valid Flask application was not obtained from ' - '"{module}:{app_name}".'.format( - module=module.__name__, app_name=app_name - ) - ) - - -def prepare_import(path): - """Given a filename this will try to calculate the python path, add it - to the search path and return the actual module name that is expected. - """ - path = os.path.realpath(path) - - if os.path.splitext(path)[1] == '.py': - path = os.path.splitext(path)[0] - - if os.path.basename(path) == '__init__': - path = os.path.dirname(path) - - module_name = [] - - # move up until outside package structure (no __init__.py) - while True: - path, name = os.path.split(path) - module_name.append(name) - - if not os.path.exists(os.path.join(path, '__init__.py')): - break - - if sys.path[0] != path: - sys.path.insert(0, path) - - return '.'.join(module_name[::-1]) - - -def locate_app(script_info, module_name, app_name, raise_if_not_found=True): - __traceback_hide__ = True - - try: - __import__(module_name) - except ImportError: - # Reraise the ImportError if it occurred within the imported module. - # Determine this by checking whether the trace has a depth > 1. - if sys.exc_info()[-1].tb_next: - raise NoAppException( - 'While importing "{name}", an ImportError was raised:' - '\n\n{tb}'.format(name=module_name, tb=traceback.format_exc()) - ) - elif raise_if_not_found: - raise NoAppException( - 'Could not import "{name}".'.format(name=module_name) - ) - else: - return - - module = sys.modules[module_name] - - if app_name is None: - return find_best_app(script_info, module) - else: - return find_app_by_string(script_info, module, app_name) - - -def get_version(ctx, param, value): - if not value or ctx.resilient_parsing: - return - message = 'Flask %(version)s\nPython %(python_version)s' - click.echo(message % { - 'version': __version__, - 'python_version': sys.version, - }, color=ctx.color) - ctx.exit() - - -version_option = click.Option( - ['--version'], - help='Show the flask version', - expose_value=False, - callback=get_version, - is_flag=True, - is_eager=True -) - - -class DispatchingApp(object): - """Special application that dispatches to a Flask application which - is imported by name in a background thread. If an error happens - it is recorded and shown as part of the WSGI handling which in case - of the Werkzeug debugger means that it shows up in the browser. - """ - - def __init__(self, loader, use_eager_loading=False): - self.loader = loader - self._app = None - self._lock = Lock() - self._bg_loading_exc_info = None - if use_eager_loading: - self._load_unlocked() - else: - self._load_in_background() - - def _load_in_background(self): - def _load_app(): - __traceback_hide__ = True - with self._lock: - try: - self._load_unlocked() - except Exception: - self._bg_loading_exc_info = sys.exc_info() - t = Thread(target=_load_app, args=()) - t.start() - - def _flush_bg_loading_exception(self): - __traceback_hide__ = True - exc_info = self._bg_loading_exc_info - if exc_info is not None: - self._bg_loading_exc_info = None - reraise(*exc_info) - - def _load_unlocked(self): - __traceback_hide__ = True - self._app = rv = self.loader() - self._bg_loading_exc_info = None - return rv - - def __call__(self, environ, start_response): - __traceback_hide__ = True - if self._app is not None: - return self._app(environ, start_response) - self._flush_bg_loading_exception() - with self._lock: - if self._app is not None: - rv = self._app - else: - rv = self._load_unlocked() - return rv(environ, start_response) - - -class ScriptInfo(object): - """Help object to deal with Flask applications. This is usually not - necessary to interface with as it's used internally in the dispatching - to click. In future versions of Flask this object will most likely play - a bigger role. Typically it's created automatically by the - :class:`FlaskGroup` but you can also manually create it and pass it - onwards as click object. - """ - - def __init__(self, app_import_path=None, create_app=None): - #: Optionally the import path for the Flask application. - self.app_import_path = app_import_path or os.environ.get('FLASK_APP') - #: Optionally a function that is passed the script info to create - #: the instance of the application. - self.create_app = create_app - #: A dictionary with arbitrary data that can be associated with - #: this script info. - self.data = {} - self._loaded_app = None - - def load_app(self): - """Loads the Flask app (if not yet loaded) and returns it. Calling - this multiple times will just result in the already loaded app to - be returned. - """ - __traceback_hide__ = True - - if self._loaded_app is not None: - return self._loaded_app - - app = None - - if self.create_app is not None: - app = call_factory(self, self.create_app) - else: - if self.app_import_path: - path, name = (self.app_import_path.split(':', 1) + [None])[:2] - import_name = prepare_import(path) - app = locate_app(self, import_name, name) - else: - for path in ('wsgi.py', 'app.py'): - import_name = prepare_import(path) - app = locate_app(self, import_name, None, - raise_if_not_found=False) - - if app: - break - - if not app: - raise NoAppException( - 'Could not locate a Flask application. You did not provide ' - 'the "FLASK_APP" environment variable, and a "wsgi.py" or ' - '"app.py" module was not found in the current directory.' - ) - - debug = get_debug_flag() - - # Update the app's debug flag through the descriptor so that other - # values repopulate as well. - if debug is not None: - app.debug = debug - - self._loaded_app = app - return app - - -pass_script_info = click.make_pass_decorator(ScriptInfo, ensure=True) - - -def with_appcontext(f): - """Wraps a callback so that it's guaranteed to be executed with the - script's application context. If callbacks are registered directly - to the ``app.cli`` object then they are wrapped with this function - by default unless it's disabled. - """ - @click.pass_context - def decorator(__ctx, *args, **kwargs): - with __ctx.ensure_object(ScriptInfo).load_app().app_context(): - return __ctx.invoke(f, *args, **kwargs) - return update_wrapper(decorator, f) - - -class AppGroup(click.Group): - """This works similar to a regular click :class:`~click.Group` but it - changes the behavior of the :meth:`command` decorator so that it - automatically wraps the functions in :func:`with_appcontext`. - - Not to be confused with :class:`FlaskGroup`. - """ - - def command(self, *args, **kwargs): - """This works exactly like the method of the same name on a regular - :class:`click.Group` but it wraps callbacks in :func:`with_appcontext` - unless it's disabled by passing ``with_appcontext=False``. - """ - wrap_for_ctx = kwargs.pop('with_appcontext', True) - def decorator(f): - if wrap_for_ctx: - f = with_appcontext(f) - return click.Group.command(self, *args, **kwargs)(f) - return decorator - - def group(self, *args, **kwargs): - """This works exactly like the method of the same name on a regular - :class:`click.Group` but it defaults the group class to - :class:`AppGroup`. - """ - kwargs.setdefault('cls', AppGroup) - return click.Group.group(self, *args, **kwargs) - - -class FlaskGroup(AppGroup): - """Special subclass of the :class:`AppGroup` group that supports - loading more commands from the configured Flask app. Normally a - developer does not have to interface with this class but there are - some very advanced use cases for which it makes sense to create an - instance of this. - - For information as of why this is useful see :ref:`custom-scripts`. - - :param add_default_commands: if this is True then the default run and - shell commands wil be added. - :param add_version_option: adds the ``--version`` option. - :param create_app: an optional callback that is passed the script info and - returns the loaded app. - :param load_dotenv: Load the nearest :file:`.env` and :file:`.flaskenv` - files to set environment variables. Will also change the working - directory to the directory containing the first file found. - - .. versionchanged:: 1.0 - If installed, python-dotenv will be used to load environment variables - from :file:`.env` and :file:`.flaskenv` files. - """ - - def __init__(self, add_default_commands=True, create_app=None, - add_version_option=True, load_dotenv=True, **extra): - params = list(extra.pop('params', None) or ()) - - if add_version_option: - params.append(version_option) - - AppGroup.__init__(self, params=params, **extra) - self.create_app = create_app - self.load_dotenv = load_dotenv - - if add_default_commands: - self.add_command(run_command) - self.add_command(shell_command) - self.add_command(routes_command) - - self._loaded_plugin_commands = False - - def _load_plugin_commands(self): - if self._loaded_plugin_commands: - return - try: - import pkg_resources - except ImportError: - self._loaded_plugin_commands = True - return - - for ep in pkg_resources.iter_entry_points('flask.commands'): - self.add_command(ep.load(), ep.name) - self._loaded_plugin_commands = True - - def get_command(self, ctx, name): - self._load_plugin_commands() - - # We load built-in commands first as these should always be the - # same no matter what the app does. If the app does want to - # override this it needs to make a custom instance of this group - # and not attach the default commands. - # - # This also means that the script stays functional in case the - # application completely fails. - rv = AppGroup.get_command(self, ctx, name) - if rv is not None: - return rv - - info = ctx.ensure_object(ScriptInfo) - try: - rv = info.load_app().cli.get_command(ctx, name) - if rv is not None: - return rv - except NoAppException: - pass - - def list_commands(self, ctx): - self._load_plugin_commands() - - # The commands available is the list of both the application (if - # available) plus the builtin commands. - rv = set(click.Group.list_commands(self, ctx)) - info = ctx.ensure_object(ScriptInfo) - try: - rv.update(info.load_app().cli.list_commands(ctx)) - except Exception: - # Here we intentionally swallow all exceptions as we don't - # want the help page to break if the app does not exist. - # If someone attempts to use the command we try to create - # the app again and this will give us the error. - # However, we will not do so silently because that would confuse - # users. - traceback.print_exc() - return sorted(rv) - - def main(self, *args, **kwargs): - # Set a global flag that indicates that we were invoked from the - # command line interface. This is detected by Flask.run to make the - # call into a no-op. This is necessary to avoid ugly errors when the - # script that is loaded here also attempts to start a server. - os.environ['FLASK_RUN_FROM_CLI'] = 'true' - - if get_load_dotenv(self.load_dotenv): - load_dotenv() - - obj = kwargs.get('obj') - - if obj is None: - obj = ScriptInfo(create_app=self.create_app) - - kwargs['obj'] = obj - kwargs.setdefault('auto_envvar_prefix', 'FLASK') - return super(FlaskGroup, self).main(*args, **kwargs) - - -def _path_is_ancestor(path, other): - """Take ``other`` and remove the length of ``path`` from it. Then join it - to ``path``. If it is the original value, ``path`` is an ancestor of - ``other``.""" - return os.path.join(path, other[len(path):].lstrip(os.sep)) == other - - -def load_dotenv(path=None): - """Load "dotenv" files in order of precedence to set environment variables. - - If an env var is already set it is not overwritten, so earlier files in the - list are preferred over later files. - - Changes the current working directory to the location of the first file - found, with the assumption that it is in the top level project directory - and will be where the Python path should import local packages from. - - This is a no-op if `python-dotenv`_ is not installed. - - .. _python-dotenv: https://github.com/theskumar/python-dotenv#readme - - :param path: Load the file at this location instead of searching. - :return: ``True`` if a file was loaded. - - .. versionadded:: 1.0 - """ - if dotenv is None: - if path or os.path.exists('.env') or os.path.exists('.flaskenv'): - click.secho( - ' * Tip: There are .env files present.' - ' Do "pip install python-dotenv" to use them.', - fg='yellow') - return - - if path is not None: - return dotenv.load_dotenv(path) - - new_dir = None - - for name in ('.env', '.flaskenv'): - path = dotenv.find_dotenv(name, usecwd=True) - - if not path: - continue - - if new_dir is None: - new_dir = os.path.dirname(path) - - dotenv.load_dotenv(path) - - if new_dir and os.getcwd() != new_dir: - os.chdir(new_dir) - - return new_dir is not None # at least one file was located and loaded - - -def show_server_banner(env, debug, app_import_path, eager_loading): - """Show extra startup messages the first time the server is run, - ignoring the reloader. - """ - if os.environ.get('WERKZEUG_RUN_MAIN') == 'true': - return - - if app_import_path is not None: - message = ' * Serving Flask app "{0}"'.format(app_import_path) - - if not eager_loading: - message += ' (lazy loading)' - - click.echo(message) - - click.echo(' * Environment: {0}'.format(env)) - - if env == 'production': - click.secho( - ' WARNING: Do not use the development server in a production' - ' environment.', fg='red') - click.secho(' Use a production WSGI server instead.', dim=True) - - if debug is not None: - click.echo(' * Debug mode: {0}'.format('on' if debug else 'off')) - - -class CertParamType(click.ParamType): - """Click option type for the ``--cert`` option. Allows either an - existing file, the string ``'adhoc'``, or an import for a - :class:`~ssl.SSLContext` object. - """ - - name = 'path' - - def __init__(self): - self.path_type = click.Path( - exists=True, dir_okay=False, resolve_path=True) - - def convert(self, value, param, ctx): - try: - return self.path_type(value, param, ctx) - except click.BadParameter: - value = click.STRING(value, param, ctx).lower() - - if value == 'adhoc': - try: - import OpenSSL - except ImportError: - raise click.BadParameter( - 'Using ad-hoc certificates requires pyOpenSSL.', - ctx, param) - - return value - - obj = import_string(value, silent=True) - - if sys.version_info < (2, 7): - if obj: - return obj - else: - if isinstance(obj, ssl.SSLContext): - return obj - - raise - - -def _validate_key(ctx, param, value): - """The ``--key`` option must be specified when ``--cert`` is a file. - Modifies the ``cert`` param to be a ``(cert, key)`` pair if needed. - """ - cert = ctx.params.get('cert') - is_adhoc = cert == 'adhoc' - - if sys.version_info < (2, 7): - is_context = cert and not isinstance(cert, (text_type, bytes)) - else: - is_context = isinstance(cert, ssl.SSLContext) - - if value is not None: - if is_adhoc: - raise click.BadParameter( - 'When "--cert" is "adhoc", "--key" is not used.', - ctx, param) - - if is_context: - raise click.BadParameter( - 'When "--cert" is an SSLContext object, "--key is not used.', - ctx, param) - - if not cert: - raise click.BadParameter( - '"--cert" must also be specified.', - ctx, param) - - ctx.params['cert'] = cert, value - - else: - if cert and not (is_adhoc or is_context): - raise click.BadParameter( - 'Required when using "--cert".', - ctx, param) - - return value - - -@click.command('run', short_help='Runs a development server.') -@click.option('--host', '-h', default='127.0.0.1', - help='The interface to bind to.') -@click.option('--port', '-p', default=5000, - help='The port to bind to.') -@click.option('--cert', type=CertParamType(), - help='Specify a certificate file to use HTTPS.') -@click.option('--key', - type=click.Path(exists=True, dir_okay=False, resolve_path=True), - callback=_validate_key, expose_value=False, - help='The key file to use when specifying a certificate.') -@click.option('--reload/--no-reload', default=None, - help='Enable or disable the reloader. By default the reloader ' - 'is active if debug is enabled.') -@click.option('--debugger/--no-debugger', default=None, - help='Enable or disable the debugger. By default the debugger ' - 'is active if debug is enabled.') -@click.option('--eager-loading/--lazy-loader', default=None, - help='Enable or disable eager loading. By default eager ' - 'loading is enabled if the reloader is disabled.') -@click.option('--with-threads/--without-threads', default=True, - help='Enable or disable multithreading.') -@pass_script_info -def run_command(info, host, port, reload, debugger, eager_loading, - with_threads, cert): - """Run a local development server. - - This server is for development purposes only. It does not provide - the stability, security, or performance of production WSGI servers. - - The reloader and debugger are enabled by default if - FLASK_ENV=development or FLASK_DEBUG=1. - """ - debug = get_debug_flag() - - if reload is None: - reload = debug - - if debugger is None: - debugger = debug - - if eager_loading is None: - eager_loading = not reload - - show_server_banner(get_env(), debug, info.app_import_path, eager_loading) - app = DispatchingApp(info.load_app, use_eager_loading=eager_loading) - - from werkzeug.serving import run_simple - run_simple(host, port, app, use_reloader=reload, use_debugger=debugger, - threaded=with_threads, ssl_context=cert) - - -@click.command('shell', short_help='Runs a shell in the app context.') -@with_appcontext -def shell_command(): - """Runs an interactive Python shell in the context of a given - Flask application. The application will populate the default - namespace of this shell according to it's configuration. - - This is useful for executing small snippets of management code - without having to manually configure the application. - """ - import code - from flask.globals import _app_ctx_stack - app = _app_ctx_stack.top.app - banner = 'Python %s on %s\nApp: %s [%s]\nInstance: %s' % ( - sys.version, - sys.platform, - app.import_name, - app.env, - app.instance_path, - ) - ctx = {} - - # Support the regular Python interpreter startup script if someone - # is using it. - startup = os.environ.get('PYTHONSTARTUP') - if startup and os.path.isfile(startup): - with open(startup, 'r') as f: - eval(compile(f.read(), startup, 'exec'), ctx) - - ctx.update(app.make_shell_context()) - - code.interact(banner=banner, local=ctx) - - -@click.command('routes', short_help='Show the routes for the app.') -@click.option( - '--sort', '-s', - type=click.Choice(('endpoint', 'methods', 'rule', 'match')), - default='endpoint', - help=( - 'Method to sort routes by. "match" is the order that Flask will match ' - 'routes when dispatching a request.' - ) -) -@click.option( - '--all-methods', - is_flag=True, - help="Show HEAD and OPTIONS methods." -) -@with_appcontext -def routes_command(sort, all_methods): - """Show all registered routes with endpoints and methods.""" - - rules = list(current_app.url_map.iter_rules()) - if not rules: - click.echo('No routes were registered.') - return - - ignored_methods = set(() if all_methods else ('HEAD', 'OPTIONS')) - - if sort in ('endpoint', 'rule'): - rules = sorted(rules, key=attrgetter(sort)) - elif sort == 'methods': - rules = sorted(rules, key=lambda rule: sorted(rule.methods)) - - rule_methods = [ - ', '.join(sorted(rule.methods - ignored_methods)) for rule in rules - ] - - headers = ('Endpoint', 'Methods', 'Rule') - widths = ( - max(len(rule.endpoint) for rule in rules), - max(len(methods) for methods in rule_methods), - max(len(rule.rule) for rule in rules), - ) - widths = [max(len(h), w) for h, w in zip(headers, widths)] - row = '{{0:<{0}}} {{1:<{1}}} {{2:<{2}}}'.format(*widths) - - click.echo(row.format(*headers).strip()) - click.echo(row.format(*('-' * width for width in widths))) - - for rule, methods in zip(rules, rule_methods): - click.echo(row.format(rule.endpoint, methods, rule.rule).rstrip()) - - -cli = FlaskGroup(help="""\ -A general utility script for Flask applications. - -Provides commands from Flask, extensions, and the application. Loads the -application defined in the FLASK_APP environment variable, or from a wsgi.py -file. Setting the FLASK_ENV environment variable to 'development' will enable -debug mode. - -\b - {prefix}{cmd} FLASK_APP=hello.py - {prefix}{cmd} FLASK_ENV=development - {prefix}flask run -""".format( - cmd='export' if os.name == 'posix' else 'set', - prefix='$ ' if os.name == 'posix' else '> ' -)) - - -def main(as_module=False): - args = sys.argv[1:] - - if as_module: - this_module = 'flask' - - if sys.version_info < (2, 7): - this_module += '.cli' - - name = 'python -m ' + this_module - - # Python rewrites "python -m flask" to the path to the file in argv. - # Restore the original command so that the reloader works. - sys.argv = ['-m', this_module] + args - else: - name = None - - cli.main(args=args, prog_name=name) - - -if __name__ == '__main__': - main(as_module=True) diff --git a/venv/lib/python3.6/site-packages/flask/config.py b/venv/lib/python3.6/site-packages/flask/config.py deleted file mode 100644 index d6074ba..0000000 --- a/venv/lib/python3.6/site-packages/flask/config.py +++ /dev/null @@ -1,265 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.config - ~~~~~~~~~~~~ - - Implements the configuration related objects. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import os -import types -import errno - -from werkzeug.utils import import_string -from ._compat import string_types, iteritems -from . import json - - -class ConfigAttribute(object): - """Makes an attribute forward to the config""" - - def __init__(self, name, get_converter=None): - self.__name__ = name - self.get_converter = get_converter - - def __get__(self, obj, type=None): - if obj is None: - return self - rv = obj.config[self.__name__] - if self.get_converter is not None: - rv = self.get_converter(rv) - return rv - - def __set__(self, obj, value): - obj.config[self.__name__] = value - - -class Config(dict): - """Works exactly like a dict but provides ways to fill it from files - or special dictionaries. There are two common patterns to populate the - config. - - Either you can fill the config from a config file:: - - app.config.from_pyfile('yourconfig.cfg') - - Or alternatively you can define the configuration options in the - module that calls :meth:`from_object` or provide an import path to - a module that should be loaded. It is also possible to tell it to - use the same module and with that provide the configuration values - just before the call:: - - DEBUG = True - SECRET_KEY = 'development key' - app.config.from_object(__name__) - - In both cases (loading from any Python file or loading from modules), - only uppercase keys are added to the config. This makes it possible to use - lowercase values in the config file for temporary values that are not added - to the config or to define the config keys in the same file that implements - the application. - - Probably the most interesting way to load configurations is from an - environment variable pointing to a file:: - - app.config.from_envvar('YOURAPPLICATION_SETTINGS') - - In this case before launching the application you have to set this - environment variable to the file you want to use. On Linux and OS X - use the export statement:: - - export YOURAPPLICATION_SETTINGS='/path/to/config/file' - - On windows use `set` instead. - - :param root_path: path to which files are read relative from. When the - config object is created by the application, this is - the application's :attr:`~flask.Flask.root_path`. - :param defaults: an optional dictionary of default values - """ - - def __init__(self, root_path, defaults=None): - dict.__init__(self, defaults or {}) - self.root_path = root_path - - def from_envvar(self, variable_name, silent=False): - """Loads a configuration from an environment variable pointing to - a configuration file. This is basically just a shortcut with nicer - error messages for this line of code:: - - app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS']) - - :param variable_name: name of the environment variable - :param silent: set to ``True`` if you want silent failure for missing - files. - :return: bool. ``True`` if able to load config, ``False`` otherwise. - """ - rv = os.environ.get(variable_name) - if not rv: - if silent: - return False - raise RuntimeError('The environment variable %r is not set ' - 'and as such configuration could not be ' - 'loaded. Set this variable and make it ' - 'point to a configuration file' % - variable_name) - return self.from_pyfile(rv, silent=silent) - - def from_pyfile(self, filename, silent=False): - """Updates the values in the config from a Python file. This function - behaves as if the file was imported as module with the - :meth:`from_object` function. - - :param filename: the filename of the config. This can either be an - absolute filename or a filename relative to the - root path. - :param silent: set to ``True`` if you want silent failure for missing - files. - - .. versionadded:: 0.7 - `silent` parameter. - """ - filename = os.path.join(self.root_path, filename) - d = types.ModuleType('config') - d.__file__ = filename - try: - with open(filename, mode='rb') as config_file: - exec(compile(config_file.read(), filename, 'exec'), d.__dict__) - except IOError as e: - if silent and e.errno in ( - errno.ENOENT, errno.EISDIR, errno.ENOTDIR - ): - return False - e.strerror = 'Unable to load configuration file (%s)' % e.strerror - raise - self.from_object(d) - return True - - def from_object(self, obj): - """Updates the values from the given object. An object can be of one - of the following two types: - - - a string: in this case the object with that name will be imported - - an actual object reference: that object is used directly - - Objects are usually either modules or classes. :meth:`from_object` - loads only the uppercase attributes of the module/class. A ``dict`` - object will not work with :meth:`from_object` because the keys of a - ``dict`` are not attributes of the ``dict`` class. - - Example of module-based configuration:: - - app.config.from_object('yourapplication.default_config') - from yourapplication import default_config - app.config.from_object(default_config) - - You should not use this function to load the actual configuration but - rather configuration defaults. The actual config should be loaded - with :meth:`from_pyfile` and ideally from a location not within the - package because the package might be installed system wide. - - See :ref:`config-dev-prod` for an example of class-based configuration - using :meth:`from_object`. - - :param obj: an import name or object - """ - if isinstance(obj, string_types): - obj = import_string(obj) - for key in dir(obj): - if key.isupper(): - self[key] = getattr(obj, key) - - def from_json(self, filename, silent=False): - """Updates the values in the config from a JSON file. This function - behaves as if the JSON object was a dictionary and passed to the - :meth:`from_mapping` function. - - :param filename: the filename of the JSON file. This can either be an - absolute filename or a filename relative to the - root path. - :param silent: set to ``True`` if you want silent failure for missing - files. - - .. versionadded:: 0.11 - """ - filename = os.path.join(self.root_path, filename) - - try: - with open(filename) as json_file: - obj = json.loads(json_file.read()) - except IOError as e: - if silent and e.errno in (errno.ENOENT, errno.EISDIR): - return False - e.strerror = 'Unable to load configuration file (%s)' % e.strerror - raise - return self.from_mapping(obj) - - def from_mapping(self, *mapping, **kwargs): - """Updates the config like :meth:`update` ignoring items with non-upper - keys. - - .. versionadded:: 0.11 - """ - mappings = [] - if len(mapping) == 1: - if hasattr(mapping[0], 'items'): - mappings.append(mapping[0].items()) - else: - mappings.append(mapping[0]) - elif len(mapping) > 1: - raise TypeError( - 'expected at most 1 positional argument, got %d' % len(mapping) - ) - mappings.append(kwargs.items()) - for mapping in mappings: - for (key, value) in mapping: - if key.isupper(): - self[key] = value - return True - - def get_namespace(self, namespace, lowercase=True, trim_namespace=True): - """Returns a dictionary containing a subset of configuration options - that match the specified namespace/prefix. Example usage:: - - app.config['IMAGE_STORE_TYPE'] = 'fs' - app.config['IMAGE_STORE_PATH'] = '/var/app/images' - app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com' - image_store_config = app.config.get_namespace('IMAGE_STORE_') - - The resulting dictionary `image_store_config` would look like:: - - { - 'type': 'fs', - 'path': '/var/app/images', - 'base_url': 'http://img.website.com' - } - - This is often useful when configuration options map directly to - keyword arguments in functions or class constructors. - - :param namespace: a configuration namespace - :param lowercase: a flag indicating if the keys of the resulting - dictionary should be lowercase - :param trim_namespace: a flag indicating if the keys of the resulting - dictionary should not include the namespace - - .. versionadded:: 0.11 - """ - rv = {} - for k, v in iteritems(self): - if not k.startswith(namespace): - continue - if trim_namespace: - key = k[len(namespace):] - else: - key = k - if lowercase: - key = key.lower() - rv[key] = v - return rv - - def __repr__(self): - return '<%s %s>' % (self.__class__.__name__, dict.__repr__(self)) diff --git a/venv/lib/python3.6/site-packages/flask/ctx.py b/venv/lib/python3.6/site-packages/flask/ctx.py deleted file mode 100644 index 8472c92..0000000 --- a/venv/lib/python3.6/site-packages/flask/ctx.py +++ /dev/null @@ -1,457 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.ctx - ~~~~~~~~~ - - Implements the objects required to keep the context. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import sys -from functools import update_wrapper - -from werkzeug.exceptions import HTTPException - -from .globals import _request_ctx_stack, _app_ctx_stack -from .signals import appcontext_pushed, appcontext_popped -from ._compat import BROKEN_PYPY_CTXMGR_EXIT, reraise - - -# a singleton sentinel value for parameter defaults -_sentinel = object() - - -class _AppCtxGlobals(object): - """A plain object. Used as a namespace for storing data during an - application context. - - Creating an app context automatically creates this object, which is - made available as the :data:`g` proxy. - - .. describe:: 'key' in g - - Check whether an attribute is present. - - .. versionadded:: 0.10 - - .. describe:: iter(g) - - Return an iterator over the attribute names. - - .. versionadded:: 0.10 - """ - - def get(self, name, default=None): - """Get an attribute by name, or a default value. Like - :meth:`dict.get`. - - :param name: Name of attribute to get. - :param default: Value to return if the attribute is not present. - - .. versionadded:: 0.10 - """ - return self.__dict__.get(name, default) - - def pop(self, name, default=_sentinel): - """Get and remove an attribute by name. Like :meth:`dict.pop`. - - :param name: Name of attribute to pop. - :param default: Value to return if the attribute is not present, - instead of raise a ``KeyError``. - - .. versionadded:: 0.11 - """ - if default is _sentinel: - return self.__dict__.pop(name) - else: - return self.__dict__.pop(name, default) - - def setdefault(self, name, default=None): - """Get the value of an attribute if it is present, otherwise - set and return a default value. Like :meth:`dict.setdefault`. - - :param name: Name of attribute to get. - :param: default: Value to set and return if the attribute is not - present. - - .. versionadded:: 0.11 - """ - return self.__dict__.setdefault(name, default) - - def __contains__(self, item): - return item in self.__dict__ - - def __iter__(self): - return iter(self.__dict__) - - def __repr__(self): - top = _app_ctx_stack.top - if top is not None: - return '' % top.app.name - return object.__repr__(self) - - -def after_this_request(f): - """Executes a function after this request. This is useful to modify - response objects. The function is passed the response object and has - to return the same or a new one. - - Example:: - - @app.route('/') - def index(): - @after_this_request - def add_header(response): - response.headers['X-Foo'] = 'Parachute' - return response - return 'Hello World!' - - This is more useful if a function other than the view function wants to - modify a response. For instance think of a decorator that wants to add - some headers without converting the return value into a response object. - - .. versionadded:: 0.9 - """ - _request_ctx_stack.top._after_request_functions.append(f) - return f - - -def copy_current_request_context(f): - """A helper function that decorates a function to retain the current - request context. This is useful when working with greenlets. The moment - the function is decorated a copy of the request context is created and - then pushed when the function is called. - - Example:: - - import gevent - from flask import copy_current_request_context - - @app.route('/') - def index(): - @copy_current_request_context - def do_some_work(): - # do some work here, it can access flask.request like you - # would otherwise in the view function. - ... - gevent.spawn(do_some_work) - return 'Regular response' - - .. versionadded:: 0.10 - """ - top = _request_ctx_stack.top - if top is None: - raise RuntimeError('This decorator can only be used at local scopes ' - 'when a request context is on the stack. For instance within ' - 'view functions.') - reqctx = top.copy() - def wrapper(*args, **kwargs): - with reqctx: - return f(*args, **kwargs) - return update_wrapper(wrapper, f) - - -def has_request_context(): - """If you have code that wants to test if a request context is there or - not this function can be used. For instance, you may want to take advantage - of request information if the request object is available, but fail - silently if it is unavailable. - - :: - - class User(db.Model): - - def __init__(self, username, remote_addr=None): - self.username = username - if remote_addr is None and has_request_context(): - remote_addr = request.remote_addr - self.remote_addr = remote_addr - - Alternatively you can also just test any of the context bound objects - (such as :class:`request` or :class:`g` for truthness):: - - class User(db.Model): - - def __init__(self, username, remote_addr=None): - self.username = username - if remote_addr is None and request: - remote_addr = request.remote_addr - self.remote_addr = remote_addr - - .. versionadded:: 0.7 - """ - return _request_ctx_stack.top is not None - - -def has_app_context(): - """Works like :func:`has_request_context` but for the application - context. You can also just do a boolean check on the - :data:`current_app` object instead. - - .. versionadded:: 0.9 - """ - return _app_ctx_stack.top is not None - - -class AppContext(object): - """The application context binds an application object implicitly - to the current thread or greenlet, similar to how the - :class:`RequestContext` binds request information. The application - context is also implicitly created if a request context is created - but the application is not on top of the individual application - context. - """ - - def __init__(self, app): - self.app = app - self.url_adapter = app.create_url_adapter(None) - self.g = app.app_ctx_globals_class() - - # Like request context, app contexts can be pushed multiple times - # but there a basic "refcount" is enough to track them. - self._refcnt = 0 - - def push(self): - """Binds the app context to the current context.""" - self._refcnt += 1 - if hasattr(sys, 'exc_clear'): - sys.exc_clear() - _app_ctx_stack.push(self) - appcontext_pushed.send(self.app) - - def pop(self, exc=_sentinel): - """Pops the app context.""" - try: - self._refcnt -= 1 - if self._refcnt <= 0: - if exc is _sentinel: - exc = sys.exc_info()[1] - self.app.do_teardown_appcontext(exc) - finally: - rv = _app_ctx_stack.pop() - assert rv is self, 'Popped wrong app context. (%r instead of %r)' \ - % (rv, self) - appcontext_popped.send(self.app) - - def __enter__(self): - self.push() - return self - - def __exit__(self, exc_type, exc_value, tb): - self.pop(exc_value) - - if BROKEN_PYPY_CTXMGR_EXIT and exc_type is not None: - reraise(exc_type, exc_value, tb) - - -class RequestContext(object): - """The request context contains all request relevant information. It is - created at the beginning of the request and pushed to the - `_request_ctx_stack` and removed at the end of it. It will create the - URL adapter and request object for the WSGI environment provided. - - Do not attempt to use this class directly, instead use - :meth:`~flask.Flask.test_request_context` and - :meth:`~flask.Flask.request_context` to create this object. - - When the request context is popped, it will evaluate all the - functions registered on the application for teardown execution - (:meth:`~flask.Flask.teardown_request`). - - The request context is automatically popped at the end of the request - for you. In debug mode the request context is kept around if - exceptions happen so that interactive debuggers have a chance to - introspect the data. With 0.4 this can also be forced for requests - that did not fail and outside of ``DEBUG`` mode. By setting - ``'flask._preserve_context'`` to ``True`` on the WSGI environment the - context will not pop itself at the end of the request. This is used by - the :meth:`~flask.Flask.test_client` for example to implement the - deferred cleanup functionality. - - You might find this helpful for unittests where you need the - information from the context local around for a little longer. Make - sure to properly :meth:`~werkzeug.LocalStack.pop` the stack yourself in - that situation, otherwise your unittests will leak memory. - """ - - def __init__(self, app, environ, request=None): - self.app = app - if request is None: - request = app.request_class(environ) - self.request = request - self.url_adapter = app.create_url_adapter(self.request) - self.flashes = None - self.session = None - - # Request contexts can be pushed multiple times and interleaved with - # other request contexts. Now only if the last level is popped we - # get rid of them. Additionally if an application context is missing - # one is created implicitly so for each level we add this information - self._implicit_app_ctx_stack = [] - - # indicator if the context was preserved. Next time another context - # is pushed the preserved context is popped. - self.preserved = False - - # remembers the exception for pop if there is one in case the context - # preservation kicks in. - self._preserved_exc = None - - # Functions that should be executed after the request on the response - # object. These will be called before the regular "after_request" - # functions. - self._after_request_functions = [] - - self.match_request() - - def _get_g(self): - return _app_ctx_stack.top.g - def _set_g(self, value): - _app_ctx_stack.top.g = value - g = property(_get_g, _set_g) - del _get_g, _set_g - - def copy(self): - """Creates a copy of this request context with the same request object. - This can be used to move a request context to a different greenlet. - Because the actual request object is the same this cannot be used to - move a request context to a different thread unless access to the - request object is locked. - - .. versionadded:: 0.10 - """ - return self.__class__(self.app, - environ=self.request.environ, - request=self.request - ) - - def match_request(self): - """Can be overridden by a subclass to hook into the matching - of the request. - """ - try: - url_rule, self.request.view_args = \ - self.url_adapter.match(return_rule=True) - self.request.url_rule = url_rule - except HTTPException as e: - self.request.routing_exception = e - - def push(self): - """Binds the request context to the current context.""" - # If an exception occurs in debug mode or if context preservation is - # activated under exception situations exactly one context stays - # on the stack. The rationale is that you want to access that - # information under debug situations. However if someone forgets to - # pop that context again we want to make sure that on the next push - # it's invalidated, otherwise we run at risk that something leaks - # memory. This is usually only a problem in test suite since this - # functionality is not active in production environments. - top = _request_ctx_stack.top - if top is not None and top.preserved: - top.pop(top._preserved_exc) - - # Before we push the request context we have to ensure that there - # is an application context. - app_ctx = _app_ctx_stack.top - if app_ctx is None or app_ctx.app != self.app: - app_ctx = self.app.app_context() - app_ctx.push() - self._implicit_app_ctx_stack.append(app_ctx) - else: - self._implicit_app_ctx_stack.append(None) - - if hasattr(sys, 'exc_clear'): - sys.exc_clear() - - _request_ctx_stack.push(self) - - # Open the session at the moment that the request context is available. - # This allows a custom open_session method to use the request context. - # Only open a new session if this is the first time the request was - # pushed, otherwise stream_with_context loses the session. - if self.session is None: - session_interface = self.app.session_interface - self.session = session_interface.open_session( - self.app, self.request - ) - - if self.session is None: - self.session = session_interface.make_null_session(self.app) - - def pop(self, exc=_sentinel): - """Pops the request context and unbinds it by doing that. This will - also trigger the execution of functions registered by the - :meth:`~flask.Flask.teardown_request` decorator. - - .. versionchanged:: 0.9 - Added the `exc` argument. - """ - app_ctx = self._implicit_app_ctx_stack.pop() - - try: - clear_request = False - if not self._implicit_app_ctx_stack: - self.preserved = False - self._preserved_exc = None - if exc is _sentinel: - exc = sys.exc_info()[1] - self.app.do_teardown_request(exc) - - # If this interpreter supports clearing the exception information - # we do that now. This will only go into effect on Python 2.x, - # on 3.x it disappears automatically at the end of the exception - # stack. - if hasattr(sys, 'exc_clear'): - sys.exc_clear() - - request_close = getattr(self.request, 'close', None) - if request_close is not None: - request_close() - clear_request = True - finally: - rv = _request_ctx_stack.pop() - - # get rid of circular dependencies at the end of the request - # so that we don't require the GC to be active. - if clear_request: - rv.request.environ['werkzeug.request'] = None - - # Get rid of the app as well if necessary. - if app_ctx is not None: - app_ctx.pop(exc) - - assert rv is self, 'Popped wrong request context. ' \ - '(%r instead of %r)' % (rv, self) - - def auto_pop(self, exc): - if self.request.environ.get('flask._preserve_context') or \ - (exc is not None and self.app.preserve_context_on_exception): - self.preserved = True - self._preserved_exc = exc - else: - self.pop(exc) - - def __enter__(self): - self.push() - return self - - def __exit__(self, exc_type, exc_value, tb): - # do not pop the request stack if we are in debug mode and an - # exception happened. This will allow the debugger to still - # access the request object in the interactive shell. Furthermore - # the context can be force kept alive for the test client. - # See flask.testing for how this works. - self.auto_pop(exc_value) - - if BROKEN_PYPY_CTXMGR_EXIT and exc_type is not None: - reraise(exc_type, exc_value, tb) - - def __repr__(self): - return '<%s \'%s\' [%s] of %s>' % ( - self.__class__.__name__, - self.request.url, - self.request.method, - self.app.name, - ) diff --git a/venv/lib/python3.6/site-packages/flask/debughelpers.py b/venv/lib/python3.6/site-packages/flask/debughelpers.py deleted file mode 100644 index e9765f2..0000000 --- a/venv/lib/python3.6/site-packages/flask/debughelpers.py +++ /dev/null @@ -1,168 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.debughelpers - ~~~~~~~~~~~~~~~~~~ - - Various helpers to make the development experience better. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import os -from warnings import warn - -from ._compat import implements_to_string, text_type -from .app import Flask -from .blueprints import Blueprint -from .globals import _request_ctx_stack - - -class UnexpectedUnicodeError(AssertionError, UnicodeError): - """Raised in places where we want some better error reporting for - unexpected unicode or binary data. - """ - - -@implements_to_string -class DebugFilesKeyError(KeyError, AssertionError): - """Raised from request.files during debugging. The idea is that it can - provide a better error message than just a generic KeyError/BadRequest. - """ - - def __init__(self, request, key): - form_matches = request.form.getlist(key) - buf = ['You tried to access the file "%s" in the request.files ' - 'dictionary but it does not exist. The mimetype for the request ' - 'is "%s" instead of "multipart/form-data" which means that no ' - 'file contents were transmitted. To fix this error you should ' - 'provide enctype="multipart/form-data" in your form.' % - (key, request.mimetype)] - if form_matches: - buf.append('\n\nThe browser instead transmitted some file names. ' - 'This was submitted: %s' % ', '.join('"%s"' % x - for x in form_matches)) - self.msg = ''.join(buf) - - def __str__(self): - return self.msg - - -class FormDataRoutingRedirect(AssertionError): - """This exception is raised by Flask in debug mode if it detects a - redirect caused by the routing system when the request method is not - GET, HEAD or OPTIONS. Reasoning: form data will be dropped. - """ - - def __init__(self, request): - exc = request.routing_exception - buf = ['A request was sent to this URL (%s) but a redirect was ' - 'issued automatically by the routing system to "%s".' - % (request.url, exc.new_url)] - - # In case just a slash was appended we can be extra helpful - if request.base_url + '/' == exc.new_url.split('?')[0]: - buf.append(' The URL was defined with a trailing slash so ' - 'Flask will automatically redirect to the URL ' - 'with the trailing slash if it was accessed ' - 'without one.') - - buf.append(' Make sure to directly send your %s-request to this URL ' - 'since we can\'t make browsers or HTTP clients redirect ' - 'with form data reliably or without user interaction.' % - request.method) - buf.append('\n\nNote: this exception is only raised in debug mode') - AssertionError.__init__(self, ''.join(buf).encode('utf-8')) - - -def attach_enctype_error_multidict(request): - """Since Flask 0.8 we're monkeypatching the files object in case a - request is detected that does not use multipart form data but the files - object is accessed. - """ - oldcls = request.files.__class__ - class newcls(oldcls): - def __getitem__(self, key): - try: - return oldcls.__getitem__(self, key) - except KeyError: - if key not in request.form: - raise - raise DebugFilesKeyError(request, key) - newcls.__name__ = oldcls.__name__ - newcls.__module__ = oldcls.__module__ - request.files.__class__ = newcls - - -def _dump_loader_info(loader): - yield 'class: %s.%s' % (type(loader).__module__, type(loader).__name__) - for key, value in sorted(loader.__dict__.items()): - if key.startswith('_'): - continue - if isinstance(value, (tuple, list)): - if not all(isinstance(x, (str, text_type)) for x in value): - continue - yield '%s:' % key - for item in value: - yield ' - %s' % item - continue - elif not isinstance(value, (str, text_type, int, float, bool)): - continue - yield '%s: %r' % (key, value) - - -def explain_template_loading_attempts(app, template, attempts): - """This should help developers understand what failed""" - info = ['Locating template "%s":' % template] - total_found = 0 - blueprint = None - reqctx = _request_ctx_stack.top - if reqctx is not None and reqctx.request.blueprint is not None: - blueprint = reqctx.request.blueprint - - for idx, (loader, srcobj, triple) in enumerate(attempts): - if isinstance(srcobj, Flask): - src_info = 'application "%s"' % srcobj.import_name - elif isinstance(srcobj, Blueprint): - src_info = 'blueprint "%s" (%s)' % (srcobj.name, - srcobj.import_name) - else: - src_info = repr(srcobj) - - info.append('% 5d: trying loader of %s' % ( - idx + 1, src_info)) - - for line in _dump_loader_info(loader): - info.append(' %s' % line) - - if triple is None: - detail = 'no match' - else: - detail = 'found (%r)' % (triple[1] or '') - total_found += 1 - info.append(' -> %s' % detail) - - seems_fishy = False - if total_found == 0: - info.append('Error: the template could not be found.') - seems_fishy = True - elif total_found > 1: - info.append('Warning: multiple loaders returned a match for the template.') - seems_fishy = True - - if blueprint is not None and seems_fishy: - info.append(' The template was looked up from an endpoint that ' - 'belongs to the blueprint "%s".' % blueprint) - info.append(' Maybe you did not place a template in the right folder?') - info.append(' See http://flask.pocoo.org/docs/blueprints/#templates') - - app.logger.info('\n'.join(info)) - - -def explain_ignored_app_run(): - if os.environ.get('WERKZEUG_RUN_MAIN') != 'true': - warn(Warning('Silently ignoring app.run() because the ' - 'application is run from the flask command line ' - 'executable. Consider putting app.run() behind an ' - 'if __name__ == "__main__" guard to silence this ' - 'warning.'), stacklevel=3) diff --git a/venv/lib/python3.6/site-packages/flask/globals.py b/venv/lib/python3.6/site-packages/flask/globals.py deleted file mode 100644 index 7d50a6f..0000000 --- a/venv/lib/python3.6/site-packages/flask/globals.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.globals - ~~~~~~~~~~~~~ - - Defines all the global objects that are proxies to the current - active context. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -from functools import partial -from werkzeug.local import LocalStack, LocalProxy - - -_request_ctx_err_msg = '''\ -Working outside of request context. - -This typically means that you attempted to use functionality that needed -an active HTTP request. Consult the documentation on testing for -information about how to avoid this problem.\ -''' -_app_ctx_err_msg = '''\ -Working outside of application context. - -This typically means that you attempted to use functionality that needed -to interface with the current application object in some way. To solve -this, set up an application context with app.app_context(). See the -documentation for more information.\ -''' - - -def _lookup_req_object(name): - top = _request_ctx_stack.top - if top is None: - raise RuntimeError(_request_ctx_err_msg) - return getattr(top, name) - - -def _lookup_app_object(name): - top = _app_ctx_stack.top - if top is None: - raise RuntimeError(_app_ctx_err_msg) - return getattr(top, name) - - -def _find_app(): - top = _app_ctx_stack.top - if top is None: - raise RuntimeError(_app_ctx_err_msg) - return top.app - - -# context locals -_request_ctx_stack = LocalStack() -_app_ctx_stack = LocalStack() -current_app = LocalProxy(_find_app) -request = LocalProxy(partial(_lookup_req_object, 'request')) -session = LocalProxy(partial(_lookup_req_object, 'session')) -g = LocalProxy(partial(_lookup_app_object, 'g')) diff --git a/venv/lib/python3.6/site-packages/flask/helpers.py b/venv/lib/python3.6/site-packages/flask/helpers.py deleted file mode 100644 index df0b91f..0000000 --- a/venv/lib/python3.6/site-packages/flask/helpers.py +++ /dev/null @@ -1,1044 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.helpers - ~~~~~~~~~~~~~ - - Implements various helpers. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import os -import socket -import sys -import pkgutil -import posixpath -import mimetypes -from time import time -from zlib import adler32 -from threading import RLock -import unicodedata -from werkzeug.routing import BuildError -from functools import update_wrapper - -from werkzeug.urls import url_quote -from werkzeug.datastructures import Headers, Range -from werkzeug.exceptions import BadRequest, NotFound, \ - RequestedRangeNotSatisfiable - -from werkzeug.wsgi import wrap_file -from jinja2 import FileSystemLoader - -from .signals import message_flashed -from .globals import session, _request_ctx_stack, _app_ctx_stack, \ - current_app, request -from ._compat import string_types, text_type, PY2 - -# sentinel -_missing = object() - - -# what separators does this operating system provide that are not a slash? -# this is used by the send_from_directory function to ensure that nobody is -# able to access files from outside the filesystem. -_os_alt_seps = list(sep for sep in [os.path.sep, os.path.altsep] - if sep not in (None, '/')) - - -def get_env(): - """Get the environment the app is running in, indicated by the - :envvar:`FLASK_ENV` environment variable. The default is - ``'production'``. - """ - return os.environ.get('FLASK_ENV') or 'production' - - -def get_debug_flag(): - """Get whether debug mode should be enabled for the app, indicated - by the :envvar:`FLASK_DEBUG` environment variable. The default is - ``True`` if :func:`.get_env` returns ``'development'``, or ``False`` - otherwise. - """ - val = os.environ.get('FLASK_DEBUG') - - if not val: - return get_env() == 'development' - - return val.lower() not in ('0', 'false', 'no') - - -def get_load_dotenv(default=True): - """Get whether the user has disabled loading dotenv files by setting - :envvar:`FLASK_SKIP_DOTENV`. The default is ``True``, load the - files. - - :param default: What to return if the env var isn't set. - """ - val = os.environ.get('FLASK_SKIP_DOTENV') - - if not val: - return default - - return val.lower() in ('0', 'false', 'no') - - -def _endpoint_from_view_func(view_func): - """Internal helper that returns the default endpoint for a given - function. This always is the function name. - """ - assert view_func is not None, 'expected view func if endpoint ' \ - 'is not provided.' - return view_func.__name__ - - -def stream_with_context(generator_or_function): - """Request contexts disappear when the response is started on the server. - This is done for efficiency reasons and to make it less likely to encounter - memory leaks with badly written WSGI middlewares. The downside is that if - you are using streamed responses, the generator cannot access request bound - information any more. - - This function however can help you keep the context around for longer:: - - from flask import stream_with_context, request, Response - - @app.route('/stream') - def streamed_response(): - @stream_with_context - def generate(): - yield 'Hello ' - yield request.args['name'] - yield '!' - return Response(generate()) - - Alternatively it can also be used around a specific generator:: - - from flask import stream_with_context, request, Response - - @app.route('/stream') - def streamed_response(): - def generate(): - yield 'Hello ' - yield request.args['name'] - yield '!' - return Response(stream_with_context(generate())) - - .. versionadded:: 0.9 - """ - try: - gen = iter(generator_or_function) - except TypeError: - def decorator(*args, **kwargs): - gen = generator_or_function(*args, **kwargs) - return stream_with_context(gen) - return update_wrapper(decorator, generator_or_function) - - def generator(): - ctx = _request_ctx_stack.top - if ctx is None: - raise RuntimeError('Attempted to stream with context but ' - 'there was no context in the first place to keep around.') - with ctx: - # Dummy sentinel. Has to be inside the context block or we're - # not actually keeping the context around. - yield None - - # The try/finally is here so that if someone passes a WSGI level - # iterator in we're still running the cleanup logic. Generators - # don't need that because they are closed on their destruction - # automatically. - try: - for item in gen: - yield item - finally: - if hasattr(gen, 'close'): - gen.close() - - # The trick is to start the generator. Then the code execution runs until - # the first dummy None is yielded at which point the context was already - # pushed. This item is discarded. Then when the iteration continues the - # real generator is executed. - wrapped_g = generator() - next(wrapped_g) - return wrapped_g - - -def make_response(*args): - """Sometimes it is necessary to set additional headers in a view. Because - views do not have to return response objects but can return a value that - is converted into a response object by Flask itself, it becomes tricky to - add headers to it. This function can be called instead of using a return - and you will get a response object which you can use to attach headers. - - If view looked like this and you want to add a new header:: - - def index(): - return render_template('index.html', foo=42) - - You can now do something like this:: - - def index(): - response = make_response(render_template('index.html', foo=42)) - response.headers['X-Parachutes'] = 'parachutes are cool' - return response - - This function accepts the very same arguments you can return from a - view function. This for example creates a response with a 404 error - code:: - - response = make_response(render_template('not_found.html'), 404) - - The other use case of this function is to force the return value of a - view function into a response which is helpful with view - decorators:: - - response = make_response(view_function()) - response.headers['X-Parachutes'] = 'parachutes are cool' - - Internally this function does the following things: - - - if no arguments are passed, it creates a new response argument - - if one argument is passed, :meth:`flask.Flask.make_response` - is invoked with it. - - if more than one argument is passed, the arguments are passed - to the :meth:`flask.Flask.make_response` function as tuple. - - .. versionadded:: 0.6 - """ - if not args: - return current_app.response_class() - if len(args) == 1: - args = args[0] - return current_app.make_response(args) - - -def url_for(endpoint, **values): - """Generates a URL to the given endpoint with the method provided. - - Variable arguments that are unknown to the target endpoint are appended - to the generated URL as query arguments. If the value of a query argument - is ``None``, the whole pair is skipped. In case blueprints are active - you can shortcut references to the same blueprint by prefixing the - local endpoint with a dot (``.``). - - This will reference the index function local to the current blueprint:: - - url_for('.index') - - For more information, head over to the :ref:`Quickstart `. - - To integrate applications, :class:`Flask` has a hook to intercept URL build - errors through :attr:`Flask.url_build_error_handlers`. The `url_for` - function results in a :exc:`~werkzeug.routing.BuildError` when the current - app does not have a URL for the given endpoint and values. When it does, the - :data:`~flask.current_app` calls its :attr:`~Flask.url_build_error_handlers` if - it is not ``None``, which can return a string to use as the result of - `url_for` (instead of `url_for`'s default to raise the - :exc:`~werkzeug.routing.BuildError` exception) or re-raise the exception. - An example:: - - def external_url_handler(error, endpoint, values): - "Looks up an external URL when `url_for` cannot build a URL." - # This is an example of hooking the build_error_handler. - # Here, lookup_url is some utility function you've built - # which looks up the endpoint in some external URL registry. - url = lookup_url(endpoint, **values) - if url is None: - # External lookup did not have a URL. - # Re-raise the BuildError, in context of original traceback. - exc_type, exc_value, tb = sys.exc_info() - if exc_value is error: - raise exc_type, exc_value, tb - else: - raise error - # url_for will use this result, instead of raising BuildError. - return url - - app.url_build_error_handlers.append(external_url_handler) - - Here, `error` is the instance of :exc:`~werkzeug.routing.BuildError`, and - `endpoint` and `values` are the arguments passed into `url_for`. Note - that this is for building URLs outside the current application, and not for - handling 404 NotFound errors. - - .. versionadded:: 0.10 - The `_scheme` parameter was added. - - .. versionadded:: 0.9 - The `_anchor` and `_method` parameters were added. - - .. versionadded:: 0.9 - Calls :meth:`Flask.handle_build_error` on - :exc:`~werkzeug.routing.BuildError`. - - :param endpoint: the endpoint of the URL (name of the function) - :param values: the variable arguments of the URL rule - :param _external: if set to ``True``, an absolute URL is generated. Server - address can be changed via ``SERVER_NAME`` configuration variable which - defaults to `localhost`. - :param _scheme: a string specifying the desired URL scheme. The `_external` - parameter must be set to ``True`` or a :exc:`ValueError` is raised. The default - behavior uses the same scheme as the current request, or - ``PREFERRED_URL_SCHEME`` from the :ref:`app configuration ` if no - request context is available. As of Werkzeug 0.10, this also can be set - to an empty string to build protocol-relative URLs. - :param _anchor: if provided this is added as anchor to the URL. - :param _method: if provided this explicitly specifies an HTTP method. - """ - appctx = _app_ctx_stack.top - reqctx = _request_ctx_stack.top - - if appctx is None: - raise RuntimeError( - 'Attempted to generate a URL without the application context being' - ' pushed. This has to be executed when application context is' - ' available.' - ) - - # If request specific information is available we have some extra - # features that support "relative" URLs. - if reqctx is not None: - url_adapter = reqctx.url_adapter - blueprint_name = request.blueprint - - if endpoint[:1] == '.': - if blueprint_name is not None: - endpoint = blueprint_name + endpoint - else: - endpoint = endpoint[1:] - - external = values.pop('_external', False) - - # Otherwise go with the url adapter from the appctx and make - # the URLs external by default. - else: - url_adapter = appctx.url_adapter - - if url_adapter is None: - raise RuntimeError( - 'Application was not able to create a URL adapter for request' - ' independent URL generation. You might be able to fix this by' - ' setting the SERVER_NAME config variable.' - ) - - external = values.pop('_external', True) - - anchor = values.pop('_anchor', None) - method = values.pop('_method', None) - scheme = values.pop('_scheme', None) - appctx.app.inject_url_defaults(endpoint, values) - - # This is not the best way to deal with this but currently the - # underlying Werkzeug router does not support overriding the scheme on - # a per build call basis. - old_scheme = None - if scheme is not None: - if not external: - raise ValueError('When specifying _scheme, _external must be True') - old_scheme = url_adapter.url_scheme - url_adapter.url_scheme = scheme - - try: - try: - rv = url_adapter.build(endpoint, values, method=method, - force_external=external) - finally: - if old_scheme is not None: - url_adapter.url_scheme = old_scheme - except BuildError as error: - # We need to inject the values again so that the app callback can - # deal with that sort of stuff. - values['_external'] = external - values['_anchor'] = anchor - values['_method'] = method - values['_scheme'] = scheme - return appctx.app.handle_url_build_error(error, endpoint, values) - - if anchor is not None: - rv += '#' + url_quote(anchor) - return rv - - -def get_template_attribute(template_name, attribute): - """Loads a macro (or variable) a template exports. This can be used to - invoke a macro from within Python code. If you for example have a - template named :file:`_cider.html` with the following contents: - - .. sourcecode:: html+jinja - - {% macro hello(name) %}Hello {{ name }}!{% endmacro %} - - You can access this from Python code like this:: - - hello = get_template_attribute('_cider.html', 'hello') - return hello('World') - - .. versionadded:: 0.2 - - :param template_name: the name of the template - :param attribute: the name of the variable of macro to access - """ - return getattr(current_app.jinja_env.get_template(template_name).module, - attribute) - - -def flash(message, category='message'): - """Flashes a message to the next request. In order to remove the - flashed message from the session and to display it to the user, - the template has to call :func:`get_flashed_messages`. - - .. versionchanged:: 0.3 - `category` parameter added. - - :param message: the message to be flashed. - :param category: the category for the message. The following values - are recommended: ``'message'`` for any kind of message, - ``'error'`` for errors, ``'info'`` for information - messages and ``'warning'`` for warnings. However any - kind of string can be used as category. - """ - # Original implementation: - # - # session.setdefault('_flashes', []).append((category, message)) - # - # This assumed that changes made to mutable structures in the session are - # always in sync with the session object, which is not true for session - # implementations that use external storage for keeping their keys/values. - flashes = session.get('_flashes', []) - flashes.append((category, message)) - session['_flashes'] = flashes - message_flashed.send(current_app._get_current_object(), - message=message, category=category) - - -def get_flashed_messages(with_categories=False, category_filter=[]): - """Pulls all flashed messages from the session and returns them. - Further calls in the same request to the function will return - the same messages. By default just the messages are returned, - but when `with_categories` is set to ``True``, the return value will - be a list of tuples in the form ``(category, message)`` instead. - - Filter the flashed messages to one or more categories by providing those - categories in `category_filter`. This allows rendering categories in - separate html blocks. The `with_categories` and `category_filter` - arguments are distinct: - - * `with_categories` controls whether categories are returned with message - text (``True`` gives a tuple, where ``False`` gives just the message text). - * `category_filter` filters the messages down to only those matching the - provided categories. - - See :ref:`message-flashing-pattern` for examples. - - .. versionchanged:: 0.3 - `with_categories` parameter added. - - .. versionchanged:: 0.9 - `category_filter` parameter added. - - :param with_categories: set to ``True`` to also receive categories. - :param category_filter: whitelist of categories to limit return values - """ - flashes = _request_ctx_stack.top.flashes - if flashes is None: - _request_ctx_stack.top.flashes = flashes = session.pop('_flashes') \ - if '_flashes' in session else [] - if category_filter: - flashes = list(filter(lambda f: f[0] in category_filter, flashes)) - if not with_categories: - return [x[1] for x in flashes] - return flashes - - -def send_file(filename_or_fp, mimetype=None, as_attachment=False, - attachment_filename=None, add_etags=True, - cache_timeout=None, conditional=False, last_modified=None): - """Sends the contents of a file to the client. This will use the - most efficient method available and configured. By default it will - try to use the WSGI server's file_wrapper support. Alternatively - you can set the application's :attr:`~Flask.use_x_sendfile` attribute - to ``True`` to directly emit an ``X-Sendfile`` header. This however - requires support of the underlying webserver for ``X-Sendfile``. - - By default it will try to guess the mimetype for you, but you can - also explicitly provide one. For extra security you probably want - to send certain files as attachment (HTML for instance). The mimetype - guessing requires a `filename` or an `attachment_filename` to be - provided. - - ETags will also be attached automatically if a `filename` is provided. You - can turn this off by setting `add_etags=False`. - - If `conditional=True` and `filename` is provided, this method will try to - upgrade the response stream to support range requests. This will allow - the request to be answered with partial content response. - - Please never pass filenames to this function from user sources; - you should use :func:`send_from_directory` instead. - - .. versionadded:: 0.2 - - .. versionadded:: 0.5 - The `add_etags`, `cache_timeout` and `conditional` parameters were - added. The default behavior is now to attach etags. - - .. versionchanged:: 0.7 - mimetype guessing and etag support for file objects was - deprecated because it was unreliable. Pass a filename if you are - able to, otherwise attach an etag yourself. This functionality - will be removed in Flask 1.0 - - .. versionchanged:: 0.9 - cache_timeout pulls its default from application config, when None. - - .. versionchanged:: 0.12 - The filename is no longer automatically inferred from file objects. If - you want to use automatic mimetype and etag support, pass a filepath via - `filename_or_fp` or `attachment_filename`. - - .. versionchanged:: 0.12 - The `attachment_filename` is preferred over `filename` for MIME-type - detection. - - .. versionchanged:: 1.0 - UTF-8 filenames, as specified in `RFC 2231`_, are supported. - - .. _RFC 2231: https://tools.ietf.org/html/rfc2231#section-4 - - :param filename_or_fp: the filename of the file to send. - This is relative to the :attr:`~Flask.root_path` - if a relative path is specified. - Alternatively a file object might be provided in - which case ``X-Sendfile`` might not work and fall - back to the traditional method. Make sure that the - file pointer is positioned at the start of data to - send before calling :func:`send_file`. - :param mimetype: the mimetype of the file if provided. If a file path is - given, auto detection happens as fallback, otherwise an - error will be raised. - :param as_attachment: set to ``True`` if you want to send this file with - a ``Content-Disposition: attachment`` header. - :param attachment_filename: the filename for the attachment if it - differs from the file's filename. - :param add_etags: set to ``False`` to disable attaching of etags. - :param conditional: set to ``True`` to enable conditional responses. - - :param cache_timeout: the timeout in seconds for the headers. When ``None`` - (default), this value is set by - :meth:`~Flask.get_send_file_max_age` of - :data:`~flask.current_app`. - :param last_modified: set the ``Last-Modified`` header to this value, - a :class:`~datetime.datetime` or timestamp. - If a file was passed, this overrides its mtime. - """ - mtime = None - fsize = None - if isinstance(filename_or_fp, string_types): - filename = filename_or_fp - if not os.path.isabs(filename): - filename = os.path.join(current_app.root_path, filename) - file = None - if attachment_filename is None: - attachment_filename = os.path.basename(filename) - else: - file = filename_or_fp - filename = None - - if mimetype is None: - if attachment_filename is not None: - mimetype = mimetypes.guess_type(attachment_filename)[0] \ - or 'application/octet-stream' - - if mimetype is None: - raise ValueError( - 'Unable to infer MIME-type because no filename is available. ' - 'Please set either `attachment_filename`, pass a filepath to ' - '`filename_or_fp` or set your own MIME-type via `mimetype`.' - ) - - headers = Headers() - if as_attachment: - if attachment_filename is None: - raise TypeError('filename unavailable, required for ' - 'sending as attachment') - - try: - attachment_filename = attachment_filename.encode('latin-1') - except UnicodeEncodeError: - filenames = { - 'filename': unicodedata.normalize( - 'NFKD', attachment_filename).encode('latin-1', 'ignore'), - 'filename*': "UTF-8''%s" % url_quote(attachment_filename), - } - else: - filenames = {'filename': attachment_filename} - - headers.add('Content-Disposition', 'attachment', **filenames) - - if current_app.use_x_sendfile and filename: - if file is not None: - file.close() - headers['X-Sendfile'] = filename - fsize = os.path.getsize(filename) - headers['Content-Length'] = fsize - data = None - else: - if file is None: - file = open(filename, 'rb') - mtime = os.path.getmtime(filename) - fsize = os.path.getsize(filename) - headers['Content-Length'] = fsize - data = wrap_file(request.environ, file) - - rv = current_app.response_class(data, mimetype=mimetype, headers=headers, - direct_passthrough=True) - - if last_modified is not None: - rv.last_modified = last_modified - elif mtime is not None: - rv.last_modified = mtime - - rv.cache_control.public = True - if cache_timeout is None: - cache_timeout = current_app.get_send_file_max_age(filename) - if cache_timeout is not None: - rv.cache_control.max_age = cache_timeout - rv.expires = int(time() + cache_timeout) - - if add_etags and filename is not None: - from warnings import warn - - try: - rv.set_etag('%s-%s-%s' % ( - os.path.getmtime(filename), - os.path.getsize(filename), - adler32( - filename.encode('utf-8') if isinstance(filename, text_type) - else filename - ) & 0xffffffff - )) - except OSError: - warn('Access %s failed, maybe it does not exist, so ignore etags in ' - 'headers' % filename, stacklevel=2) - - if conditional: - try: - rv = rv.make_conditional(request, accept_ranges=True, - complete_length=fsize) - except RequestedRangeNotSatisfiable: - if file is not None: - file.close() - raise - # make sure we don't send x-sendfile for servers that - # ignore the 304 status code for x-sendfile. - if rv.status_code == 304: - rv.headers.pop('x-sendfile', None) - return rv - - -def safe_join(directory, *pathnames): - """Safely join `directory` and zero or more untrusted `pathnames` - components. - - Example usage:: - - @app.route('/wiki/') - def wiki_page(filename): - filename = safe_join(app.config['WIKI_FOLDER'], filename) - with open(filename, 'rb') as fd: - content = fd.read() # Read and process the file content... - - :param directory: the trusted base directory. - :param pathnames: the untrusted pathnames relative to that directory. - :raises: :class:`~werkzeug.exceptions.NotFound` if one or more passed - paths fall out of its boundaries. - """ - - parts = [directory] - - for filename in pathnames: - if filename != '': - filename = posixpath.normpath(filename) - - if ( - any(sep in filename for sep in _os_alt_seps) - or os.path.isabs(filename) - or filename == '..' - or filename.startswith('../') - ): - raise NotFound() - - parts.append(filename) - - return posixpath.join(*parts) - - -def send_from_directory(directory, filename, **options): - """Send a file from a given directory with :func:`send_file`. This - is a secure way to quickly expose static files from an upload folder - or something similar. - - Example usage:: - - @app.route('/uploads/') - def download_file(filename): - return send_from_directory(app.config['UPLOAD_FOLDER'], - filename, as_attachment=True) - - .. admonition:: Sending files and Performance - - It is strongly recommended to activate either ``X-Sendfile`` support in - your webserver or (if no authentication happens) to tell the webserver - to serve files for the given path on its own without calling into the - web application for improved performance. - - .. versionadded:: 0.5 - - :param directory: the directory where all the files are stored. - :param filename: the filename relative to that directory to - download. - :param options: optional keyword arguments that are directly - forwarded to :func:`send_file`. - """ - filename = safe_join(directory, filename) - if not os.path.isabs(filename): - filename = os.path.join(current_app.root_path, filename) - try: - if not os.path.isfile(filename): - raise NotFound() - except (TypeError, ValueError): - raise BadRequest() - options.setdefault('conditional', True) - return send_file(filename, **options) - - -def get_root_path(import_name): - """Returns the path to a package or cwd if that cannot be found. This - returns the path of a package or the folder that contains a module. - - Not to be confused with the package path returned by :func:`find_package`. - """ - # Module already imported and has a file attribute. Use that first. - mod = sys.modules.get(import_name) - if mod is not None and hasattr(mod, '__file__'): - return os.path.dirname(os.path.abspath(mod.__file__)) - - # Next attempt: check the loader. - loader = pkgutil.get_loader(import_name) - - # Loader does not exist or we're referring to an unloaded main module - # or a main module without path (interactive sessions), go with the - # current working directory. - if loader is None or import_name == '__main__': - return os.getcwd() - - # For .egg, zipimporter does not have get_filename until Python 2.7. - # Some other loaders might exhibit the same behavior. - if hasattr(loader, 'get_filename'): - filepath = loader.get_filename(import_name) - else: - # Fall back to imports. - __import__(import_name) - mod = sys.modules[import_name] - filepath = getattr(mod, '__file__', None) - - # If we don't have a filepath it might be because we are a - # namespace package. In this case we pick the root path from the - # first module that is contained in our package. - if filepath is None: - raise RuntimeError('No root path can be found for the provided ' - 'module "%s". This can happen because the ' - 'module came from an import hook that does ' - 'not provide file name information or because ' - 'it\'s a namespace package. In this case ' - 'the root path needs to be explicitly ' - 'provided.' % import_name) - - # filepath is import_name.py for a module, or __init__.py for a package. - return os.path.dirname(os.path.abspath(filepath)) - - -def _matching_loader_thinks_module_is_package(loader, mod_name): - """Given the loader that loaded a module and the module this function - attempts to figure out if the given module is actually a package. - """ - # If the loader can tell us if something is a package, we can - # directly ask the loader. - if hasattr(loader, 'is_package'): - return loader.is_package(mod_name) - # importlib's namespace loaders do not have this functionality but - # all the modules it loads are packages, so we can take advantage of - # this information. - elif (loader.__class__.__module__ == '_frozen_importlib' and - loader.__class__.__name__ == 'NamespaceLoader'): - return True - # Otherwise we need to fail with an error that explains what went - # wrong. - raise AttributeError( - ('%s.is_package() method is missing but is required by Flask of ' - 'PEP 302 import hooks. If you do not use import hooks and ' - 'you encounter this error please file a bug against Flask.') % - loader.__class__.__name__) - - -def find_package(import_name): - """Finds a package and returns the prefix (or None if the package is - not installed) as well as the folder that contains the package or - module as a tuple. The package path returned is the module that would - have to be added to the pythonpath in order to make it possible to - import the module. The prefix is the path below which a UNIX like - folder structure exists (lib, share etc.). - """ - root_mod_name = import_name.split('.')[0] - loader = pkgutil.get_loader(root_mod_name) - if loader is None or import_name == '__main__': - # import name is not found, or interactive/main module - package_path = os.getcwd() - else: - # For .egg, zipimporter does not have get_filename until Python 2.7. - if hasattr(loader, 'get_filename'): - filename = loader.get_filename(root_mod_name) - elif hasattr(loader, 'archive'): - # zipimporter's loader.archive points to the .egg or .zip - # archive filename is dropped in call to dirname below. - filename = loader.archive - else: - # At least one loader is missing both get_filename and archive: - # Google App Engine's HardenedModulesHook - # - # Fall back to imports. - __import__(import_name) - filename = sys.modules[import_name].__file__ - package_path = os.path.abspath(os.path.dirname(filename)) - - # In case the root module is a package we need to chop of the - # rightmost part. This needs to go through a helper function - # because of python 3.3 namespace packages. - if _matching_loader_thinks_module_is_package( - loader, root_mod_name): - package_path = os.path.dirname(package_path) - - site_parent, site_folder = os.path.split(package_path) - py_prefix = os.path.abspath(sys.prefix) - if package_path.startswith(py_prefix): - return py_prefix, package_path - elif site_folder.lower() == 'site-packages': - parent, folder = os.path.split(site_parent) - # Windows like installations - if folder.lower() == 'lib': - base_dir = parent - # UNIX like installations - elif os.path.basename(parent).lower() == 'lib': - base_dir = os.path.dirname(parent) - else: - base_dir = site_parent - return base_dir, package_path - return None, package_path - - -class locked_cached_property(object): - """A decorator that converts a function into a lazy property. The - function wrapped is called the first time to retrieve the result - and then that calculated result is used the next time you access - the value. Works like the one in Werkzeug but has a lock for - thread safety. - """ - - def __init__(self, func, name=None, doc=None): - self.__name__ = name or func.__name__ - self.__module__ = func.__module__ - self.__doc__ = doc or func.__doc__ - self.func = func - self.lock = RLock() - - def __get__(self, obj, type=None): - if obj is None: - return self - with self.lock: - value = obj.__dict__.get(self.__name__, _missing) - if value is _missing: - value = self.func(obj) - obj.__dict__[self.__name__] = value - return value - - -class _PackageBoundObject(object): - #: The name of the package or module that this app belongs to. Do not - #: change this once it is set by the constructor. - import_name = None - - #: Location of the template files to be added to the template lookup. - #: ``None`` if templates should not be added. - template_folder = None - - #: Absolute path to the package on the filesystem. Used to look up - #: resources contained in the package. - root_path = None - - def __init__(self, import_name, template_folder=None, root_path=None): - self.import_name = import_name - self.template_folder = template_folder - - if root_path is None: - root_path = get_root_path(self.import_name) - - self.root_path = root_path - self._static_folder = None - self._static_url_path = None - - def _get_static_folder(self): - if self._static_folder is not None: - return os.path.join(self.root_path, self._static_folder) - - def _set_static_folder(self, value): - self._static_folder = value - - static_folder = property( - _get_static_folder, _set_static_folder, - doc='The absolute path to the configured static folder.' - ) - del _get_static_folder, _set_static_folder - - def _get_static_url_path(self): - if self._static_url_path is not None: - return self._static_url_path - - if self.static_folder is not None: - return '/' + os.path.basename(self.static_folder) - - def _set_static_url_path(self, value): - self._static_url_path = value - - static_url_path = property( - _get_static_url_path, _set_static_url_path, - doc='The URL prefix that the static route will be registered for.' - ) - del _get_static_url_path, _set_static_url_path - - @property - def has_static_folder(self): - """This is ``True`` if the package bound object's container has a - folder for static files. - - .. versionadded:: 0.5 - """ - return self.static_folder is not None - - @locked_cached_property - def jinja_loader(self): - """The Jinja loader for this package bound object. - - .. versionadded:: 0.5 - """ - if self.template_folder is not None: - return FileSystemLoader(os.path.join(self.root_path, - self.template_folder)) - - def get_send_file_max_age(self, filename): - """Provides default cache_timeout for the :func:`send_file` functions. - - By default, this function returns ``SEND_FILE_MAX_AGE_DEFAULT`` from - the configuration of :data:`~flask.current_app`. - - Static file functions such as :func:`send_from_directory` use this - function, and :func:`send_file` calls this function on - :data:`~flask.current_app` when the given cache_timeout is ``None``. If a - cache_timeout is given in :func:`send_file`, that timeout is used; - otherwise, this method is called. - - This allows subclasses to change the behavior when sending files based - on the filename. For example, to set the cache timeout for .js files - to 60 seconds:: - - class MyFlask(flask.Flask): - def get_send_file_max_age(self, name): - if name.lower().endswith('.js'): - return 60 - return flask.Flask.get_send_file_max_age(self, name) - - .. versionadded:: 0.9 - """ - return total_seconds(current_app.send_file_max_age_default) - - def send_static_file(self, filename): - """Function used internally to send static files from the static - folder to the browser. - - .. versionadded:: 0.5 - """ - if not self.has_static_folder: - raise RuntimeError('No static folder for this object') - # Ensure get_send_file_max_age is called in all cases. - # Here, we ensure get_send_file_max_age is called for Blueprints. - cache_timeout = self.get_send_file_max_age(filename) - return send_from_directory(self.static_folder, filename, - cache_timeout=cache_timeout) - - def open_resource(self, resource, mode='rb'): - """Opens a resource from the application's resource folder. To see - how this works, consider the following folder structure:: - - /myapplication.py - /schema.sql - /static - /style.css - /templates - /layout.html - /index.html - - If you want to open the :file:`schema.sql` file you would do the - following:: - - with app.open_resource('schema.sql') as f: - contents = f.read() - do_something_with(contents) - - :param resource: the name of the resource. To access resources within - subfolders use forward slashes as separator. - :param mode: resource file opening mode, default is 'rb'. - """ - if mode not in ('r', 'rb'): - raise ValueError('Resources can only be opened for reading') - return open(os.path.join(self.root_path, resource), mode) - - -def total_seconds(td): - """Returns the total seconds from a timedelta object. - - :param timedelta td: the timedelta to be converted in seconds - - :returns: number of seconds - :rtype: int - """ - return td.days * 60 * 60 * 24 + td.seconds - - -def is_ip(value): - """Determine if the given string is an IP address. - - Python 2 on Windows doesn't provide ``inet_pton``, so this only - checks IPv4 addresses in that environment. - - :param value: value to check - :type value: str - - :return: True if string is an IP address - :rtype: bool - """ - if PY2 and os.name == 'nt': - try: - socket.inet_aton(value) - return True - except socket.error: - return False - - for family in (socket.AF_INET, socket.AF_INET6): - try: - socket.inet_pton(family, value) - except socket.error: - pass - else: - return True - - return False diff --git a/venv/lib/python3.6/site-packages/flask/json/__init__.py b/venv/lib/python3.6/site-packages/flask/json/__init__.py deleted file mode 100644 index fbe6b92..0000000 --- a/venv/lib/python3.6/site-packages/flask/json/__init__.py +++ /dev/null @@ -1,327 +0,0 @@ -# -*- coding: utf-8 -*- -""" -flask.json -~~~~~~~~~~ - -:copyright: © 2010 by the Pallets team. -:license: BSD, see LICENSE for more details. -""" -import codecs -import io -import uuid -from datetime import date, datetime -from flask.globals import current_app, request -from flask._compat import text_type, PY2 - -from werkzeug.http import http_date -from jinja2 import Markup - -# Use the same json implementation as itsdangerous on which we -# depend anyways. -from itsdangerous import json as _json - - -# Figure out if simplejson escapes slashes. This behavior was changed -# from one version to another without reason. -_slash_escape = '\\/' not in _json.dumps('/') - - -__all__ = ['dump', 'dumps', 'load', 'loads', 'htmlsafe_dump', - 'htmlsafe_dumps', 'JSONDecoder', 'JSONEncoder', - 'jsonify'] - - -def _wrap_reader_for_text(fp, encoding): - if isinstance(fp.read(0), bytes): - fp = io.TextIOWrapper(io.BufferedReader(fp), encoding) - return fp - - -def _wrap_writer_for_text(fp, encoding): - try: - fp.write('') - except TypeError: - fp = io.TextIOWrapper(fp, encoding) - return fp - - -class JSONEncoder(_json.JSONEncoder): - """The default Flask JSON encoder. This one extends the default simplejson - encoder by also supporting ``datetime`` objects, ``UUID`` as well as - ``Markup`` objects which are serialized as RFC 822 datetime strings (same - as the HTTP date format). In order to support more data types override the - :meth:`default` method. - """ - - def default(self, o): - """Implement this method in a subclass such that it returns a - serializable object for ``o``, or calls the base implementation (to - raise a :exc:`TypeError`). - - For example, to support arbitrary iterators, you could implement - default like this:: - - def default(self, o): - try: - iterable = iter(o) - except TypeError: - pass - else: - return list(iterable) - return JSONEncoder.default(self, o) - """ - if isinstance(o, datetime): - return http_date(o.utctimetuple()) - if isinstance(o, date): - return http_date(o.timetuple()) - if isinstance(o, uuid.UUID): - return str(o) - if hasattr(o, '__html__'): - return text_type(o.__html__()) - return _json.JSONEncoder.default(self, o) - - -class JSONDecoder(_json.JSONDecoder): - """The default JSON decoder. This one does not change the behavior from - the default simplejson decoder. Consult the :mod:`json` documentation - for more information. This decoder is not only used for the load - functions of this module but also :attr:`~flask.Request`. - """ - - -def _dump_arg_defaults(kwargs): - """Inject default arguments for dump functions.""" - if current_app: - bp = current_app.blueprints.get(request.blueprint) if request else None - kwargs.setdefault( - 'cls', - bp.json_encoder if bp and bp.json_encoder - else current_app.json_encoder - ) - - if not current_app.config['JSON_AS_ASCII']: - kwargs.setdefault('ensure_ascii', False) - - kwargs.setdefault('sort_keys', current_app.config['JSON_SORT_KEYS']) - else: - kwargs.setdefault('sort_keys', True) - kwargs.setdefault('cls', JSONEncoder) - - -def _load_arg_defaults(kwargs): - """Inject default arguments for load functions.""" - if current_app: - bp = current_app.blueprints.get(request.blueprint) if request else None - kwargs.setdefault( - 'cls', - bp.json_decoder if bp and bp.json_decoder - else current_app.json_decoder - ) - else: - kwargs.setdefault('cls', JSONDecoder) - - -def detect_encoding(data): - """Detect which UTF codec was used to encode the given bytes. - - The latest JSON standard (:rfc:`8259`) suggests that only UTF-8 is - accepted. Older documents allowed 8, 16, or 32. 16 and 32 can be big - or little endian. Some editors or libraries may prepend a BOM. - - :param data: Bytes in unknown UTF encoding. - :return: UTF encoding name - """ - head = data[:4] - - if head[:3] == codecs.BOM_UTF8: - return 'utf-8-sig' - - if b'\x00' not in head: - return 'utf-8' - - if head in (codecs.BOM_UTF32_BE, codecs.BOM_UTF32_LE): - return 'utf-32' - - if head[:2] in (codecs.BOM_UTF16_BE, codecs.BOM_UTF16_LE): - return 'utf-16' - - if len(head) == 4: - if head[:3] == b'\x00\x00\x00': - return 'utf-32-be' - - if head[::2] == b'\x00\x00': - return 'utf-16-be' - - if head[1:] == b'\x00\x00\x00': - return 'utf-32-le' - - if head[1::2] == b'\x00\x00': - return 'utf-16-le' - - if len(head) == 2: - return 'utf-16-be' if head.startswith(b'\x00') else 'utf-16-le' - - return 'utf-8' - - -def dumps(obj, **kwargs): - """Serialize ``obj`` to a JSON formatted ``str`` by using the application's - configured encoder (:attr:`~flask.Flask.json_encoder`) if there is an - application on the stack. - - This function can return ``unicode`` strings or ascii-only bytestrings by - default which coerce into unicode strings automatically. That behavior by - default is controlled by the ``JSON_AS_ASCII`` configuration variable - and can be overridden by the simplejson ``ensure_ascii`` parameter. - """ - _dump_arg_defaults(kwargs) - encoding = kwargs.pop('encoding', None) - rv = _json.dumps(obj, **kwargs) - if encoding is not None and isinstance(rv, text_type): - rv = rv.encode(encoding) - return rv - - -def dump(obj, fp, **kwargs): - """Like :func:`dumps` but writes into a file object.""" - _dump_arg_defaults(kwargs) - encoding = kwargs.pop('encoding', None) - if encoding is not None: - fp = _wrap_writer_for_text(fp, encoding) - _json.dump(obj, fp, **kwargs) - - -def loads(s, **kwargs): - """Unserialize a JSON object from a string ``s`` by using the application's - configured decoder (:attr:`~flask.Flask.json_decoder`) if there is an - application on the stack. - """ - _load_arg_defaults(kwargs) - if isinstance(s, bytes): - encoding = kwargs.pop('encoding', None) - if encoding is None: - encoding = detect_encoding(s) - s = s.decode(encoding) - return _json.loads(s, **kwargs) - - -def load(fp, **kwargs): - """Like :func:`loads` but reads from a file object. - """ - _load_arg_defaults(kwargs) - if not PY2: - fp = _wrap_reader_for_text(fp, kwargs.pop('encoding', None) or 'utf-8') - return _json.load(fp, **kwargs) - - -def htmlsafe_dumps(obj, **kwargs): - """Works exactly like :func:`dumps` but is safe for use in `` -

-''' - -__all__ = ["RecaptchaWidget"] - - -class RecaptchaWidget(object): - - def recaptcha_html(self, public_key): - html = current_app.config.get('RECAPTCHA_HTML') - if html: - return Markup(html) - params = current_app.config.get('RECAPTCHA_PARAMETERS') - script = RECAPTCHA_SCRIPT - if params: - script += u'?' + url_encode(params) - - attrs = current_app.config.get('RECAPTCHA_DATA_ATTRS', {}) - attrs['sitekey'] = public_key - snippet = u' '.join([u'data-%s="%s"' % (k, attrs[k]) for k in attrs]) - return Markup(RECAPTCHA_TEMPLATE % (script, snippet)) - - def __call__(self, field, error=None, **kwargs): - """Returns the recaptcha input HTML.""" - - try: - public_key = current_app.config['RECAPTCHA_PUBLIC_KEY'] - except KeyError: - raise RuntimeError("RECAPTCHA_PUBLIC_KEY config not set") - - return self.recaptcha_html(public_key) diff --git a/venv/lib/python3.6/site-packages/google/api/__init__.py b/venv/lib/python3.6/site-packages/google/api/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/__init__.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 45b8a752ed3ed91f745efdbaebcd7a4287c53450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmXr!<>lgiz!$>+1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnFL(Wt+yecA%mUq{ z(#)I`-P|H0!@|VW6#ex4{PdjE#DdIX-Q@h--26PqtK2SzKK0Y%qvm`!V Xub}c4hfQvNN@-529ms-WAZ7pnhc70- diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/annotations_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/annotations_pb2.cpython-36.pyc deleted file mode 100644 index c9687a0da116d2b74a3ce2e58516c719f2577a62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1891 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 XaiMOwmwj0oJfSqsff81J>Kpzqe@uHA diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/backend_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/backend_pb2.cpython-36.pyc deleted file mode 100644 index c154423e180bec49e73912fb6dbdfc194e974b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2762 zcmcgtOK;mo5av>E>S-o^C4S{utBs{RE(IC{jbkTBAFkn~K)WqKkeZcBg(BHqDzJsz z)JqTk6TS7^OV9loJQe6kf1#(&lA=V_HQH0T;BaR>wEjUjiMj zp!ch=3@f0*Y7b+J#;T-fwRYa-r~aqDmmuAeuk9(mk=&6LM2*p58zzz+Id z#rS8>&Dw8vFYF7@7o_tEl$f3xjnFJyTS z_M$A8*)r4nE1<6{#wycUy}t&H#|la%w}D)>zs~Aof~QdGUxNlK^sjdb+h97hpna~6 zGjtPew%F#(W@BcvJhR!3Y__G1tf#R9nq-i6h~)8+U->@6S7edAQ_z$g z{fs0er(7CG-Z>z=SY+xH!}}>pH9x*q)2Cx;PtH zo@0O+n3gHnXe~}Lok=UoaiqnX7UoFvk?7IT!>zR%mZCLR?pOBX3LMMQ920st)%85b zbbBq2_u4(?MjlcHjdm1_zqLE8JpghxhOdwM)a)Q(@kGpcSUE z=y$aoA398|k)6zL`Qd6R;MUaU1obz+(#ol+-q4DI$#QudSCZY5Ue^jH0LOZ+sgVFp zfSKUfE?di>gy>hb%D{GwnKUb<`|kf-C~JC1&0Lsu%>fGwKAsDLAk2$1H!x2_9Sdxm zjy+;vc)mo0pw*Pjx5A`;BYl3rNxj0jq6uUqFcMWOs`W(Pwnfyohh)KU32IJ##_@Fvaq^1txN$P zEu$rd{$dYx#8P0|uI=_>UBwm#I}MmCFkfu%32TUs=QG}r0cN|l!zQ~j@UM|faVZ4rRXk)hA;CNG* zpn1<_URTgY>QqEv@_^P-66`i%8nvU9i-#q_9nP>k+Wu#YRs!}(N#>=Da>Jmz_hFbo zezbMTy6Kge$W9i{?!%?qBv)f1TNYioEu&kPY>~cF6WIbM-$?Qcl7)n=dH-#yp>}Zi z>e(lL{{$vfiTvmdX5q?QO zU#j7Y;ei|!fUkdBwrmqa8wx^lvLHe!`8 z217SqFqd%?K^%4Rj^}(H|3zNQt67*%!YtUGfG^1n>WQbRj^9BkR%+T@Qva;zUn>tE z|BvyRJdsB#ennCwTci??Ofi=wYBchsl23S)s9BOHMIvdIXevG^i!EcWn7wFSi>%{S bMY1?6F6iRfKl;s7h$e?x!??7}?3?)ufNBvu diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/billing_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/billing_pb2.cpython-36.pyc deleted file mode 100644 index 43e88816de4a1a9d62d0fbc9b6a8228e123e8551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2813 zcmcf@%Wm67kV{IGMC)ZGmTbpy>^MoSCYF)p5}-lQI4`(J9V78+QGg)1E0zjHvb$7Z z3%RLRpL*)8=&iqz&mejz(33u(m!3Miq%1mdfSjrYXJ=<;X6LoDx?igqwZG~={L@sF zzm?o?1@Ld-<9{MWAqqjhf)%O^5K&eXqP|twI?+hsXC=BpieknpaOu7_EZ`y%5+%TO zT#|Sh@G`DQyaKp^7mz|12GxmzYrt#x^nar%fqwg{%SRRVks8 zjtlhh!R}ll~9a59nI=MzRPMf$bZP+B&b2e;|8(_mta*KRLKBp163T?Xpb2_&( zogLbtZF8BnX=kuPwpJ8#6)3I26|(tIp|!ypZA}owr!u%oHfd?F-beJBTrHlh+N4Xq zK2;|g?ErTBRGVmc17tVphLn}q;JUzt<>nSaZBRfOA%q)oAM!M4jx3Mls_eUXEW7Hu!z4_)| zbuSIdp@`NY!q2ijH}tK*?S;(Ub!i|qRQg3oTI5j*FXG%j8bN6>zT0xr}EK|G83W+X-I>zT;9;O7w+B4IoQi& zX7kfI`|4w(mF?!JtyQB1<>NtmC@~r3;fOhO8Ev5LN~>W&zGCJ%d|8E~Dtp2I98fz; zW>-%NfisaG@=24s`V&OE{MVS z=Db2?ft$^_P~i&#HGc3#qPaS^@ApQO3nl+~0Z7ZL&HLl1hK%`=)fb=z-p2RPPBOcS7b<-i6nAS_bo`3j&C? zJADCQ+|Ehc^G4oP6XWT#H&0&gA0EAWofxJ$49Uo+rrFh43k2D10qy|k-bgfl!jtMd z%0wznFX)GfYTCGw>6UHI9`%{1LcAb)OV+8GFeE9PSZ# z2ysblnZ(Aqp2uoJXe&M4Bw=hqzfR{|rx&dr*PlZjz}=hKBfP@KoPZn8MN!NNiB6z3 z6N;~xd;2e6?jO9E%@D4m{e#Cx`>zggc}A3#h3jc$nf8giY-~-OvXs9me71+%uc_-n z&9U>A;k6eupv;0|ly8a?`roHd+>yASrEHNDi08!YmN=j>)0FMWyg{(D_LX~3M inPTNLO>@~fH|YI{TL&8q&{S9JaDKU+Cr zaWhw+xpU*pf53s_Z=4gozLs}{}w(! zT~w6+DUsh2@*m;j=VFQi3aGY16sq)8P!<)?zEs!>#325y;$4G;coPk^l6I^gCvjEG zNZE;glB6V`Mm|k4lFuNoldR-*f}UZUJxfT*9L!^jN*17sEh=UT>VLy%o5I zzK3mHyix!4vyz`B}aOOJXCHFSG1Mi-d$g0HS4&064@gBU7tNqRBy6P*oKY)AE_8Og~ ztG%nRxu_WHbWQRNf^4J;eB`fU5wS0;r<*LAx#H9gDUYPuh<<4P1Xb(7=&K+jTlt*JyuXI$dgbt?jyZ!qfL`v)=;qenKpckHV5jF8HRQK>DU5 z^NrHOfKEj)+96NcW?(tD(9a}w+Ah$V%0vX`J~Lrh+MKR{+GXkt`bKc#QR8c7dLCsc z)PeeKW_f`tdZ|A3eY1-exz1?ErtQFT9qbkTlYYy!4KM?dP!GrJ z2m(n;(d_|4uk-?9RX-nmP;N?yni8R70pPJpnq!5oYa?)VmvtLm>PRyY*dvRF0Dlm| z9d>^DUW-56IX)Qti2JPng};@Ezw1AJr|P+=Ta}`oqBiYQC#b4x>h(;etY=&sjOV63 zpjB-ma_HA%QA~<%=-Khk3)HJ|6c)DUBhlBxu%F^+WkXMy@Z4%sznWN!UC(Y;qKZ3m zXnk2vhFoPv&rY@uws^GMet7O&_F&5w5uAMP1XKReztJ~@1Hyw^O~KiJzXDV2<# z*xB7hR;^_9)Z@KJN6)aMRdRaz(a~LjKcCB|&rIrcJWjX`fHe^8Qj%8EH#RbQcGL3v*#PkhJ z%dwoUEYon!QY11zFj>G05eapGU&z(rLNwe+ZShG84_7bIsE>1eltJhBxiU-)g3i|6 zT1iI0mQl)P1(_3M9tlaeJx}_|6Smo+HYtB$`UcRBIk1DU7I^+*H#a_G!fBc5p~S8V zgE`AL=!<|lK5i?1UQAfSZ@YM6iCti;NcegE4X<7n&$L8IW?Gt;Yfn{3v}%VNmsyXL z_DGz+Bat?vG!inYJHDOA*EJw2oYkHI3`Ldrz8=500N6J?6S$^j#R()G%sw z9`jFpo_kK2$PB}BIxg3Y7O9R6%FCfO=+rGIpv*CCCbF0mUm9itW|GAeom_iNpwH9B zI4xN&R5-u>SYAj<#!FWqN$rMdPEumXfEFq2V>$1hTfQeI7WQy2&V^(~^q+}~BO=Ti z;YlqHYBK+rb}igZ_R`Fv=!?7J)A0Ic6|~Q01X&OS{}L$d3KF76Oc(b>www!i5~%oU zAbF#Cbhv-;FkBg<*x7w{(A*=1Fujb{i9D{@4Pkaun4OE3u0K&A6*|qfscag~=-Om!})2o uAT6Y&l|S!^b>iwoGwkUa{?JyqR>-9 diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/consumer_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/consumer_pb2.cpython-36.pyc deleted file mode 100644 index 4885dae2d665f88deef97580d4c919bd2e109a84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3233 zcmcguPgC1Q6qjUM*uwu1!I*>qAtb?VzzL*jI!!wrz+`AsV1RTcJDt(U-nAn~mfV$` z0Z(r9&0a_!Ivcx9a*>j2HSgM_;8l9wBrqJBE41NAwriF_XDZpHj7U>j~ z8PZc!2V}4Y+Vn+AaIVoAXmL)7&O(cG%2a_C=giUT&>~JNC8!&8p5DC35S``P(@Z~? z!Nyek8eO1^xIVn8_6%L3x4?oKx=e2a=1MEHMy4x>0aAA^iY>V%VFS(z%?j!+y+>Cs zilihEEA*on;>Yy9KwP71fV%?zub<29Sz3iCge`_GYMP$qdA@_)W z0#XX#{s-h%0xe~F3)dXl{TO0`c9&V1mD+Q3X-+b(Go6)zegO0h;OoXbE3rcRCS7% zP1ibn)J*5$76deKA`W~vR>@p>J`jc$Eoy?Yjn_)Bv+0t?L1 z3Lvdf<~6w0^<565i4OBTvjxh5##z&54c~Gd7!|y;PTjQ)YWil~^jLo`^l{9Ub>U@S z3#Zn>OQH(aX8)Czhe)hn&TQqjqW~OYXbxpkizZvHZ91)Wm$#}d<_P^*K*fR{<8Q16 zgAg{Y*5_lR-cOJ_?cc4_W7aKyp-sW+ZSWF4UB-QjdHSlR!J^TqEH5QiCpWIeEMJdg z&z67tRo2qOk)G9(j@ekGMBsZGsibi109lPnYPtu)Ns34WFE=Ic-=Y~ z^Sr-wSvsS*jR=eliAScA;yI}HAZ0m}od&AY>(m+NMdXRRkT7fm+~`EaZGf9Ahyq8V zpbc;f4St8tngP*DCWOs2d$w(0wu5xjvYDWgNCoN})9x`ZC_r)grsY^p%fLbi*Dl6f z^n8>1K|aP|4h`Nf$o~Ae>*M80V#V6O_aRB#ol#W}CebZCM0P7h;S!&N0iVK7$8H)r zl5TXn!uTL%n{{TBsaK|FP}Veiwr>bWgWUKq8yz5_T82U3L-%hYVAk>scIq?7gM`Dq zJR}XTfu>=4_zma=73`YOjhTnP6JnktTA(&9W>YWFMmQeHI?VH-rZD6y+vGVw9EU`;~~a?o{0$d%U8^-V`U672qE=T zJ-@m3M1=NgVKjP>2jM{)HR9(%fAK2x*nu&yK&3w$lZsz36(!JiYRB70dxs|nM}cM- z9hdfOW*C*bLBc!pg6tc{F)N1UG~GZk>ZA~1LD~3jz1QUE2APEX4=)Uk6%?e6DCZoj z3Ir}M4xU9$(RkXaD;YR=q6=Nfd_b@WJslx?@Q;!YN6IpcQ^{?1d@^*M@pb4 Qs;psC@?f);7=07}0Esb$CjbBd diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/context_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/context_pb2.cpython-36.pyc deleted file mode 100644 index 16c9e8d750b8c45861830a7c3175bee238c6a70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2606 zcmcgtPjA~c6c=S%w&lNZ)BI`OH0#tu!KWYq<3>RpvBpw`ZtE^;;bf@YOem9$Q7kelaC+)^Ifl!5VE$5X7=PSSL+d9Ng$5dXu)uhvcJkeUig%z}%wk zIi@|wEYC3;3bP?GGAh<>f?jEzkEb#n4yHM1dyoX`k$?H^!pHN_yww1T4t|A3pi?Hn zs`>kiop>1SL|(M*j69!g581;9Z){3-+%R-~YDXU5?uEl)7;Hx@j6*&%?0{vb7X~ps zjjhOe*p1Fa>9KDQ9b!Kz$Z6rzm;ucNRyrsYD-(pb+5na^k;~8zgyGw<7d!xl1`T>4 zp&i5|_XS%f9V?&n831h(%6rU<;*deFIHa80E({hXqkW(DVlND!*WhPEC-g01$F^g0 zI$lebm|aO%t#NE7mM*Lj8%p(P6vEVI9YWDv7@t;mlL#Ej&>SMXKeM@^ZwGESWbTej z1LYwTP&Ff`?8NI)2w~rIKfTcV{TDs|{PV*Xqczw=^Gcen49z%LiFBcJj$ zw3*wgJY3BX?#?hrV863xRx;gI(=2f+!xb_ZiMGnEC9}-vn-S$PC2Kl3D@zcp=ENhQ z$w|%A;C~K^Gux0(LF5B_NJTNSd#_=`g~88)*gh342&QNI-k1_AjO6ZfT+8SpN2IYD zw-%e3#zrL3OVdLpL2Bx%xK8ECnpR{ZllWPu$!hQy<^IU`Eybze1%#doBNz=G%0xas zizqJjqR5hxDEPKReZ2I8%`HOv_Q;Q|6WbqAQM=f!&XQRT!(|Ho5)Tc?o7naOFK`oE z)#DZ%MH+BeFBIfdw0JL!D1&=L6ZyX9)9IEZ{w*{!-fTtMO425|vkmC7TT*BAJ?axK z%(*v?tAR=fHL0|ujJTQt*HRk9c6`bj;08D6!z~7o2=)&CFf3%$vg$Xq7<^K)HJPsl|x+IOEM7`rO6@= zu0MmE*jsq+%7NxWfg8_cf@BmWYxm{B@%}f*!XQxE2*uS@bM*C>`?#KDl;xbMbHduv z0uXH;P!JGP-a6-I+Rtn7y4f%75`Wst>UaB^2F=KY)MYgNIlJL z>>g+#M6=?MxnI=1DDM`y%aYA_B5xr68#E=ffvU-yD;4rcSFeGpMk<3w&m#kskZkkF m)ZqbLf=r}R{xZ6*(8;KD?8V+YJ>{y%l&@X~CT4E_&;0{!1MQ&z diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/control_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/control_pb2.cpython-36.pyc deleted file mode 100644 index 92d9800f3465b28189d1947ac5e2c0fcca54dbb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1990 zcmcgs&2HO95a#NKqNrcXwjw8vQxrKw2TMqDDbOHjW5+>?);1iU76k~BJ7THuue+3C z3Aw3PzeI0+fnE#rG4@oTC%-~Zoh2oUZqaMG*x~HV?Cdu)yYsTuGFyMNzyHF>Nk2+Jfq|%}mx{O(?O}k|1p_3G3WcX$N&()@56aKnG`ay2W~I z8@=zaT^u{CkJb;CWZGi`+>?*K`lJ2cP1hryrUpv-teJ5S*(0`p)1}+64V~!@>%P*U zHQj~Ik|3t~w9mRwn?9Hj7{E4r%noi!%QD?Vn}@KcY?N>75hEY8;gegHveVl#QWq1I zed@2~5l&G-@<~Hea{3DrNv^pv&d6WijMFd~Cw_A1%=~~IhWy3zA8lY`FOIzc?8Fy` zZXAYjbeQlsjm1haM$Oobqm;*il{ha($y^$*0y}h={kp1-#i?-}$vsph6lADOWIkzA z3}vapD4j|@uv0&JjtF&#+?c_TaD{z?mMh1Z&$|=Q+GHSH?k8!?aa9XJ2;0NW(&R7+ zz)k%)!c|AiLkGb!JGC8Kz+#YxSd3(p#keqY%?M+pdM0`~i}7f)jj0%Ily90xc?Ql^ zYR(CLyV7}aU`O64=HA$YDDzNAXm+9ie&xG>DV+G;m-kk`|6HoP`}+L->^F7hf5Pk) zV19mJ)>c@0+hzlzE1$`jk-C^iseLVb z7_)B&{sNd4C#pz-whFSuk?W8ay-m(Xt1x9T$i>0G4Mv3|+^WZLTSsytwMBK7P7c2q zc6kd0vObvwft6vb`VoU`sYkQW0WK@)JOOIBNn$BZRs-9CfNuR@3yZUzWvO$mSJrl?uy`Cb2A84(+U5Wsk_2O}MHeZD0Y`kDjYmA`NSmbl%7fHjke- zvv{n3GyqyV&WlKEN@X#Jwofpf#~aU2)kbq8pq&$y+l@f#44*K=TVfrZonBs?eM@(X z#TS+{&+ZoOUx4Rh4fy>d=>9v1fZJG{tckdB@Lk@(F4dK*troJvd^hD=3QuS4X{|HX z@2AiyvktGiBzEOI$*)x}6_-d1azL8-C>zxZDP=<^O?}Oyq*Ng~F-RL}g_tG$P?lTf PoKZGW-p0LV*)0DJB41LA diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/distribution_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/distribution_pb2.cpython-36.pyc deleted file mode 100644 index 25620727ba0c2ff9fa97e0e5f9e352fff536898c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6416 zcmd5<&3D_z5eN7IQQ(ItI+myp%ip%>Sd=Ztj+3~utq;qp6-klhHr=KV59BUs&>+A7 zpd;bsROPBaqlaF4>pzfxp|2O5`d&^t<(^Y#79a^&qD1-7SK?tgyO^2%&CKrX?1OAp z&i*I&-QN}k;TIwFy9D$zcE=^q=*tjKuctZ(HJx;Tnnx>cN%we94aRis?l@Nlf^cqKi^8*5)PoDicy)nq_9O+GZ z3vkBHL>fPa^fsO4NXI$S61@{a`sqMO@6x$}k(TNFMQD40 zHg2*4mmY51qHAoZal0n6S%$sQZf}hKiIT(EL7b02?v5kZy7bD{f-SLU; z_!LloK1_oCX`sG4OdP~X39#K^C60|#jZZ`L-7wvli}cEo-aPhjoh$dK_*y9ahF1*))y0mSsAo9ekLFFY{Eh9ZRdU9nCb9R%M~w+V@gVbhTNb>S7Y- zhF7rQIE+Gz!2pLQ1M#EK0DBJ5me{5z>8hg{_W`EFjH*dlNwm;_9%Ks@bDiB8fLo@_ zu3B2lF)io~HJNRzbrAMsi`8^iMTpQFvGclfM469B*m{w?!;qN8R&H znf&>maXA}RwkGFv&0wmf_&RMamtL3~3`}{03%?W!-^dr(UduF?;b^Mf)rLMyFDwkG zZMCNXRKAk)pivq0gboC1X$V*w_s zz$&B|g7~bsG%ODV3uNhkxY;Vf1}{lo!cd#c8)~W5caT^-$=){{b6Py4`$Ef??GMcThJ%<@KWK%NIB^A4BwwN`F024J$XJDYZccy{r z-Vq)Z+Ep-9TY@Gq(i%fWDO7}pS~JkK@cQLRHI3=i_T=u=Hpv*wb|5?m8NYPk+Z+$c zb}&=5qBAQGY6xt#zzBsWGn+`Tna!F_@}bz;j%qn17aD;ud%@0f@AivcBiX9)NHV7fv{#a%hK$O(QR z(d09zUqd*`k?ckMtmS@wesDb9X+NQV{)PVOCOr3?Nt^`f(S0~D2%cEWepc1~jSzlC z2+=dpy*ZFR^1(srem0O;IeNSvrD3xjVG&49IxpQX22;v<2W963!yOzwEZs)~D~lYm zUgz9#=LS;{oC2jJ&&NDfS>s?LPf*r1ptM!YXTPEIBc+!+-e(5SugLlz8oc%)yijw4 zdhhtjf@K`(TfVvX`b=K#SMYg$q1PW3Pn}0ty^{}$Joi?=$%0}oaN-eO9Z0mo>%T$+ zS-%iG8UoRy4QSk{&}89K8ms+M%#&AEUoY>hZ|`pHc(S52P1@F(qCfy|g0wY@O$nQa z*gS%!l&}g&--(Xi_u}@x?PcCG3(r4AGis(6Qz~R60KhB#O1owagCI%6soS};Shxwi zloFh@7H$k+=-pkc436ZL5AH8yXvIId$q;^0XoZAoe=CbZ*ZtWQYB~y(8~%Uj&Vz0s zxfgJluJrJrtwin(kdYU7vi1hNWKB0!hg?ur)?e@LtS`OUUEkVNcAjspt&(fe!KF9L zuU2=rwvpqtva!Co`h17nK8`Y=Nsh48H^k2%j>&jWD5`I9zHU4iWtd8 zKJu+ea(?ZgRQ7rKWKE+Ba{jsB9mM_XNoor#I+737Kb((T43|oFM~aN?usYlanHBXi znOR!t*N{KUK#((0ecqX0@WBidsDV9lgdN3ACh?1CsM-mgzhI?`he!$^N z`c$f`sV9pvAIkoJX!*e3i}j>}v!C&Cl|FI3zb8UO$Q diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/documentation_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/documentation_pb2.cpython-36.pyc deleted file mode 100644 index 648dc288a345bc52057d6adcc2712753a5d43900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3906 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 diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/httpbody_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/httpbody_pb2.cpython-36.pyc deleted file mode 100644 index b04c29a5553a7bb65e5a2dbfa9e3c2a89334b399..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2397 zcmcgt&2QT_6c;61wiWraah;^ClYVSVFvLdN%YYWenr8jLurz3MScw6GWYVf!S<*hO7`=3K#5kTrl;!*$>lM-8$;Oj4yPsm&44I?(#4=_1m&&~Xza zTBJ!@1kon+;^+#wLN-B1n_Pv~CLP$bHAkaOvOPy6Z5{as`JIbKvf~=L4w5%WH^1XE zvb$stBvo>g+ydHh0gI&Nbh?_W$OillsV1Y_&x<;C`G`c=S^agE{FUeOI>RiKJklCeODI>kN_6T~d9PBS-nobrP z&;cYT`Q%^rC(wBT$Oi>P(a9e`1UhF@I3fRj-;c*pKk}kOXX5$faLn%A{n@6Z?}nl4 zQ#9y`Q-RFrn1D@+Hn=9UVK z#4Q5`ACwWqGM90vCqnn_*bDB0i#iPkA)yC|N#|GYGO0Mxd1(Qp4MO>Vc~KlPn3cwq zbK8Z@!eDgh(?RTo0nF-rI(9C^N*_Blqdl^h(4W!xLCq#OA7#H%u zEh<2s3T0ND#KXgH4jQZm3{e?QeBVmkE_z`9T`*2OG6T3gh@vDHqUhTW^>Op9 z%`HNQ_Qa2^_qIQwqPjjcmt~%8!xakpQVn(KltDB2Sz;VO+==Q>;MQDckVm#|9$$Y(1Ilbj@Tt5v2ciE% zdV!xox6T!^-NQ?R?g0Q?xjecIQdGztCZ&Hk$g+|dmv@hMP}NxvSw-p yq$W*Ax@s1)8SvBs(oq@JfEM7N&dO^u$txg3g%9LYJ?W^d)sO)zHPCHnhV~y2tHEUe diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/label_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/label_pb2.cpython-36.pyc deleted file mode 100644 index a811d0147d6908fd2d93db2c8126e51553660da9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2762 zcmcIlOK;mo5av=MMXmLU{I(Ovah!+RSVoezXwe{O96PB2*D)M7KoRAH*D|n;7kfu?MB2Ob4(>jQ1iyGBmYkY-fX!a*9T&ITo5*@TmFVoEu14)Y< z@FvMA-U8ktdBx{}$7Bj=Y^qZ@(MXXQof5@#iWZnoizf(Z=>*a8sX@xHR-qMog(4>T zE3^upAsQIdr-qWu&{-I1$sC=BF_N@1id&$Ibm=rts;t?kX!Q zbotITy3BH&l@?;x**v{RH%|4F3|R%88*EkTNF??eMK85leJG2+Kg<^7Zl!{+U$CyflG;b0T%E>Kf7zJ|IBGwS=Xb1bS6ShO+U8KTGl+NG+du$hUf)XDa|!%k`MzvXT>~ zs$V3^%>eMYzU#MDF_Ud7DI`(s@K}^m66RBJu|Eb&mqQe?a|SDyE7W0qn1{fh32k8X z;?~CJwTgnk7eUIal1xi71B6)3FjT<`Lv=a1@`DrEl(n3m7uyP$D4v^=!sx$E%<>F! zn!vp#9TwckX2&t}Bd8nnB1^O8Bx=Om+R>)(7yY7}N&C64(tbAR^uOgWDgl zPW>OlJ79S(7xMm9!EhP6Fk3G3Xe97i&=D#4EQ+BoWv|GUG1y2UA;mFT>NGsY%ixAo z&dhBN=L?I78Tc${MSMl>cOA%JCKa;EyF8g|y1?5zFP|Rn9vrIaanpY1r;2hv|OIw!m>wI<5P*kiY-v+2f-#tM`D z&!Zz(pEI9v2db|wj%MI}lU!Kx>=n7uL}aPkjQOfeMR|;5yk?Ehv((L~?sIu7!Y!QC z_p!V?qhEnoXayCLk+F;{($z3g;f&YyEHXiAqVr!%PjoFEXU29QQQ8(NDSb=XBs7c0 cvt$kH^2v_8NJ|}AnF82hg!K~ah%-3zFXjdlY5)KL diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/log_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/log_pb2.cpython-36.pyc deleted file mode 100644 index 7819a1e489d72c4736482a2d631764aea44ec04c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2585 zcmcgt&2HO95av=6B~iatY}t-~lO}1@z%r6t3N#3sKL-I^$4GKo6d*{=ilsu4>@F49 zLT<{{FVS0%eTAY=!Bc@=s#oZ#vrEaMf*NQq<$}ZA*_qjyZ)S%NYc;d>d;R-A>zek5 zmU*^t{w==ZH==2v0r54eF>OFV+tfgRukl^TLH?5#-GYMrQXQoXKR3+N0+AX;oEx;L z<|Uk$Xj#q6I5%m9Xsj}*PBdCWS<|l%8?=eM!e9j|P=y-Pp*|r<8%UdjmP?>{VbB&z zT!R&80b%kj3|8S9tfGxIXyaIeb=29Ikii;kP6(u9U4Bvi`bAS|Y{524?!YeWfez~~ z#;3;Ta{F)trS$(``6hgU^0)q-hMRXaIq>XtsHxd)xC38aG-(@SUT5vW25fC=)+TGS z*5Ep@OY+pxllgPlHMyQ~d&p>v^6a&!-6_Sv44kx^SWfV|Z@Url9t zPo_DfJxr>4|s~kUzNpqs`#Z z4MW#wcI1hJUN{_v!9m2sI25yuL)LkJV2d~F^VbJ&7ZG=!TYvxdGszl5k&HS>WzWE*6k+%326nFu>d ziw%80cenCjD-%`sSngz0ubGuO)`;mwPFYwrtKf;qx6dtQH!rzQ2md2P&MY+@BT=Cx z#mMfx#~MfsaUR6>S<*siJ=^!j46HDc1tDlH!;2hR1s1UYu<|@6l4Z=s8;ewTm(b+c zT($AeRoh*O$W-3KX&K2;qKylqxPS0QiPa)0Fe3b&--;pu0I5sZco<4Ha~j~FfW zqR5i7q@dD7SAMXC1*~t6{Mh&^QjuqIB&v+Bf(B`GO#qp*yL5(nAVPDW@rnW?E^O)8%94xbOD-+nPg?9ABeE#C? zvp26!-@Sg5n3gpRVdOK*>fB6n;#?%v4~)xPSzgc&6WwxXV`fHm7iZMxvdm}&D`egh zxk^OInpFjt$w7fdYvffGi}hK1q{ZiHmC>TyvcRF4cEf8@X;$|Zgt3J!Qhik+ShAtS;FvOjeDB?}n0G3%;z_d@@>^xyGLUby0Hk>tVa#k?gCXv{6m_e%42 zlKDxgAFKR9;SVv*;A2^z;uDe**(KF<Cnd3}Wcj!hD51Jx>f$B6XyB{H7~O e7pvvHbY<%Jpmu6Cot1KRViHrY<4I=D%>4~h(e{P_ diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/logging_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/logging_pb2.cpython-36.pyc deleted file mode 100644 index 30445768ae7487178d86f178f3fdf150c386c839..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3003 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 Z0xd2o*rX)rRs!(LsYsBI#CSj!{|k99fIa{K diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/monitored_resource_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/monitored_resource_pb2.cpython-36.pyc deleted file mode 100644 index 08d954835767edf3769ba9dfa65529dc9f018e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5335 zcmc&&TW{OQ6(*^RW$J3hadeC0I8I{4v7Fd(o6V+ad{NSDW5@8NKnDvDlxCz-p+uFW z7O}c-?n^Iu*uT)X{(+*;*?+-@qClVg7j}W7=L|`ivT9e}qNoWD&&-^2=9_QMoEdp7 znUs@%Pks5#BSH9w5cn&B{1RR(6%hm~P*E3%z=W1ag}gwe_kuY~Lp1zbp}RmM_$3l( zMfFfSOd=v$On@9E6I_mg93zulo&;GYaZzCLR^mh;Nzj$`R69*Fygv^8QzQ%hk=8Yu zph=oy5>20oP-dXaw5D0MHQkix)W;~92CeHfORrIpO~V^$&CqFj9emEv8}Q_49_$Jy zV(SJio`}?a^7sY)(#H(9xJhS0Gj|1xTXc@zhG+aS=II?O!85+a0=-M`!E>K3f?d7| ztH7TC`evjl-~;V>n&MKKKA=k>kU}*Ysx}rIQf34?2tN{y=Aapo10<2erI!!3rR~`4|G*GPf;r zTl7+HJs9|TIj}@O&jz*Pz)uOJFSws2?q_M>XQ}lNWn2#h_fMXeMJx}5^3P8(QSP3G zpsb51!ykU}-GbK&L-Dl$s^adSp>V_xCMxsdyQ3Am-CgNw-Q`+O)9G^CTz&j&mC==^ zVKjB7b~S6cZnWD*XSr({wqbc4E6}q7t(t9^j4CFxjGkF%O1HLJ=^i_==epXiQS}8R zY{7z8Fr!cm0hFMD1C&AdT4=!xPjE)kt`pT&TkAXquu;~j8$qJrbcL$6T2n1lnAFu8(-A&uTejJ& z+gR)0af!HKz7&Okld45_g7$ zlGn}w)q0H;mm;@!{?j+2TpXF&_Fyrx2|3(R+bkEE6Bj43W*>K1PUN*|IYBk6tEfk<*5-+=LY|5;8Efp z%R!GL#_kwawPTydg=IO;hjgpixEy-Vj=ec0<;Yj6-eWmFnP<{dasJ!ii*kO%;|{Y` z48v?iPFly7&Dx4LLnJ4@dc()#6JI&tv6=lsj`u8P`r0n~bzd6-v2x*9l_M|=KrcL& z)90H0(`+`6|BshP#?Cc0|4B(Nb)(D7EFgBm4NYfe5yY`4 zj&Onfz>e>)jmcTi=oF6+CzvDptK+)y@)Ar7Pa4c8{pB%jUG-Buj85ZN;Nf-J!s2@< zyoED!AUiQ62iMu0gQ|H8+oBDP>C|%M0i6~}bQo-W%2~%Ae@QIPF-iLCK-C(MJq2z^ zW?-(Ea9l8pM2!wJ8Wza}!rZb|(PTIk10e zQVNby;St-1Y^i+-8$$aX6wYW0?|X+49=D?#vVZ$hj2M3Yq5kh3RJ=9*C$87|#Mpmw znRh>%pU<%Ur$59BIqX0CL6)3I?Jn#Q?H5ou7au(Rg>eRe>=`_qF5hYc7KUs{@Vx3j z8fVl>;Dpou2*EJ4wr&3^HFWzdOOCuGz-;ouiZP1?16r~(8mvJ9H!D1Z> zXjmO?s5l|O>?FQoCMG>a>og2UQfega!SzpJ6O%THL#p-fno{W?}S%z z!c?o<<~1ZW?R)b2O!%Lc;Ktt?N*H($E#BoM@VkcpG{buV{DyKP_XQp{)?Xm}W8$os zaGy{t1X3t0O8kk6Q7IGgYtSZz#i$q)Q&5KCd(|51hecU}Kk(&_;YzXac%%5XQ4b+{ zi4E{xgz#)!80CLDt~-*?%q8Q7ki!JLDJW(4ky0=#IV4LdF2%yUCMM3;L$EI5zW`mC B^`!s+ diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/monitoring_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/monitoring_pb2.cpython-36.pyc deleted file mode 100644 index e0a52f311f9b39b8846ee37ab81d2e83af7b089c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3090 zcmcguPjA~c6c=S%wiW-2TiZ#Rrb*MTb=xFp3k(BR6lgBZNLr#_6^o=q0@k!eBE)UJyLS4q;7#;CP7b+i|{_GcxyL2}}aRglu$%pi+%NND7N z*Kl6)1>g&~DET7rI$l5uUFes_3NC}J?p6j>T!Xn>e~~PZ5-C%aRK^Hs6=t809$Yrq6AWgU%qy;)lW7Kbuw&}*f=H4#whOfo<% zBzU;QTRhL;;aMQ>6%a+8Ux7sEm1tw=gGnjtn9$76Z*{YY$NDC*bYvj!Xwulbcy*mCp^QWFb&ALzyQT@ zU^+1Gl|E!M7MZA>NOR55@$N&A8ucun&^BTs{8_+E7?w8AJb<)LD7TmsKrk@M4=CrR z4a$+uXwRiq==dIts{CZo^<9IQq1iRL5U84-=ZE0c_qa%6bR|ywLVnva`H>zkZbR}| zlT#0e3Yod?o(gtlHI-E=<2bGBAAUo+K8v{igWiC+$k3w9fXc!r zi3_xZ)-$&k9^6Z1x;;}%vAZ)RVGI)C!@)&k>X#c^+0`2}hiNY>dVLU=oDzdk?hlzo zAzpO5Sg-1Uh>$rJUlKlxPv8Fk->aLzrL9F-&m7PwADGq~0BNN06E8H6qdI(N$8?<$ zB;W@Ukhq+h3%a;OXh1yzTf?C|nqP_0-5Cs1UnIq*%7*6@ZS?pH3~YZ~^oeLZlOm88 zkuu5+!`{|6?Ha4VL{#hzUDuHL=Nw4nIMTe~pi5bl4Nn4!3sw*qf{Svl*`+RC{K@11 z!JavEL*t$44rx?AKP)AiU8>We}Fh&Ln)HfSyPxV2=gL+wgy9XRm^EUhq{DE`dL66 zmps@&fCCY?SeYipWt6x)&4id;m$Dj|!L>7WgF%0x9BaNu{T|1)6o`0evJh8NGk~Wk zwf9GjxhdoM4dGK@o7+7m3lQf-G<`h3BYeu*-1af~9t@3^Q_&_+OirV=8tJ>wUq5@b ze|YrrRiqon06LmW4Wpf5b5p~6%LQFc VMx=w~idunq3RxBD86A}}{{be|pK<^I diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/quota_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/quota_pb2.cpython-36.pyc deleted file mode 100644 index f6c1779dd61874f3b47d5155df190a1836cb2c67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 zcmcgvOLN=E5eE1GNrnZM zKm(vlLhVht>X1WzKvKEnZ}^ZOfm5n-;$PTPx(6T#>SZ~HB?^O{neLviAJa2@l*`Gv z|K$I;`$!P}D@1;`fc_3%`%_X7s6a(sAOaIwA{C|t8hbBTH)xzD{vvel&?J6I47emc z-cFFDh!QEFC6eNF8t631a5@9DOh!b3jkL1I0?7fdtmoUKqyS^d))*b3S(;-pnm-ny z9fh{gDmF!0IFU#ZIIht#TBIVwH`yAe*XTIth|vi;32mtfX!%pZ7P!hM1D88oOL{QApUw$EqdHSpW(;JWJuemp-IF42NB!c59{T6UM`+}(ahJMF! zTs@A@=?fmkOX3K~#_1Yehgi>C7H`hCL08CK@>R6v)M z>#W4eF#C{?RM-@ZOtA`#?DCNbR&3p%V^0N;L~04B3a3_q%C&B?;;{(TDASsyV=UFW z)ezYno1pLL?@waKadI1Y?y%b-&r-;P60>2i)R$mop#E?Y2idz^7U~4(M=f_-P%VPB zRzpeD^L5yp3iVWg`hn}2=hE|`p83`S(zp+lMQBUBox*lsSR_3x?mN9Wv~>|__~94d zHF)g=G(QT!D(?IX8c#g5keN3>eZTCqJIfudvsCM9I$dg8D-S=Yj4n4#v#B$+quEP! zv)wk0rH*AfrX5Ty!_4xBuIZ>sr?yh<9C_)dy4tQ$^%oiopQKBm?oI z&;p~5(TLcNC+VuA84m%U#EiO0*`jD6@&Q&06?2{83cxK>X4fsPM# z*Z_YJ ztRCa~=A)|*K7iwp79*kf_-)8AsU z9~Y2BE0FL%V!G z6vyQ()$ES09x2?GENZGO$s@aH#0VW!n&dAVi zbg!SW&(AY|v-a>1=wTV{tz+|dXaaMs381|+s>J-Uu0z+F!7-_!F`e3;9D=Y()?l^+ zK|%9zrf-PNk&#>bMFn9j* zY}_r{Eciv+hQ^E3-XU)cfbbpYR?b(A`Psv}gcmK;7nu~PM>^g>B1d!8k9jYRn)!Kh zkq7at@q#nvB4s>iu+yWb%22XJQASRlUKW z&yy9UZBp2~in18D?t!eeip>*fU|@N8;Jz2Pk8Cgdky%(670qavUQDTx(O@ZlovL*k z7Vcv*0_C`W8?>;vdub&o!4?*LU>MvAEd)*q%BhD%{uB;pi1&O3k z(@`KM{x@=)#Oox|WVY$nC!~XR-(Z6TxjAPWK;FU%G#PZ-pIWEWYoJuEnPt2a~$054n{{SEXv$OyJ diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/service_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/service_pb2.cpython-36.pyc deleted file mode 100644 index d4493d613084d8bd88ddddcd5f97645ba847c2db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8136 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 NMF!!yNj*}}e*np$k0k&A diff --git a/venv/lib/python3.6/site-packages/google/api/__pycache__/source_info_pb2.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api/__pycache__/source_info_pb2.cpython-36.pyc deleted file mode 100644 index fb12c044d7e3873fb1776053d35dd9618b12f96e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2186 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\n\x0e\x62ucket_options\x18\x06 \x01(\x0b\x32&.google.api.Distribution.BucketOptions\x12\x15\n\rbucket_counts\x18\x07 \x03(\x03\x1a!\n\x05Range\x12\x0b\n\x03min\x18\x01 \x01(\x01\x12\x0b\n\x03max\x18\x02 \x01(\x01\x1a\xb5\x03\n\rBucketOptions\x12G\n\x0elinear_buckets\x18\x01 \x01(\x0b\x32-.google.api.Distribution.BucketOptions.LinearH\x00\x12Q\n\x13\x65xponential_buckets\x18\x02 \x01(\x0b\x32\x32.google.api.Distribution.BucketOptions.ExponentialH\x00\x12K\n\x10\x65xplicit_buckets\x18\x03 \x01(\x0b\x32/.google.api.Distribution.BucketOptions.ExplicitH\x00\x1a\x43\n\x06Linear\x12\x1a\n\x12num_finite_buckets\x18\x01 \x01(\x05\x12\r\n\x05width\x18\x02 \x01(\x01\x12\x0e\n\x06offset\x18\x03 \x01(\x01\x1aO\n\x0b\x45xponential\x12\x1a\n\x12num_finite_buckets\x18\x01 \x01(\x05\x12\x15\n\rgrowth_factor\x18\x02 \x01(\x01\x12\r\n\x05scale\x18\x03 \x01(\x01\x1a\x1a\n\x08\x45xplicit\x12\x0e\n\x06\x62ounds\x18\x01 \x03(\x01\x42\t\n\x07optionsBj\n\x0e\x63om.google.apiB\x11\x44istributionProtoP\x01ZCgoogle.golang.org/genproto/googleapis/api/distribution;distributionb\x06proto3') - , - dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) - - - - -_DISTRIBUTION_RANGE = _descriptor.Descriptor( - name='Range', - full_name='google.api.Distribution.Range', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='min', full_name='google.api.Distribution.Range.min', index=0, - number=1, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='max', full_name='google.api.Distribution.Range.max', index=1, - number=2, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=289, - serialized_end=322, -) - -_DISTRIBUTION_BUCKETOPTIONS_LINEAR = _descriptor.Descriptor( - name='Linear', - full_name='google.api.Distribution.BucketOptions.Linear', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='num_finite_buckets', full_name='google.api.Distribution.BucketOptions.Linear.num_finite_buckets', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='width', full_name='google.api.Distribution.BucketOptions.Linear.width', index=1, - number=2, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='offset', full_name='google.api.Distribution.BucketOptions.Linear.offset', index=2, - number=3, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=575, - serialized_end=642, -) - -_DISTRIBUTION_BUCKETOPTIONS_EXPONENTIAL = _descriptor.Descriptor( - name='Exponential', - full_name='google.api.Distribution.BucketOptions.Exponential', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='num_finite_buckets', full_name='google.api.Distribution.BucketOptions.Exponential.num_finite_buckets', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='growth_factor', full_name='google.api.Distribution.BucketOptions.Exponential.growth_factor', index=1, - number=2, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='scale', full_name='google.api.Distribution.BucketOptions.Exponential.scale', index=2, - number=3, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=644, - serialized_end=723, -) - -_DISTRIBUTION_BUCKETOPTIONS_EXPLICIT = _descriptor.Descriptor( - name='Explicit', - full_name='google.api.Distribution.BucketOptions.Explicit', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='bounds', full_name='google.api.Distribution.BucketOptions.Explicit.bounds', index=0, - number=1, type=1, cpp_type=5, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=725, - serialized_end=751, -) - -_DISTRIBUTION_BUCKETOPTIONS = _descriptor.Descriptor( - name='BucketOptions', - full_name='google.api.Distribution.BucketOptions', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='linear_buckets', full_name='google.api.Distribution.BucketOptions.linear_buckets', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='exponential_buckets', full_name='google.api.Distribution.BucketOptions.exponential_buckets', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='explicit_buckets', full_name='google.api.Distribution.BucketOptions.explicit_buckets', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_DISTRIBUTION_BUCKETOPTIONS_LINEAR, _DISTRIBUTION_BUCKETOPTIONS_EXPONENTIAL, _DISTRIBUTION_BUCKETOPTIONS_EXPLICIT, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='options', full_name='google.api.Distribution.BucketOptions.options', - index=0, containing_type=None, fields=[]), - ], - serialized_start=325, - serialized_end=762, -) - -_DISTRIBUTION = _descriptor.Descriptor( - name='Distribution', - full_name='google.api.Distribution', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='count', full_name='google.api.Distribution.count', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='mean', full_name='google.api.Distribution.mean', index=1, - number=2, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sum_of_squared_deviation', full_name='google.api.Distribution.sum_of_squared_deviation', index=2, - number=3, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='range', full_name='google.api.Distribution.range', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='bucket_options', full_name='google.api.Distribution.bucket_options', index=4, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='bucket_counts', full_name='google.api.Distribution.bucket_counts', index=5, - number=7, type=3, cpp_type=2, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_DISTRIBUTION_RANGE, _DISTRIBUTION_BUCKETOPTIONS, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=76, - serialized_end=762, -) - -_DISTRIBUTION_RANGE.containing_type = _DISTRIBUTION -_DISTRIBUTION_BUCKETOPTIONS_LINEAR.containing_type = _DISTRIBUTION_BUCKETOPTIONS -_DISTRIBUTION_BUCKETOPTIONS_EXPONENTIAL.containing_type = _DISTRIBUTION_BUCKETOPTIONS -_DISTRIBUTION_BUCKETOPTIONS_EXPLICIT.containing_type = _DISTRIBUTION_BUCKETOPTIONS -_DISTRIBUTION_BUCKETOPTIONS.fields_by_name['linear_buckets'].message_type = _DISTRIBUTION_BUCKETOPTIONS_LINEAR -_DISTRIBUTION_BUCKETOPTIONS.fields_by_name['exponential_buckets'].message_type = _DISTRIBUTION_BUCKETOPTIONS_EXPONENTIAL -_DISTRIBUTION_BUCKETOPTIONS.fields_by_name['explicit_buckets'].message_type = _DISTRIBUTION_BUCKETOPTIONS_EXPLICIT -_DISTRIBUTION_BUCKETOPTIONS.containing_type = _DISTRIBUTION -_DISTRIBUTION_BUCKETOPTIONS.oneofs_by_name['options'].fields.append( - _DISTRIBUTION_BUCKETOPTIONS.fields_by_name['linear_buckets']) -_DISTRIBUTION_BUCKETOPTIONS.fields_by_name['linear_buckets'].containing_oneof = _DISTRIBUTION_BUCKETOPTIONS.oneofs_by_name['options'] -_DISTRIBUTION_BUCKETOPTIONS.oneofs_by_name['options'].fields.append( - _DISTRIBUTION_BUCKETOPTIONS.fields_by_name['exponential_buckets']) -_DISTRIBUTION_BUCKETOPTIONS.fields_by_name['exponential_buckets'].containing_oneof = _DISTRIBUTION_BUCKETOPTIONS.oneofs_by_name['options'] -_DISTRIBUTION_BUCKETOPTIONS.oneofs_by_name['options'].fields.append( - _DISTRIBUTION_BUCKETOPTIONS.fields_by_name['explicit_buckets']) -_DISTRIBUTION_BUCKETOPTIONS.fields_by_name['explicit_buckets'].containing_oneof = _DISTRIBUTION_BUCKETOPTIONS.oneofs_by_name['options'] -_DISTRIBUTION.fields_by_name['range'].message_type = _DISTRIBUTION_RANGE -_DISTRIBUTION.fields_by_name['bucket_options'].message_type = _DISTRIBUTION_BUCKETOPTIONS -DESCRIPTOR.message_types_by_name['Distribution'] = _DISTRIBUTION -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Distribution = _reflection.GeneratedProtocolMessageType('Distribution', (_message.Message,), dict( - - Range = _reflection.GeneratedProtocolMessageType('Range', (_message.Message,), dict( - DESCRIPTOR = _DISTRIBUTION_RANGE, - __module__ = 'google.api.distribution_pb2' - # @@protoc_insertion_point(class_scope:google.api.Distribution.Range) - )) - , - - BucketOptions = _reflection.GeneratedProtocolMessageType('BucketOptions', (_message.Message,), dict( - - Linear = _reflection.GeneratedProtocolMessageType('Linear', (_message.Message,), dict( - DESCRIPTOR = _DISTRIBUTION_BUCKETOPTIONS_LINEAR, - __module__ = 'google.api.distribution_pb2' - # @@protoc_insertion_point(class_scope:google.api.Distribution.BucketOptions.Linear) - )) - , - - Exponential = _reflection.GeneratedProtocolMessageType('Exponential', (_message.Message,), dict( - DESCRIPTOR = _DISTRIBUTION_BUCKETOPTIONS_EXPONENTIAL, - __module__ = 'google.api.distribution_pb2' - # @@protoc_insertion_point(class_scope:google.api.Distribution.BucketOptions.Exponential) - )) - , - - Explicit = _reflection.GeneratedProtocolMessageType('Explicit', (_message.Message,), dict( - DESCRIPTOR = _DISTRIBUTION_BUCKETOPTIONS_EXPLICIT, - __module__ = 'google.api.distribution_pb2' - # @@protoc_insertion_point(class_scope:google.api.Distribution.BucketOptions.Explicit) - )) - , - DESCRIPTOR = _DISTRIBUTION_BUCKETOPTIONS, - __module__ = 'google.api.distribution_pb2' - # @@protoc_insertion_point(class_scope:google.api.Distribution.BucketOptions) - )) - , - DESCRIPTOR = _DISTRIBUTION, - __module__ = 'google.api.distribution_pb2' - # @@protoc_insertion_point(class_scope:google.api.Distribution) - )) -_sym_db.RegisterMessage(Distribution) -_sym_db.RegisterMessage(Distribution.Range) -_sym_db.RegisterMessage(Distribution.BucketOptions) -_sym_db.RegisterMessage(Distribution.BucketOptions.Linear) -_sym_db.RegisterMessage(Distribution.BucketOptions.Exponential) -_sym_db.RegisterMessage(Distribution.BucketOptions.Explicit) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/documentation_pb2.py b/venv/lib/python3.6/site-packages/google/api/documentation_pb2.py deleted file mode 100644 index 35c4bf7..0000000 --- a/venv/lib/python3.6/site-packages/google/api/documentation_pb2.py +++ /dev/null @@ -1,207 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/documentation.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/documentation.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\022DocumentationProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n\x1egoogle/api/documentation.proto\x12\ngoogle.api\"\xa1\x01\n\rDocumentation\x12\x0f\n\x07summary\x18\x01 \x01(\t\x12\x1f\n\x05pages\x18\x05 \x03(\x0b\x32\x10.google.api.Page\x12,\n\x05rules\x18\x03 \x03(\x0b\x32\x1d.google.api.DocumentationRule\x12\x1e\n\x16\x64ocumentation_root_url\x18\x04 \x01(\t\x12\x10\n\x08overview\x18\x02 \x01(\t\"[\n\x11\x44ocumentationRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x1f\n\x17\x64\x65precation_description\x18\x03 \x01(\t\"I\n\x04Page\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\t\x12\"\n\x08subpages\x18\x03 \x03(\x0b\x32\x10.google.api.PageBt\n\x0e\x63om.google.apiB\x12\x44ocumentationProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') -) - - - - -_DOCUMENTATION = _descriptor.Descriptor( - name='Documentation', - full_name='google.api.Documentation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='summary', full_name='google.api.Documentation.summary', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='pages', full_name='google.api.Documentation.pages', index=1, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='rules', full_name='google.api.Documentation.rules', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='documentation_root_url', full_name='google.api.Documentation.documentation_root_url', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='overview', full_name='google.api.Documentation.overview', index=4, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=47, - serialized_end=208, -) - - -_DOCUMENTATIONRULE = _descriptor.Descriptor( - name='DocumentationRule', - full_name='google.api.DocumentationRule', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='selector', full_name='google.api.DocumentationRule.selector', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='description', full_name='google.api.DocumentationRule.description', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='deprecation_description', full_name='google.api.DocumentationRule.deprecation_description', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=210, - serialized_end=301, -) - - -_PAGE = _descriptor.Descriptor( - name='Page', - full_name='google.api.Page', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='google.api.Page.name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='content', full_name='google.api.Page.content', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='subpages', full_name='google.api.Page.subpages', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=303, - serialized_end=376, -) - -_DOCUMENTATION.fields_by_name['pages'].message_type = _PAGE -_DOCUMENTATION.fields_by_name['rules'].message_type = _DOCUMENTATIONRULE -_PAGE.fields_by_name['subpages'].message_type = _PAGE -DESCRIPTOR.message_types_by_name['Documentation'] = _DOCUMENTATION -DESCRIPTOR.message_types_by_name['DocumentationRule'] = _DOCUMENTATIONRULE -DESCRIPTOR.message_types_by_name['Page'] = _PAGE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Documentation = _reflection.GeneratedProtocolMessageType('Documentation', (_message.Message,), dict( - DESCRIPTOR = _DOCUMENTATION, - __module__ = 'google.api.documentation_pb2' - # @@protoc_insertion_point(class_scope:google.api.Documentation) - )) -_sym_db.RegisterMessage(Documentation) - -DocumentationRule = _reflection.GeneratedProtocolMessageType('DocumentationRule', (_message.Message,), dict( - DESCRIPTOR = _DOCUMENTATIONRULE, - __module__ = 'google.api.documentation_pb2' - # @@protoc_insertion_point(class_scope:google.api.DocumentationRule) - )) -_sym_db.RegisterMessage(DocumentationRule) - -Page = _reflection.GeneratedProtocolMessageType('Page', (_message.Message,), dict( - DESCRIPTOR = _PAGE, - __module__ = 'google.api.documentation_pb2' - # @@protoc_insertion_point(class_scope:google.api.Page) - )) -_sym_db.RegisterMessage(Page) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/endpoint_pb2.py b/venv/lib/python3.6/site-packages/google/api/endpoint_pb2.py deleted file mode 100644 index 5bfc5b7..0000000 --- a/venv/lib/python3.6/site-packages/google/api/endpoint_pb2.py +++ /dev/null @@ -1,100 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/endpoint.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/endpoint.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\rEndpointProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n\x19google/api/endpoint.proto\x12\ngoogle.api\x1a\x1cgoogle/api/annotations.proto\"_\n\x08\x45ndpoint\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x61liases\x18\x02 \x03(\t\x12\x10\n\x08\x66\x65\x61tures\x18\x04 \x03(\t\x12\x0e\n\x06target\x18\x65 \x01(\t\x12\x12\n\nallow_cors\x18\x05 \x01(\x08\x42o\n\x0e\x63om.google.apiB\rEndpointProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) - - - - -_ENDPOINT = _descriptor.Descriptor( - name='Endpoint', - full_name='google.api.Endpoint', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='google.api.Endpoint.name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='aliases', full_name='google.api.Endpoint.aliases', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='features', full_name='google.api.Endpoint.features', index=2, - number=4, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='target', full_name='google.api.Endpoint.target', index=3, - number=101, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='allow_cors', full_name='google.api.Endpoint.allow_cors', index=4, - number=5, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=71, - serialized_end=166, -) - -DESCRIPTOR.message_types_by_name['Endpoint'] = _ENDPOINT -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Endpoint = _reflection.GeneratedProtocolMessageType('Endpoint', (_message.Message,), dict( - DESCRIPTOR = _ENDPOINT, - __module__ = 'google.api.endpoint_pb2' - # @@protoc_insertion_point(class_scope:google.api.Endpoint) - )) -_sym_db.RegisterMessage(Endpoint) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/http_pb2.py b/venv/lib/python3.6/site-packages/google/api/http_pb2.py deleted file mode 100644 index 104dfd4..0000000 --- a/venv/lib/python3.6/site-packages/google/api/http_pb2.py +++ /dev/null @@ -1,249 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/http.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/http.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\tHttpProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\370\001\001\242\002\004GAPI'), - serialized_pb=_b('\n\x15google/api/http.proto\x12\ngoogle.api\"T\n\x04Http\x12#\n\x05rules\x18\x01 \x03(\x0b\x32\x14.google.api.HttpRule\x12\'\n\x1f\x66ully_decode_reserved_expansion\x18\x02 \x01(\x08\"\x81\x02\n\x08HttpRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\r\n\x03get\x18\x02 \x01(\tH\x00\x12\r\n\x03put\x18\x03 \x01(\tH\x00\x12\x0e\n\x04post\x18\x04 \x01(\tH\x00\x12\x10\n\x06\x64\x65lete\x18\x05 \x01(\tH\x00\x12\x0f\n\x05patch\x18\x06 \x01(\tH\x00\x12/\n\x06\x63ustom\x18\x08 \x01(\x0b\x32\x1d.google.api.CustomHttpPatternH\x00\x12\x0c\n\x04\x62ody\x18\x07 \x01(\t\x12\x15\n\rresponse_body\x18\x0c \x01(\t\x12\x31\n\x13\x61\x64\x64itional_bindings\x18\x0b \x03(\x0b\x32\x14.google.api.HttpRuleB\t\n\x07pattern\"/\n\x11\x43ustomHttpPattern\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\tBj\n\x0e\x63om.google.apiB\tHttpProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xf8\x01\x01\xa2\x02\x04GAPIb\x06proto3') -) - - - - -_HTTP = _descriptor.Descriptor( - name='Http', - full_name='google.api.Http', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='rules', full_name='google.api.Http.rules', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='fully_decode_reserved_expansion', full_name='google.api.Http.fully_decode_reserved_expansion', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=37, - serialized_end=121, -) - - -_HTTPRULE = _descriptor.Descriptor( - name='HttpRule', - full_name='google.api.HttpRule', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='selector', full_name='google.api.HttpRule.selector', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='get', full_name='google.api.HttpRule.get', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='put', full_name='google.api.HttpRule.put', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='post', full_name='google.api.HttpRule.post', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='delete', full_name='google.api.HttpRule.delete', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='patch', full_name='google.api.HttpRule.patch', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='custom', full_name='google.api.HttpRule.custom', index=6, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='body', full_name='google.api.HttpRule.body', index=7, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='response_body', full_name='google.api.HttpRule.response_body', index=8, - number=12, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='additional_bindings', full_name='google.api.HttpRule.additional_bindings', index=9, - number=11, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='pattern', full_name='google.api.HttpRule.pattern', - index=0, containing_type=None, fields=[]), - ], - serialized_start=124, - serialized_end=381, -) - - -_CUSTOMHTTPPATTERN = _descriptor.Descriptor( - name='CustomHttpPattern', - full_name='google.api.CustomHttpPattern', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='kind', full_name='google.api.CustomHttpPattern.kind', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='path', full_name='google.api.CustomHttpPattern.path', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=383, - serialized_end=430, -) - -_HTTP.fields_by_name['rules'].message_type = _HTTPRULE -_HTTPRULE.fields_by_name['custom'].message_type = _CUSTOMHTTPPATTERN -_HTTPRULE.fields_by_name['additional_bindings'].message_type = _HTTPRULE -_HTTPRULE.oneofs_by_name['pattern'].fields.append( - _HTTPRULE.fields_by_name['get']) -_HTTPRULE.fields_by_name['get'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern'] -_HTTPRULE.oneofs_by_name['pattern'].fields.append( - _HTTPRULE.fields_by_name['put']) -_HTTPRULE.fields_by_name['put'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern'] -_HTTPRULE.oneofs_by_name['pattern'].fields.append( - _HTTPRULE.fields_by_name['post']) -_HTTPRULE.fields_by_name['post'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern'] -_HTTPRULE.oneofs_by_name['pattern'].fields.append( - _HTTPRULE.fields_by_name['delete']) -_HTTPRULE.fields_by_name['delete'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern'] -_HTTPRULE.oneofs_by_name['pattern'].fields.append( - _HTTPRULE.fields_by_name['patch']) -_HTTPRULE.fields_by_name['patch'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern'] -_HTTPRULE.oneofs_by_name['pattern'].fields.append( - _HTTPRULE.fields_by_name['custom']) -_HTTPRULE.fields_by_name['custom'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern'] -DESCRIPTOR.message_types_by_name['Http'] = _HTTP -DESCRIPTOR.message_types_by_name['HttpRule'] = _HTTPRULE -DESCRIPTOR.message_types_by_name['CustomHttpPattern'] = _CUSTOMHTTPPATTERN -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Http = _reflection.GeneratedProtocolMessageType('Http', (_message.Message,), dict( - DESCRIPTOR = _HTTP, - __module__ = 'google.api.http_pb2' - # @@protoc_insertion_point(class_scope:google.api.Http) - )) -_sym_db.RegisterMessage(Http) - -HttpRule = _reflection.GeneratedProtocolMessageType('HttpRule', (_message.Message,), dict( - DESCRIPTOR = _HTTPRULE, - __module__ = 'google.api.http_pb2' - # @@protoc_insertion_point(class_scope:google.api.HttpRule) - )) -_sym_db.RegisterMessage(HttpRule) - -CustomHttpPattern = _reflection.GeneratedProtocolMessageType('CustomHttpPattern', (_message.Message,), dict( - DESCRIPTOR = _CUSTOMHTTPPATTERN, - __module__ = 'google.api.http_pb2' - # @@protoc_insertion_point(class_scope:google.api.CustomHttpPattern) - )) -_sym_db.RegisterMessage(CustomHttpPattern) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/httpbody_pb2.py b/venv/lib/python3.6/site-packages/google/api/httpbody_pb2.py deleted file mode 100644 index 9b5aab2..0000000 --- a/venv/lib/python3.6/site-packages/google/api/httpbody_pb2.py +++ /dev/null @@ -1,87 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/httpbody.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/httpbody.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\rHttpBodyProtoP\001Z;google.golang.org/genproto/googleapis/api/httpbody;httpbody\242\002\004GAPI'), - serialized_pb=_b('\n\x19google/api/httpbody.proto\x12\ngoogle.api\x1a\x19google/protobuf/any.proto\"X\n\x08HttpBody\x12\x14\n\x0c\x63ontent_type\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12(\n\nextensions\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyBe\n\x0e\x63om.google.apiB\rHttpBodyProtoP\x01Z;google.golang.org/genproto/googleapis/api/httpbody;httpbody\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_protobuf_dot_any__pb2.DESCRIPTOR,]) - - - - -_HTTPBODY = _descriptor.Descriptor( - name='HttpBody', - full_name='google.api.HttpBody', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='content_type', full_name='google.api.HttpBody.content_type', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='data', full_name='google.api.HttpBody.data', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='extensions', full_name='google.api.HttpBody.extensions', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=68, - serialized_end=156, -) - -_HTTPBODY.fields_by_name['extensions'].message_type = google_dot_protobuf_dot_any__pb2._ANY -DESCRIPTOR.message_types_by_name['HttpBody'] = _HTTPBODY -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -HttpBody = _reflection.GeneratedProtocolMessageType('HttpBody', (_message.Message,), dict( - DESCRIPTOR = _HTTPBODY, - __module__ = 'google.api.httpbody_pb2' - # @@protoc_insertion_point(class_scope:google.api.HttpBody) - )) -_sym_db.RegisterMessage(HttpBody) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/label_pb2.py b/venv/lib/python3.6/site-packages/google/api/label_pb2.py deleted file mode 100644 index c38b456..0000000 --- a/venv/lib/python3.6/site-packages/google/api/label_pb2.py +++ /dev/null @@ -1,113 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/label.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/label.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\nLabelProtoP\001Z5google.golang.org/genproto/googleapis/api/label;label\370\001\001\242\002\004GAPI'), - serialized_pb=_b('\n\x16google/api/label.proto\x12\ngoogle.api\"\x9c\x01\n\x0fLabelDescriptor\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x39\n\nvalue_type\x18\x02 \x01(\x0e\x32%.google.api.LabelDescriptor.ValueType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\",\n\tValueType\x12\n\n\x06STRING\x10\x00\x12\x08\n\x04\x42OOL\x10\x01\x12\t\n\x05INT64\x10\x02\x42_\n\x0e\x63om.google.apiB\nLabelProtoP\x01Z5google.golang.org/genproto/googleapis/api/label;label\xf8\x01\x01\xa2\x02\x04GAPIb\x06proto3') -) - - - -_LABELDESCRIPTOR_VALUETYPE = _descriptor.EnumDescriptor( - name='ValueType', - full_name='google.api.LabelDescriptor.ValueType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='STRING', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='BOOL', index=1, number=1, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='INT64', index=2, number=2, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=151, - serialized_end=195, -) -_sym_db.RegisterEnumDescriptor(_LABELDESCRIPTOR_VALUETYPE) - - -_LABELDESCRIPTOR = _descriptor.Descriptor( - name='LabelDescriptor', - full_name='google.api.LabelDescriptor', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='google.api.LabelDescriptor.key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='value_type', full_name='google.api.LabelDescriptor.value_type', index=1, - number=2, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='description', full_name='google.api.LabelDescriptor.description', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _LABELDESCRIPTOR_VALUETYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=39, - serialized_end=195, -) - -_LABELDESCRIPTOR.fields_by_name['value_type'].enum_type = _LABELDESCRIPTOR_VALUETYPE -_LABELDESCRIPTOR_VALUETYPE.containing_type = _LABELDESCRIPTOR -DESCRIPTOR.message_types_by_name['LabelDescriptor'] = _LABELDESCRIPTOR -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -LabelDescriptor = _reflection.GeneratedProtocolMessageType('LabelDescriptor', (_message.Message,), dict( - DESCRIPTOR = _LABELDESCRIPTOR, - __module__ = 'google.api.label_pb2' - # @@protoc_insertion_point(class_scope:google.api.LabelDescriptor) - )) -_sym_db.RegisterMessage(LabelDescriptor) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/log_pb2.py b/venv/lib/python3.6/site-packages/google/api/log_pb2.py deleted file mode 100644 index 975000a..0000000 --- a/venv/lib/python3.6/site-packages/google/api/log_pb2.py +++ /dev/null @@ -1,94 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/log.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import label_pb2 as google_dot_api_dot_label__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/log.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\010LogProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n\x14google/api/log.proto\x12\ngoogle.api\x1a\x16google/api/label.proto\"u\n\rLogDescriptor\x12\x0c\n\x04name\x18\x01 \x01(\t\x12+\n\x06labels\x18\x02 \x03(\x0b\x32\x1b.google.api.LabelDescriptor\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x04 \x01(\tBj\n\x0e\x63om.google.apiB\x08LogProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_api_dot_label__pb2.DESCRIPTOR,]) - - - - -_LOGDESCRIPTOR = _descriptor.Descriptor( - name='LogDescriptor', - full_name='google.api.LogDescriptor', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='google.api.LogDescriptor.name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='labels', full_name='google.api.LogDescriptor.labels', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='description', full_name='google.api.LogDescriptor.description', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='display_name', full_name='google.api.LogDescriptor.display_name', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=60, - serialized_end=177, -) - -_LOGDESCRIPTOR.fields_by_name['labels'].message_type = google_dot_api_dot_label__pb2._LABELDESCRIPTOR -DESCRIPTOR.message_types_by_name['LogDescriptor'] = _LOGDESCRIPTOR -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -LogDescriptor = _reflection.GeneratedProtocolMessageType('LogDescriptor', (_message.Message,), dict( - DESCRIPTOR = _LOGDESCRIPTOR, - __module__ = 'google.api.log_pb2' - # @@protoc_insertion_point(class_scope:google.api.LogDescriptor) - )) -_sym_db.RegisterMessage(LogDescriptor) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/logging_pb2.py b/venv/lib/python3.6/site-packages/google/api/logging_pb2.py deleted file mode 100644 index cf5018c..0000000 --- a/venv/lib/python3.6/site-packages/google/api/logging_pb2.py +++ /dev/null @@ -1,127 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/logging.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/logging.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\014LoggingProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n\x18google/api/logging.proto\x12\ngoogle.api\x1a\x1cgoogle/api/annotations.proto\"\xd7\x01\n\x07Logging\x12\x45\n\x15producer_destinations\x18\x01 \x03(\x0b\x32&.google.api.Logging.LoggingDestination\x12\x45\n\x15\x63onsumer_destinations\x18\x02 \x03(\x0b\x32&.google.api.Logging.LoggingDestination\x1a>\n\x12LoggingDestination\x12\x1a\n\x12monitored_resource\x18\x03 \x01(\t\x12\x0c\n\x04logs\x18\x01 \x03(\tBn\n\x0e\x63om.google.apiB\x0cLoggingProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) - - - - -_LOGGING_LOGGINGDESTINATION = _descriptor.Descriptor( - name='LoggingDestination', - full_name='google.api.Logging.LoggingDestination', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='monitored_resource', full_name='google.api.Logging.LoggingDestination.monitored_resource', index=0, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='logs', full_name='google.api.Logging.LoggingDestination.logs', index=1, - number=1, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=224, - serialized_end=286, -) - -_LOGGING = _descriptor.Descriptor( - name='Logging', - full_name='google.api.Logging', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='producer_destinations', full_name='google.api.Logging.producer_destinations', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='consumer_destinations', full_name='google.api.Logging.consumer_destinations', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_LOGGING_LOGGINGDESTINATION, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=71, - serialized_end=286, -) - -_LOGGING_LOGGINGDESTINATION.containing_type = _LOGGING -_LOGGING.fields_by_name['producer_destinations'].message_type = _LOGGING_LOGGINGDESTINATION -_LOGGING.fields_by_name['consumer_destinations'].message_type = _LOGGING_LOGGINGDESTINATION -DESCRIPTOR.message_types_by_name['Logging'] = _LOGGING -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Logging = _reflection.GeneratedProtocolMessageType('Logging', (_message.Message,), dict( - - LoggingDestination = _reflection.GeneratedProtocolMessageType('LoggingDestination', (_message.Message,), dict( - DESCRIPTOR = _LOGGING_LOGGINGDESTINATION, - __module__ = 'google.api.logging_pb2' - # @@protoc_insertion_point(class_scope:google.api.Logging.LoggingDestination) - )) - , - DESCRIPTOR = _LOGGING, - __module__ = 'google.api.logging_pb2' - # @@protoc_insertion_point(class_scope:google.api.Logging) - )) -_sym_db.RegisterMessage(Logging) -_sym_db.RegisterMessage(Logging.LoggingDestination) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/metric_pb2.py b/venv/lib/python3.6/site-packages/google/api/metric_pb2.py deleted file mode 100644 index 95fae50..0000000 --- a/venv/lib/python3.6/site-packages/google/api/metric_pb2.py +++ /dev/null @@ -1,294 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/metric.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import label_pb2 as google_dot_api_dot_label__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/metric.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\013MetricProtoP\001Z7google.golang.org/genproto/googleapis/api/metric;metric\242\002\004GAPI'), - serialized_pb=_b('\n\x17google/api/metric.proto\x12\ngoogle.api\x1a\x16google/api/label.proto\"\xd2\x03\n\x10MetricDescriptor\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x08 \x01(\t\x12+\n\x06labels\x18\x02 \x03(\x0b\x32\x1b.google.api.LabelDescriptor\x12<\n\x0bmetric_kind\x18\x03 \x01(\x0e\x32\'.google.api.MetricDescriptor.MetricKind\x12:\n\nvalue_type\x18\x04 \x01(\x0e\x32&.google.api.MetricDescriptor.ValueType\x12\x0c\n\x04unit\x18\x05 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x07 \x01(\t\"O\n\nMetricKind\x12\x1b\n\x17METRIC_KIND_UNSPECIFIED\x10\x00\x12\t\n\x05GAUGE\x10\x01\x12\t\n\x05\x44\x45LTA\x10\x02\x12\x0e\n\nCUMULATIVE\x10\x03\"q\n\tValueType\x12\x1a\n\x16VALUE_TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04\x42OOL\x10\x01\x12\t\n\x05INT64\x10\x02\x12\n\n\x06\x44OUBLE\x10\x03\x12\n\n\x06STRING\x10\x04\x12\x10\n\x0c\x44ISTRIBUTION\x10\x05\x12\t\n\x05MONEY\x10\x06\"u\n\x06Metric\x12\x0c\n\x04type\x18\x03 \x01(\t\x12.\n\x06labels\x18\x02 \x03(\x0b\x32\x1e.google.api.Metric.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42_\n\x0e\x63om.google.apiB\x0bMetricProtoP\x01Z7google.golang.org/genproto/googleapis/api/metric;metric\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_api_dot_label__pb2.DESCRIPTOR,]) - - - -_METRICDESCRIPTOR_METRICKIND = _descriptor.EnumDescriptor( - name='MetricKind', - full_name='google.api.MetricDescriptor.MetricKind', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='METRIC_KIND_UNSPECIFIED', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='GAUGE', index=1, number=1, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='DELTA', index=2, number=2, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='CUMULATIVE', index=3, number=3, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=336, - serialized_end=415, -) -_sym_db.RegisterEnumDescriptor(_METRICDESCRIPTOR_METRICKIND) - -_METRICDESCRIPTOR_VALUETYPE = _descriptor.EnumDescriptor( - name='ValueType', - full_name='google.api.MetricDescriptor.ValueType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='VALUE_TYPE_UNSPECIFIED', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='BOOL', index=1, number=1, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='INT64', index=2, number=2, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='DOUBLE', index=3, number=3, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='STRING', index=4, number=4, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='DISTRIBUTION', index=5, number=5, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='MONEY', index=6, number=6, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=417, - serialized_end=530, -) -_sym_db.RegisterEnumDescriptor(_METRICDESCRIPTOR_VALUETYPE) - - -_METRICDESCRIPTOR = _descriptor.Descriptor( - name='MetricDescriptor', - full_name='google.api.MetricDescriptor', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='google.api.MetricDescriptor.name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='type', full_name='google.api.MetricDescriptor.type', index=1, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='labels', full_name='google.api.MetricDescriptor.labels', index=2, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='metric_kind', full_name='google.api.MetricDescriptor.metric_kind', index=3, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='value_type', full_name='google.api.MetricDescriptor.value_type', index=4, - number=4, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='unit', full_name='google.api.MetricDescriptor.unit', index=5, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='description', full_name='google.api.MetricDescriptor.description', index=6, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='display_name', full_name='google.api.MetricDescriptor.display_name', index=7, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _METRICDESCRIPTOR_METRICKIND, - _METRICDESCRIPTOR_VALUETYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=64, - serialized_end=530, -) - - -_METRIC_LABELSENTRY = _descriptor.Descriptor( - name='LabelsEntry', - full_name='google.api.Metric.LabelsEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='google.api.Metric.LabelsEntry.key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='value', full_name='google.api.Metric.LabelsEntry.value', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=_b('8\001'), - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=604, - serialized_end=649, -) - -_METRIC = _descriptor.Descriptor( - name='Metric', - full_name='google.api.Metric', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='google.api.Metric.type', index=0, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='labels', full_name='google.api.Metric.labels', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_METRIC_LABELSENTRY, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=532, - serialized_end=649, -) - -_METRICDESCRIPTOR.fields_by_name['labels'].message_type = google_dot_api_dot_label__pb2._LABELDESCRIPTOR -_METRICDESCRIPTOR.fields_by_name['metric_kind'].enum_type = _METRICDESCRIPTOR_METRICKIND -_METRICDESCRIPTOR.fields_by_name['value_type'].enum_type = _METRICDESCRIPTOR_VALUETYPE -_METRICDESCRIPTOR_METRICKIND.containing_type = _METRICDESCRIPTOR -_METRICDESCRIPTOR_VALUETYPE.containing_type = _METRICDESCRIPTOR -_METRIC_LABELSENTRY.containing_type = _METRIC -_METRIC.fields_by_name['labels'].message_type = _METRIC_LABELSENTRY -DESCRIPTOR.message_types_by_name['MetricDescriptor'] = _METRICDESCRIPTOR -DESCRIPTOR.message_types_by_name['Metric'] = _METRIC -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -MetricDescriptor = _reflection.GeneratedProtocolMessageType('MetricDescriptor', (_message.Message,), dict( - DESCRIPTOR = _METRICDESCRIPTOR, - __module__ = 'google.api.metric_pb2' - # @@protoc_insertion_point(class_scope:google.api.MetricDescriptor) - )) -_sym_db.RegisterMessage(MetricDescriptor) - -Metric = _reflection.GeneratedProtocolMessageType('Metric', (_message.Message,), dict( - - LabelsEntry = _reflection.GeneratedProtocolMessageType('LabelsEntry', (_message.Message,), dict( - DESCRIPTOR = _METRIC_LABELSENTRY, - __module__ = 'google.api.metric_pb2' - # @@protoc_insertion_point(class_scope:google.api.Metric.LabelsEntry) - )) - , - DESCRIPTOR = _METRIC, - __module__ = 'google.api.metric_pb2' - # @@protoc_insertion_point(class_scope:google.api.Metric) - )) -_sym_db.RegisterMessage(Metric) -_sym_db.RegisterMessage(Metric.LabelsEntry) - - -DESCRIPTOR._options = None -_METRIC_LABELSENTRY._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/monitored_resource_pb2.py b/venv/lib/python3.6/site-packages/google/api/monitored_resource_pb2.py deleted file mode 100644 index cfcfb0b..0000000 --- a/venv/lib/python3.6/site-packages/google/api/monitored_resource_pb2.py +++ /dev/null @@ -1,291 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/monitored_resource.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import label_pb2 as google_dot_api_dot_label__pb2 -from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/monitored_resource.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\026MonitoredResourceProtoP\001ZCgoogle.golang.org/genproto/googleapis/api/monitoredres;monitoredres\370\001\001\242\002\004GAPI'), - serialized_pb=_b('\n#google/api/monitored_resource.proto\x12\ngoogle.api\x1a\x16google/api/label.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x91\x01\n\x1bMonitoredResourceDescriptor\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12+\n\x06labels\x18\x04 \x03(\x0b\x32\x1b.google.api.LabelDescriptor\"\x8b\x01\n\x11MonitoredResource\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x39\n\x06labels\x18\x02 \x03(\x0b\x32).google.api.MonitoredResource.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xca\x01\n\x19MonitoredResourceMetadata\x12.\n\rsystem_labels\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12J\n\x0buser_labels\x18\x02 \x03(\x0b\x32\x35.google.api.MonitoredResourceMetadata.UserLabelsEntry\x1a\x31\n\x0fUserLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42y\n\x0e\x63om.google.apiB\x16MonitoredResourceProtoP\x01ZCgoogle.golang.org/genproto/googleapis/api/monitoredres;monitoredres\xf8\x01\x01\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_api_dot_label__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,]) - - - - -_MONITOREDRESOURCEDESCRIPTOR = _descriptor.Descriptor( - name='MonitoredResourceDescriptor', - full_name='google.api.MonitoredResourceDescriptor', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='google.api.MonitoredResourceDescriptor.name', index=0, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='type', full_name='google.api.MonitoredResourceDescriptor.type', index=1, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='display_name', full_name='google.api.MonitoredResourceDescriptor.display_name', index=2, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='description', full_name='google.api.MonitoredResourceDescriptor.description', index=3, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='labels', full_name='google.api.MonitoredResourceDescriptor.labels', index=4, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=106, - serialized_end=251, -) - - -_MONITOREDRESOURCE_LABELSENTRY = _descriptor.Descriptor( - name='LabelsEntry', - full_name='google.api.MonitoredResource.LabelsEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='google.api.MonitoredResource.LabelsEntry.key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='value', full_name='google.api.MonitoredResource.LabelsEntry.value', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=_b('8\001'), - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=348, - serialized_end=393, -) - -_MONITOREDRESOURCE = _descriptor.Descriptor( - name='MonitoredResource', - full_name='google.api.MonitoredResource', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='google.api.MonitoredResource.type', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='labels', full_name='google.api.MonitoredResource.labels', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_MONITOREDRESOURCE_LABELSENTRY, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=254, - serialized_end=393, -) - - -_MONITOREDRESOURCEMETADATA_USERLABELSENTRY = _descriptor.Descriptor( - name='UserLabelsEntry', - full_name='google.api.MonitoredResourceMetadata.UserLabelsEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='google.api.MonitoredResourceMetadata.UserLabelsEntry.key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='value', full_name='google.api.MonitoredResourceMetadata.UserLabelsEntry.value', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=_b('8\001'), - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=549, - serialized_end=598, -) - -_MONITOREDRESOURCEMETADATA = _descriptor.Descriptor( - name='MonitoredResourceMetadata', - full_name='google.api.MonitoredResourceMetadata', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='system_labels', full_name='google.api.MonitoredResourceMetadata.system_labels', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='user_labels', full_name='google.api.MonitoredResourceMetadata.user_labels', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_MONITOREDRESOURCEMETADATA_USERLABELSENTRY, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=396, - serialized_end=598, -) - -_MONITOREDRESOURCEDESCRIPTOR.fields_by_name['labels'].message_type = google_dot_api_dot_label__pb2._LABELDESCRIPTOR -_MONITOREDRESOURCE_LABELSENTRY.containing_type = _MONITOREDRESOURCE -_MONITOREDRESOURCE.fields_by_name['labels'].message_type = _MONITOREDRESOURCE_LABELSENTRY -_MONITOREDRESOURCEMETADATA_USERLABELSENTRY.containing_type = _MONITOREDRESOURCEMETADATA -_MONITOREDRESOURCEMETADATA.fields_by_name['system_labels'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT -_MONITOREDRESOURCEMETADATA.fields_by_name['user_labels'].message_type = _MONITOREDRESOURCEMETADATA_USERLABELSENTRY -DESCRIPTOR.message_types_by_name['MonitoredResourceDescriptor'] = _MONITOREDRESOURCEDESCRIPTOR -DESCRIPTOR.message_types_by_name['MonitoredResource'] = _MONITOREDRESOURCE -DESCRIPTOR.message_types_by_name['MonitoredResourceMetadata'] = _MONITOREDRESOURCEMETADATA -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -MonitoredResourceDescriptor = _reflection.GeneratedProtocolMessageType('MonitoredResourceDescriptor', (_message.Message,), dict( - DESCRIPTOR = _MONITOREDRESOURCEDESCRIPTOR, - __module__ = 'google.api.monitored_resource_pb2' - # @@protoc_insertion_point(class_scope:google.api.MonitoredResourceDescriptor) - )) -_sym_db.RegisterMessage(MonitoredResourceDescriptor) - -MonitoredResource = _reflection.GeneratedProtocolMessageType('MonitoredResource', (_message.Message,), dict( - - LabelsEntry = _reflection.GeneratedProtocolMessageType('LabelsEntry', (_message.Message,), dict( - DESCRIPTOR = _MONITOREDRESOURCE_LABELSENTRY, - __module__ = 'google.api.monitored_resource_pb2' - # @@protoc_insertion_point(class_scope:google.api.MonitoredResource.LabelsEntry) - )) - , - DESCRIPTOR = _MONITOREDRESOURCE, - __module__ = 'google.api.monitored_resource_pb2' - # @@protoc_insertion_point(class_scope:google.api.MonitoredResource) - )) -_sym_db.RegisterMessage(MonitoredResource) -_sym_db.RegisterMessage(MonitoredResource.LabelsEntry) - -MonitoredResourceMetadata = _reflection.GeneratedProtocolMessageType('MonitoredResourceMetadata', (_message.Message,), dict( - - UserLabelsEntry = _reflection.GeneratedProtocolMessageType('UserLabelsEntry', (_message.Message,), dict( - DESCRIPTOR = _MONITOREDRESOURCEMETADATA_USERLABELSENTRY, - __module__ = 'google.api.monitored_resource_pb2' - # @@protoc_insertion_point(class_scope:google.api.MonitoredResourceMetadata.UserLabelsEntry) - )) - , - DESCRIPTOR = _MONITOREDRESOURCEMETADATA, - __module__ = 'google.api.monitored_resource_pb2' - # @@protoc_insertion_point(class_scope:google.api.MonitoredResourceMetadata) - )) -_sym_db.RegisterMessage(MonitoredResourceMetadata) -_sym_db.RegisterMessage(MonitoredResourceMetadata.UserLabelsEntry) - - -DESCRIPTOR._options = None -_MONITOREDRESOURCE_LABELSENTRY._options = None -_MONITOREDRESOURCEMETADATA_USERLABELSENTRY._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/monitoring_pb2.py b/venv/lib/python3.6/site-packages/google/api/monitoring_pb2.py deleted file mode 100644 index 2b0745b..0000000 --- a/venv/lib/python3.6/site-packages/google/api/monitoring_pb2.py +++ /dev/null @@ -1,127 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/monitoring.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/monitoring.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\017MonitoringProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n\x1bgoogle/api/monitoring.proto\x12\ngoogle.api\x1a\x1cgoogle/api/annotations.proto\"\xec\x01\n\nMonitoring\x12K\n\x15producer_destinations\x18\x01 \x03(\x0b\x32,.google.api.Monitoring.MonitoringDestination\x12K\n\x15\x63onsumer_destinations\x18\x02 \x03(\x0b\x32,.google.api.Monitoring.MonitoringDestination\x1a\x44\n\x15MonitoringDestination\x12\x1a\n\x12monitored_resource\x18\x01 \x01(\t\x12\x0f\n\x07metrics\x18\x02 \x03(\tBq\n\x0e\x63om.google.apiB\x0fMonitoringProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) - - - - -_MONITORING_MONITORINGDESTINATION = _descriptor.Descriptor( - name='MonitoringDestination', - full_name='google.api.Monitoring.MonitoringDestination', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='monitored_resource', full_name='google.api.Monitoring.MonitoringDestination.monitored_resource', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='metrics', full_name='google.api.Monitoring.MonitoringDestination.metrics', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=242, - serialized_end=310, -) - -_MONITORING = _descriptor.Descriptor( - name='Monitoring', - full_name='google.api.Monitoring', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='producer_destinations', full_name='google.api.Monitoring.producer_destinations', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='consumer_destinations', full_name='google.api.Monitoring.consumer_destinations', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_MONITORING_MONITORINGDESTINATION, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=74, - serialized_end=310, -) - -_MONITORING_MONITORINGDESTINATION.containing_type = _MONITORING -_MONITORING.fields_by_name['producer_destinations'].message_type = _MONITORING_MONITORINGDESTINATION -_MONITORING.fields_by_name['consumer_destinations'].message_type = _MONITORING_MONITORINGDESTINATION -DESCRIPTOR.message_types_by_name['Monitoring'] = _MONITORING -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Monitoring = _reflection.GeneratedProtocolMessageType('Monitoring', (_message.Message,), dict( - - MonitoringDestination = _reflection.GeneratedProtocolMessageType('MonitoringDestination', (_message.Message,), dict( - DESCRIPTOR = _MONITORING_MONITORINGDESTINATION, - __module__ = 'google.api.monitoring_pb2' - # @@protoc_insertion_point(class_scope:google.api.Monitoring.MonitoringDestination) - )) - , - DESCRIPTOR = _MONITORING, - __module__ = 'google.api.monitoring_pb2' - # @@protoc_insertion_point(class_scope:google.api.Monitoring) - )) -_sym_db.RegisterMessage(Monitoring) -_sym_db.RegisterMessage(Monitoring.MonitoringDestination) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/quota_pb2.py b/venv/lib/python3.6/site-packages/google/api/quota_pb2.py deleted file mode 100644 index 6b5929a..0000000 --- a/venv/lib/python3.6/site-packages/google/api/quota_pb2.py +++ /dev/null @@ -1,325 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/quota.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/quota.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\nQuotaProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n\x16google/api/quota.proto\x12\ngoogle.api\x1a\x1cgoogle/api/annotations.proto\"]\n\x05Quota\x12&\n\x06limits\x18\x03 \x03(\x0b\x32\x16.google.api.QuotaLimit\x12,\n\x0cmetric_rules\x18\x04 \x03(\x0b\x32\x16.google.api.MetricRule\"\x91\x01\n\nMetricRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12=\n\x0cmetric_costs\x18\x02 \x03(\x0b\x32\'.google.api.MetricRule.MetricCostsEntry\x1a\x32\n\x10MetricCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\"\x95\x02\n\nQuotaLimit\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x15\n\rdefault_limit\x18\x03 \x01(\x03\x12\x11\n\tmax_limit\x18\x04 \x01(\x03\x12\x11\n\tfree_tier\x18\x07 \x01(\x03\x12\x10\n\x08\x64uration\x18\x05 \x01(\t\x12\x0e\n\x06metric\x18\x08 \x01(\t\x12\x0c\n\x04unit\x18\t \x01(\t\x12\x32\n\x06values\x18\n \x03(\x0b\x32\".google.api.QuotaLimit.ValuesEntry\x12\x14\n\x0c\x64isplay_name\x18\x0c \x01(\t\x1a-\n\x0bValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x42l\n\x0e\x63om.google.apiB\nQuotaProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) - - - - -_QUOTA = _descriptor.Descriptor( - name='Quota', - full_name='google.api.Quota', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='limits', full_name='google.api.Quota.limits', index=0, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='metric_rules', full_name='google.api.Quota.metric_rules', index=1, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=68, - serialized_end=161, -) - - -_METRICRULE_METRICCOSTSENTRY = _descriptor.Descriptor( - name='MetricCostsEntry', - full_name='google.api.MetricRule.MetricCostsEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='google.api.MetricRule.MetricCostsEntry.key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='value', full_name='google.api.MetricRule.MetricCostsEntry.value', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=_b('8\001'), - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=259, - serialized_end=309, -) - -_METRICRULE = _descriptor.Descriptor( - name='MetricRule', - full_name='google.api.MetricRule', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='selector', full_name='google.api.MetricRule.selector', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='metric_costs', full_name='google.api.MetricRule.metric_costs', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_METRICRULE_METRICCOSTSENTRY, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=164, - serialized_end=309, -) - - -_QUOTALIMIT_VALUESENTRY = _descriptor.Descriptor( - name='ValuesEntry', - full_name='google.api.QuotaLimit.ValuesEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='google.api.QuotaLimit.ValuesEntry.key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='value', full_name='google.api.QuotaLimit.ValuesEntry.value', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=_b('8\001'), - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=544, - serialized_end=589, -) - -_QUOTALIMIT = _descriptor.Descriptor( - name='QuotaLimit', - full_name='google.api.QuotaLimit', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='google.api.QuotaLimit.name', index=0, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='description', full_name='google.api.QuotaLimit.description', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='default_limit', full_name='google.api.QuotaLimit.default_limit', index=2, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='max_limit', full_name='google.api.QuotaLimit.max_limit', index=3, - number=4, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='free_tier', full_name='google.api.QuotaLimit.free_tier', index=4, - number=7, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='duration', full_name='google.api.QuotaLimit.duration', index=5, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='metric', full_name='google.api.QuotaLimit.metric', index=6, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='unit', full_name='google.api.QuotaLimit.unit', index=7, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='values', full_name='google.api.QuotaLimit.values', index=8, - number=10, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='display_name', full_name='google.api.QuotaLimit.display_name', index=9, - number=12, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_QUOTALIMIT_VALUESENTRY, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=312, - serialized_end=589, -) - -_QUOTA.fields_by_name['limits'].message_type = _QUOTALIMIT -_QUOTA.fields_by_name['metric_rules'].message_type = _METRICRULE -_METRICRULE_METRICCOSTSENTRY.containing_type = _METRICRULE -_METRICRULE.fields_by_name['metric_costs'].message_type = _METRICRULE_METRICCOSTSENTRY -_QUOTALIMIT_VALUESENTRY.containing_type = _QUOTALIMIT -_QUOTALIMIT.fields_by_name['values'].message_type = _QUOTALIMIT_VALUESENTRY -DESCRIPTOR.message_types_by_name['Quota'] = _QUOTA -DESCRIPTOR.message_types_by_name['MetricRule'] = _METRICRULE -DESCRIPTOR.message_types_by_name['QuotaLimit'] = _QUOTALIMIT -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Quota = _reflection.GeneratedProtocolMessageType('Quota', (_message.Message,), dict( - DESCRIPTOR = _QUOTA, - __module__ = 'google.api.quota_pb2' - # @@protoc_insertion_point(class_scope:google.api.Quota) - )) -_sym_db.RegisterMessage(Quota) - -MetricRule = _reflection.GeneratedProtocolMessageType('MetricRule', (_message.Message,), dict( - - MetricCostsEntry = _reflection.GeneratedProtocolMessageType('MetricCostsEntry', (_message.Message,), dict( - DESCRIPTOR = _METRICRULE_METRICCOSTSENTRY, - __module__ = 'google.api.quota_pb2' - # @@protoc_insertion_point(class_scope:google.api.MetricRule.MetricCostsEntry) - )) - , - DESCRIPTOR = _METRICRULE, - __module__ = 'google.api.quota_pb2' - # @@protoc_insertion_point(class_scope:google.api.MetricRule) - )) -_sym_db.RegisterMessage(MetricRule) -_sym_db.RegisterMessage(MetricRule.MetricCostsEntry) - -QuotaLimit = _reflection.GeneratedProtocolMessageType('QuotaLimit', (_message.Message,), dict( - - ValuesEntry = _reflection.GeneratedProtocolMessageType('ValuesEntry', (_message.Message,), dict( - DESCRIPTOR = _QUOTALIMIT_VALUESENTRY, - __module__ = 'google.api.quota_pb2' - # @@protoc_insertion_point(class_scope:google.api.QuotaLimit.ValuesEntry) - )) - , - DESCRIPTOR = _QUOTALIMIT, - __module__ = 'google.api.quota_pb2' - # @@protoc_insertion_point(class_scope:google.api.QuotaLimit) - )) -_sym_db.RegisterMessage(QuotaLimit) -_sym_db.RegisterMessage(QuotaLimit.ValuesEntry) - - -DESCRIPTOR._options = None -_METRICRULE_METRICCOSTSENTRY._options = None -_QUOTALIMIT_VALUESENTRY._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/service_pb2.py b/venv/lib/python3.6/site-packages/google/api/service_pb2.py deleted file mode 100644 index d5783ef..0000000 --- a/venv/lib/python3.6/site-packages/google/api/service_pb2.py +++ /dev/null @@ -1,281 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/service.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 -from google.api import auth_pb2 as google_dot_api_dot_auth__pb2 -from google.api import backend_pb2 as google_dot_api_dot_backend__pb2 -from google.api import billing_pb2 as google_dot_api_dot_billing__pb2 -from google.api import context_pb2 as google_dot_api_dot_context__pb2 -from google.api import control_pb2 as google_dot_api_dot_control__pb2 -from google.api import documentation_pb2 as google_dot_api_dot_documentation__pb2 -from google.api import endpoint_pb2 as google_dot_api_dot_endpoint__pb2 -from google.api import http_pb2 as google_dot_api_dot_http__pb2 -from google.api import log_pb2 as google_dot_api_dot_log__pb2 -from google.api import logging_pb2 as google_dot_api_dot_logging__pb2 -from google.api import metric_pb2 as google_dot_api_dot_metric__pb2 -from google.api import monitored_resource_pb2 as google_dot_api_dot_monitored__resource__pb2 -from google.api import monitoring_pb2 as google_dot_api_dot_monitoring__pb2 -from google.api import quota_pb2 as google_dot_api_dot_quota__pb2 -from google.api import source_info_pb2 as google_dot_api_dot_source__info__pb2 -from google.api import system_parameter_pb2 as google_dot_api_dot_system__parameter__pb2 -from google.api import usage_pb2 as google_dot_api_dot_usage__pb2 -from google.protobuf import api_pb2 as google_dot_protobuf_dot_api__pb2 -from google.protobuf import type_pb2 as google_dot_protobuf_dot_type__pb2 -from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/service.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\014ServiceProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n\x18google/api/service.proto\x12\ngoogle.api\x1a\x1cgoogle/api/annotations.proto\x1a\x15google/api/auth.proto\x1a\x18google/api/backend.proto\x1a\x18google/api/billing.proto\x1a\x18google/api/context.proto\x1a\x18google/api/control.proto\x1a\x1egoogle/api/documentation.proto\x1a\x19google/api/endpoint.proto\x1a\x15google/api/http.proto\x1a\x14google/api/log.proto\x1a\x18google/api/logging.proto\x1a\x17google/api/metric.proto\x1a#google/api/monitored_resource.proto\x1a\x1bgoogle/api/monitoring.proto\x1a\x16google/api/quota.proto\x1a\x1cgoogle/api/source_info.proto\x1a!google/api/system_parameter.proto\x1a\x16google/api/usage.proto\x1a\x19google/protobuf/api.proto\x1a\x1agoogle/protobuf/type.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xdc\x07\n\x07Service\x12\x34\n\x0e\x63onfig_version\x18\x14 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18! \x01(\t\x12\r\n\x05title\x18\x02 \x01(\t\x12\x1b\n\x13producer_project_id\x18\x16 \x01(\t\x12\"\n\x04\x61pis\x18\x03 \x03(\x0b\x32\x14.google.protobuf.Api\x12$\n\x05types\x18\x04 \x03(\x0b\x32\x15.google.protobuf.Type\x12$\n\x05\x65nums\x18\x05 \x03(\x0b\x32\x15.google.protobuf.Enum\x12\x30\n\rdocumentation\x18\x06 \x01(\x0b\x32\x19.google.api.Documentation\x12$\n\x07\x62\x61\x63kend\x18\x08 \x01(\x0b\x32\x13.google.api.Backend\x12\x1e\n\x04http\x18\t \x01(\x0b\x32\x10.google.api.Http\x12 \n\x05quota\x18\n \x01(\x0b\x32\x11.google.api.Quota\x12\x32\n\x0e\x61uthentication\x18\x0b \x01(\x0b\x32\x1a.google.api.Authentication\x12$\n\x07\x63ontext\x18\x0c \x01(\x0b\x32\x13.google.api.Context\x12 \n\x05usage\x18\x0f \x01(\x0b\x32\x11.google.api.Usage\x12\'\n\tendpoints\x18\x12 \x03(\x0b\x32\x14.google.api.Endpoint\x12$\n\x07\x63ontrol\x18\x15 \x01(\x0b\x32\x13.google.api.Control\x12\'\n\x04logs\x18\x17 \x03(\x0b\x32\x19.google.api.LogDescriptor\x12-\n\x07metrics\x18\x18 \x03(\x0b\x32\x1c.google.api.MetricDescriptor\x12\x44\n\x13monitored_resources\x18\x19 \x03(\x0b\x32\'.google.api.MonitoredResourceDescriptor\x12$\n\x07\x62illing\x18\x1a \x01(\x0b\x32\x13.google.api.Billing\x12$\n\x07logging\x18\x1b \x01(\x0b\x32\x13.google.api.Logging\x12*\n\nmonitoring\x18\x1c \x01(\x0b\x32\x16.google.api.Monitoring\x12\x37\n\x11system_parameters\x18\x1d \x01(\x0b\x32\x1c.google.api.SystemParameters\x12+\n\x0bsource_info\x18% \x01(\x0b\x32\x16.google.api.SourceInfoJ\x04\x08\x65\x10\x66\x42n\n\x0e\x63om.google.apiB\x0cServiceProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_api_dot_auth__pb2.DESCRIPTOR,google_dot_api_dot_backend__pb2.DESCRIPTOR,google_dot_api_dot_billing__pb2.DESCRIPTOR,google_dot_api_dot_context__pb2.DESCRIPTOR,google_dot_api_dot_control__pb2.DESCRIPTOR,google_dot_api_dot_documentation__pb2.DESCRIPTOR,google_dot_api_dot_endpoint__pb2.DESCRIPTOR,google_dot_api_dot_http__pb2.DESCRIPTOR,google_dot_api_dot_log__pb2.DESCRIPTOR,google_dot_api_dot_logging__pb2.DESCRIPTOR,google_dot_api_dot_metric__pb2.DESCRIPTOR,google_dot_api_dot_monitored__resource__pb2.DESCRIPTOR,google_dot_api_dot_monitoring__pb2.DESCRIPTOR,google_dot_api_dot_quota__pb2.DESCRIPTOR,google_dot_api_dot_source__info__pb2.DESCRIPTOR,google_dot_api_dot_system__parameter__pb2.DESCRIPTOR,google_dot_api_dot_usage__pb2.DESCRIPTOR,google_dot_protobuf_dot_api__pb2.DESCRIPTOR,google_dot_protobuf_dot_type__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) - - - - -_SERVICE = _descriptor.Descriptor( - name='Service', - full_name='google.api.Service', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='config_version', full_name='google.api.Service.config_version', index=0, - number=20, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='name', full_name='google.api.Service.name', index=1, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='id', full_name='google.api.Service.id', index=2, - number=33, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='title', full_name='google.api.Service.title', index=3, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='producer_project_id', full_name='google.api.Service.producer_project_id', index=4, - number=22, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='apis', full_name='google.api.Service.apis', index=5, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='types', full_name='google.api.Service.types', index=6, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='enums', full_name='google.api.Service.enums', index=7, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='documentation', full_name='google.api.Service.documentation', index=8, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='backend', full_name='google.api.Service.backend', index=9, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='http', full_name='google.api.Service.http', index=10, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='quota', full_name='google.api.Service.quota', index=11, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='authentication', full_name='google.api.Service.authentication', index=12, - number=11, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='context', full_name='google.api.Service.context', index=13, - number=12, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='usage', full_name='google.api.Service.usage', index=14, - number=15, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='endpoints', full_name='google.api.Service.endpoints', index=15, - number=18, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='control', full_name='google.api.Service.control', index=16, - number=21, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='logs', full_name='google.api.Service.logs', index=17, - number=23, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='metrics', full_name='google.api.Service.metrics', index=18, - number=24, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='monitored_resources', full_name='google.api.Service.monitored_resources', index=19, - number=25, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='billing', full_name='google.api.Service.billing', index=20, - number=26, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='logging', full_name='google.api.Service.logging', index=21, - number=27, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='monitoring', full_name='google.api.Service.monitoring', index=22, - number=28, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='system_parameters', full_name='google.api.Service.system_parameters', index=23, - number=29, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='source_info', full_name='google.api.Service.source_info', index=24, - number=37, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=619, - serialized_end=1607, -) - -_SERVICE.fields_by_name['config_version'].message_type = google_dot_protobuf_dot_wrappers__pb2._UINT32VALUE -_SERVICE.fields_by_name['apis'].message_type = google_dot_protobuf_dot_api__pb2._API -_SERVICE.fields_by_name['types'].message_type = google_dot_protobuf_dot_type__pb2._TYPE -_SERVICE.fields_by_name['enums'].message_type = google_dot_protobuf_dot_type__pb2._ENUM -_SERVICE.fields_by_name['documentation'].message_type = google_dot_api_dot_documentation__pb2._DOCUMENTATION -_SERVICE.fields_by_name['backend'].message_type = google_dot_api_dot_backend__pb2._BACKEND -_SERVICE.fields_by_name['http'].message_type = google_dot_api_dot_http__pb2._HTTP -_SERVICE.fields_by_name['quota'].message_type = google_dot_api_dot_quota__pb2._QUOTA -_SERVICE.fields_by_name['authentication'].message_type = google_dot_api_dot_auth__pb2._AUTHENTICATION -_SERVICE.fields_by_name['context'].message_type = google_dot_api_dot_context__pb2._CONTEXT -_SERVICE.fields_by_name['usage'].message_type = google_dot_api_dot_usage__pb2._USAGE -_SERVICE.fields_by_name['endpoints'].message_type = google_dot_api_dot_endpoint__pb2._ENDPOINT -_SERVICE.fields_by_name['control'].message_type = google_dot_api_dot_control__pb2._CONTROL -_SERVICE.fields_by_name['logs'].message_type = google_dot_api_dot_log__pb2._LOGDESCRIPTOR -_SERVICE.fields_by_name['metrics'].message_type = google_dot_api_dot_metric__pb2._METRICDESCRIPTOR -_SERVICE.fields_by_name['monitored_resources'].message_type = google_dot_api_dot_monitored__resource__pb2._MONITOREDRESOURCEDESCRIPTOR -_SERVICE.fields_by_name['billing'].message_type = google_dot_api_dot_billing__pb2._BILLING -_SERVICE.fields_by_name['logging'].message_type = google_dot_api_dot_logging__pb2._LOGGING -_SERVICE.fields_by_name['monitoring'].message_type = google_dot_api_dot_monitoring__pb2._MONITORING -_SERVICE.fields_by_name['system_parameters'].message_type = google_dot_api_dot_system__parameter__pb2._SYSTEMPARAMETERS -_SERVICE.fields_by_name['source_info'].message_type = google_dot_api_dot_source__info__pb2._SOURCEINFO -DESCRIPTOR.message_types_by_name['Service'] = _SERVICE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Service = _reflection.GeneratedProtocolMessageType('Service', (_message.Message,), dict( - DESCRIPTOR = _SERVICE, - __module__ = 'google.api.service_pb2' - # @@protoc_insertion_point(class_scope:google.api.Service) - )) -_sym_db.RegisterMessage(Service) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/source_info_pb2.py b/venv/lib/python3.6/site-packages/google/api/source_info_pb2.py deleted file mode 100644 index fae6147..0000000 --- a/venv/lib/python3.6/site-packages/google/api/source_info_pb2.py +++ /dev/null @@ -1,73 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/source_info.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/source_info.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\017SourceInfoProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n\x1cgoogle/api/source_info.proto\x12\ngoogle.api\x1a\x19google/protobuf/any.proto\"8\n\nSourceInfo\x12*\n\x0csource_files\x18\x01 \x03(\x0b\x32\x14.google.protobuf.AnyBq\n\x0e\x63om.google.apiB\x0fSourceInfoProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_protobuf_dot_any__pb2.DESCRIPTOR,]) - - - - -_SOURCEINFO = _descriptor.Descriptor( - name='SourceInfo', - full_name='google.api.SourceInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='source_files', full_name='google.api.SourceInfo.source_files', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=71, - serialized_end=127, -) - -_SOURCEINFO.fields_by_name['source_files'].message_type = google_dot_protobuf_dot_any__pb2._ANY -DESCRIPTOR.message_types_by_name['SourceInfo'] = _SOURCEINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -SourceInfo = _reflection.GeneratedProtocolMessageType('SourceInfo', (_message.Message,), dict( - DESCRIPTOR = _SOURCEINFO, - __module__ = 'google.api.source_info_pb2' - # @@protoc_insertion_point(class_scope:google.api.SourceInfo) - )) -_sym_db.RegisterMessage(SourceInfo) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/system_parameter_pb2.py b/venv/lib/python3.6/site-packages/google/api/system_parameter_pb2.py deleted file mode 100644 index 1eaf76c..0000000 --- a/venv/lib/python3.6/site-packages/google/api/system_parameter_pb2.py +++ /dev/null @@ -1,171 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/system_parameter.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/system_parameter.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\024SystemParameterProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n!google/api/system_parameter.proto\x12\ngoogle.api\"B\n\x10SystemParameters\x12.\n\x05rules\x18\x01 \x03(\x0b\x32\x1f.google.api.SystemParameterRule\"X\n\x13SystemParameterRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12/\n\nparameters\x18\x02 \x03(\x0b\x32\x1b.google.api.SystemParameter\"Q\n\x0fSystemParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0bhttp_header\x18\x02 \x01(\t\x12\x1b\n\x13url_query_parameter\x18\x03 \x01(\tBv\n\x0e\x63om.google.apiB\x14SystemParameterProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') -) - - - - -_SYSTEMPARAMETERS = _descriptor.Descriptor( - name='SystemParameters', - full_name='google.api.SystemParameters', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='rules', full_name='google.api.SystemParameters.rules', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=49, - serialized_end=115, -) - - -_SYSTEMPARAMETERRULE = _descriptor.Descriptor( - name='SystemParameterRule', - full_name='google.api.SystemParameterRule', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='selector', full_name='google.api.SystemParameterRule.selector', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='parameters', full_name='google.api.SystemParameterRule.parameters', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=117, - serialized_end=205, -) - - -_SYSTEMPARAMETER = _descriptor.Descriptor( - name='SystemParameter', - full_name='google.api.SystemParameter', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='google.api.SystemParameter.name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='http_header', full_name='google.api.SystemParameter.http_header', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='url_query_parameter', full_name='google.api.SystemParameter.url_query_parameter', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=207, - serialized_end=288, -) - -_SYSTEMPARAMETERS.fields_by_name['rules'].message_type = _SYSTEMPARAMETERRULE -_SYSTEMPARAMETERRULE.fields_by_name['parameters'].message_type = _SYSTEMPARAMETER -DESCRIPTOR.message_types_by_name['SystemParameters'] = _SYSTEMPARAMETERS -DESCRIPTOR.message_types_by_name['SystemParameterRule'] = _SYSTEMPARAMETERRULE -DESCRIPTOR.message_types_by_name['SystemParameter'] = _SYSTEMPARAMETER -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -SystemParameters = _reflection.GeneratedProtocolMessageType('SystemParameters', (_message.Message,), dict( - DESCRIPTOR = _SYSTEMPARAMETERS, - __module__ = 'google.api.system_parameter_pb2' - # @@protoc_insertion_point(class_scope:google.api.SystemParameters) - )) -_sym_db.RegisterMessage(SystemParameters) - -SystemParameterRule = _reflection.GeneratedProtocolMessageType('SystemParameterRule', (_message.Message,), dict( - DESCRIPTOR = _SYSTEMPARAMETERRULE, - __module__ = 'google.api.system_parameter_pb2' - # @@protoc_insertion_point(class_scope:google.api.SystemParameterRule) - )) -_sym_db.RegisterMessage(SystemParameterRule) - -SystemParameter = _reflection.GeneratedProtocolMessageType('SystemParameter', (_message.Message,), dict( - DESCRIPTOR = _SYSTEMPARAMETER, - __module__ = 'google.api.system_parameter_pb2' - # @@protoc_insertion_point(class_scope:google.api.SystemParameter) - )) -_sym_db.RegisterMessage(SystemParameter) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api/usage_pb2.py b/venv/lib/python3.6/site-packages/google/api/usage_pb2.py deleted file mode 100644 index 94a7d80..0000000 --- a/venv/lib/python3.6/site-packages/google/api/usage_pb2.py +++ /dev/null @@ -1,140 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/api/usage.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='google/api/usage.proto', - package='google.api', - syntax='proto3', - serialized_options=_b('\n\016com.google.apiB\nUsageProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI'), - serialized_pb=_b('\n\x16google/api/usage.proto\x12\ngoogle.api\x1a\x1cgoogle/api/annotations.proto\"j\n\x05Usage\x12\x14\n\x0crequirements\x18\x01 \x03(\t\x12$\n\x05rules\x18\x06 \x03(\x0b\x32\x15.google.api.UsageRule\x12%\n\x1dproducer_notification_channel\x18\x07 \x01(\t\"]\n\tUsageRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12 \n\x18\x61llow_unregistered_calls\x18\x02 \x01(\x08\x12\x1c\n\x14skip_service_control\x18\x03 \x01(\x08\x42l\n\x0e\x63om.google.apiB\nUsageProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3') - , - dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) - - - - -_USAGE = _descriptor.Descriptor( - name='Usage', - full_name='google.api.Usage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='requirements', full_name='google.api.Usage.requirements', index=0, - number=1, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='rules', full_name='google.api.Usage.rules', index=1, - number=6, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='producer_notification_channel', full_name='google.api.Usage.producer_notification_channel', index=2, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=68, - serialized_end=174, -) - - -_USAGERULE = _descriptor.Descriptor( - name='UsageRule', - full_name='google.api.UsageRule', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='selector', full_name='google.api.UsageRule.selector', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='allow_unregistered_calls', full_name='google.api.UsageRule.allow_unregistered_calls', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='skip_service_control', full_name='google.api.UsageRule.skip_service_control', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=176, - serialized_end=269, -) - -_USAGE.fields_by_name['rules'].message_type = _USAGERULE -DESCRIPTOR.message_types_by_name['Usage'] = _USAGE -DESCRIPTOR.message_types_by_name['UsageRule'] = _USAGERULE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Usage = _reflection.GeneratedProtocolMessageType('Usage', (_message.Message,), dict( - DESCRIPTOR = _USAGE, - __module__ = 'google.api.usage_pb2' - # @@protoc_insertion_point(class_scope:google.api.Usage) - )) -_sym_db.RegisterMessage(Usage) - -UsageRule = _reflection.GeneratedProtocolMessageType('UsageRule', (_message.Message,), dict( - DESCRIPTOR = _USAGERULE, - __module__ = 'google.api.usage_pb2' - # @@protoc_insertion_point(class_scope:google.api.UsageRule) - )) -_sym_db.RegisterMessage(UsageRule) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/venv/lib/python3.6/site-packages/google/api_core/__init__.py b/venv/lib/python3.6/site-packages/google/api_core/__init__.py deleted file mode 100644 index c762e18..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Google API Core. - -This package contains common code and utilties used by Google client libraries. -""" - -from pkg_resources import get_distribution - - -__version__ = get_distribution("google-api-core").version diff --git a/venv/lib/python3.6/site-packages/google/api_core/__pycache__/__init__.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 04fc5498c6c0252cfcaaab6c3aa615283fb3b07d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmZ9H&q@O^5XQ5AN@Z=e_yCe?58Fk(iYPruFCyrv2t#%=tg+c-O|n9J^=W*iJqezC z1y4>(4`LwSd|~+JH@O&(v(e|#({XyF{-O5o gg3z!<7XZqr05EIU{lR5pWvB7#gy#B`B#lSOFDZ&|?EnA( diff --git a/venv/lib/python3.6/site-packages/google/api_core/__pycache__/bidi.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/__pycache__/bidi.cpython-36.pyc deleted file mode 100644 index 01c4c6f4c5972c94b4f5949bd3b58a50ef58458f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17487 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 CJW+E1 diff --git a/venv/lib/python3.6/site-packages/google/api_core/__pycache__/datetime_helpers.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/__pycache__/datetime_helpers.cpython-36.pyc deleted file mode 100644 index 18ecbddf488bd78e0ed83cae2614cfafe7186417..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7061 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 ZR5YWasit8T%t`#sm{t5uny**p{sXEFA$kA+ diff --git a/venv/lib/python3.6/site-packages/google/api_core/__pycache__/exceptions.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/__pycache__/exceptions.cpython-36.pyc deleted file mode 100644 index f97290c2d0272721efa10d599615902afebe428d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15766 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 diff --git a/venv/lib/python3.6/site-packages/google/api_core/__pycache__/grpc_helpers.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/__pycache__/grpc_helpers.cpython-36.pyc deleted file mode 100644 index 6741e286614c5d68dd798fdc07dc7be2fd505e08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11867 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 Mw)8>i!_xG>0r+mLQ~&?~ diff --git a/venv/lib/python3.6/site-packages/google/api_core/__pycache__/protobuf_helpers.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/__pycache__/protobuf_helpers.cpython-36.pyc deleted file mode 100644 index c9eb3c9dfcb07a1399bb6061f30462014c47f856..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9044 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 Ag#Z8m diff --git a/venv/lib/python3.6/site-packages/google/api_core/__pycache__/retry.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/__pycache__/retry.cpython-36.pyc deleted file mode 100644 index 9649541c5ba0431030c1e35a55c26e1da66fe82b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9560 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 diff --git a/venv/lib/python3.6/site-packages/google/api_core/__pycache__/timeout.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/__pycache__/timeout.cpython-36.pyc deleted file mode 100644 index 735e6643f191e774fe8992faf53b0cb3b25f7182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6907 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 diff --git a/venv/lib/python3.6/site-packages/google/api_core/bidi.py b/venv/lib/python3.6/site-packages/google/api_core/bidi.py deleted file mode 100644 index 795a8d2..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/bidi.py +++ /dev/null @@ -1,600 +0,0 @@ -# Copyright 2017, Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Bi-directional streaming RPC helpers.""" - -import logging -import threading - -from six.moves import queue - -from google.api_core import exceptions - -_LOGGER = logging.getLogger(__name__) -_BIDIRECTIONAL_CONSUMER_NAME = "Thread-ConsumeBidirectionalStream" - - -class _RequestQueueGenerator(object): - """A helper for sending requests to a gRPC stream from a Queue. - - This generator takes requests off a given queue and yields them to gRPC. - - This helper is useful when you have an indeterminate, indefinite, or - otherwise open-ended set of requests to send through a request-streaming - (or bidirectional) RPC. - - The reason this is necessary is because gRPC takes an iterator as the - request for request-streaming RPCs. gRPC consumes this iterator in another - thread to allow it to block while generating requests for the stream. - However, if the generator blocks indefinitely gRPC will not be able to - clean up the thread as it'll be blocked on `next(iterator)` and not be able - to check the channel status to stop iterating. This helper mitigates that - by waiting on the queue with a timeout and checking the RPC state before - yielding. - - Finally, it allows for retrying without swapping queues because if it does - pull an item off the queue when the RPC is inactive, it'll immediately put - it back and then exit. This is necessary because yielding the item in this - case will cause gRPC to discard it. In practice, this means that the order - of messages is not guaranteed. If such a thing is necessary it would be - easy to use a priority queue. - - Example:: - - requests = request_queue_generator(q) - call = stub.StreamingRequest(iter(requests)) - requests.call = call - - for response in call: - print(response) - q.put(...) - - Note that it is possible to accomplish this behavior without "spinning" - (using a queue timeout). One possible way would be to use more threads to - multiplex the grpc end event with the queue, another possible way is to - use selectors and a custom event/queue object. Both of these approaches - are significant from an engineering perspective for small benefit - the - CPU consumed by spinning is pretty minuscule. - - Args: - queue (queue.Queue): The request queue. - period (float): The number of seconds to wait for items from the queue - before checking if the RPC is cancelled. In practice, this - determines the maximum amount of time the request consumption - thread will live after the RPC is cancelled. - initial_request (Union[protobuf.Message, - Callable[None, protobuf.Message]]): The initial request to - yield. This is done independently of the request queue to allow fo - easily restarting streams that require some initial configuration - request. - """ - - def __init__(self, queue, period=1, initial_request=None): - self._queue = queue - self._period = period - self._initial_request = initial_request - self.call = None - - def _is_active(self): - # Note: there is a possibility that this starts *before* the call - # property is set. So we have to check if self.call is set before - # seeing if it's active. - if self.call is not None and not self.call.is_active(): - return False - else: - return True - - def __iter__(self): - if self._initial_request is not None: - if callable(self._initial_request): - yield self._initial_request() - else: - yield self._initial_request - - while True: - try: - item = self._queue.get(timeout=self._period) - except queue.Empty: - if not self._is_active(): - _LOGGER.debug( - "Empty queue and inactive call, exiting request " "generator." - ) - return - else: - # call is still active, keep waiting for queue items. - continue - - # The consumer explicitly sent "None", indicating that the request - # should end. - if item is None: - _LOGGER.debug("Cleanly exiting request generator.") - return - - if not self._is_active(): - # We have an item, but the call is closed. We should put the - # item back on the queue so that the next call can consume it. - self._queue.put(item) - _LOGGER.debug( - "Inactive call, replacing item on queue and exiting " - "request generator." - ) - return - - yield item - - -class BidiRpc(object): - """A helper for consuming a bi-directional streaming RPC. - - This maps gRPC's built-in interface which uses a request iterator and a - response iterator into a socket-like :func:`send` and :func:`recv`. This - is a more useful pattern for long-running or asymmetric streams (streams - where there is not a direct correlation between the requests and - responses). - - Example:: - - initial_request = example_pb2.StreamingRpcRequest( - setting='example') - rpc = BidiRpc(stub.StreamingRpc, initial_request=initial_request) - - rpc.open() - - while rpc.is_active(): - print(rpc.recv()) - rpc.send(example_pb2.StreamingRpcRequest( - data='example')) - - This does *not* retry the stream on errors. See :class:`ResumableBidiRpc`. - - Args: - start_rpc (grpc.StreamStreamMultiCallable): The gRPC method used to - start the RPC. - initial_request (Union[protobuf.Message, - Callable[None, protobuf.Message]]): The initial request to - yield. This is useful if an initial request is needed to start the - stream. - """ - - def __init__(self, start_rpc, initial_request=None): - self._start_rpc = start_rpc - self._initial_request = initial_request - self._request_queue = queue.Queue() - self._request_generator = None - self._is_active = False - self._callbacks = [] - self.call = None - - def add_done_callback(self, callback): - """Adds a callback that will be called when the RPC terminates. - - This occurs when the RPC errors or is successfully terminated. - - Args: - callback (Callable[[grpc.Future], None]): The callback to execute. - It will be provided with the same gRPC future as the underlying - stream which will also be a :class:`grpc.Call`. - """ - self._callbacks.append(callback) - - def _on_call_done(self, future): - for callback in self._callbacks: - callback(future) - - def open(self): - """Opens the stream.""" - if self.is_active: - raise ValueError("Can not open an already open stream.") - - request_generator = _RequestQueueGenerator( - self._request_queue, initial_request=self._initial_request - ) - call = self._start_rpc(iter(request_generator)) - - request_generator.call = call - - # TODO: api_core should expose the future interface for wrapped - # callables as well. - if hasattr(call, "_wrapped"): # pragma: NO COVER - call._wrapped.add_done_callback(self._on_call_done) - else: - call.add_done_callback(self._on_call_done) - - self._request_generator = request_generator - self.call = call - - def close(self): - """Closes the stream.""" - if self.call is None: - return - - self._request_queue.put(None) - self.call.cancel() - self._request_generator = None - # Don't set self.call to None. Keep it around so that send/recv can - # raise the error. - - def send(self, request): - """Queue a message to be sent on the stream. - - Send is non-blocking. - - If the underlying RPC has been closed, this will raise. - - Args: - request (protobuf.Message): The request to send. - """ - if self.call is None: - raise ValueError("Can not send() on an RPC that has never been open()ed.") - - # Don't use self.is_active(), as ResumableBidiRpc will overload it - # to mean something semantically different. - if self.call.is_active(): - self._request_queue.put(request) - else: - # calling next should cause the call to raise. - next(self.call) - - def recv(self): - """Wait for a message to be returned from the stream. - - Recv is blocking. - - If the underlying RPC has been closed, this will raise. - - Returns: - protobuf.Message: The received message. - """ - if self.call is None: - raise ValueError("Can not recv() on an RPC that has never been open()ed.") - - return next(self.call) - - @property - def is_active(self): - """bool: True if this stream is currently open and active.""" - return self.call is not None and self.call.is_active() - - @property - def pending_requests(self): - """int: Returns an estimate of the number of queued requests.""" - return self._request_queue.qsize() - - -class ResumableBidiRpc(BidiRpc): - """A :class:`BidiRpc` that can automatically resume the stream on errors. - - It uses the ``should_recover`` arg to determine if it should re-establish - the stream on error. - - Example:: - - def should_recover(exc): - return ( - isinstance(exc, grpc.RpcError) and - exc.code() == grpc.StatusCode.UNVAILABLE) - - initial_request = example_pb2.StreamingRpcRequest( - setting='example') - - rpc = ResumeableBidiRpc( - stub.StreamingRpc, - initial_request=initial_request, - should_recover=should_recover) - - rpc.open() - - while rpc.is_active(): - print(rpc.recv()) - rpc.send(example_pb2.StreamingRpcRequest( - data='example')) - - Args: - start_rpc (grpc.StreamStreamMultiCallable): The gRPC method used to - start the RPC. - initial_request (Union[protobuf.Message, - Callable[None, protobuf.Message]]): The initial request to - yield. This is useful if an initial request is needed to start the - stream. - should_recover (Callable[[Exception], bool]): A function that returns - True if the stream should be recovered. This will be called - whenever an error is encountered on the stream. - """ - - def __init__(self, start_rpc, should_recover, initial_request=None): - super(ResumableBidiRpc, self).__init__(start_rpc, initial_request) - self._should_recover = should_recover - self._operational_lock = threading.RLock() - self._finalized = False - self._finalize_lock = threading.Lock() - - def _finalize(self, result): - with self._finalize_lock: - if self._finalized: - return - - for callback in self._callbacks: - callback(result) - - self._finalized = True - - def _on_call_done(self, future): - # Unlike the base class, we only execute the callbacks on a terminal - # error, not for errors that we can recover from. Note that grpc's - # "future" here is also a grpc.RpcError. - with self._operational_lock: - if not self._should_recover(future): - self._finalize(future) - else: - _LOGGER.debug("Re-opening stream from gRPC callback.") - self._reopen() - - def _reopen(self): - with self._operational_lock: - # Another thread already managed to re-open this stream. - if self.call is not None and self.call.is_active(): - _LOGGER.debug("Stream was already re-established.") - return - - self.call = None - # Request generator should exit cleanly since the RPC its bound to - # has exited. - self.request_generator = None - - # Note: we do not currently do any sort of backoff here. The - # assumption is that re-establishing the stream under normal - # circumstances will happen in intervals greater than 60s. - # However, it is possible in a degenerative case that the server - # closes the stream rapidly which would lead to thrashing here, - # but hopefully in those cases the server would return a non- - # retryable error. - - try: - self.open() - # If re-opening or re-calling the method fails for any reason, - # consider it a terminal error and finalize the stream. - except Exception as exc: - _LOGGER.debug("Failed to re-open stream due to %s", exc) - self._finalize(exc) - raise - - _LOGGER.info("Re-established stream") - - def _recoverable(self, method, *args, **kwargs): - """Wraps a method to recover the stream and retry on error. - - If a retryable error occurs while making the call, then the stream will - be re-opened and the method will be retried. This happens indefinitely - so long as the error is a retryable one. If an error occurs while - re-opening the stream, then this method will raise immediately and - trigger finalization of this object. - - Args: - method (Callable[..., Any]): The method to call. - args: The args to pass to the method. - kwargs: The kwargs to pass to the method. - """ - while True: - try: - return method(*args, **kwargs) - - except Exception as exc: - with self._operational_lock: - _LOGGER.debug("Call to retryable %r caused %s.", method, exc) - - if not self._should_recover(exc): - self.close() - _LOGGER.debug("Not retrying %r due to %s.", method, exc) - self._finalize(exc) - raise exc - - _LOGGER.debug("Re-opening stream from retryable %r.", method) - self._reopen() - - def _send(self, request): - # Grab a reference to the RPC call. Because another thread (notably - # the gRPC error thread) can modify self.call (by invoking reopen), - # we should ensure our reference can not change underneath us. - # If self.call is modified (such as replaced with a new RPC call) then - # this will use the "old" RPC, which should result in the same - # exception passed into gRPC's error handler being raised here, which - # will be handled by the usual error handling in retryable. - with self._operational_lock: - call = self.call - - if call is None: - raise ValueError("Can not send() on an RPC that has never been open()ed.") - - # Don't use self.is_active(), as ResumableBidiRpc will overload it - # to mean something semantically different. - if call.is_active(): - self._request_queue.put(request) - pass - else: - # calling next should cause the call to raise. - next(call) - - def send(self, request): - return self._recoverable(self._send, request) - - def _recv(self): - with self._operational_lock: - call = self.call - - if call is None: - raise ValueError("Can not recv() on an RPC that has never been open()ed.") - - return next(call) - - def recv(self): - return self._recoverable(self._recv) - - @property - def is_active(self): - """bool: True if this stream is currently open and active.""" - # Use the operational lock. It's entirely possible for something - # to check the active state *while* the RPC is being retried. - # Also, use finalized to track the actual terminal state here. - # This is because if the stream is re-established by the gRPC thread - # it's technically possible to check this between when gRPC marks the - # RPC as inactive and when gRPC executes our callback that re-opens - # the stream. - with self._operational_lock: - return self.call is not None and not self._finalized - - -class BackgroundConsumer(object): - """A bi-directional stream consumer that runs in a separate thread. - - This maps the consumption of a stream into a callback-based model. It also - provides :func:`pause` and :func:`resume` to allow for flow-control. - - Example:: - - def should_recover(exc): - return ( - isinstance(exc, grpc.RpcError) and - exc.code() == grpc.StatusCode.UNVAILABLE) - - initial_request = example_pb2.StreamingRpcRequest( - setting='example') - - rpc = ResumeableBidiRpc( - stub.StreamingRpc, - initial_request=initial_request, - should_recover=should_recover) - - def on_response(response): - print(response) - - consumer = BackgroundConsumer(rpc, on_response) - consumer.start() - - Note that error handling *must* be done by using the provided - ``bidi_rpc``'s ``add_done_callback``. This helper will automatically exit - whenever the RPC itself exits and will not provide any error details. - - Args: - bidi_rpc (BidiRpc): The RPC to consume. Should not have been - ``open()``ed yet. - on_response (Callable[[protobuf.Message], None]): The callback to - be called for every response on the stream. - """ - - def __init__(self, bidi_rpc, on_response): - self._bidi_rpc = bidi_rpc - self._on_response = on_response - self._paused = False - self._wake = threading.Condition() - self._thread = None - self._operational_lock = threading.Lock() - - def _on_call_done(self, future): - # Resume the thread if it's paused, this prevents blocking forever - # when the RPC has terminated. - self.resume() - - def _thread_main(self): - try: - self._bidi_rpc.add_done_callback(self._on_call_done) - self._bidi_rpc.open() - - while self._bidi_rpc.is_active: - # Do not allow the paused status to change at all during this - # section. There is a condition where we could be resumed - # between checking if we are paused and calling wake.wait(), - # which means that we will miss the notification to wake up - # (oops!) and wait for a notification that will never come. - # Keeping the lock throughout avoids that. - # In the future, we could use `Condition.wait_for` if we drop - # Python 2.7. - with self._wake: - if self._paused: - _LOGGER.debug("paused, waiting for waking.") - self._wake.wait() - _LOGGER.debug("woken.") - - _LOGGER.debug("waiting for recv.") - response = self._bidi_rpc.recv() - _LOGGER.debug("recved response.") - self._on_response(response) - - except exceptions.GoogleAPICallError as exc: - _LOGGER.debug( - "%s caught error %s and will exit. Generally this is due to " - "the RPC itself being cancelled and the error will be " - "surfaced to the calling code.", - _BIDIRECTIONAL_CONSUMER_NAME, - exc, - exc_info=True, - ) - - except Exception as exc: - _LOGGER.exception( - "%s caught unexpected exception %s and will exit.", - _BIDIRECTIONAL_CONSUMER_NAME, - exc, - ) - - else: - _LOGGER.error("The bidirectional RPC exited.") - - _LOGGER.info("%s exiting", _BIDIRECTIONAL_CONSUMER_NAME) - - def start(self): - """Start the background thread and begin consuming the thread.""" - with self._operational_lock: - thread = threading.Thread( - name=_BIDIRECTIONAL_CONSUMER_NAME, target=self._thread_main - ) - thread.daemon = True - thread.start() - self._thread = thread - _LOGGER.debug("Started helper thread %s", thread.name) - - def stop(self): - """Stop consuming the stream and shutdown the background thread.""" - with self._operational_lock: - self._bidi_rpc.close() - - if self._thread is not None: - # Resume the thread to wake it up in case it is sleeping. - self.resume() - self._thread.join() - - self._thread = None - - @property - def is_active(self): - """bool: True if the background thread is active.""" - return self._thread is not None and self._thread.is_alive() - - def pause(self): - """Pauses the response stream. - - This does *not* pause the request stream. - """ - with self._wake: - self._paused = True - - def resume(self): - """Resumes the response stream.""" - with self._wake: - self._paused = False - self._wake.notifyAll() - - @property - def is_paused(self): - """bool: True if the response stream is paused.""" - return self._paused diff --git a/venv/lib/python3.6/site-packages/google/api_core/datetime_helpers.py b/venv/lib/python3.6/site-packages/google/api_core/datetime_helpers.py deleted file mode 100644 index 3f3523b..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/datetime_helpers.py +++ /dev/null @@ -1,265 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Helpers for :mod:`datetime`.""" - -import calendar -import datetime -import re - -import pytz - - -_UTC_EPOCH = datetime.datetime.utcfromtimestamp(0).replace(tzinfo=pytz.utc) -_RFC3339_MICROS = "%Y-%m-%dT%H:%M:%S.%fZ" -_RFC3339_NO_FRACTION = "%Y-%m-%dT%H:%M:%S" -# datetime.strptime cannot handle nanosecond precision: parse w/ regex -_RFC3339_NANOS = re.compile( - r""" - (?P - \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2} # YYYY-MM-DDTHH:MM:SS - ) - ( # Optional decimal part - \. # decimal point - (?P\d{1,9}) # nanoseconds, maybe truncated - )? - Z # Zulu -""", - re.VERBOSE, -) - - -def utcnow(): - """A :meth:`datetime.datetime.utcnow()` alias to allow mocking in tests.""" - return datetime.datetime.utcnow() - - -def to_milliseconds(value): - """Convert a zone-aware datetime to milliseconds since the unix epoch. - - Args: - value (datetime.datetime): The datetime to covert. - - Returns: - int: Milliseconds since the unix epoch. - """ - micros = to_microseconds(value) - return micros // 1000 - - -def from_microseconds(value): - """Convert timestamp in microseconds since the unix epoch to datetime. - - Args: - value (float): The timestamp to convert, in microseconds. - - Returns: - datetime.datetime: The datetime object equivalent to the timestamp in - UTC. - """ - return _UTC_EPOCH + datetime.timedelta(microseconds=value) - - -def to_microseconds(value): - """Convert a datetime to microseconds since the unix epoch. - - Args: - value (datetime.datetime): The datetime to covert. - - Returns: - int: Microseconds since the unix epoch. - """ - if not value.tzinfo: - value = value.replace(tzinfo=pytz.utc) - # Regardless of what timezone is on the value, convert it to UTC. - value = value.astimezone(pytz.utc) - # Convert the datetime to a microsecond timestamp. - return int(calendar.timegm(value.timetuple()) * 1e6) + value.microsecond - - -def from_iso8601_date(value): - """Convert a ISO8601 date string to a date. - - Args: - value (str): The ISO8601 date string. - - Returns: - datetime.date: A date equivalent to the date string. - """ - return datetime.datetime.strptime(value, "%Y-%m-%d").date() - - -def from_iso8601_time(value): - """Convert a zoneless ISO8601 time string to a time. - - Args: - value (str): The ISO8601 time string. - - Returns: - datetime.time: A time equivalent to the time string. - """ - return datetime.datetime.strptime(value, "%H:%M:%S").time() - - -def from_rfc3339(value): - """Convert a microsecond-precision timestamp to datetime. - - Args: - value (str): The RFC3339 string to convert. - - Returns: - datetime.datetime: The datetime object equivalent to the timestamp in - UTC. - """ - return datetime.datetime.strptime(value, _RFC3339_MICROS).replace(tzinfo=pytz.utc) - - -def from_rfc3339_nanos(value): - """Convert a nanosecond-precision timestamp to a native datetime. - - .. note:: - Python datetimes do not support nanosecond precision; this function - therefore truncates such values to microseconds. - - Args: - value (str): The RFC3339 string to convert. - - Returns: - datetime.datetime: The datetime object equivalent to the timestamp in - UTC. - - Raises: - ValueError: If the timestamp does not match the RFC 3339 - regular expression. - """ - with_nanos = _RFC3339_NANOS.match(value) - - if with_nanos is None: - raise ValueError( - "Timestamp: {!r}, does not match pattern: {!r}".format( - value, _RFC3339_NANOS.pattern - ) - ) - - bare_seconds = datetime.datetime.strptime( - with_nanos.group("no_fraction"), _RFC3339_NO_FRACTION - ) - fraction = with_nanos.group("nanos") - - if fraction is None: - micros = 0 - else: - scale = 9 - len(fraction) - nanos = int(fraction) * (10 ** scale) - micros = nanos // 1000 - - return bare_seconds.replace(microsecond=micros, tzinfo=pytz.utc) - - -def to_rfc3339(value, ignore_zone=True): - """Convert a datetime to an RFC3339 timestamp string. - - Args: - value (datetime.datetime): - The datetime object to be converted to a string. - ignore_zone (bool): If True, then the timezone (if any) of the - datetime object is ignored and the datetime is treated as UTC. - - Returns: - str: The RFC3339 formated string representing the datetime. - """ - if not ignore_zone and value.tzinfo is not None: - # Convert to UTC and remove the time zone info. - value = value.replace(tzinfo=None) - value.utcoffset() - - return value.strftime(_RFC3339_MICROS) - - -class DatetimeWithNanoseconds(datetime.datetime): - """Track nanosecond in addition to normal datetime attrs. - - Nanosecond can be passed only as a keyword argument. - """ - - __slots__ = ("_nanosecond",) - - # pylint: disable=arguments-differ - def __new__(cls, *args, **kw): - nanos = kw.pop("nanosecond", 0) - if nanos > 0: - if "microsecond" in kw: - raise TypeError("Specify only one of 'microsecond' or 'nanosecond'") - kw["microsecond"] = nanos // 1000 - inst = datetime.datetime.__new__(cls, *args, **kw) - inst._nanosecond = nanos or 0 - return inst - - # pylint: disable=arguments-differ - - @property - def nanosecond(self): - """Read-only: nanosecond precision.""" - return self._nanosecond - - def rfc3339(self): - """Return an RFC 3339-compliant timestamp. - - Returns: - (str): Timestamp string according to RFC 3339 spec. - """ - if self._nanosecond == 0: - return to_rfc3339(self) - nanos = str(self._nanosecond).rstrip("0") - return "{}.{}Z".format(self.strftime(_RFC3339_NO_FRACTION), nanos) - - @classmethod - def from_rfc3339(cls, stamp): - """Parse RFC 3339-compliant timestamp, preserving nanoseconds. - - Args: - stamp (str): RFC 3339 stamp, with up to nanosecond precision - - Returns: - :class:`DatetimeWithNanoseconds`: - an instance matching the timestamp string - - Raises: - ValueError: if `stamp` does not match the expected format - """ - with_nanos = _RFC3339_NANOS.match(stamp) - if with_nanos is None: - raise ValueError( - "Timestamp: {}, does not match pattern: {}".format( - stamp, _RFC3339_NANOS.pattern - ) - ) - bare = datetime.datetime.strptime( - with_nanos.group("no_fraction"), _RFC3339_NO_FRACTION - ) - fraction = with_nanos.group("nanos") - if fraction is None: - nanos = 0 - else: - scale = 9 - len(fraction) - nanos = int(fraction) * (10 ** scale) - return cls( - bare.year, - bare.month, - bare.day, - bare.hour, - bare.minute, - bare.second, - nanosecond=nanos, - tzinfo=pytz.UTC, - ) diff --git a/venv/lib/python3.6/site-packages/google/api_core/exceptions.py b/venv/lib/python3.6/site-packages/google/api_core/exceptions.py deleted file mode 100644 index eed4ee4..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/exceptions.py +++ /dev/null @@ -1,462 +0,0 @@ -# Copyright 2014 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Exceptions raised by Google API core & clients. - -This module provides base classes for all errors raised by libraries based -on :mod:`google.api_core`, including both HTTP and gRPC clients. -""" - -from __future__ import absolute_import -from __future__ import unicode_literals - -import six -from six.moves import http_client - -try: - import grpc -except ImportError: # pragma: NO COVER - grpc = None - -# Lookup tables for mapping exceptions from HTTP and gRPC transports. -# Populated by _APICallErrorMeta -_HTTP_CODE_TO_EXCEPTION = {} -_GRPC_CODE_TO_EXCEPTION = {} - - -class GoogleAPIError(Exception): - """Base class for all exceptions raised by Google API Clients.""" - - pass - - -@six.python_2_unicode_compatible -class RetryError(GoogleAPIError): - """Raised when a function has exhausted all of its available retries. - - Args: - message (str): The exception message. - cause (Exception): The last exception raised when retring the - function. - """ - - def __init__(self, message, cause): - super(RetryError, self).__init__(message) - self.message = message - self._cause = cause - - @property - def cause(self): - """The last exception raised when retrying the function.""" - return self._cause - - def __str__(self): - return "{}, last exception: {}".format(self.message, self.cause) - - -class _GoogleAPICallErrorMeta(type): - """Metaclass for registering GoogleAPICallError subclasses.""" - - def __new__(mcs, name, bases, class_dict): - cls = type.__new__(mcs, name, bases, class_dict) - if cls.code is not None: - _HTTP_CODE_TO_EXCEPTION.setdefault(cls.code, cls) - if cls.grpc_status_code is not None: - _GRPC_CODE_TO_EXCEPTION.setdefault(cls.grpc_status_code, cls) - return cls - - -@six.python_2_unicode_compatible -@six.add_metaclass(_GoogleAPICallErrorMeta) -class GoogleAPICallError(GoogleAPIError): - """Base class for exceptions raised by calling API methods. - - Args: - message (str): The exception message. - errors (Sequence[Any]): An optional list of error details. - response (Union[requests.Request, grpc.Call]): The response or - gRPC call metadata. - """ - - code = None - """Optional[int]: The HTTP status code associated with this error. - - This may be ``None`` if the exception does not have a direct mapping - to an HTTP error. - - See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html - """ - - grpc_status_code = None - """Optional[grpc.StatusCode]: The gRPC status code associated with this - error. - - This may be ``None`` if the exception does not match up to a gRPC error. - """ - - def __init__(self, message, errors=(), response=None): - super(GoogleAPICallError, self).__init__(message) - self.message = message - """str: The exception message.""" - self._errors = errors - self._response = response - - def __str__(self): - return "{} {}".format(self.code, self.message) - - @property - def errors(self): - """Detailed error information. - - Returns: - Sequence[Any]: A list of additional error details. - """ - return list(self._errors) - - @property - def response(self): - """Optional[Union[requests.Request, grpc.Call]]: The response or - gRPC call metadata.""" - return self._response - - -class Redirection(GoogleAPICallError): - """Base class for for all redirection (HTTP 3xx) responses.""" - - -class MovedPermanently(Redirection): - """Exception mapping a ``301 Moved Permanently`` response.""" - - code = http_client.MOVED_PERMANENTLY - - -class NotModified(Redirection): - """Exception mapping a ``304 Not Modified`` response.""" - - code = http_client.NOT_MODIFIED - - -class TemporaryRedirect(Redirection): - """Exception mapping a ``307 Temporary Redirect`` response.""" - - code = http_client.TEMPORARY_REDIRECT - - -class ResumeIncomplete(Redirection): - """Exception mapping a ``308 Resume Incomplete`` response. - - .. note:: :attr:`http_client.PERMANENT_REDIRECT` is ``308``, but Google - APIs differ in their use of this status code. - """ - - code = 308 - - -class ClientError(GoogleAPICallError): - """Base class for all client error (HTTP 4xx) responses.""" - - -class BadRequest(ClientError): - """Exception mapping a ``400 Bad Request`` response.""" - - code = http_client.BAD_REQUEST - - -class InvalidArgument(BadRequest): - """Exception mapping a :attr:`grpc.StatusCode.INVALID_ARGUMENT` error.""" - - grpc_status_code = grpc.StatusCode.INVALID_ARGUMENT if grpc is not None else None - - -class FailedPrecondition(BadRequest): - """Exception mapping a :attr:`grpc.StatusCode.FAILED_PRECONDITION` - error.""" - - grpc_status_code = grpc.StatusCode.FAILED_PRECONDITION if grpc is not None else None - - -class OutOfRange(BadRequest): - """Exception mapping a :attr:`grpc.StatusCode.OUT_OF_RANGE` error.""" - - grpc_status_code = grpc.StatusCode.OUT_OF_RANGE if grpc is not None else None - - -class Unauthorized(ClientError): - """Exception mapping a ``401 Unauthorized`` response.""" - - code = http_client.UNAUTHORIZED - - -class Unauthenticated(Unauthorized): - """Exception mapping a :attr:`grpc.StatusCode.UNAUTHENTICATED` error.""" - - grpc_status_code = grpc.StatusCode.UNAUTHENTICATED if grpc is not None else None - - -class Forbidden(ClientError): - """Exception mapping a ``403 Forbidden`` response.""" - - code = http_client.FORBIDDEN - - -class PermissionDenied(Forbidden): - """Exception mapping a :attr:`grpc.StatusCode.PERMISSION_DENIED` error.""" - - grpc_status_code = grpc.StatusCode.PERMISSION_DENIED if grpc is not None else None - - -class NotFound(ClientError): - """Exception mapping a ``404 Not Found`` response or a - :attr:`grpc.StatusCode.NOT_FOUND` error.""" - - code = http_client.NOT_FOUND - grpc_status_code = grpc.StatusCode.NOT_FOUND if grpc is not None else None - - -class MethodNotAllowed(ClientError): - """Exception mapping a ``405 Method Not Allowed`` response.""" - - code = http_client.METHOD_NOT_ALLOWED - - -class Conflict(ClientError): - """Exception mapping a ``409 Conflict`` response.""" - - code = http_client.CONFLICT - - -class AlreadyExists(Conflict): - """Exception mapping a :attr:`grpc.StatusCode.ALREADY_EXISTS` error.""" - - grpc_status_code = grpc.StatusCode.ALREADY_EXISTS if grpc is not None else None - - -class Aborted(Conflict): - """Exception mapping a :attr:`grpc.StatusCode.ABORTED` error.""" - - grpc_status_code = grpc.StatusCode.ABORTED if grpc is not None else None - - -class LengthRequired(ClientError): - """Exception mapping a ``411 Length Required`` response.""" - - code = http_client.LENGTH_REQUIRED - - -class PreconditionFailed(ClientError): - """Exception mapping a ``412 Precondition Failed`` response.""" - - code = http_client.PRECONDITION_FAILED - - -class RequestRangeNotSatisfiable(ClientError): - """Exception mapping a ``416 Request Range Not Satisfiable`` response.""" - - code = http_client.REQUESTED_RANGE_NOT_SATISFIABLE - - -class TooManyRequests(ClientError): - """Exception mapping a ``429 Too Many Requests`` response.""" - - # http_client does not define a constant for this in Python 2. - code = 429 - - -class ResourceExhausted(TooManyRequests): - """Exception mapping a :attr:`grpc.StatusCode.RESOURCE_EXHAUSTED` error.""" - - grpc_status_code = grpc.StatusCode.RESOURCE_EXHAUSTED if grpc is not None else None - - -class Cancelled(ClientError): - """Exception mapping a :attr:`grpc.StatusCode.CANCELLED` error.""" - - # This maps to HTTP status code 499. See - # https://github.com/googleapis/googleapis/blob/master/google/rpc\ - # /code.proto - code = 499 - grpc_status_code = grpc.StatusCode.CANCELLED if grpc is not None else None - - -class ServerError(GoogleAPICallError): - """Base for 5xx responses.""" - - -class InternalServerError(ServerError): - """Exception mapping a ``500 Internal Server Error`` response. or a - :attr:`grpc.StatusCode.INTERNAL` error.""" - - code = http_client.INTERNAL_SERVER_ERROR - grpc_status_code = grpc.StatusCode.INTERNAL if grpc is not None else None - - -class Unknown(ServerError): - """Exception mapping a :attr:`grpc.StatusCode.UNKNOWN` error.""" - - grpc_status_code = grpc.StatusCode.UNKNOWN if grpc is not None else None - - -class DataLoss(ServerError): - """Exception mapping a :attr:`grpc.StatusCode.DATA_LOSS` error.""" - - grpc_status_code = grpc.StatusCode.DATA_LOSS if grpc is not None else None - - -class MethodNotImplemented(ServerError): - """Exception mapping a ``501 Not Implemented`` response or a - :attr:`grpc.StatusCode.UNIMPLEMENTED` error.""" - - code = http_client.NOT_IMPLEMENTED - grpc_status_code = grpc.StatusCode.UNIMPLEMENTED if grpc is not None else None - - -class BadGateway(ServerError): - """Exception mapping a ``502 Bad Gateway`` response.""" - - code = http_client.BAD_GATEWAY - - -class ServiceUnavailable(ServerError): - """Exception mapping a ``503 Service Unavailable`` response or a - :attr:`grpc.StatusCode.UNAVAILABLE` error.""" - - code = http_client.SERVICE_UNAVAILABLE - grpc_status_code = grpc.StatusCode.UNAVAILABLE if grpc is not None else None - - -class GatewayTimeout(ServerError): - """Exception mapping a ``504 Gateway Timeout`` response.""" - - code = http_client.GATEWAY_TIMEOUT - - -class DeadlineExceeded(GatewayTimeout): - """Exception mapping a :attr:`grpc.StatusCode.DEADLINE_EXCEEDED` error.""" - - grpc_status_code = grpc.StatusCode.DEADLINE_EXCEEDED if grpc is not None else None - - -def exception_class_for_http_status(status_code): - """Return the exception class for a specific HTTP status code. - - Args: - status_code (int): The HTTP status code. - - Returns: - :func:`type`: the appropriate subclass of :class:`GoogleAPICallError`. - """ - return _HTTP_CODE_TO_EXCEPTION.get(status_code, GoogleAPICallError) - - -def from_http_status(status_code, message, **kwargs): - """Create a :class:`GoogleAPICallError` from an HTTP status code. - - Args: - status_code (int): The HTTP status code. - message (str): The exception message. - kwargs: Additional arguments passed to the :class:`GoogleAPICallError` - constructor. - - Returns: - GoogleAPICallError: An instance of the appropriate subclass of - :class:`GoogleAPICallError`. - """ - error_class = exception_class_for_http_status(status_code) - error = error_class(message, **kwargs) - - if error.code is None: - error.code = status_code - - return error - - -def from_http_response(response): - """Create a :class:`GoogleAPICallError` from a :class:`requests.Response`. - - Args: - response (requests.Response): The HTTP response. - - Returns: - GoogleAPICallError: An instance of the appropriate subclass of - :class:`GoogleAPICallError`, with the message and errors populated - from the response. - """ - try: - payload = response.json() - except ValueError: - payload = {"error": {"message": response.text or "unknown error"}} - - error_message = payload.get("error", {}).get("message", "unknown error") - errors = payload.get("error", {}).get("errors", ()) - - message = "{method} {url}: {error}".format( - method=response.request.method, url=response.request.url, error=error_message - ) - - exception = from_http_status( - response.status_code, message, errors=errors, response=response - ) - return exception - - -def exception_class_for_grpc_status(status_code): - """Return the exception class for a specific :class:`grpc.StatusCode`. - - Args: - status_code (grpc.StatusCode): The gRPC status code. - - Returns: - :func:`type`: the appropriate subclass of :class:`GoogleAPICallError`. - """ - return _GRPC_CODE_TO_EXCEPTION.get(status_code, GoogleAPICallError) - - -def from_grpc_status(status_code, message, **kwargs): - """Create a :class:`GoogleAPICallError` from a :class:`grpc.StatusCode`. - - Args: - status_code (grpc.StatusCode): The gRPC status code. - message (str): The exception message. - kwargs: Additional arguments passed to the :class:`GoogleAPICallError` - constructor. - - Returns: - GoogleAPICallError: An instance of the appropriate subclass of - :class:`GoogleAPICallError`. - """ - error_class = exception_class_for_grpc_status(status_code) - error = error_class(message, **kwargs) - - if error.grpc_status_code is None: - error.grpc_status_code = status_code - - return error - - -def from_grpc_error(rpc_exc): - """Create a :class:`GoogleAPICallError` from a :class:`grpc.RpcError`. - - Args: - rpc_exc (grpc.RpcError): The gRPC error. - - Returns: - GoogleAPICallError: An instance of the appropriate subclass of - :class:`GoogleAPICallError`. - """ - if isinstance(rpc_exc, grpc.Call): - return from_grpc_status( - rpc_exc.code(), rpc_exc.details(), errors=(rpc_exc,), response=rpc_exc - ) - else: - return GoogleAPICallError(str(rpc_exc), errors=(rpc_exc,), response=rpc_exc) diff --git a/venv/lib/python3.6/site-packages/google/api_core/future/__init__.py b/venv/lib/python3.6/site-packages/google/api_core/future/__init__.py deleted file mode 100644 index 3768b2c..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/future/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2017, Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Futures for dealing with asynchronous operations.""" - -from google.api_core.future.base import Future - -__all__ = ["Future"] diff --git a/venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/__init__.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 1dbab15498bf8231907bcdde2f7f7a930a4ede8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmYj~u};G<6h$33r3kgK!{RkVVii_|m>3vX*dnASH+EA?j-Rm;q4G!k1Rs(KiHToe zs*`}!C%r3O>E3g1R;#n+*ZIpQCFGkNUG(HWez=SxNl9cPsYx1I(uBxaos=_~K9g+z zzJBQ1&a1$-=$TZ)Xj`*4-R_tOdt2>1TI>Qtr@Ux2+EDyNB*~KgWNP|h>nTh71%Si~ zpuDOPYoiL`G*swSu^lIhjRy1R(@kVZ-Ak{$qJS66QU diff --git a/venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/_helpers.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/_helpers.cpython-36.pyc deleted file mode 100644 index 282f0713bdc7f7745853ef3701de3010bfabf65e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmYjPPjAyO6t|r;O~X2n;J^W)oDh|0%f<-_AueSCO&g*+K!s#^v74sNKOA?ZRXCON zz6W2)r%9an3Y>U$+G&>Z-t+tSd++DG>UM*Jo5OE6E<%6MokPHW2VZpzf};uIn3EJw zu+?Nj1fDy>-Qr1$JKX(+CLV8b4|JQ8G3vE9Pd>@yiYXD!L|O`2h0{WY)1_KUQ4Rh= zS9BH`X^yk|&OujCK`1oGHLCG7{z*8l2_-d|J6nWNZMu`q%duioRUr%2ObW(Bmh&)U za#4ke3YiITCbA;m#RnHXS9hA+B#*UsVav4FWa(CA`t=;`G8tFeTdW%0RQyJ=15^F` zI8<3VER(W-xlB^t&*bsZcP98SE{Zr6eO4y@sE}fJAHtp5d$aeD?zk9~YyHq7(gvS4 zIFHT#J_tk(u!nst?|~g*TLkhs29hvRcn-vEF-Bie zPQD=fD9+~fhy1Eo2w*2-X?n?`#fz|7fmy786-#1T#BpP18q=Xk- z&5~3=KtxMr(%#z_y=^x*0}eZ*eVuO8)AN&)(P!Pc?F9+`9$k8{g=`yP2yR3GmVQ*R zsi27+m+sR;h&24T1PAyK%Lm};`2a(C5mBn!yYZ#@fpsSq>J;`7Qu~zVEEANa`_}F&>$M^pO{LI;A diff --git a/venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/base.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/base.cpython-36.pyc deleted file mode 100644 index 14c714e23c63bda5156b7518f8d4189bfde607ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1792 zcmb_c%Wl&^6dga3IL|ipL6=^zAQDY@N~i+VQc=W$Y+w~3naRwgb#QEV#+FK!q+h^a z@Jn7HvEmO9EAAa9!GsE-s1wb#&)k_gXU;hHL9z-#qCSNZBd$8Gh+)*UmlQc=CaQ#Ufh=~Xjn)p$uy5E72^cluQv*G0sy7~-35D-BICN~C_u*W5C za_f>HtwuI4X;jgu%qto>8aceGQB|WIUgwQV16I~F-sMf+(zvei2H(`P8ydCw4UL)_ zZSif5TD%5Fy_uEs!%PQ@LxqWuBg#a#R&$}fJ@b|8F9uxz=mU47&^=%QRqEh9i$a!4 z2}X2B+8Nc&H+$dJTQCC-j}4#LkD;p?goMnOD1tI_T&9w>IZy(BJbZjr-JuRqv$jc`!x3VStP|A_W*ku=h}KGzZ-wd z%8Z6g1TJbZArN!g%w>1;%zw+47Od_V5-(e8%maLwB&+6o1%lrKxFFj6g9wt>!c~!J z82aJq?E+J4&NNS53y;mCP~0hy)aN8P-e=lO$l~)~x1HN&YTL3(;!i}BCaeCHrBG>* z+%2#zZYj^KMJMa9-zrsATrd&iUl}XM>Qyb1YY}GVC|u=hQ_elK%wseNhLnAHyyUf} zdvj0!nzRp^g02ev&PL{V zUPvdx^Rk-fO(LEK_}=im^OOejOvM8?84O!=$g&olm+*;5&LS==sK&ui#emf(H$}_b zK)8vajR6ZyA>cn*;^({zUF|_|9NTQ!`Oh{Q7WP)DW$Rg;irm2!I6JeHe~~ru7C{Kr q6*H?GJwJX8C@V+9v0#Z_Rp8U~x_mfK^20tufePi@reiwRw($#Bg?e-V diff --git a/venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/polling.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/future/__pycache__/polling.cpython-36.pyc deleted file mode 100644 index 3f89bc5c6d332bdc98dae0976681debc426c1c49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5665 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 diff --git a/venv/lib/python3.6/site-packages/google/api_core/gapic_v1/__pycache__/config.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/gapic_v1/__pycache__/config.cpython-36.pyc deleted file mode 100644 index cd5fa242e662f677880d26053961f1ac7655e453..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4834 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 or>Klqt$Vt%{)DW%O7@4r?F`9ZEcHoiZ?A@8B# zq))iT?a=C5I6I*oIeo_>-0i!3hF3n5{tU138qO7Nzb4Ju$`%?WD0)3!f1d4H{Si63P*pS_(mCt4(gxF6wOqNbsL#(=0meNX@V3G7KeH0%(yEry+ z$h&A1IYdlv6K)?7v8?P* z4ucWIw5)-e8Z=@WZHiA<4CRJ-(_T>`UD;u2ib39CtX0~L#~+#-v`cw_ydhFzta(%{ zh;<^Jqzr!<=Q5T_RgkC)Dj6?xmo5BBkLfljYT)8rsf4nnwh1pZZf6dfiF0TD$+^`* z)LqF2&~$T0j%D5$VS8Aohhj;DmTz7akcP|$JX$Gw{6<6_ch2`ZDoQ(Pkhb=-Ampt` ztgjt2;2lj}2rZTdEk6-Z`W^JW!pAq?8?AN9p1eY}?R1>qREamex{Rr$&PVF=_JU=U*tMdDcjp=(eErkNa;&%M!a_D7g2rEW| zXi$P$8dDeV-<{JV7*9!(#hi{rkyYDy?E1mw!7`^Z1uX2yS=XWeCw^DrfG>; z - Retry.__call__() -> - Timeout.__call__() -> - wrap_errors() -> - get_topic() - - Note that if ``timeout`` or ``retry`` is ``None``, then they are not - applied to the function. For example, - ``wrapped_get_topic(timeout=None, retry=None)`` is more or less - equivalent to just calling ``get_topic`` but with error re-mapping. - - Args: - func (Callable[Any]): The function to wrap. It should accept an - optional ``timeout`` argument. If ``metadata`` is not ``None``, it - should accept a ``metadata`` argument. - default_retry (Optional[google.api_core.Retry]): The default retry - strategy. If ``None``, the method will not retry by default. - default_timeout (Optional[google.api_core.Timeout]): The default - timeout strategy. Can also be specified as an int or float. If - ``None``, the method will not have timeout specified by default. - client_info - (Optional[google.api_core.gapic_v1.client_info.ClientInfo]): - Client information used to create a user-agent string that's - passed as gRPC metadata to the method. If unspecified, then - a sane default will be used. If ``None``, then no user agent - metadata will be provided to the RPC method. - - Returns: - Callable: A new callable that takes optional ``retry`` and ``timeout`` - arguments and applies the common error mapping, retry, timeout, - and metadata behavior to the low-level RPC method. - """ - func = grpc_helpers.wrap_errors(func) - - if client_info is not None: - user_agent_metadata = [client_info.to_grpc_metadata()] - else: - user_agent_metadata = None - - return general_helpers.wraps(func)( - _GapicCallable( - func, default_retry, default_timeout, metadata=user_agent_metadata - ) - ) diff --git a/venv/lib/python3.6/site-packages/google/api_core/gapic_v1/routing_header.py b/venv/lib/python3.6/site-packages/google/api_core/gapic_v1/routing_header.py deleted file mode 100644 index 3fb12a6..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/gapic_v1/routing_header.py +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Helpers for constructing routing headers. - -These headers are used by Google infrastructure to determine how to route -requests, especially for services that are regional. - -Generally, these headers are specified as gRPC metadata. -""" - -import sys - -from six.moves.urllib.parse import urlencode - -ROUTING_METADATA_KEY = "x-goog-request-params" - - -def to_routing_header(params): - """Returns a routing header string for the given request parameters. - - Args: - params (Mapping[str, Any]): A dictionary containing the request - parameters used for routing. - - Returns: - str: The routing header string. - """ - if sys.version_info[0] < 3: - # Python 2 does not have the "safe" parameter for urlencode. - return urlencode(params).replace("%2F", "/") - return urlencode( - params, - # Per Google API policy (go/api-url-encoding), / is not encoded. - safe="/", - ) - - -def to_grpc_metadata(params): - """Returns the gRPC metadata containing the routing headers for the given - request parameters. - - Args: - params (Mapping[str, Any]): A dictionary containing the request - parameters used for routing. - - Returns: - Tuple(str, str): The gRPC metadata containing the routing header key - and value. - """ - return (ROUTING_METADATA_KEY, to_routing_header(params)) diff --git a/venv/lib/python3.6/site-packages/google/api_core/general_helpers.py b/venv/lib/python3.6/site-packages/google/api_core/general_helpers.py deleted file mode 100644 index 5661663..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/general_helpers.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Helpers for general Python functionality.""" - -import functools - -import six - - -# functools.partial objects lack several attributes present on real function -# objects. In Python 2 wraps fails on this so use a restricted set instead. -_PARTIAL_VALID_ASSIGNMENTS = ("__doc__",) - - -def wraps(wrapped): - """A functools.wraps helper that handles partial objects on Python 2.""" - if isinstance(wrapped, functools.partial): - return six.wraps(wrapped, assigned=_PARTIAL_VALID_ASSIGNMENTS) - else: - return six.wraps(wrapped) diff --git a/venv/lib/python3.6/site-packages/google/api_core/grpc_helpers.py b/venv/lib/python3.6/site-packages/google/api_core/grpc_helpers.py deleted file mode 100644 index 4d63beb..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/grpc_helpers.py +++ /dev/null @@ -1,384 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Helpers for :mod:`grpc`.""" - -import collections - -import grpc -import six - -from google.api_core import exceptions -from google.api_core import general_helpers -import google.auth -import google.auth.credentials -import google.auth.transport.grpc -import google.auth.transport.requests - -try: - import grpc_gcp - - HAS_GRPC_GCP = True -except ImportError: - HAS_GRPC_GCP = False - -# The list of gRPC Callable interfaces that return iterators. -_STREAM_WRAP_CLASSES = (grpc.UnaryStreamMultiCallable, grpc.StreamStreamMultiCallable) - - -def _patch_callable_name(callable_): - """Fix-up gRPC callable attributes. - - gRPC callable lack the ``__name__`` attribute which causes - :func:`functools.wraps` to error. This adds the attribute if needed. - """ - if not hasattr(callable_, "__name__"): - callable_.__name__ = callable_.__class__.__name__ - - -def _wrap_unary_errors(callable_): - """Map errors for Unary-Unary and Stream-Unary gRPC callables.""" - _patch_callable_name(callable_) - - @six.wraps(callable_) - def error_remapped_callable(*args, **kwargs): - try: - return callable_(*args, **kwargs) - except grpc.RpcError as exc: - six.raise_from(exceptions.from_grpc_error(exc), exc) - - return error_remapped_callable - - -class _StreamingResponseIterator(grpc.Call): - def __init__(self, wrapped): - self._wrapped = wrapped - - def __iter__(self): - """This iterator is also an iterable that returns itself.""" - return self - - def next(self): - """Get the next response from the stream. - - Returns: - protobuf.Message: A single response from the stream. - """ - try: - return six.next(self._wrapped) - except grpc.RpcError as exc: - six.raise_from(exceptions.from_grpc_error(exc), exc) - - # Alias needed for Python 2/3 support. - __next__ = next - - # grpc.Call & grpc.RpcContext interface - - def add_callback(self, callback): - return self._wrapped.add_callback(callback) - - def cancel(self): - return self._wrapped.cancel() - - def code(self): - return self._wrapped.code() - - def details(self): - return self._wrapped.details() - - def initial_metadata(self): - return self._wrapped.initial_metadata() - - def is_active(self): - return self._wrapped.is_active() - - def time_remaining(self): - return self._wrapped.time_remaining() - - def trailing_metadata(self): - return self._wrapped.trailing_metadata() - - -def _wrap_stream_errors(callable_): - """Wrap errors for Unary-Stream and Stream-Stream gRPC callables. - - The callables that return iterators require a bit more logic to re-map - errors when iterating. This wraps both the initial invocation and the - iterator of the return value to re-map errors. - """ - _patch_callable_name(callable_) - - @general_helpers.wraps(callable_) - def error_remapped_callable(*args, **kwargs): - try: - result = callable_(*args, **kwargs) - return _StreamingResponseIterator(result) - except grpc.RpcError as exc: - six.raise_from(exceptions.from_grpc_error(exc), exc) - - return error_remapped_callable - - -def wrap_errors(callable_): - """Wrap a gRPC callable and map :class:`grpc.RpcErrors` to friendly error - classes. - - Errors raised by the gRPC callable are mapped to the appropriate - :class:`google.api_core.exceptions.GoogleAPICallError` subclasses. - The original `grpc.RpcError` (which is usually also a `grpc.Call`) is - available from the ``response`` property on the mapped exception. This - is useful for extracting metadata from the original error. - - Args: - callable_ (Callable): A gRPC callable. - - Returns: - Callable: The wrapped gRPC callable. - """ - if isinstance(callable_, _STREAM_WRAP_CLASSES): - return _wrap_stream_errors(callable_) - else: - return _wrap_unary_errors(callable_) - - -def create_channel( - target, credentials=None, scopes=None, ssl_credentials=None, **kwargs -): - """Create a secure channel with credentials. - - Args: - target (str): The target service address in the format 'hostname:port'. - credentials (google.auth.credentials.Credentials): The credentials. If - not specified, then this function will attempt to ascertain the - credentials from the environment using :func:`google.auth.default`. - scopes (Sequence[str]): A optional list of scopes needed for this - service. These are only used when credentials are not specified and - are passed to :func:`google.auth.default`. - ssl_credentials (grpc.ChannelCredentials): Optional SSL channel - credentials. This can be used to specify different certificates. - kwargs: Additional key-word args passed to - :func:`grpc_gcp.secure_channel` or :func:`grpc.secure_channel`. - - Returns: - grpc.Channel: The created channel. - """ - if credentials is None: - credentials, _ = google.auth.default(scopes=scopes) - else: - credentials = google.auth.credentials.with_scopes_if_required( - credentials, scopes - ) - - request = google.auth.transport.requests.Request() - - # Create the metadata plugin for inserting the authorization header. - metadata_plugin = google.auth.transport.grpc.AuthMetadataPlugin( - credentials, request - ) - - # Create a set of grpc.CallCredentials using the metadata plugin. - google_auth_credentials = grpc.metadata_call_credentials(metadata_plugin) - - if ssl_credentials is None: - ssl_credentials = grpc.ssl_channel_credentials() - - # Combine the ssl credentials and the authorization credentials. - composite_credentials = grpc.composite_channel_credentials( - ssl_credentials, google_auth_credentials - ) - - if HAS_GRPC_GCP: - # If grpc_gcp module is available use grpc_gcp.secure_channel, - # otherwise, use grpc.secure_channel to create grpc channel. - return grpc_gcp.secure_channel(target, composite_credentials, **kwargs) - else: - return grpc.secure_channel(target, composite_credentials, **kwargs) - - -_MethodCall = collections.namedtuple( - "_MethodCall", ("request", "timeout", "metadata", "credentials") -) - -_ChannelRequest = collections.namedtuple("_ChannelRequest", ("method", "request")) - - -class _CallableStub(object): - """Stub for the grpc.*MultiCallable interfaces.""" - - def __init__(self, method, channel): - self._method = method - self._channel = channel - self.response = None - """Union[protobuf.Message, Callable[protobuf.Message], exception]: - The response to give when invoking this callable. If this is a - callable, it will be invoked with the request protobuf. If it's an - exception, the exception will be raised when this is invoked. - """ - self.responses = None - """Iterator[ - Union[protobuf.Message, Callable[protobuf.Message], exception]]: - An iterator of responses. If specified, self.response will be populated - on each invocation by calling ``next(self.responses)``.""" - self.requests = [] - """List[protobuf.Message]: All requests sent to this callable.""" - self.calls = [] - """List[Tuple]: All invocations of this callable. Each tuple is the - request, timeout, metadata, and credentials.""" - - def __call__(self, request, timeout=None, metadata=None, credentials=None): - self._channel.requests.append(_ChannelRequest(self._method, request)) - self.calls.append(_MethodCall(request, timeout, metadata, credentials)) - self.requests.append(request) - - response = self.response - if self.responses is not None: - if response is None: - response = next(self.responses) - else: - raise ValueError( - "{method}.response and {method}.responses are mutually " - "exclusive.".format(method=self._method) - ) - - if callable(response): - return response(request) - - if isinstance(response, Exception): - raise response - - if response is not None: - return response - - raise ValueError('Method stub for "{}" has no response.'.format(self._method)) - - -def _simplify_method_name(method): - """Simplifies a gRPC method name. - - When gRPC invokes the channel to create a callable, it gives a full - method name like "/google.pubsub.v1.Publisher/CreateTopic". This - returns just the name of the method, in this case "CreateTopic". - - Args: - method (str): The name of the method. - - Returns: - str: The simplified name of the method. - """ - return method.rsplit("/", 1).pop() - - -class ChannelStub(grpc.Channel): - """A testing stub for the grpc.Channel interface. - - This can be used to test any client that eventually uses a gRPC channel - to communicate. By passing in a channel stub, you can configure which - responses are returned and track which requests are made. - - For example: - - .. code-block:: python - - channel_stub = grpc_helpers.ChannelStub() - client = FooClient(channel=channel_stub) - - channel_stub.GetFoo.response = foo_pb2.Foo(name='bar') - - foo = client.get_foo(labels=['baz']) - - assert foo.name == 'bar' - assert channel_stub.GetFoo.requests[0].labels = ['baz'] - - Each method on the stub can be accessed and configured on the channel. - Here's some examples of various configurations: - - .. code-block:: python - - # Return a basic response: - - channel_stub.GetFoo.response = foo_pb2.Foo(name='bar') - assert client.get_foo().name == 'bar' - - # Raise an exception: - channel_stub.GetFoo.response = NotFound('...') - - with pytest.raises(NotFound): - client.get_foo() - - # Use a sequence of responses: - channel_stub.GetFoo.responses = iter([ - foo_pb2.Foo(name='bar'), - foo_pb2.Foo(name='baz'), - ]) - - assert client.get_foo().name == 'bar' - assert client.get_foo().name == 'baz' - - # Use a callable - - def on_get_foo(request): - return foo_pb2.Foo(name='bar' + request.id) - - channel_stub.GetFoo.response = on_get_foo - - assert client.get_foo(id='123').name == 'bar123' - """ - - def __init__(self, responses=[]): - self.requests = [] - """Sequence[Tuple[str, protobuf.Message]]: A list of all requests made - on this channel in order. The tuple is of method name, request - message.""" - self._method_stubs = {} - - def _stub_for_method(self, method): - method = _simplify_method_name(method) - self._method_stubs[method] = _CallableStub(method, self) - return self._method_stubs[method] - - def __getattr__(self, key): - try: - return self._method_stubs[key] - except KeyError: - raise AttributeError - - def unary_unary(self, method, request_serializer=None, response_deserializer=None): - """grpc.Channel.unary_unary implementation.""" - return self._stub_for_method(method) - - def unary_stream(self, method, request_serializer=None, response_deserializer=None): - """grpc.Channel.unary_stream implementation.""" - return self._stub_for_method(method) - - def stream_unary(self, method, request_serializer=None, response_deserializer=None): - """grpc.Channel.stream_unary implementation.""" - return self._stub_for_method(method) - - def stream_stream( - self, method, request_serializer=None, response_deserializer=None - ): - """grpc.Channel.stream_stream implementation.""" - return self._stub_for_method(method) - - def subscribe(self, callback, try_to_connect=False): - """grpc.Channel.subscribe implementation.""" - pass - - def unsubscribe(self, callback): - """grpc.Channel.unsubscribe implementation.""" - pass - - def close(self): - """grpc.Channel.close implementation.""" - pass diff --git a/venv/lib/python3.6/site-packages/google/api_core/iam.py b/venv/lib/python3.6/site-packages/google/api_core/iam.py deleted file mode 100644 index c17bddc..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/iam.py +++ /dev/null @@ -1,248 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Non-API-specific IAM policy definitions - -For allowed roles / permissions, see: -https://cloud.google.com/iam/docs/understanding-roles -""" - -import collections -try: - from collections import abc as collections_abc -except ImportError: # Python 2.7 - import collections as collections_abc -import warnings - -# Generic IAM roles - -OWNER_ROLE = "roles/owner" -"""Generic role implying all rights to an object.""" - -EDITOR_ROLE = "roles/editor" -"""Generic role implying rights to modify an object.""" - -VIEWER_ROLE = "roles/viewer" -"""Generic role implying rights to access an object.""" - -_ASSIGNMENT_DEPRECATED_MSG = """\ -Assigning to '{}' is deprecated. Replace with 'policy[{}] = members.""" - - -class Policy(collections_abc.MutableMapping): - """IAM Policy - - See - https://cloud.google.com/iam/reference/rest/v1/Policy - - :type etag: str - :param etag: ETag used to identify a unique of the policy - - :type version: int - :param version: unique version of the policy - """ - - _OWNER_ROLES = (OWNER_ROLE,) - """Roles mapped onto our ``owners`` attribute.""" - - _EDITOR_ROLES = (EDITOR_ROLE,) - """Roles mapped onto our ``editors`` attribute.""" - - _VIEWER_ROLES = (VIEWER_ROLE,) - """Roles mapped onto our ``viewers`` attribute.""" - - def __init__(self, etag=None, version=None): - self.etag = etag - self.version = version - self._bindings = collections.defaultdict(set) - - def __iter__(self): - return iter(self._bindings) - - def __len__(self): - return len(self._bindings) - - def __getitem__(self, key): - return self._bindings[key] - - def __setitem__(self, key, value): - self._bindings[key] = set(value) - - def __delitem__(self, key): - del self._bindings[key] - - @property - def owners(self): - """Legacy access to owner role.""" - result = set() - for role in self._OWNER_ROLES: - for member in self._bindings.get(role, ()): - result.add(member) - return frozenset(result) - - @owners.setter - def owners(self, value): - """Update owners.""" - warnings.warn( - _ASSIGNMENT_DEPRECATED_MSG.format("owners", OWNER_ROLE), DeprecationWarning - ) - self[OWNER_ROLE] = value - - @property - def editors(self): - """Legacy access to editor role.""" - result = set() - for role in self._EDITOR_ROLES: - for member in self._bindings.get(role, ()): - result.add(member) - return frozenset(result) - - @editors.setter - def editors(self, value): - """Update editors.""" - warnings.warn( - _ASSIGNMENT_DEPRECATED_MSG.format("editors", EDITOR_ROLE), - DeprecationWarning, - ) - self[EDITOR_ROLE] = value - - @property - def viewers(self): - """Legacy access to viewer role.""" - result = set() - for role in self._VIEWER_ROLES: - for member in self._bindings.get(role, ()): - result.add(member) - return frozenset(result) - - @viewers.setter - def viewers(self, value): - """Update viewers.""" - warnings.warn( - _ASSIGNMENT_DEPRECATED_MSG.format("viewers", VIEWER_ROLE), - DeprecationWarning, - ) - self[VIEWER_ROLE] = value - - @staticmethod - def user(email): - """Factory method for a user member. - - :type email: str - :param email: E-mail for this particular user. - - :rtype: str - :returns: A member string corresponding to the given user. - """ - return "user:%s" % (email,) - - @staticmethod - def service_account(email): - """Factory method for a service account member. - - :type email: str - :param email: E-mail for this particular service account. - - :rtype: str - :returns: A member string corresponding to the given service account. - """ - return "serviceAccount:%s" % (email,) - - @staticmethod - def group(email): - """Factory method for a group member. - - :type email: str - :param email: An id or e-mail for this particular group. - - :rtype: str - :returns: A member string corresponding to the given group. - """ - return "group:%s" % (email,) - - @staticmethod - def domain(domain): - """Factory method for a domain member. - - :type domain: str - :param domain: The domain for this member. - - :rtype: str - :returns: A member string corresponding to the given domain. - """ - return "domain:%s" % (domain,) - - @staticmethod - def all_users(): - """Factory method for a member representing all users. - - :rtype: str - :returns: A member string representing all users. - """ - return "allUsers" - - @staticmethod - def authenticated_users(): - """Factory method for a member representing all authenticated users. - - :rtype: str - :returns: A member string representing all authenticated users. - """ - return "allAuthenticatedUsers" - - @classmethod - def from_api_repr(cls, resource): - """Create a policy from the resource returned from the API. - - :type resource: dict - :param resource: resource returned from the ``getIamPolicy`` API. - - :rtype: :class:`Policy` - :returns: the parsed policy - """ - version = resource.get("version") - etag = resource.get("etag") - policy = cls(etag, version) - for binding in resource.get("bindings", ()): - role = binding["role"] - members = sorted(binding["members"]) - policy[role] = members - return policy - - def to_api_repr(self): - """Construct a Policy resource. - - :rtype: dict - :returns: a resource to be passed to the ``setIamPolicy`` API. - """ - resource = {} - - if self.etag is not None: - resource["etag"] = self.etag - - if self.version is not None: - resource["version"] = self.version - - if self._bindings: - bindings = resource["bindings"] = [] - for role, members in sorted(self._bindings.items()): - if members: - bindings.append({"role": role, "members": sorted(set(members))}) - - if not bindings: - del resource["bindings"] - - return resource - - -collections_abc.MutableMapping.register(Policy) diff --git a/venv/lib/python3.6/site-packages/google/api_core/operation.py b/venv/lib/python3.6/site-packages/google/api_core/operation.py deleted file mode 100644 index 4147c7b..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/operation.py +++ /dev/null @@ -1,308 +0,0 @@ -# Copyright 2016 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Futures for long-running operations returned from Google Cloud APIs. - -These futures can be used to synchronously wait for the result of a -long-running operation using :meth:`Operation.result`: - - -.. code-block:: python - - operation = my_api_client.long_running_method() - result = operation.result() - -Or asynchronously using callbacks and :meth:`Operation.add_done_callback`: - -.. code-block:: python - - operation = my_api_client.long_running_method() - - def my_callback(future): - result = future.result() - - operation.add_done_callback(my_callback) - -""" - -import functools -import threading - -from google.api_core import exceptions -from google.api_core import protobuf_helpers -from google.api_core.future import polling -from google.longrunning import operations_pb2 -from google.protobuf import json_format -from google.rpc import code_pb2 - - -class Operation(polling.PollingFuture): - """A Future for interacting with a Google API Long-Running Operation. - - Args: - operation (google.longrunning.operations_pb2.Operation): The - initial operation. - refresh (Callable[[], ~.api_core.operation.Operation]): A callable that - returns the latest state of the operation. - cancel (Callable[[], None]): A callable that tries to cancel - the operation. - result_type (func:`type`): The protobuf type for the operation's - result. - metadata_type (func:`type`): The protobuf type for the operation's - metadata. - retry (google.api_core.retry.Retry): The retry configuration used - when polling. This can be used to control how often :meth:`done` - is polled. Regardless of the retry's ``deadline``, it will be - overridden by the ``timeout`` argument to :meth:`result`. - """ - - def __init__( - self, - operation, - refresh, - cancel, - result_type, - metadata_type=None, - retry=polling.DEFAULT_RETRY, - ): - super(Operation, self).__init__(retry=retry) - self._operation = operation - self._refresh = refresh - self._cancel = cancel - self._result_type = result_type - self._metadata_type = metadata_type - self._completion_lock = threading.Lock() - # Invoke this in case the operation came back already complete. - self._set_result_from_operation() - - @property - def operation(self): - """google.longrunning.Operation: The current long-running operation.""" - return self._operation - - @property - def metadata(self): - """google.protobuf.Message: the current operation metadata.""" - if not self._operation.HasField("metadata"): - return None - - return protobuf_helpers.from_any_pb( - self._metadata_type, self._operation.metadata - ) - - def _set_result_from_operation(self): - """Set the result or exception from the operation if it is complete.""" - # This must be done in a lock to prevent the polling thread - # and main thread from both executing the completion logic - # at the same time. - with self._completion_lock: - # If the operation isn't complete or if the result has already been - # set, do not call set_result/set_exception again. - # Note: self._result_set is set to True in set_result and - # set_exception, in case those methods are invoked directly. - if not self._operation.done or self._result_set: - return - - if self._operation.HasField("response"): - response = protobuf_helpers.from_any_pb( - self._result_type, self._operation.response - ) - self.set_result(response) - elif self._operation.HasField("error"): - exception = exceptions.GoogleAPICallError( - self._operation.error.message, - errors=(self._operation.error,), - response=self._operation, - ) - self.set_exception(exception) - else: - exception = exceptions.GoogleAPICallError( - "Unexpected state: Long-running operation had neither " - "response nor error set." - ) - self.set_exception(exception) - - def _refresh_and_update(self): - """Refresh the operation and update the result if needed.""" - # If the currently cached operation is done, no need to make another - # RPC as it will not change once done. - if not self._operation.done: - self._operation = self._refresh() - self._set_result_from_operation() - - def done(self): - """Checks to see if the operation is complete. - - Returns: - bool: True if the operation is complete, False otherwise. - """ - self._refresh_and_update() - return self._operation.done - - def cancel(self): - """Attempt to cancel the operation. - - Returns: - bool: True if the cancel RPC was made, False if the operation is - already complete. - """ - if self.done(): - return False - - self._cancel() - return True - - def cancelled(self): - """True if the operation was cancelled.""" - self._refresh_and_update() - return ( - self._operation.HasField("error") - and self._operation.error.code == code_pb2.CANCELLED - ) - - -def _refresh_http(api_request, operation_name): - """Refresh an operation using a JSON/HTTP client. - - Args: - api_request (Callable): A callable used to make an API request. This - should generally be - :meth:`google.cloud._http.Connection.api_request`. - operation_name (str): The name of the operation. - - Returns: - google.longrunning.operations_pb2.Operation: The operation. - """ - path = "operations/{}".format(operation_name) - api_response = api_request(method="GET", path=path) - return json_format.ParseDict(api_response, operations_pb2.Operation()) - - -def _cancel_http(api_request, operation_name): - """Cancel an operation using a JSON/HTTP client. - - Args: - api_request (Callable): A callable used to make an API request. This - should generally be - :meth:`google.cloud._http.Connection.api_request`. - operation_name (str): The name of the operation. - """ - path = "operations/{}:cancel".format(operation_name) - api_request(method="POST", path=path) - - -def from_http_json(operation, api_request, result_type, **kwargs): - """Create an operation future using a HTTP/JSON client. - - This interacts with the long-running operations `service`_ (specific - to a given API) via `HTTP/JSON`_. - - .. _HTTP/JSON: https://cloud.google.com/speech/reference/rest/\ - v1beta1/operations#Operation - - Args: - operation (dict): Operation as a dictionary. - api_request (Callable): A callable used to make an API request. This - should generally be - :meth:`google.cloud._http.Connection.api_request`. - result_type (:func:`type`): The protobuf result type. - kwargs: Keyword args passed into the :class:`Operation` constructor. - - Returns: - ~.api_core.operation.Operation: The operation future to track the given - operation. - """ - operation_proto = json_format.ParseDict(operation, operations_pb2.Operation()) - refresh = functools.partial(_refresh_http, api_request, operation_proto.name) - cancel = functools.partial(_cancel_http, api_request, operation_proto.name) - return Operation(operation_proto, refresh, cancel, result_type, **kwargs) - - -def _refresh_grpc(operations_stub, operation_name): - """Refresh an operation using a gRPC client. - - Args: - operations_stub (google.longrunning.operations_pb2.OperationsStub): - The gRPC operations stub. - operation_name (str): The name of the operation. - - Returns: - google.longrunning.operations_pb2.Operation: The operation. - """ - request_pb = operations_pb2.GetOperationRequest(name=operation_name) - return operations_stub.GetOperation(request_pb) - - -def _cancel_grpc(operations_stub, operation_name): - """Cancel an operation using a gRPC client. - - Args: - operations_stub (google.longrunning.operations_pb2.OperationsStub): - The gRPC operations stub. - operation_name (str): The name of the operation. - """ - request_pb = operations_pb2.CancelOperationRequest(name=operation_name) - operations_stub.CancelOperation(request_pb) - - -def from_grpc(operation, operations_stub, result_type, **kwargs): - """Create an operation future using a gRPC client. - - This interacts with the long-running operations `service`_ (specific - to a given API) via gRPC. - - .. _service: https://github.com/googleapis/googleapis/blob/\ - 050400df0fdb16f63b63e9dee53819044bffc857/\ - google/longrunning/operations.proto#L38 - - Args: - operation (google.longrunning.operations_pb2.Operation): The operation. - operations_stub (google.longrunning.operations_pb2.OperationsStub): - The operations stub. - result_type (:func:`type`): The protobuf result type. - kwargs: Keyword args passed into the :class:`Operation` constructor. - - Returns: - ~.api_core.operation.Operation: The operation future to track the given - operation. - """ - refresh = functools.partial(_refresh_grpc, operations_stub, operation.name) - cancel = functools.partial(_cancel_grpc, operations_stub, operation.name) - return Operation(operation, refresh, cancel, result_type, **kwargs) - - -def from_gapic(operation, operations_client, result_type, **kwargs): - """Create an operation future from a gapic client. - - This interacts with the long-running operations `service`_ (specific - to a given API) via a gapic client. - - .. _service: https://github.com/googleapis/googleapis/blob/\ - 050400df0fdb16f63b63e9dee53819044bffc857/\ - google/longrunning/operations.proto#L38 - - Args: - operation (google.longrunning.operations_pb2.Operation): The operation. - operations_client (google.api_core.operations_v1.OperationsClient): - The operations client. - result_type (:func:`type`): The protobuf result type. - kwargs: Keyword args passed into the :class:`Operation` constructor. - - Returns: - ~.api_core.operation.Operation: The operation future to track the given - operation. - """ - refresh = functools.partial(operations_client.get_operation, operation.name) - cancel = functools.partial(operations_client.cancel_operation, operation.name) - return Operation(operation, refresh, cancel, result_type, **kwargs) diff --git a/venv/lib/python3.6/site-packages/google/api_core/operations_v1/__init__.py b/venv/lib/python3.6/site-packages/google/api_core/operations_v1/__init__.py deleted file mode 100644 index f054956..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/operations_v1/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Package for interacting with the google.longrunning.operations meta-API.""" - -from google.api_core.operations_v1.operations_client import OperationsClient - -__all__ = ["OperationsClient"] diff --git a/venv/lib/python3.6/site-packages/google/api_core/operations_v1/__pycache__/__init__.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/operations_v1/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 9a4043c78fdf2cb026dda1d7b36f2931f702c755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmYk1!Ait16h+fa2SsMowX1BqXv64ML~)}VXT)6*9Ua>COaluchR zR;+qpQjmM=i84WWRt04wc~)Uf!deh%t<<8>)=1wP6SKm)cr7Sv8d8hE^0U=t@fk@d zOS=8#e|WByFv0hqxysUR3xL}Sprk`3a|$Z!#i$RS7Gqa!8v5r4l5SRrND82g3IK(B>9&t+%Udl@_9CT8qojC- Fe*h^tZp8oq diff --git a/venv/lib/python3.6/site-packages/google/api_core/operations_v1/__pycache__/operations_client.cpython-36.pyc b/venv/lib/python3.6/site-packages/google/api_core/operations_v1/__pycache__/operations_client.cpython-36.pyc deleted file mode 100644 index bda2366cfbe0c111978a97da82dbc743e0ac0462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11392 zcmeHN-HzMF71rNMTJ3M_#EpwKm^2NtLb6;qy(qeEj4n2=VZgNm+eHDQEk%(di84hp zGvsd8kgt-WSALMbL$7<)C(u=aUiB4n)$h!ZLrPkwN!tK5va**Vhcjnp&YW|;Z_el^ zJ3GDYzwiF;%@1p}f7B|U7VdwEKluqRe$B4=b-xkT?K-}jVPn>`n{_H{;l5?J)cr=d zF>Bjxb>9v4cGp z!(0Zd$WZl0aTvzu)MGDk)0B&d#aS8#5%<~fLXBi_R}F=sJN7ue2syi(1wJ1*==`@6 z9x*pk?=YrG?6W8qGdB#;)_uyQ>Yb&*jI%UmUOY=ep7IY^kTMVLh8!c6!I-*Bdni z+_X2)#&T3KmLoF@X(>TiF81Ui2|QYx545_@gD|8e@Sv4cWFCgobF(y_!OB!UQjLqr z(FAh)^g>rkS`)G`ZD5tIdOgcx&gBMk+++Am(ln9BM@L>5XTFtNIqc%dO#*qOjUoSX za*I^${IplH59Pi{TQB+4K3=y2K5_im<0D{~!7ASbL9K55o>R<&%!5Hs$EANuwhaL$mJ_r*! z4xQnK*ARbdcEhjRP2QSrj1ZIj<`;Fl%{$ZXbW>kP4Zr1YptQGA+V(pr-C8N_`kN@- zUMcPQTPWS}w-K#&7W)qi-;}2+WVwH;*J}D!MK5LMu9uQOePsZmmjS{@;V*C}vXB!o zmU^-1$(y)Q1oJ-_i^Q`|^;7>?dC2(DC#R+Y%rf=@xSy|kCAZK0Nr@$4^ig5YI3P?J z^#-{Iy(HWs2pQkCjIgDpV+VfVrTuc;)YS>2LU^nzE?7K5tb)JAi4Nfu=(+1nD3&8` zTI}9P#SxisFBk=IMG{ebXq1QmZWbbNDr3ns7Emxi{PXp=JhBn`wDGrrzf=6lzu=PA zruBLK^ZLBzH0H3Ho3-c7dDCy;yOlPlu%LPC^ZN4*+_$Hld2QO5cIO*@^JZxcxXf{_CDr> zTBe|XO^|NwT~i_-r`gcni;ZhI5(T1xT8p+`FZ*?%gXE50?%d<$qOG6pt#jcf`AgBI zb{lHAi;fwlGv;X-_{1hv+IK<>zATlZN5!u>Kv&G6d?B`Uxv!>DmiOC>mgM2c?&O|k z?<^U%=%AgwZ?vBe+}>TD$DeEB4OINnK1yfFQ4%DF!z>8>!c>rz7P4V0UUY&cN_YjBq8`3eXIs!Y`>CQMQ6p z=-^5{-}%fX{;?dZZr{GmMk1aS#Isl!hEN%cv_c$#YNlHfM=epCeY9N1T2=W$f2~>M zf){?o-g|HDjp1q^k!)+p@(-w4znsr9V9=11+yii$94OQ?mW86IF*HN(%8*WNmDd4o zH2*HtV5ws35k-((sIG`ku;ydX-I(I=(nLtyIWgoQI*Xqc{1Tw0f_)a5P)~fUjPF`7 zEykKOs-_)c1qBK!r=WnKWH5LTM|?0)q9e!;N@JmM(I>Yy)s`r%?wI-@V1=Clua=dQ z$0Bwx3S$>=r(oEf#Tj-kq+jCsfOH8{jC@5C&s|XcVp9XL>r*PX1r~b{!+$hF(-hQz z2z@oi<+L>)#F`{GNkB+cuL@X$$Pdl}KLbytt<5aKg!0Wpdor zUbbSFc%RMc0JU3aj}7^D1%Z zk=k=r7#CT_B>-#uMmiv-rFUx^Fp&?lS?k#}t#<1Ml3(7d@j3pP$2D8B?kaagJUhj* z-4P-d$D{`AsyIEc*z+Rb3=$Sx*|Fy%Q#C2iCBV7CCDxry9s-2 z6ol9oQN*C~e6|%Mc?FQl%$gRTpzs}bPi^&pGzc;jLNPH3;9icu3UA493(81ZAgEj6 za~kZ{v6`VHSg*&i8#gl62E$l_ebH+1>N7+=#41#Woe!A-Lm*;IX$FuQ3Lk5YsU1N4 zrDI=fKw(wM#Ehx2MGq^XfYiejZkWlDf~e+Yy7;=<$n{}{^q*1(q-8>`wsy<-s14d- z74Ct^82PU787*vX@ym@g>|QaBE5?x%rSCA~FxXF?Zjxq}4ygqCCpu9(%9M@hYmKkPnGrqncwv~j8dJ4)lHJhJy9{#lBoa#4WPM_X^E#106MxQUCs1w@)j2MM^) zx3A}vL<`6ZUoZBi)zW@PQ@l5b{5&i$T|UwTZm~JaA}@{OP%b)11Eql*ir1*mCiS^} z7aOC(#QWWn3)-C=P)bs$MybZT=n{C6BWP-!7a*1Rh1L;lu{VFktX&37KPZ zKm?F#(rv&HcJhqMp>e*P(0chkQSCsz3HP4T?jL@yPxO{%tj5DBRRe)}EhCRYg&Ds& zH1p}GEWw&D>CR#gvESCS8)c!9QSD9dc1no|3^aM23iN-j!X9^hbt*TcEE4H9GNQ_c zDxHr#SLJ}tQu{CL(UFeIxK6#hrm0D+Q}P~WkY*BRE;u}dB58wvixL#b|7n-RP8K4^HpgzklcB!JrbCUxB@W;>3C(%7p9xI(tQSPiJ`ApQ>9?!hK{KZe+8r*xLVNPE4`2C6-p?#BQ9b!1b`8OgUo`*FY~WPm5^=w2~6rUk$T=LwlVS zdmmY`w~hS#(Arw9|6h@uKj17#pAix%`L{>GYoDnVWm#!f63PSTAvt2=` zKCQPZIfJW&NB+A(u*`4sSm`SuR6~z}xB^12e?tge4YFSv2&IFibqHOp|DeB1ztN!6 zFUMK*9A_5$SxEQWj`JywVe>Z~$MIv&aReP&iEX-kk1q6U8J*eae0=9uC%?J>M0}r$ z-lofs=<*I-O5`^g4?#b7vhXMA@T|MpYV5vy*`%X^kcDJSuA8}%V+Y4UbiSoO z0AIlezz<}F#0pj{Sh2z(s7(!Kb z0T(=|K|S&!2M#tKG{A=@96}4)(6Ot#@zJ%oXHWW@+JAOOn>q|OHFVJ>E?j%!jILju zMJ&N^7%I8KDAUZKlEanKLvzW8kx~(#2qhz(Nr^I=sDzg>=`a+?rJ0ZxO2hSvg*?5w zRb+_$l*ii?GMERm`Ql<3(BS!b5X^&l-hR5AJ)2!DW)By^$je&@JWiCcl}S%3Nq0E+ zfv;F5%-7<2qE8A$0>{RK)^|@{GY->I7h|inai}!^ zgQphL-&k!$Lf@QBE2vbN4J!0GN!EGueyku9{6XJ#P48G&uX(QLHQYw=uB_%kfl9XO Fe*v*aB8dP1 diff --git a/venv/lib/python3.6/site-packages/google/api_core/operations_v1/operations_client.py b/venv/lib/python3.6/site-packages/google/api_core/operations_v1/operations_client.py deleted file mode 100644 index cd2923b..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/operations_v1/operations_client.py +++ /dev/null @@ -1,288 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""A client for the google.longrunning.operations meta-API. - -This is a client that deals with long-running operations that follow the -pattern outlined by the `Google API Style Guide`_. - -When an API method normally takes long time to complete, it can be designed to -return ``Operation`` to the client, and the client can use this interface to -receive the real response asynchronously by polling the operation resource to -receive the response. - -It is not a separate service, but rather an interface implemented by a larger -service. The protocol-level definition is available at -`google/longrunning/operations.proto`_. Typically, this will be constructed -automatically by another client class to deal with operations. - -.. _Google API Style Guide: - https://cloud.google.com/apis/design/design_pattern - s#long_running_operations -.. _google/longrunning/operations.proto: - https://github.com/googleapis/googleapis/blob/master/google/longrunning - /operations.proto -""" - -import functools - -from google.api_core import gapic_v1 -from google.api_core import page_iterator -from google.api_core.operations_v1 import operations_client_config -from google.longrunning import operations_pb2 - - -class OperationsClient(object): - """Client for interacting with long-running operations within a service. - - Args: - channel (grpc.Channel): The gRPC channel associated with the service - that implements the ``google.longrunning.operations`` interface. - client_config (dict): - A dictionary of call options for each method. If not specified - the default configuration is used. - """ - - def __init__(self, channel, client_config=operations_client_config.config): - # Create the gRPC client stub. - self.operations_stub = operations_pb2.OperationsStub(channel) - - # Create all wrapped methods using the interface configuration. - # The interface config contains all of the default settings for retry - # and timeout for each RPC method. - interfaces = client_config["interfaces"] - interface_config = interfaces["google.longrunning.Operations"] - method_configs = gapic_v1.config.parse_method_configs(interface_config) - - self._get_operation = gapic_v1.method.wrap_method( - self.operations_stub.GetOperation, - default_retry=method_configs["GetOperation"].retry, - default_timeout=method_configs["GetOperation"].timeout, - ) - - self._list_operations = gapic_v1.method.wrap_method( - self.operations_stub.ListOperations, - default_retry=method_configs["ListOperations"].retry, - default_timeout=method_configs["ListOperations"].timeout, - ) - - self._cancel_operation = gapic_v1.method.wrap_method( - self.operations_stub.CancelOperation, - default_retry=method_configs["CancelOperation"].retry, - default_timeout=method_configs["CancelOperation"].timeout, - ) - - self._delete_operation = gapic_v1.method.wrap_method( - self.operations_stub.DeleteOperation, - default_retry=method_configs["DeleteOperation"].retry, - default_timeout=method_configs["DeleteOperation"].timeout, - ) - - # Service calls - def get_operation( - self, name, retry=gapic_v1.method.DEFAULT, timeout=gapic_v1.method.DEFAULT - ): - """Gets the latest state of a long-running operation. - - Clients can use this method to poll the operation result at intervals - as recommended by the API service. - - Example: - >>> from google.api_core import operations_v1 - >>> api = operations_v1.OperationsClient() - >>> name = '' - >>> response = api.get_operation(name) - - Args: - name (str): The name of the operation resource. - retry (google.api_core.retry.Retry): The retry strategy to use - when invoking the RPC. If unspecified, the default retry from - the client configuration will be used. If ``None``, then this - method will not retry the RPC at all. - timeout (float): The amount of time in seconds to wait for the RPC - to complete. Note that if ``retry`` is used, this timeout - applies to each individual attempt and the overall time it - takes for this method to complete may be longer. If - unspecified, the the default timeout in the client - configuration is used. If ``None``, then the RPC method will - not time out. - - Returns: - google.longrunning.operations_pb2.Operation: The state of the - operation. - - Raises: - google.api_core.exceptions.GoogleAPICallError: If an error occurred - while invoking the RPC, the appropriate ``GoogleAPICallError`` - subclass will be raised. - """ - request = operations_pb2.GetOperationRequest(name=name) - return self._get_operation(request, retry=retry, timeout=timeout) - - def list_operations( - self, - name, - filter_, - retry=gapic_v1.method.DEFAULT, - timeout=gapic_v1.method.DEFAULT, - ): - """ - Lists operations that match the specified filter in the request. - - Example: - >>> from google.api_core import operations_v1 - >>> api = operations_v1.OperationsClient() - >>> name = '' - >>> - >>> # Iterate over all results - >>> for operation in api.list_operations(name): - >>> # process operation - >>> pass - >>> - >>> # Or iterate over results one page at a time - >>> iter = api.list_operations(name) - >>> for page in iter.pages: - >>> for operation in page: - >>> # process operation - >>> pass - - Args: - name (str): The name of the operation collection. - filter_ (str): The standard list filter. - retry (google.api_core.retry.Retry): The retry strategy to use - when invoking the RPC. If unspecified, the default retry from - the client configuration will be used. If ``None``, then this - method will not retry the RPC at all. - timeout (float): The amount of time in seconds to wait for the RPC - to complete. Note that if ``retry`` is used, this timeout - applies to each individual attempt and the overall time it - takes for this method to complete may be longer. If - unspecified, the the default timeout in the client - configuration is used. If ``None``, then the RPC method will - not time out. - - Returns: - google.api_core.page_iterator.Iterator: An iterator that yields - :class:`google.longrunning.operations_pb2.Operation` instances. - - Raises: - google.api_core.exceptions.MethodNotImplemented: If the server - does not support this method. Services are not required to - implement this method. - google.api_core.exceptions.GoogleAPICallError: If an error occurred - while invoking the RPC, the appropriate ``GoogleAPICallError`` - subclass will be raised. - """ - # Create the request object. - request = operations_pb2.ListOperationsRequest(name=name, filter=filter_) - - # Create the method used to fetch pages - method = functools.partial(self._list_operations, retry=retry, timeout=timeout) - - iterator = page_iterator.GRPCIterator( - client=None, - method=method, - request=request, - items_field="operations", - request_token_field="page_token", - response_token_field="next_page_token", - ) - - return iterator - - def cancel_operation( - self, name, retry=gapic_v1.method.DEFAULT, timeout=gapic_v1.method.DEFAULT - ): - """Starts asynchronous cancellation on a long-running operation. - - The server makes a best effort to cancel the operation, but success is - not guaranteed. Clients can use :meth:`get_operation` or service- - specific methods to check whether the cancellation succeeded or whether - the operation completed despite cancellation. On successful - cancellation, the operation is not deleted; instead, it becomes an - operation with an ``Operation.error`` value with a - ``google.rpc.Status.code`` of ``1``, corresponding to - ``Code.CANCELLED``. - - Example: - >>> from google.api_core import operations_v1 - >>> api = operations_v1.OperationsClient() - >>> name = '' - >>> api.cancel_operation(name) - - Args: - name (str): The name of the operation resource to be cancelled. - retry (google.api_core.retry.Retry): The retry strategy to use - when invoking the RPC. If unspecified, the default retry from - the client configuration will be used. If ``None``, then this - method will not retry the RPC at all. - timeout (float): The amount of time in seconds to wait for the RPC - to complete. Note that if ``retry`` is used, this timeout - applies to each individual attempt and the overall time it - takes for this method to complete may be longer. If - unspecified, the the default timeout in the client - configuration is used. If ``None``, then the RPC method will - not time out. - - Raises: - google.api_core.exceptions.MethodNotImplemented: If the server - does not support this method. Services are not required to - implement this method. - google.api_core.exceptions.GoogleAPICallError: If an error occurred - while invoking the RPC, the appropriate ``GoogleAPICallError`` - subclass will be raised. - """ - # Create the request object. - request = operations_pb2.CancelOperationRequest(name=name) - self._cancel_operation(request, retry=retry, timeout=timeout) - - def delete_operation( - self, name, retry=gapic_v1.method.DEFAULT, timeout=gapic_v1.method.DEFAULT - ): - """Deletes a long-running operation. - - This method indicates that the client is no longer interested in the - operation result. It does not cancel the operation. - - Example: - >>> from google.api_core import operations_v1 - >>> api = operations_v1.OperationsClient() - >>> name = '' - >>> api.delete_operation(name) - - Args: - name (str): The name of the operation resource to be deleted. - retry (google.api_core.retry.Retry): The retry strategy to use - when invoking the RPC. If unspecified, the default retry from - the client configuration will be used. If ``None``, then this - method will not retry the RPC at all. - timeout (float): The amount of time in seconds to wait for the RPC - to complete. Note that if ``retry`` is used, this timeout - applies to each individual attempt and the overall time it - takes for this method to complete may be longer. If - unspecified, the the default timeout in the client - configuration is used. If ``None``, then the RPC method will - not time out. - - Raises: - google.api_core.exceptions.MethodNotImplemented: If the server - does not support this method. Services are not required to - implement this method. - google.api_core.exceptions.GoogleAPICallError: If an error occurred - while invoking the RPC, the appropriate ``GoogleAPICallError`` - subclass will be raised. - """ - # Create the request object. - request = operations_pb2.DeleteOperationRequest(name=name) - self._delete_operation(request, retry=retry, timeout=timeout) diff --git a/venv/lib/python3.6/site-packages/google/api_core/operations_v1/operations_client_config.py b/venv/lib/python3.6/site-packages/google/api_core/operations_v1/operations_client_config.py deleted file mode 100644 index 6cf9575..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/operations_v1/operations_client_config.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""gapic configuration for the googe.longrunning.operations client.""" - -config = { - "interfaces": { - "google.longrunning.Operations": { - "retry_codes": { - "idempotent": ["DEADLINE_EXCEEDED", "UNAVAILABLE"], - "non_idempotent": [], - }, - "retry_params": { - "default": { - "initial_retry_delay_millis": 100, - "retry_delay_multiplier": 1.3, - "max_retry_delay_millis": 60000, - "initial_rpc_timeout_millis": 20000, - "rpc_timeout_multiplier": 1.0, - "max_rpc_timeout_millis": 600000, - "total_timeout_millis": 600000, - } - }, - "methods": { - "GetOperation": { - "timeout_millis": 60000, - "retry_codes_name": "idempotent", - "retry_params_name": "default", - }, - "ListOperations": { - "timeout_millis": 60000, - "retry_codes_name": "idempotent", - "retry_params_name": "default", - }, - "CancelOperation": { - "timeout_millis": 60000, - "retry_codes_name": "idempotent", - "retry_params_name": "default", - }, - "DeleteOperation": { - "timeout_millis": 60000, - "retry_codes_name": "idempotent", - "retry_params_name": "default", - }, - }, - } - } -} diff --git a/venv/lib/python3.6/site-packages/google/api_core/page_iterator.py b/venv/lib/python3.6/site-packages/google/api_core/page_iterator.py deleted file mode 100644 index 3ac5904..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/page_iterator.py +++ /dev/null @@ -1,549 +0,0 @@ -# Copyright 2015 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Iterators for paging through paged API methods. - -These iterators simplify the process of paging through API responses -where the request takes a page token and the response is a list of results with -a token for the next page. See `list pagination`_ in the Google API Style Guide -for more details. - -.. _list pagination: - https://cloud.google.com/apis/design/design_patterns#list_pagination - -API clients that have methods that follow the list pagination pattern can -return an :class:`.Iterator`. You can use this iterator to get **all** of -the results across all pages:: - - >>> results_iterator = client.list_resources() - >>> list(results_iterator) # Convert to a list (consumes all values). - -Or you can walk your way through items and call off the search early if -you find what you're looking for (resulting in possibly fewer requests):: - - >>> for resource in results_iterator: - ... print(resource.name) - ... if not resource.is_valid: - ... break - -At any point, you may check the number of items consumed by referencing the -``num_results`` property of the iterator:: - - >>> for my_item in results_iterator: - ... if results_iterator.num_results >= 10: - ... break - -When iterating, not every new item will send a request to the server. -To iterate based on each page of items (where a page corresponds to -a request):: - - >>> for page in results_iterator.pages: - ... print('=' * 20) - ... print(' Page number: {:d}'.format(iterator.page_number)) - ... print(' Items in page: {:d}'.format(page.num_items)) - ... print(' First item: {!r}'.format(next(page))) - ... print('Items remaining: {:d}'.format(page.remaining)) - ... print('Next page token: {}'.format(iterator.next_page_token)) - ==================== - Page number: 1 - Items in page: 1 - First item: - Items remaining: 0 - Next page token: eav1OzQB0OM8rLdGXOEsyQWSG - ==================== - Page number: 2 - Items in page: 19 - First item: - Items remaining: 18 - Next page token: None - -Then, for each page you can get all the resources on that page by iterating -through it or using :func:`list`:: - - >>> list(page) - [ - , - , - , - ] -""" - -import abc - -import six - - -class Page(object): - """Single page of results in an iterator. - - Args: - parent (google.api_core.page_iterator.Iterator): The iterator that owns - the current page. - items (Sequence[Any]): An iterable (that also defines __len__) of items - from a raw API response. - item_to_value (Callable[google.api_core.page_iterator.Iterator, Any]): - Callable to convert an item from the type in the raw API response - into the native object. Will be called with the iterator and a - single item. - """ - - def __init__(self, parent, items, item_to_value): - self._parent = parent - self._num_items = len(items) - self._remaining = self._num_items - self._item_iter = iter(items) - self._item_to_value = item_to_value - - @property - def num_items(self): - """int: Total items in the page.""" - return self._num_items - - @property - def remaining(self): - """int: Remaining items in the page.""" - return self._remaining - - def __iter__(self): - """The :class:`Page` is an iterator of items.""" - return self - - def next(self): - """Get the next value in the page.""" - item = six.next(self._item_iter) - result = self._item_to_value(self._parent, item) - # Since we've successfully got the next value from the - # iterator, we update the number of remaining. - self._remaining -= 1 - return result - - # Alias needed for Python 2/3 support. - __next__ = next - - -def _item_to_value_identity(iterator, item): - """An item to value transformer that returns the item un-changed.""" - # pylint: disable=unused-argument - # We are conforming to the interface defined by Iterator. - return item - - -@six.add_metaclass(abc.ABCMeta) -class Iterator(object): - """A generic class for iterating through API list responses. - - Args: - client(google.cloud.client.Client): The API client. - item_to_value (Callable[google.api_core.page_iterator.Iterator, Any]): - Callable to convert an item from the type in the raw API response - into the native object. Will be called with the iterator and a - single item. - page_token (str): A token identifying a page in a result set to start - fetching results from. - max_results (int): The maximum number of results to fetch. - """ - - def __init__( - self, - client, - item_to_value=_item_to_value_identity, - page_token=None, - max_results=None, - ): - self._started = False - self.client = client - """Optional[Any]: The client that created this iterator.""" - self.item_to_value = item_to_value - """Callable[Iterator, Any]: Callable to convert an item from the type - in the raw API response into the native object. Will be called with - the iterator and a - single item. - """ - self.max_results = max_results - """int: The maximum number of results to fetch.""" - - # The attributes below will change over the life of the iterator. - self.page_number = 0 - """int: The current page of results.""" - self.next_page_token = page_token - """str: The token for the next page of results. If this is set before - the iterator starts, it effectively offsets the iterator to a - specific starting point.""" - self.num_results = 0 - """int: The total number of results fetched so far.""" - - @property - def pages(self): - """Iterator of pages in the response. - - returns: - types.GeneratorType[google.api_core.page_iterator.Page]: A - generator of page instances. - - raises: - ValueError: If the iterator has already been started. - """ - if self._started: - raise ValueError("Iterator has already started", self) - self._started = True - return self._page_iter(increment=True) - - def _items_iter(self): - """Iterator for each item returned.""" - for page in self._page_iter(increment=False): - for item in page: - self.num_results += 1 - yield item - - def __iter__(self): - """Iterator for each item returned. - - Returns: - types.GeneratorType[Any]: A generator of items from the API. - - Raises: - ValueError: If the iterator has already been started. - """ - if self._started: - raise ValueError("Iterator has already started", self) - self._started = True - return self._items_iter() - - def _page_iter(self, increment): - """Generator of pages of API responses. - - Args: - increment (bool): Flag indicating if the total number of results - should be incremented on each page. This is useful since a page - iterator will want to increment by results per page while an - items iterator will want to increment per item. - - Yields: - Page: each page of items from the API. - """ - page = self._next_page() - while page is not None: - self.page_number += 1 - if increment: - self.num_results += page.num_items - yield page - page = self._next_page() - - @abc.abstractmethod - def _next_page(self): - """Get the next page in the iterator. - - This does nothing and is intended to be over-ridden by subclasses - to return the next :class:`Page`. - - Raises: - NotImplementedError: Always, this method is abstract. - """ - raise NotImplementedError - - -def _do_nothing_page_start(iterator, page, response): - """Helper to provide custom behavior after a :class:`Page` is started. - - This is a do-nothing stand-in as the default value. - - Args: - iterator (Iterator): An iterator that holds some request info. - page (Page): The page that was just created. - response (Any): The API response for a page. - """ - # pylint: disable=unused-argument - pass - - -class HTTPIterator(Iterator): - """A generic class for iterating through HTTP/JSON API list responses. - - To make an iterator work, you'll need to provide a way to convert a JSON - item returned from the API into the object of your choice (via - ``item_to_value``). You also may need to specify a custom ``items_key`` so - that a given response (containing a page of results) can be parsed into an - iterable page of the actual objects you want. - - Args: - client (google.cloud.client.Client): The API client. - api_request (Callable): The function to use to make API requests. - Generally, this will be - :meth:`google.cloud._http.JSONConnection.api_request`. - path (str): The method path to query for the list of items. - item_to_value (Callable[google.api_core.page_iterator.Iterator, Any]): - Callable to convert an item from the type in the JSON response into - a native object. Will be called with the iterator and a single - item. - items_key (str): The key in the API response where the list of items - can be found. - page_token (str): A token identifying a page in a result set to start - fetching results from. - max_results (int): The maximum number of results to fetch. - extra_params (dict): Extra query string parameters for the - API call. - page_start (Callable[ - google.api_core.page_iterator.Iterator, - google.api_core.page_iterator.Page, dict]): Callable to provide - any special behavior after a new page has been created. Assumed - signature takes the :class:`.Iterator` that started the page, - the :class:`.Page` that was started and the dictionary containing - the page response. - next_token (str): The name of the field used in the response for page - tokens. - - .. autoattribute:: pages - """ - - _DEFAULT_ITEMS_KEY = "items" - _PAGE_TOKEN = "pageToken" - _MAX_RESULTS = "maxResults" - _NEXT_TOKEN = "nextPageToken" - _RESERVED_PARAMS = frozenset([_PAGE_TOKEN]) - _HTTP_METHOD = "GET" - - def __init__( - self, - client, - api_request, - path, - item_to_value, - items_key=_DEFAULT_ITEMS_KEY, - page_token=None, - max_results=None, - extra_params=None, - page_start=_do_nothing_page_start, - next_token=_NEXT_TOKEN, - ): - super(HTTPIterator, self).__init__( - client, item_to_value, page_token=page_token, max_results=max_results - ) - self.api_request = api_request - self.path = path - self._items_key = items_key - self.extra_params = extra_params - self._page_start = page_start - self._next_token = next_token - # Verify inputs / provide defaults. - if self.extra_params is None: - self.extra_params = {} - self._verify_params() - - def _verify_params(self): - """Verifies the parameters don't use any reserved parameter. - - Raises: - ValueError: If a reserved parameter is used. - """ - reserved_in_use = self._RESERVED_PARAMS.intersection(self.extra_params) - if reserved_in_use: - raise ValueError("Using a reserved parameter", reserved_in_use) - - def _next_page(self): - """Get the next page in the iterator. - - Returns: - Optional[Page]: The next page in the iterator or :data:`None` if - there are no pages left. - """ - if self._has_next_page(): - response = self._get_next_page_response() - items = response.get(self._items_key, ()) - page = Page(self, items, self.item_to_value) - self._page_start(self, page, response) - self.next_page_token = response.get(self._next_token) - return page - else: - return None - - def _has_next_page(self): - """Determines whether or not there are more pages with results. - - Returns: - bool: Whether the iterator has more pages. - """ - if self.page_number == 0: - return True - - if self.max_results is not None: - if self.num_results >= self.max_results: - return False - - return self.next_page_token is not None - - def _get_query_params(self): - """Getter for query parameters for the next request. - - Returns: - dict: A dictionary of query parameters. - """ - result = {} - if self.next_page_token is not None: - result[self._PAGE_TOKEN] = self.next_page_token - if self.max_results is not None: - result[self._MAX_RESULTS] = self.max_results - self.num_results - result.update(self.extra_params) - return result - - def _get_next_page_response(self): - """Requests the next page from the path provided. - - Returns: - dict: The parsed JSON response of the next page's contents. - - Raises: - ValueError: If the HTTP method is not ``GET`` or ``POST``. - """ - params = self._get_query_params() - if self._HTTP_METHOD == "GET": - return self.api_request( - method=self._HTTP_METHOD, path=self.path, query_params=params - ) - elif self._HTTP_METHOD == "POST": - return self.api_request( - method=self._HTTP_METHOD, path=self.path, data=params - ) - else: - raise ValueError("Unexpected HTTP method", self._HTTP_METHOD) - - -class _GAXIterator(Iterator): - """A generic class for iterating through Cloud gRPC APIs list responses. - - Any: - client (google.cloud.client.Client): The API client. - page_iter (google.gax.PageIterator): A GAX page iterator to be wrapped - to conform to the :class:`Iterator` interface. - item_to_value (Callable[Iterator, Any]): Callable to convert an item - from the the protobuf response into a native object. Will - be called with the iterator and a single item. - max_results (int): The maximum number of results to fetch. - - .. autoattribute:: pages - """ - - def __init__(self, client, page_iter, item_to_value, max_results=None): - super(_GAXIterator, self).__init__( - client, - item_to_value, - page_token=page_iter.page_token, - max_results=max_results, - ) - self._gax_page_iter = page_iter - - def _next_page(self): - """Get the next page in the iterator. - - Wraps the response from the :class:`~google.gax.PageIterator` in a - :class:`Page` instance and captures some state at each page. - - Returns: - Optional[Page]: The next page in the iterator or :data:`None` if - there are no pages left. - """ - try: - items = six.next(self._gax_page_iter) - page = Page(self, items, self.item_to_value) - self.next_page_token = self._gax_page_iter.page_token or None - return page - except StopIteration: - return None - - -class GRPCIterator(Iterator): - """A generic class for iterating through gRPC list responses. - - .. note:: The class does not take a ``page_token`` argument because it can - just be specified in the ``request``. - - Args: - client (google.cloud.client.Client): The API client. This unused by - this class, but kept to satisfy the :class:`Iterator` interface. - method (Callable[protobuf.Message]): A bound gRPC method that should - take a single message for the request. - request (protobuf.Message): The request message. - items_field (str): The field in the response message that has the - items for the page. - item_to_value (Callable[GRPCIterator, Any]): Callable to convert an - item from the type in the JSON response into a native object. Will - be called with the iterator and a single item. - request_token_field (str): The field in the request message used to - specify the page token. - response_token_field (str): The field in the response message that has - the token for the next page. - max_results (int): The maximum number of results to fetch. - - .. autoattribute:: pages - """ - - _DEFAULT_REQUEST_TOKEN_FIELD = "page_token" - _DEFAULT_RESPONSE_TOKEN_FIELD = "next_page_token" - - def __init__( - self, - client, - method, - request, - items_field, - item_to_value=_item_to_value_identity, - request_token_field=_DEFAULT_REQUEST_TOKEN_FIELD, - response_token_field=_DEFAULT_RESPONSE_TOKEN_FIELD, - max_results=None, - ): - super(GRPCIterator, self).__init__( - client, item_to_value, max_results=max_results - ) - self._method = method - self._request = request - self._items_field = items_field - self._request_token_field = request_token_field - self._response_token_field = response_token_field - - def _next_page(self): - """Get the next page in the iterator. - - Returns: - Page: The next page in the iterator or :data:`None` if - there are no pages left. - """ - if not self._has_next_page(): - return None - - if self.next_page_token is not None: - setattr(self._request, self._request_token_field, self.next_page_token) - - response = self._method(self._request) - - self.next_page_token = getattr(response, self._response_token_field) - items = getattr(response, self._items_field) - page = Page(self, items, self.item_to_value) - - return page - - def _has_next_page(self): - """Determines whether or not there are more pages with results. - - Returns: - bool: Whether the iterator has more pages. - """ - if self.page_number == 0: - return True - - if self.max_results is not None: - if self.num_results >= self.max_results: - return False - - # Note: intentionally a falsy check instead of a None check. The RPC - # can return an empty string indicating no more pages. - return True if self.next_page_token else False diff --git a/venv/lib/python3.6/site-packages/google/api_core/path_template.py b/venv/lib/python3.6/site-packages/google/api_core/path_template.py deleted file mode 100644 index bb54935..0000000 --- a/venv/lib/python3.6/site-packages/google/api_core/path_template.py +++ /dev/null @@ -1,197 +0,0 @@ -# Copyright 2017 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Expand and validate URL path templates. - -This module provides the :func:`expand` and :func:`validate` functions for -interacting with Google-style URL `path templates`_ which are commonly used -in Google APIs for `resource names`_. - -.. _path templates: https://github.com/googleapis/googleapis/blob - /57e2d376ac7ef48681554204a3ba78a414f2c533/google/api/http.proto#L212 -.. _resource names: https://cloud.google.com/apis/design/resource_names -""" - -from __future__ import unicode_literals - -import functools -import re - -import six - -# Regular expression for extracting variable parts from a path template. -# The variables can be expressed as: -# -# - "*": a single-segment positional variable, for example: "books/*" -# - "**": a multi-segment positional variable, for example: "shelf/**/book/*" -# - "{name}": a single-segment wildcard named variable, for example -# "books/{name}" -# - "{name=*}: same as above. -# - "{name=**}": a multi-segment wildcard named variable, for example -# "shelf/{name=**}" -# - "{name=/path/*/**}": a multi-segment named variable with a sub-template. -_VARIABLE_RE = re.compile( - r""" - ( # Capture the entire variable expression - (?P\*\*?) # Match & capture * and ** positional variables. - | - # Match & capture named variables {name} - { - (?P[^/]+?) - # Optionally match and capture the named variable's template. - (?:=(?P