From 2a7efd42bf9a0256ad4159ec477d1679bbc37342 Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Sun, 28 Mar 2021 09:53:27 -0600 Subject: [PATCH] Minimal weather API with retrieve all and retrieve by city/state --- .vscode/settings.json | 3 + README.md | 7 + api.py | 48 + env/bin/activate | 76 + env/bin/activate.csh | 37 + env/bin/activate.fish | 75 + env/bin/easy_install | 11 + env/bin/easy_install-3.6 | 11 + env/bin/flask | 11 + env/bin/pip | 11 + env/bin/pip3 | 11 + env/bin/pip3.6 | 11 + env/bin/python | 1 + env/bin/python3 | 1 + .../Flask-1.1.2.dist-info/INSTALLER | 1 + .../Flask-1.1.2.dist-info/LICENSE.rst | 28 + .../Flask-1.1.2.dist-info/METADATA | 137 + .../Flask-1.1.2.dist-info/RECORD | 48 + .../site-packages/Flask-1.1.2.dist-info/WHEEL | 6 + .../Flask-1.1.2.dist-info/entry_points.txt | 3 + .../Flask-1.1.2.dist-info/top_level.txt | 1 + .../Jinja2-2.11.3.dist-info/INSTALLER | 1 + .../Jinja2-2.11.3.dist-info/LICENSE.rst | 28 + .../Jinja2-2.11.3.dist-info/METADATA | 106 + .../Jinja2-2.11.3.dist-info/RECORD | 61 + .../Jinja2-2.11.3.dist-info/WHEEL | 6 + .../Jinja2-2.11.3.dist-info/entry_points.txt | 3 + .../Jinja2-2.11.3.dist-info/top_level.txt | 1 + .../MarkupSafe-1.1.1.dist-info/INSTALLER | 1 + .../MarkupSafe-1.1.1.dist-info/LICENSE.txt | 28 + .../MarkupSafe-1.1.1.dist-info/METADATA | 103 + .../MarkupSafe-1.1.1.dist-info/RECORD | 16 + .../MarkupSafe-1.1.1.dist-info/WHEEL | 5 + .../MarkupSafe-1.1.1.dist-info/top_level.txt | 1 + .../Werkzeug-1.0.1.dist-info/INSTALLER | 1 + .../Werkzeug-1.0.1.dist-info/LICENSE.rst | 28 + .../Werkzeug-1.0.1.dist-info/METADATA | 128 + .../Werkzeug-1.0.1.dist-info/RECORD | 101 + .../Werkzeug-1.0.1.dist-info/WHEEL | 6 + .../Werkzeug-1.0.1.dist-info/top_level.txt | 1 + .../__pycache__/easy_install.cpython-36.pyc | Bin 0 -> 275 bytes .../click-7.1.2.dist-info/INSTALLER | 1 + .../click-7.1.2.dist-info/LICENSE.rst | 28 + .../click-7.1.2.dist-info/METADATA | 102 + .../click-7.1.2.dist-info/RECORD | 40 + .../site-packages/click-7.1.2.dist-info/WHEEL | 6 + .../click-7.1.2.dist-info/top_level.txt | 1 + .../python3.6/site-packages/click/__init__.py | 79 + .../click/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2689 bytes .../__pycache__/_bashcomplete.cpython-36.pyc | Bin 0 -> 9935 bytes .../click/__pycache__/_compat.cpython-36.pyc | Bin 0 -> 18525 bytes .../__pycache__/_termui_impl.cpython-36.pyc | Bin 0 -> 14174 bytes .../__pycache__/_textwrap.cpython-36.pyc | Bin 0 -> 1297 bytes .../__pycache__/_unicodefun.cpython-36.pyc | Bin 0 -> 3311 bytes .../__pycache__/_winconsole.cpython-36.pyc | Bin 0 -> 9411 bytes .../click/__pycache__/core.cpython-36.pyc | Bin 0 -> 61745 bytes .../__pycache__/decorators.cpython-36.pyc | Bin 0 -> 11648 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 9029 bytes .../__pycache__/formatting.cpython-36.pyc | Bin 0 -> 8660 bytes .../click/__pycache__/globals.cpython-36.pyc | Bin 0 -> 1831 bytes .../click/__pycache__/parser.cpython-36.pyc | Bin 0 -> 11757 bytes .../click/__pycache__/termui.cpython-36.pyc | Bin 0 -> 21550 bytes .../click/__pycache__/testing.cpython-36.pyc | Bin 0 -> 11633 bytes .../click/__pycache__/types.cpython-36.pyc | Bin 0 -> 22438 bytes .../click/__pycache__/utils.cpython-36.pyc | Bin 0 -> 15441 bytes .../site-packages/click/_bashcomplete.py | 375 ++ .../python3.6/site-packages/click/_compat.py | 786 +++ .../site-packages/click/_termui_impl.py | 657 ++ .../site-packages/click/_textwrap.py | 37 + .../site-packages/click/_unicodefun.py | 131 + .../site-packages/click/_winconsole.py | 370 ++ env/lib/python3.6/site-packages/click/core.py | 2030 ++++++ .../site-packages/click/decorators.py | 333 + .../site-packages/click/exceptions.py | 253 + .../site-packages/click/formatting.py | 283 + .../python3.6/site-packages/click/globals.py | 47 + .../python3.6/site-packages/click/parser.py | 428 ++ .../python3.6/site-packages/click/termui.py | 681 ++ .../python3.6/site-packages/click/testing.py | 382 ++ .../python3.6/site-packages/click/types.py | 762 +++ .../python3.6/site-packages/click/utils.py | 455 ++ .../python3.6/site-packages/easy_install.py | 5 + .../python3.6/site-packages/flask/__init__.py | 60 + .../python3.6/site-packages/flask/__main__.py | 15 + .../flask/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2086 bytes .../flask/__pycache__/__main__.cpython-36.pyc | Bin 0 -> 378 bytes .../flask/__pycache__/_compat.cpython-36.pyc | Bin 0 -> 4576 bytes .../flask/__pycache__/app.cpython-36.pyc | Bin 0 -> 74516 bytes .../__pycache__/blueprints.cpython-36.pyc | Bin 0 -> 22883 bytes .../flask/__pycache__/cli.cpython-36.pyc | Bin 0 -> 26287 bytes .../flask/__pycache__/config.cpython-36.pyc | Bin 0 -> 10123 bytes .../flask/__pycache__/ctx.cpython-36.pyc | Bin 0 -> 14284 bytes .../__pycache__/debughelpers.cpython-36.pyc | Bin 0 -> 6544 bytes .../flask/__pycache__/globals.cpython-36.pyc | Bin 0 -> 1690 bytes .../flask/__pycache__/helpers.cpython-36.pyc | Bin 0 -> 34559 bytes .../flask/__pycache__/logging.cpython-36.pyc | Bin 0 -> 3099 bytes .../flask/__pycache__/sessions.cpython-36.pyc | Bin 0 -> 12184 bytes .../flask/__pycache__/signals.cpython-36.pyc | Bin 0 -> 2363 bytes .../__pycache__/templating.cpython-36.pyc | Bin 0 -> 4942 bytes .../flask/__pycache__/testing.cpython-36.pyc | Bin 0 -> 8653 bytes .../flask/__pycache__/views.cpython-36.pyc | Bin 0 -> 4759 bytes .../flask/__pycache__/wrappers.cpython-36.pyc | Bin 0 -> 4252 bytes .../python3.6/site-packages/flask/_compat.py | 145 + env/lib/python3.6/site-packages/flask/app.py | 2467 +++++++ .../site-packages/flask/blueprints.py | 569 ++ env/lib/python3.6/site-packages/flask/cli.py | 971 +++ .../python3.6/site-packages/flask/config.py | 269 + env/lib/python3.6/site-packages/flask/ctx.py | 475 ++ .../site-packages/flask/debughelpers.py | 183 + .../python3.6/site-packages/flask/globals.py | 62 + .../python3.6/site-packages/flask/helpers.py | 1155 ++++ .../site-packages/flask/json/__init__.py | 376 ++ .../json/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 11556 bytes .../flask/json/__pycache__/tag.cpython-36.pyc | Bin 0 -> 11055 bytes .../python3.6/site-packages/flask/json/tag.py | 309 + .../python3.6/site-packages/flask/logging.py | 109 + .../python3.6/site-packages/flask/sessions.py | 388 ++ .../python3.6/site-packages/flask/signals.py | 65 + .../site-packages/flask/templating.py | 155 + .../python3.6/site-packages/flask/testing.py | 283 + .../python3.6/site-packages/flask/views.py | 163 + .../python3.6/site-packages/flask/wrappers.py | 137 + .../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 0 -> 972 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 1134 bytes .../__pycache__/_json.cpython-36.pyc | Bin 0 -> 827 bytes .../__pycache__/encoding.cpython-36.pyc | Bin 0 -> 1599 bytes .../__pycache__/exc.cpython-36.pyc | Bin 0 -> 3188 bytes .../__pycache__/jws.cpython-36.pyc | Bin 0 -> 6647 bytes .../__pycache__/serializer.cpython-36.pyc | Bin 0 -> 8002 bytes .../__pycache__/signer.cpython-36.pyc | Bin 0 -> 5763 bytes .../__pycache__/timed.cpython-36.pyc | Bin 0 -> 4529 bytes .../__pycache__/url_safe.cpython-36.pyc | Bin 0 -> 2518 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 | 44 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 1769 bytes .../jinja2/__pycache__/_compat.cpython-36.pyc | Bin 0 -> 3798 bytes .../__pycache__/_identifier.cpython-36.pyc | Bin 0 -> 1850 bytes .../__pycache__/asyncfilters.cpython-36.pyc | Bin 0 -> 4854 bytes .../__pycache__/asyncsupport.cpython-36.pyc | Bin 0 -> 8222 bytes .../jinja2/__pycache__/bccache.cpython-36.pyc | Bin 0 -> 12100 bytes .../__pycache__/compiler.cpython-36.pyc | Bin 0 -> 48724 bytes .../__pycache__/constants.cpython-36.pyc | Bin 0 -> 1496 bytes .../jinja2/__pycache__/debug.cpython-36.pyc | Bin 0 -> 5131 bytes .../__pycache__/defaults.cpython-36.pyc | Bin 0 -> 1068 bytes .../__pycache__/environment.cpython-36.pyc | Bin 0 -> 43862 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 5604 bytes .../jinja2/__pycache__/ext.cpython-36.pyc | Bin 0 -> 21415 bytes .../jinja2/__pycache__/filters.cpython-36.pyc | Bin 0 -> 39563 bytes .../__pycache__/idtracking.cpython-36.pyc | Bin 0 -> 9895 bytes .../jinja2/__pycache__/lexer.cpython-36.pyc | Bin 0 -> 19039 bytes .../jinja2/__pycache__/loaders.cpython-36.pyc | Bin 0 -> 16882 bytes .../jinja2/__pycache__/meta.cpython-36.pyc | Bin 0 -> 3432 bytes .../__pycache__/nativetypes.cpython-36.pyc | Bin 0 -> 3847 bytes .../jinja2/__pycache__/nodes.cpython-36.pyc | Bin 0 -> 36955 bytes .../__pycache__/optimizer.cpython-36.pyc | Bin 0 -> 1596 bytes .../jinja2/__pycache__/parser.cpython-36.pyc | Bin 0 -> 25239 bytes .../jinja2/__pycache__/runtime.cpython-36.pyc | Bin 0 -> 27240 bytes .../jinja2/__pycache__/sandbox.cpython-36.pyc | Bin 0 -> 13957 bytes .../jinja2/__pycache__/tests.cpython-36.pyc | Bin 0 -> 5280 bytes .../jinja2/__pycache__/utils.cpython-36.pyc | Bin 0 -> 22536 bytes .../jinja2/__pycache__/visitor.cpython-36.pyc | Bin 0 -> 3241 bytes .../python3.6/site-packages/jinja2/_compat.py | 132 + .../site-packages/jinja2/_identifier.py | 6 + .../site-packages/jinja2/asyncfilters.py | 158 + .../site-packages/jinja2/asyncsupport.py | 264 + .../python3.6/site-packages/jinja2/bccache.py | 350 + .../site-packages/jinja2/compiler.py | 1843 ++++++ .../site-packages/jinja2/constants.py | 21 + .../python3.6/site-packages/jinja2/debug.py | 268 + .../site-packages/jinja2/defaults.py | 44 + .../site-packages/jinja2/environment.py | 1362 ++++ .../site-packages/jinja2/exceptions.py | 177 + env/lib/python3.6/site-packages/jinja2/ext.py | 704 ++ .../python3.6/site-packages/jinja2/filters.py | 1382 ++++ .../site-packages/jinja2/idtracking.py | 290 + .../python3.6/site-packages/jinja2/lexer.py | 848 +++ .../python3.6/site-packages/jinja2/loaders.py | 504 ++ .../python3.6/site-packages/jinja2/meta.py | 101 + .../site-packages/jinja2/nativetypes.py | 94 + .../python3.6/site-packages/jinja2/nodes.py | 1088 ++++ .../site-packages/jinja2/optimizer.py | 41 + .../python3.6/site-packages/jinja2/parser.py | 939 +++ .../python3.6/site-packages/jinja2/runtime.py | 1011 +++ .../python3.6/site-packages/jinja2/sandbox.py | 510 ++ .../python3.6/site-packages/jinja2/tests.py | 215 + .../python3.6/site-packages/jinja2/utils.py | 737 +++ .../python3.6/site-packages/jinja2/visitor.py | 81 + .../jsonify-0.5.egg-info/PKG-INFO | 11 + .../jsonify-0.5.egg-info/SOURCES.txt | 7 + .../jsonify-0.5.egg-info/dependency_links.txt | 1 + .../jsonify-0.5.egg-info/installed-files.txt | 8 + .../jsonify-0.5.egg-info/top_level.txt | 1 + .../site-packages/jsonify/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 200 bytes .../__pycache__/convert.cpython-36.pyc | Bin 0 -> 600 bytes .../site-packages/jsonify/convert.py | 15 + .../site-packages/markupsafe/__init__.py | 327 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 10933 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 725 bytes .../__pycache__/_constants.cpython-36.pyc | Bin 0 -> 4225 bytes .../__pycache__/_native.cpython-36.pyc | Bin 0 -> 2077 bytes .../site-packages/markupsafe/_compat.py | 33 + .../site-packages/markupsafe/_constants.py | 264 + .../site-packages/markupsafe/_native.py | 69 + .../site-packages/markupsafe/_speedups.c | 423 ++ .../_speedups.cpython-36m-x86_64-linux-gnu.so | Bin 0 -> 38875 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 0 -> 8498 bytes .../pip/__pycache__/__main__.cpython-36.pyc | Bin 0 -> 374 bytes .../__pycache__/basecommand.cpython-36.pyc | Bin 0 -> 7210 bytes .../pip/__pycache__/baseparser.cpython-36.pyc | Bin 0 -> 9271 bytes .../pip/__pycache__/cmdoptions.cpython-36.pyc | Bin 0 -> 12929 bytes .../pip/__pycache__/download.cpython-36.pyc | Bin 0 -> 20838 bytes .../pip/__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 10483 bytes .../pip/__pycache__/index.cpython-36.pyc | Bin 0 -> 30245 bytes .../pip/__pycache__/locations.cpython-36.pyc | Bin 0 -> 3869 bytes .../pip/__pycache__/pep425tags.cpython-36.pyc | Bin 0 -> 7464 bytes .../__pycache__/status_codes.cpython-36.pyc | Bin 0 -> 338 bytes .../pip/__pycache__/wheel.cpython-36.pyc | Bin 0 -> 21655 bytes .../site-packages/pip/_vendor/__init__.py | 111 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2797 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 0 -> 2028 bytes .../commands/__pycache__/check.cpython-36.pyc | Bin 0 -> 1269 bytes .../__pycache__/completion.cpython-36.pyc | Bin 0 -> 2600 bytes .../__pycache__/download.cpython-36.pyc | Bin 0 -> 5385 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 0 -> 2582 bytes .../commands/__pycache__/hash.cpython-36.pyc | Bin 0 -> 1923 bytes .../commands/__pycache__/help.cpython-36.pyc | Bin 0 -> 1074 bytes .../__pycache__/install.cpython-36.pyc | Bin 0 -> 10221 bytes .../commands/__pycache__/list.cpython-36.pyc | Bin 0 -> 9685 bytes .../__pycache__/search.cpython-36.pyc | Bin 0 -> 4164 bytes .../commands/__pycache__/show.cpython-36.pyc | Bin 0 -> 5335 bytes .../__pycache__/uninstall.cpython-36.pyc | Bin 0 -> 2560 bytes .../commands/__pycache__/wheel.cpython-36.pyc | Bin 0 -> 5422 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 0 -> 3957 bytes .../__pycache__/dictconfig.cpython-36.pyc | Bin 0 -> 13604 bytes .../site-packages/pip/compat/dictconfig.py | 565 ++ .../python3.6/site-packages/pip/download.py | 926 +++ .../python3.6/site-packages/pip/exceptions.py | 244 + env/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 0 -> 223 bytes .../models/__pycache__/index.cpython-36.pyc | Bin 0 -> 827 bytes .../site-packages/pip/models/index.py | 16 + .../site-packages/pip/operations/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 137 bytes .../__pycache__/check.cpython-36.pyc | Bin 0 -> 1424 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 0 -> 2881 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 0 -> 404 bytes .../req/__pycache__/req_file.cpython-36.pyc | Bin 0 -> 8419 bytes .../__pycache__/req_install.cpython-36.pyc | Bin 0 -> 30120 bytes .../req/__pycache__/req_set.cpython-36.pyc | Bin 0 -> 20967 bytes .../__pycache__/req_uninstall.cpython-36.pyc | Bin 0 -> 6282 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 0 -> 22743 bytes .../utils/__pycache__/appdirs.cpython-36.pyc | Bin 0 -> 7701 bytes .../utils/__pycache__/build.cpython-36.pyc | Bin 0 -> 1315 bytes .../__pycache__/deprecation.cpython-36.pyc | Bin 0 -> 1728 bytes .../utils/__pycache__/encoding.cpython-36.pyc | Bin 0 -> 1018 bytes .../__pycache__/filesystem.cpython-36.pyc | Bin 0 -> 583 bytes .../utils/__pycache__/glibc.cpython-36.pyc | Bin 0 -> 1366 bytes .../utils/__pycache__/hashes.cpython-36.pyc | Bin 0 -> 3242 bytes .../utils/__pycache__/logging.cpython-36.pyc | Bin 0 -> 3898 bytes .../utils/__pycache__/outdated.cpython-36.pyc | Bin 0 -> 4223 bytes .../__pycache__/packaging.cpython-36.pyc | Bin 0 -> 1986 bytes .../setuptools_build.cpython-36.pyc | Bin 0 -> 327 bytes .../pip/utils/__pycache__/ui.cpython-36.pyc | Bin 0 -> 9583 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 0 -> 11102 bytes .../pip/vcs/__pycache__/bazaar.cpython-36.pyc | Bin 0 -> 3655 bytes .../pip/vcs/__pycache__/git.cpython-36.pyc | Bin 0 -> 8795 bytes .../vcs/__pycache__/mercurial.cpython-36.pyc | Bin 0 -> 3568 bytes .../vcs/__pycache__/subversion.cpython-36.pyc | Bin 0 -> 7107 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 + env/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 0 -> 95310 bytes .../__pycache__/py31compat.cpython-36.pyc | Bin 0 -> 657 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 154 bytes .../__pycache__/appdirs.cpython-36.pyc | Bin 0 -> 18580 bytes .../__pycache__/pyparsing.cpython-36.pyc | Bin 0 -> 201076 bytes .../_vendor/__pycache__/six.cpython-36.pyc | Bin 0 -> 24451 bytes .../pkg_resources/_vendor/appdirs.py | 552 ++ .../_vendor/packaging/__about__.py | 21 + .../_vendor/packaging/__init__.py | 14 + .../__pycache__/__about__.cpython-36.pyc | Bin 0 -> 690 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 528 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 975 bytes .../__pycache__/_structures.cpython-36.pyc | Bin 0 -> 2832 bytes .../__pycache__/markers.cpython-36.pyc | Bin 0 -> 8855 bytes .../__pycache__/requirements.cpython-36.pyc | Bin 0 -> 3851 bytes .../__pycache__/specifiers.cpython-36.pyc | Bin 0 -> 19794 bytes .../__pycache__/utils.cpython-36.pyc | Bin 0 -> 459 bytes .../__pycache__/version.cpython-36.pyc | Bin 0 -> 10569 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 0 -> 2385 bytes .../site-packages/pkg_resources/py31compat.py | 22 + .../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 0 -> 6246 bytes .../__pycache__/archive_util.cpython-36.pyc | Bin 0 -> 5094 bytes .../__pycache__/build_meta.cpython-36.pyc | Bin 0 -> 5867 bytes .../__pycache__/config.cpython-36.pyc | Bin 0 -> 14323 bytes .../__pycache__/dep_util.cpython-36.pyc | Bin 0 -> 813 bytes .../__pycache__/depends.cpython-36.pyc | Bin 0 -> 5239 bytes .../__pycache__/dist.cpython-36.pyc | Bin 0 -> 36818 bytes .../__pycache__/extension.cpython-36.pyc | Bin 0 -> 1933 bytes .../__pycache__/glibc.cpython-36.pyc | Bin 0 -> 1503 bytes .../__pycache__/glob.cpython-36.pyc | Bin 0 -> 3801 bytes .../__pycache__/launch.cpython-36.pyc | Bin 0 -> 812 bytes .../__pycache__/lib2to3_ex.cpython-36.pyc | Bin 0 -> 2391 bytes .../__pycache__/monkey.cpython-36.pyc | Bin 0 -> 5133 bytes .../__pycache__/msvc.cpython-36.pyc | Bin 0 -> 34498 bytes .../__pycache__/namespaces.cpython-36.pyc | Bin 0 -> 3636 bytes .../__pycache__/package_index.cpython-36.pyc | Bin 0 -> 32218 bytes .../__pycache__/pep425tags.cpython-36.pyc | Bin 0 -> 7296 bytes .../__pycache__/py27compat.cpython-36.pyc | Bin 0 -> 769 bytes .../__pycache__/py31compat.cpython-36.pyc | Bin 0 -> 1508 bytes .../__pycache__/py33compat.cpython-36.pyc | Bin 0 -> 1361 bytes .../__pycache__/py36compat.cpython-36.pyc | Bin 0 -> 2165 bytes .../__pycache__/sandbox.cpython-36.pyc | Bin 0 -> 15681 bytes .../__pycache__/site-patch.cpython-36.pyc | Bin 0 -> 1464 bytes .../__pycache__/ssl_support.cpython-36.pyc | Bin 0 -> 6744 bytes .../__pycache__/unicode_utils.cpython-36.pyc | Bin 0 -> 1127 bytes .../__pycache__/version.cpython-36.pyc | Bin 0 -> 286 bytes .../__pycache__/wheel.cpython-36.pyc | Bin 0 -> 5781 bytes .../windows_support.cpython-36.pyc | Bin 0 -> 969 bytes .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 148 bytes .../__pycache__/pyparsing.cpython-36.pyc | Bin 0 -> 201070 bytes .../_vendor/__pycache__/six.cpython-36.pyc | Bin 0 -> 24445 bytes .../setuptools/_vendor/packaging/__about__.py | 21 + .../setuptools/_vendor/packaging/__init__.py | 14 + .../__pycache__/__about__.cpython-36.pyc | Bin 0 -> 684 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 522 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 969 bytes .../__pycache__/_structures.cpython-36.pyc | Bin 0 -> 2826 bytes .../__pycache__/markers.cpython-36.pyc | Bin 0 -> 8846 bytes .../__pycache__/requirements.cpython-36.pyc | Bin 0 -> 3839 bytes .../__pycache__/specifiers.cpython-36.pyc | Bin 0 -> 19788 bytes .../__pycache__/utils.cpython-36.pyc | Bin 0 -> 453 bytes .../__pycache__/version.cpython-36.pyc | Bin 0 -> 10563 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 0 -> 65536 bytes .../site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 18 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 699 bytes .../command/__pycache__/alias.cpython-36.pyc | Bin 0 -> 2392 bytes .../__pycache__/bdist_egg.cpython-36.pyc | Bin 0 -> 14373 bytes .../__pycache__/bdist_rpm.cpython-36.pyc | Bin 0 -> 1735 bytes .../__pycache__/bdist_wininst.cpython-36.pyc | Bin 0 -> 936 bytes .../__pycache__/build_clib.cpython-36.pyc | Bin 0 -> 2407 bytes .../__pycache__/build_ext.cpython-36.pyc | Bin 0 -> 10006 bytes .../__pycache__/build_py.cpython-36.pyc | Bin 0 -> 8531 bytes .../__pycache__/develop.cpython-36.pyc | Bin 0 -> 6385 bytes .../__pycache__/dist_info.cpython-36.pyc | Bin 0 -> 1352 bytes .../__pycache__/easy_install.cpython-36.pyc | Bin 0 -> 66239 bytes .../__pycache__/egg_info.cpython-36.pyc | Bin 0 -> 20935 bytes .../__pycache__/install.cpython-36.pyc | Bin 0 -> 3932 bytes .../install_egg_info.cpython-36.pyc | Bin 0 -> 2916 bytes .../__pycache__/install_lib.cpython-36.pyc | Bin 0 -> 5050 bytes .../install_scripts.cpython-36.pyc | Bin 0 -> 2237 bytes .../__pycache__/py36compat.cpython-36.pyc | Bin 0 -> 4582 bytes .../__pycache__/register.cpython-36.pyc | Bin 0 -> 552 bytes .../command/__pycache__/rotate.cpython-36.pyc | Bin 0 -> 2538 bytes .../__pycache__/saveopts.cpython-36.pyc | Bin 0 -> 883 bytes .../command/__pycache__/sdist.cpython-36.pyc | Bin 0 -> 6347 bytes .../command/__pycache__/setopt.cpython-36.pyc | Bin 0 -> 4561 bytes .../command/__pycache__/test.cpython-36.pyc | Bin 0 -> 8120 bytes .../command/__pycache__/upload.cpython-36.pyc | Bin 0 -> 1350 bytes .../__pycache__/upload_docs.cpython-36.pyc | Bin 0 -> 6059 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 0 -> 2387 bytes .../site-packages/setuptools/glibc.py | 86 + .../site-packages/setuptools/glob.py | 176 + .../site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../site-packages/setuptools/gui.exe | Bin 0 -> 65536 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 + .../site-packages/werkzeug/__init__.py | 20 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 684 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 7337 bytes .../__pycache__/_internal.cpython-36.pyc | Bin 0 -> 13095 bytes .../__pycache__/_reloader.cpython-36.pyc | Bin 0 -> 9614 bytes .../__pycache__/datastructures.cpython-36.pyc | Bin 0 -> 109476 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 27645 bytes .../__pycache__/filesystem.cpython-36.pyc | Bin 0 -> 2125 bytes .../__pycache__/formparser.cpython-36.pyc | Bin 0 -> 16176 bytes .../werkzeug/__pycache__/http.cpython-36.pyc | Bin 0 -> 35636 bytes .../werkzeug/__pycache__/local.cpython-36.pyc | Bin 0 -> 18526 bytes .../__pycache__/posixemulation.cpython-36.pyc | Bin 0 -> 2699 bytes .../__pycache__/routing.cpython-36.pyc | Bin 0 -> 67793 bytes .../__pycache__/security.cpython-36.pyc | Bin 0 -> 7911 bytes .../__pycache__/serving.cpython-36.pyc | Bin 0 -> 29451 bytes .../werkzeug/__pycache__/test.cpython-36.pyc | Bin 0 -> 32896 bytes .../__pycache__/testapp.cpython-36.pyc | Bin 0 -> 9329 bytes .../werkzeug/__pycache__/urls.cpython-36.pyc | Bin 0 -> 35860 bytes .../__pycache__/useragents.cpython-36.pyc | Bin 0 -> 6070 bytes .../werkzeug/__pycache__/utils.cpython-36.pyc | Bin 0 -> 23003 bytes .../werkzeug/__pycache__/wsgi.cpython-36.pyc | Bin 0 -> 30904 bytes .../site-packages/werkzeug/_compat.py | 228 + .../site-packages/werkzeug/_internal.py | 473 ++ .../site-packages/werkzeug/_reloader.py | 341 + .../site-packages/werkzeug/datastructures.py | 3120 +++++++++ .../site-packages/werkzeug/debug/__init__.py | 498 ++ .../debug/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 12475 bytes .../debug/__pycache__/console.cpython-36.pyc | Bin 0 -> 7261 bytes .../debug/__pycache__/repr.cpython-36.pyc | Bin 0 -> 8569 bytes .../debug/__pycache__/tbtools.cpython-36.pyc | Bin 0 -> 18493 bytes .../site-packages/werkzeug/debug/console.py | 218 + .../site-packages/werkzeug/debug/repr.py | 297 + .../werkzeug/debug/shared/FONT_LICENSE | 96 + .../werkzeug/debug/shared/console.png | Bin 0 -> 507 bytes .../werkzeug/debug/shared/debugger.js | 210 + .../werkzeug/debug/shared/jquery.js | 2 + .../werkzeug/debug/shared/less.png | Bin 0 -> 191 bytes .../werkzeug/debug/shared/more.png | Bin 0 -> 200 bytes .../werkzeug/debug/shared/source.png | Bin 0 -> 818 bytes .../werkzeug/debug/shared/style.css | 154 + .../werkzeug/debug/shared/ubuntu.ttf | Bin 0 -> 70220 bytes .../site-packages/werkzeug/debug/tbtools.py | 628 ++ .../site-packages/werkzeug/exceptions.py | 829 +++ .../site-packages/werkzeug/filesystem.py | 64 + .../site-packages/werkzeug/formparser.py | 584 ++ .../python3.6/site-packages/werkzeug/http.py | 1307 ++++ .../python3.6/site-packages/werkzeug/local.py | 420 ++ .../werkzeug/middleware/__init__.py | 25 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 704 bytes .../__pycache__/dispatcher.cpython-36.pyc | Bin 0 -> 2393 bytes .../__pycache__/http_proxy.cpython-36.pyc | Bin 0 -> 6350 bytes .../__pycache__/lint.cpython-36.pyc | Bin 0 -> 11687 bytes .../__pycache__/profiler.cpython-36.pyc | Bin 0 -> 4433 bytes .../__pycache__/proxy_fix.cpython-36.pyc | Bin 0 -> 5753 bytes .../__pycache__/shared_data.cpython-36.pyc | Bin 0 -> 8956 bytes .../werkzeug/middleware/dispatcher.py | 66 + .../werkzeug/middleware/http_proxy.py | 219 + .../site-packages/werkzeug/middleware/lint.py | 408 ++ .../werkzeug/middleware/profiler.py | 132 + .../werkzeug/middleware/proxy_fix.py | 169 + .../werkzeug/middleware/shared_data.py | 293 + .../site-packages/werkzeug/posixemulation.py | 117 + .../site-packages/werkzeug/routing.py | 2210 +++++++ .../site-packages/werkzeug/security.py | 249 + .../site-packages/werkzeug/serving.py | 1117 ++++ .../python3.6/site-packages/werkzeug/test.py | 1123 ++++ .../site-packages/werkzeug/testapp.py | 241 + .../python3.6/site-packages/werkzeug/urls.py | 1138 ++++ .../site-packages/werkzeug/useragents.py | 202 + .../python3.6/site-packages/werkzeug/utils.py | 778 +++ .../werkzeug/wrappers/__init__.py | 36 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 1632 bytes .../__pycache__/accept.cpython-36.pyc | Bin 0 -> 2161 bytes .../wrappers/__pycache__/auth.cpython-36.pyc | Bin 0 -> 1650 bytes .../__pycache__/base_request.cpython-36.pyc | Bin 0 -> 21475 bytes .../__pycache__/base_response.cpython-36.pyc | Bin 0 -> 23147 bytes .../common_descriptors.cpython-36.pyc | Bin 0 -> 12723 bytes .../wrappers/__pycache__/cors.cpython-36.pyc | Bin 0 -> 3244 bytes .../wrappers/__pycache__/etag.cpython-36.pyc | Bin 0 -> 11532 bytes .../wrappers/__pycache__/json.cpython-36.pyc | Bin 0 -> 4273 bytes .../__pycache__/request.cpython-36.pyc | Bin 0 -> 1935 bytes .../__pycache__/response.cpython-36.pyc | Bin 0 -> 3464 bytes .../__pycache__/user_agent.cpython-36.pyc | Bin 0 -> 790 bytes .../site-packages/werkzeug/wrappers/accept.py | 50 + .../site-packages/werkzeug/wrappers/auth.py | 33 + .../werkzeug/wrappers/base_request.py | 673 ++ .../werkzeug/wrappers/base_response.py | 700 ++ .../werkzeug/wrappers/common_descriptors.py | 341 + .../site-packages/werkzeug/wrappers/cors.py | 100 + .../site-packages/werkzeug/wrappers/etag.py | 304 + .../site-packages/werkzeug/wrappers/json.py | 145 + .../werkzeug/wrappers/request.py | 49 + .../werkzeug/wrappers/response.py | 84 + .../werkzeug/wrappers/user_agent.py | 14 + .../python3.6/site-packages/werkzeug/wsgi.py | 1000 +++ env/lib64 | 1 + env/pyvenv.cfg | 3 + .../CacheControl-0.11.7-py2.py3-none-any.whl | Bin 0 -> 18720 bytes .../appdirs-1.4.3-py2.py3-none-any.whl | Bin 0 -> 12139 bytes .../certifi-2018.1.18-py2.py3-none-any.whl | Bin 0 -> 150807 bytes .../chardet-3.0.4-py2.py3-none-any.whl | Bin 0 -> 133328 bytes .../colorama-0.3.7-py2.py3-none-any.whl | Bin 0 -> 19915 bytes .../distlib-0.2.6-py2.py3-none-any.whl | Bin 0 -> 141707 bytes .../distro-1.0.1-py2.py3-none-any.whl | Bin 0 -> 11733 bytes .../html5lib-0.999999999-py2.py3-none-any.whl | Bin 0 -> 112620 bytes .../idna-2.6-py2.py3-none-any.whl | Bin 0 -> 56485 bytes .../ipaddress-0.0.0-py2.py3-none-any.whl | Bin 0 -> 17503 bytes .../lockfile-0.12.2-py2.py3-none-any.whl | Bin 0 -> 13506 bytes .../packaging-17.1-py2.py3-none-any.whl | Bin 0 -> 24058 bytes .../pip-9.0.1-py2.py3-none-any.whl | Bin 0 -> 159285 bytes .../pkg_resources-0.0.0-py2.py3-none-any.whl | Bin 0 -> 115663 bytes .../progress-1.2-py2.py3-none-any.whl | Bin 0 -> 9606 bytes .../pyparsing-2.2.0-py2.py3-none-any.whl | Bin 0 -> 56411 bytes .../requests-2.18.4-py2.py3-none-any.whl | Bin 0 -> 88788 bytes .../retrying-1.3.3-py2.py3-none-any.whl | Bin 0 -> 9480 bytes .../setuptools-39.0.1-py2.py3-none-any.whl | Bin 0 -> 455758 bytes .../six-1.11.0-py2.py3-none-any.whl | Bin 0 -> 10720 bytes .../urllib3-1.22-py2.py3-none-any.whl | Bin 0 -> 125332 bytes .../webencodings-0.5-py2.py3-none-any.whl | Bin 0 -> 11646 bytes .../wheel-0.30.0-py2.py3-none-any.whl | Bin 0 -> 48886 bytes 650 files changed, 103497 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 api.py create mode 100644 env/bin/activate create mode 100644 env/bin/activate.csh create mode 100644 env/bin/activate.fish create mode 100755 env/bin/easy_install create mode 100755 env/bin/easy_install-3.6 create mode 100755 env/bin/flask create mode 100755 env/bin/pip create mode 100755 env/bin/pip3 create mode 100755 env/bin/pip3.6 create mode 120000 env/bin/python create mode 120000 env/bin/python3 create mode 100644 env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/INSTALLER create mode 100644 env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/LICENSE.rst create mode 100644 env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/METADATA create mode 100644 env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/RECORD create mode 100644 env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/WHEEL create mode 100644 env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/entry_points.txt create mode 100644 env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/top_level.txt create mode 100644 env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/INSTALLER create mode 100644 env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/LICENSE.rst create mode 100644 env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/METADATA create mode 100644 env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/RECORD create mode 100644 env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/WHEEL create mode 100644 env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/entry_points.txt create mode 100644 env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/top_level.txt create mode 100644 env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER create mode 100644 env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.txt create mode 100644 env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA create mode 100644 env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD create mode 100644 env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL create mode 100644 env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt create mode 100644 env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/INSTALLER create mode 100644 env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/LICENSE.rst create mode 100644 env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/METADATA create mode 100644 env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/RECORD create mode 100644 env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/WHEEL create mode 100644 env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/top_level.txt create mode 100644 env/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click-7.1.2.dist-info/INSTALLER create mode 100644 env/lib/python3.6/site-packages/click-7.1.2.dist-info/LICENSE.rst create mode 100644 env/lib/python3.6/site-packages/click-7.1.2.dist-info/METADATA create mode 100644 env/lib/python3.6/site-packages/click-7.1.2.dist-info/RECORD create mode 100644 env/lib/python3.6/site-packages/click-7.1.2.dist-info/WHEEL create mode 100644 env/lib/python3.6/site-packages/click-7.1.2.dist-info/top_level.txt create mode 100644 env/lib/python3.6/site-packages/click/__init__.py create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/_bashcomplete.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/_compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/_termui_impl.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/_textwrap.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/_unicodefun.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/_winconsole.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/core.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/decorators.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/exceptions.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/formatting.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/globals.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/parser.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/termui.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/testing.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/types.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/__pycache__/utils.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/click/_bashcomplete.py create mode 100644 env/lib/python3.6/site-packages/click/_compat.py create mode 100644 env/lib/python3.6/site-packages/click/_termui_impl.py create mode 100644 env/lib/python3.6/site-packages/click/_textwrap.py create mode 100644 env/lib/python3.6/site-packages/click/_unicodefun.py create mode 100644 env/lib/python3.6/site-packages/click/_winconsole.py create mode 100644 env/lib/python3.6/site-packages/click/core.py create mode 100644 env/lib/python3.6/site-packages/click/decorators.py create mode 100644 env/lib/python3.6/site-packages/click/exceptions.py create mode 100644 env/lib/python3.6/site-packages/click/formatting.py create mode 100644 env/lib/python3.6/site-packages/click/globals.py create mode 100644 env/lib/python3.6/site-packages/click/parser.py create mode 100644 env/lib/python3.6/site-packages/click/termui.py create mode 100644 env/lib/python3.6/site-packages/click/testing.py create mode 100644 env/lib/python3.6/site-packages/click/types.py create mode 100644 env/lib/python3.6/site-packages/click/utils.py create mode 100644 env/lib/python3.6/site-packages/easy_install.py create mode 100644 env/lib/python3.6/site-packages/flask/__init__.py create mode 100644 env/lib/python3.6/site-packages/flask/__main__.py create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/__main__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/_compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/app.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/blueprints.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/cli.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/config.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/ctx.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/debughelpers.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/globals.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/helpers.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/logging.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/sessions.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/signals.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/templating.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/testing.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/views.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/__pycache__/wrappers.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/_compat.py create mode 100644 env/lib/python3.6/site-packages/flask/app.py create mode 100644 env/lib/python3.6/site-packages/flask/blueprints.py create mode 100644 env/lib/python3.6/site-packages/flask/cli.py create mode 100644 env/lib/python3.6/site-packages/flask/config.py create mode 100644 env/lib/python3.6/site-packages/flask/ctx.py create mode 100644 env/lib/python3.6/site-packages/flask/debughelpers.py create mode 100644 env/lib/python3.6/site-packages/flask/globals.py create mode 100644 env/lib/python3.6/site-packages/flask/helpers.py create mode 100644 env/lib/python3.6/site-packages/flask/json/__init__.py create mode 100644 env/lib/python3.6/site-packages/flask/json/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/json/__pycache__/tag.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/flask/json/tag.py create mode 100644 env/lib/python3.6/site-packages/flask/logging.py create mode 100644 env/lib/python3.6/site-packages/flask/sessions.py create mode 100644 env/lib/python3.6/site-packages/flask/signals.py create mode 100644 env/lib/python3.6/site-packages/flask/templating.py create mode 100644 env/lib/python3.6/site-packages/flask/testing.py create mode 100644 env/lib/python3.6/site-packages/flask/views.py create mode 100644 env/lib/python3.6/site-packages/flask/wrappers.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/INSTALLER create mode 100644 env/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/LICENSE.rst create mode 100644 env/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/METADATA create mode 100644 env/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/RECORD create mode 100644 env/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/WHEEL create mode 100644 env/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/top_level.txt create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__init__.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/_compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/_json.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/encoding.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/exc.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/jws.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/serializer.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/signer.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/timed.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/__pycache__/url_safe.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/itsdangerous/_compat.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous/_json.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous/encoding.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous/exc.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous/jws.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous/serializer.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous/signer.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous/timed.py create mode 100644 env/lib/python3.6/site-packages/itsdangerous/url_safe.py create mode 100644 env/lib/python3.6/site-packages/jinja2/__init__.py create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/_compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/_identifier.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/asyncfilters.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/asyncsupport.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/bccache.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/compiler.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/constants.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/debug.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/defaults.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/environment.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/exceptions.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/ext.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/filters.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/idtracking.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/lexer.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/loaders.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/meta.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/nativetypes.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/nodes.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/optimizer.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/parser.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/runtime.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/sandbox.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/tests.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/utils.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/__pycache__/visitor.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jinja2/_compat.py create mode 100644 env/lib/python3.6/site-packages/jinja2/_identifier.py create mode 100644 env/lib/python3.6/site-packages/jinja2/asyncfilters.py create mode 100644 env/lib/python3.6/site-packages/jinja2/asyncsupport.py create mode 100644 env/lib/python3.6/site-packages/jinja2/bccache.py create mode 100644 env/lib/python3.6/site-packages/jinja2/compiler.py create mode 100644 env/lib/python3.6/site-packages/jinja2/constants.py create mode 100644 env/lib/python3.6/site-packages/jinja2/debug.py create mode 100644 env/lib/python3.6/site-packages/jinja2/defaults.py create mode 100644 env/lib/python3.6/site-packages/jinja2/environment.py create mode 100644 env/lib/python3.6/site-packages/jinja2/exceptions.py create mode 100644 env/lib/python3.6/site-packages/jinja2/ext.py create mode 100644 env/lib/python3.6/site-packages/jinja2/filters.py create mode 100644 env/lib/python3.6/site-packages/jinja2/idtracking.py create mode 100644 env/lib/python3.6/site-packages/jinja2/lexer.py create mode 100644 env/lib/python3.6/site-packages/jinja2/loaders.py create mode 100644 env/lib/python3.6/site-packages/jinja2/meta.py create mode 100644 env/lib/python3.6/site-packages/jinja2/nativetypes.py create mode 100644 env/lib/python3.6/site-packages/jinja2/nodes.py create mode 100644 env/lib/python3.6/site-packages/jinja2/optimizer.py create mode 100644 env/lib/python3.6/site-packages/jinja2/parser.py create mode 100644 env/lib/python3.6/site-packages/jinja2/runtime.py create mode 100644 env/lib/python3.6/site-packages/jinja2/sandbox.py create mode 100644 env/lib/python3.6/site-packages/jinja2/tests.py create mode 100644 env/lib/python3.6/site-packages/jinja2/utils.py create mode 100644 env/lib/python3.6/site-packages/jinja2/visitor.py create mode 100644 env/lib/python3.6/site-packages/jsonify-0.5.egg-info/PKG-INFO create mode 100644 env/lib/python3.6/site-packages/jsonify-0.5.egg-info/SOURCES.txt create mode 100644 env/lib/python3.6/site-packages/jsonify-0.5.egg-info/dependency_links.txt create mode 100644 env/lib/python3.6/site-packages/jsonify-0.5.egg-info/installed-files.txt create mode 100644 env/lib/python3.6/site-packages/jsonify-0.5.egg-info/top_level.txt create mode 100644 env/lib/python3.6/site-packages/jsonify/__init__.py create mode 100644 env/lib/python3.6/site-packages/jsonify/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jsonify/__pycache__/convert.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/jsonify/convert.py create mode 100644 env/lib/python3.6/site-packages/markupsafe/__init__.py create mode 100644 env/lib/python3.6/site-packages/markupsafe/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/markupsafe/__pycache__/_compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/markupsafe/__pycache__/_constants.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/markupsafe/__pycache__/_native.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/markupsafe/_compat.py create mode 100644 env/lib/python3.6/site-packages/markupsafe/_constants.py create mode 100644 env/lib/python3.6/site-packages/markupsafe/_native.py create mode 100644 env/lib/python3.6/site-packages/markupsafe/_speedups.c create mode 100755 env/lib/python3.6/site-packages/markupsafe/_speedups.cpython-36m-x86_64-linux-gnu.so create mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/INSTALLER create mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA create mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD create mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL create mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt create mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json create mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/top_level.txt create mode 100644 env/lib/python3.6/site-packages/pip/__init__.py create mode 100644 env/lib/python3.6/site-packages/pip/__main__.py create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/__main__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/basecommand.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/baseparser.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/cmdoptions.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/download.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/exceptions.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/index.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/locations.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/pep425tags.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/status_codes.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/wheel.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__init__.py create mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/basecommand.py create mode 100644 env/lib/python3.6/site-packages/pip/baseparser.py create mode 100644 env/lib/python3.6/site-packages/pip/cmdoptions.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/__init__.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/check.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/completion.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/download.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/freeze.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/hash.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/help.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/install.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/list.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/search.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/show.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/uninstall.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/wheel.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/commands/check.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/completion.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/download.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/freeze.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/hash.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/help.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/install.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/list.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/search.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/show.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/uninstall.py create mode 100644 env/lib/python3.6/site-packages/pip/commands/wheel.py create mode 100644 env/lib/python3.6/site-packages/pip/compat/__init__.py create mode 100644 env/lib/python3.6/site-packages/pip/compat/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/compat/__pycache__/dictconfig.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/compat/dictconfig.py create mode 100644 env/lib/python3.6/site-packages/pip/download.py create mode 100644 env/lib/python3.6/site-packages/pip/exceptions.py create mode 100644 env/lib/python3.6/site-packages/pip/index.py create mode 100644 env/lib/python3.6/site-packages/pip/locations.py create mode 100644 env/lib/python3.6/site-packages/pip/models/__init__.py create mode 100644 env/lib/python3.6/site-packages/pip/models/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/models/__pycache__/index.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/models/index.py create mode 100644 env/lib/python3.6/site-packages/pip/operations/__init__.py create mode 100644 env/lib/python3.6/site-packages/pip/operations/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/operations/__pycache__/check.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/operations/__pycache__/freeze.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/operations/check.py create mode 100644 env/lib/python3.6/site-packages/pip/operations/freeze.py create mode 100644 env/lib/python3.6/site-packages/pip/pep425tags.py create mode 100644 env/lib/python3.6/site-packages/pip/req/__init__.py create mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/req_file.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/req_install.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/req_set.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/req_uninstall.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/req/req_file.py create mode 100644 env/lib/python3.6/site-packages/pip/req/req_install.py create mode 100644 env/lib/python3.6/site-packages/pip/req/req_set.py create mode 100644 env/lib/python3.6/site-packages/pip/req/req_uninstall.py create mode 100644 env/lib/python3.6/site-packages/pip/status_codes.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/__init__.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/appdirs.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/build.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/deprecation.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/encoding.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/filesystem.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/glibc.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/hashes.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/logging.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/outdated.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/packaging.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/setuptools_build.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/ui.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/utils/appdirs.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/build.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/deprecation.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/encoding.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/filesystem.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/glibc.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/hashes.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/logging.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/outdated.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/packaging.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/setuptools_build.py create mode 100644 env/lib/python3.6/site-packages/pip/utils/ui.py create mode 100644 env/lib/python3.6/site-packages/pip/vcs/__init__.py create mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/bazaar.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/git.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/mercurial.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/subversion.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pip/vcs/bazaar.py create mode 100644 env/lib/python3.6/site-packages/pip/vcs/git.py create mode 100644 env/lib/python3.6/site-packages/pip/vcs/mercurial.py create mode 100644 env/lib/python3.6/site-packages/pip/vcs/subversion.py create mode 100644 env/lib/python3.6/site-packages/pip/wheel.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/INSTALLER create mode 100644 env/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/METADATA create mode 100644 env/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/RECORD create mode 100644 env/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/WHEEL create mode 100644 env/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/metadata.json create mode 100644 env/lib/python3.6/site-packages/pkg_resources/__init__.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/__pycache__/py31compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/six.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/extern/__init__.py create mode 100644 env/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/pkg_resources/py31compat.py create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/INSTALLER create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/METADATA create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/RECORD create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/WHEEL create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/dependency_links.txt create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/entry_points.txt create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/metadata.json create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/top_level.txt create mode 100644 env/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/zip-safe create mode 100644 env/lib/python3.6/site-packages/setuptools/__init__.py create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/build_meta.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/config.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/dep_util.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/glibc.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/pep425tags.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/py33compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/py36compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/wheel.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/__init__.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/six.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/_compat.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 env/lib/python3.6/site-packages/setuptools/_vendor/six.py create mode 100644 env/lib/python3.6/site-packages/setuptools/archive_util.py create mode 100644 env/lib/python3.6/site-packages/setuptools/build_meta.py create mode 100644 env/lib/python3.6/site-packages/setuptools/cli-32.exe create mode 100644 env/lib/python3.6/site-packages/setuptools/cli-64.exe create mode 100644 env/lib/python3.6/site-packages/setuptools/cli.exe create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__init__.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/build_clib.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/dist_info.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/command/alias.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/bdist_egg.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/bdist_rpm.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/bdist_wininst.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/build_clib.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/build_ext.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/build_py.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/develop.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/dist_info.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/easy_install.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/egg_info.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/install.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/install_egg_info.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/install_lib.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/install_scripts.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/launcher manifest.xml create mode 100644 env/lib/python3.6/site-packages/setuptools/command/py36compat.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/register.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/rotate.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/saveopts.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/sdist.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/setopt.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/test.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/upload.py create mode 100644 env/lib/python3.6/site-packages/setuptools/command/upload_docs.py create mode 100644 env/lib/python3.6/site-packages/setuptools/config.py create mode 100644 env/lib/python3.6/site-packages/setuptools/dep_util.py create mode 100644 env/lib/python3.6/site-packages/setuptools/depends.py create mode 100644 env/lib/python3.6/site-packages/setuptools/dist.py create mode 100644 env/lib/python3.6/site-packages/setuptools/extension.py create mode 100644 env/lib/python3.6/site-packages/setuptools/extern/__init__.py create mode 100644 env/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/setuptools/glibc.py create mode 100644 env/lib/python3.6/site-packages/setuptools/glob.py create mode 100644 env/lib/python3.6/site-packages/setuptools/gui-32.exe create mode 100644 env/lib/python3.6/site-packages/setuptools/gui-64.exe create mode 100644 env/lib/python3.6/site-packages/setuptools/gui.exe create mode 100644 env/lib/python3.6/site-packages/setuptools/launch.py create mode 100644 env/lib/python3.6/site-packages/setuptools/lib2to3_ex.py create mode 100644 env/lib/python3.6/site-packages/setuptools/monkey.py create mode 100644 env/lib/python3.6/site-packages/setuptools/msvc.py create mode 100644 env/lib/python3.6/site-packages/setuptools/namespaces.py create mode 100644 env/lib/python3.6/site-packages/setuptools/package_index.py create mode 100644 env/lib/python3.6/site-packages/setuptools/pep425tags.py create mode 100644 env/lib/python3.6/site-packages/setuptools/py27compat.py create mode 100644 env/lib/python3.6/site-packages/setuptools/py31compat.py create mode 100644 env/lib/python3.6/site-packages/setuptools/py33compat.py create mode 100644 env/lib/python3.6/site-packages/setuptools/py36compat.py create mode 100644 env/lib/python3.6/site-packages/setuptools/sandbox.py create mode 100644 env/lib/python3.6/site-packages/setuptools/script (dev).tmpl create mode 100644 env/lib/python3.6/site-packages/setuptools/script.tmpl create mode 100644 env/lib/python3.6/site-packages/setuptools/site-patch.py create mode 100644 env/lib/python3.6/site-packages/setuptools/ssl_support.py create mode 100644 env/lib/python3.6/site-packages/setuptools/unicode_utils.py create mode 100644 env/lib/python3.6/site-packages/setuptools/version.py create mode 100644 env/lib/python3.6/site-packages/setuptools/wheel.py create mode 100644 env/lib/python3.6/site-packages/setuptools/windows_support.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/__init__.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/_compat.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/_internal.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/_reloader.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/datastructures.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/exceptions.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/filesystem.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/formparser.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/http.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/local.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/posixemulation.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/routing.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/security.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/serving.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/test.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/testapp.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/urls.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/useragents.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/utils.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/__pycache__/wsgi.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/_compat.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/_internal.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/_reloader.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/datastructures.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/__init__.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/__pycache__/console.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/__pycache__/repr.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/__pycache__/tbtools.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/console.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/repr.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/shared/FONT_LICENSE create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/shared/console.png create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/shared/debugger.js create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/shared/jquery.js create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/shared/less.png create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/shared/more.png create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/shared/source.png create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/shared/style.css create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/shared/ubuntu.ttf create mode 100644 env/lib/python3.6/site-packages/werkzeug/debug/tbtools.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/exceptions.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/filesystem.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/formparser.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/http.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/local.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/__init__.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/lint.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/dispatcher.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/http_proxy.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/lint.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/profiler.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/proxy_fix.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/posixemulation.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/routing.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/security.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/serving.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/test.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/testapp.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/urls.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/useragents.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/utils.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__init__.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/accept.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/auth.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/base_request.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/base_response.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/common_descriptors.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/cors.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/etag.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/json.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/request.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/response.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/user_agent.cpython-36.pyc create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/accept.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/auth.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/base_request.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/common_descriptors.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/cors.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/etag.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/json.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/request.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/response.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wrappers/user_agent.py create mode 100644 env/lib/python3.6/site-packages/werkzeug/wsgi.py create mode 120000 env/lib64 create mode 100644 env/pyvenv.cfg create mode 100644 env/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/certifi-2018.1.18-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/chardet-3.0.4-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/colorama-0.3.7-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/distlib-0.2.6-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/distro-1.0.1-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/html5lib-0.999999999-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/idna-2.6-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/ipaddress-0.0.0-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/packaging-17.1-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/pip-9.0.1-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/progress-1.2-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/pyparsing-2.2.0-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/requests-2.18.4-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/setuptools-39.0.1-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/six-1.11.0-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/urllib3-1.22-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/webencodings-0.5-py2.py3-none-any.whl create mode 100644 env/share/python-wheels/wheel-0.30.0-py2.py3-none-any.whl diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..de288e1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.formatting.provider": "black" +} \ No newline at end of file diff --git a/README.md b/README.md index 7cc4902..6a411a8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ # secure-python-flask-api Creating a minimal api for secure login using Python Flask + + +To Run: +``` +source env/bin/activate +python api.py +``` \ No newline at end of file diff --git a/api.py b/api.py new file mode 100644 index 0000000..e56e6bc --- /dev/null +++ b/api.py @@ -0,0 +1,48 @@ +import flask +from flask import request, jsonify + +app = flask.Flask(__name__) +app.config["DEBUG"] = True + +# https://programminghistorian.org/en/lessons/creating-apis-with-python-and-flask +# Add weather data for our catalog +weather = [ + {"city": "Denver", "state": "Colorado", "date": "03/27/2021", "temperature": 58}, + {"city": "Denver", "state": "Colorado", "date": "03/28/2021", "temperature": 67}, + {"city": "Golden", "state": "Colorado", "date": "03/27/2021", "temperature": 46}, + {"city": "Golden", "state": "Colorado", "date": "03/28/2021", "temperature": 63}, +] + + +@app.route("/", methods=["GET"]) +def home(): + return "

Phillip's Home Page

" + + +@app.route("/api/v1/resources/weather/all", methods=["GET"]) +def api_all(): + return jsonify(weather) + + +@app.route("/api/v1/resources/weather", methods=["GET"]) +def api_id(): + # Retrieves all temperatures for city/state + + # Check if an ID was provided as part of the URL. + # If ID is provided, assign it to a variable. + # If no ID is provided, display an error in the browser. + if "city" in request.args and "state" in request.args: + city = request.args["city"] + state = request.args["state"] + else: + return "Error: no city/state provided. Please specify city/state" + + results = [] + for row in weather: + if row["city"] == city and row["state"] == state: + results.append(row) + + return jsonify(results) + + +app.run() \ No newline at end of file diff --git a/env/bin/activate b/env/bin/activate new file mode 100644 index 0000000..f2e3357 --- /dev/null +++ b/env/bin/activate @@ -0,0 +1,76 @@ +# 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/phillip/Documents/Personal_Projects/secure-python-flask-api/env" +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(env) " != x ] ; then + PS1="(env) ${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/env/bin/activate.csh b/env/bin/activate.csh new file mode 100644 index 0000000..a5172a0 --- /dev/null +++ b/env/bin/activate.csh @@ -0,0 +1,37 @@ +# 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/phillip/Documents/Personal_Projects/secure-python-flask-api/env" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + if ("env" != "") then + set env_name = "env" + 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/env/bin/activate.fish b/env/bin/activate.fish new file mode 100644 index 0000000..4588d36 --- /dev/null +++ b/env/bin/activate.fish @@ -0,0 +1,75 @@ +# 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/phillip/Documents/Personal_Projects/secure-python-flask-api/env" + +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 "(env) " + printf "%s%s" "(env) " (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/env/bin/easy_install b/env/bin/easy_install new file mode 100755 index 0000000..5538105 --- /dev/null +++ b/env/bin/easy_install @@ -0,0 +1,11 @@ +#!/home/phillip/Documents/Personal_Projects/secure-python-flask-api/env/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/env/bin/easy_install-3.6 b/env/bin/easy_install-3.6 new file mode 100755 index 0000000..5538105 --- /dev/null +++ b/env/bin/easy_install-3.6 @@ -0,0 +1,11 @@ +#!/home/phillip/Documents/Personal_Projects/secure-python-flask-api/env/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/env/bin/flask b/env/bin/flask new file mode 100755 index 0000000..15fe777 --- /dev/null +++ b/env/bin/flask @@ -0,0 +1,11 @@ +#!/home/phillip/Documents/Personal_Projects/secure-python-flask-api/env/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/env/bin/pip b/env/bin/pip new file mode 100755 index 0000000..a8e2578 --- /dev/null +++ b/env/bin/pip @@ -0,0 +1,11 @@ +#!/home/phillip/Documents/Personal_Projects/secure-python-flask-api/env/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/env/bin/pip3 b/env/bin/pip3 new file mode 100755 index 0000000..a8e2578 --- /dev/null +++ b/env/bin/pip3 @@ -0,0 +1,11 @@ +#!/home/phillip/Documents/Personal_Projects/secure-python-flask-api/env/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/env/bin/pip3.6 b/env/bin/pip3.6 new file mode 100755 index 0000000..a8e2578 --- /dev/null +++ b/env/bin/pip3.6 @@ -0,0 +1,11 @@ +#!/home/phillip/Documents/Personal_Projects/secure-python-flask-api/env/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/env/bin/python b/env/bin/python new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/env/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/env/bin/python3 b/env/bin/python3 new file mode 120000 index 0000000..ae65fda --- /dev/null +++ b/env/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/INSTALLER b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/LICENSE.rst b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/LICENSE.rst new file mode 100644 index 0000000..9d227a0 --- /dev/null +++ b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/LICENSE.rst @@ -0,0 +1,28 @@ +Copyright 2010 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. 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. + +3. 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 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, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/METADATA b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/METADATA new file mode 100644 index 0000000..db7fcd1 --- /dev/null +++ b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/METADATA @@ -0,0 +1,137 @@ +Metadata-Version: 2.1 +Name: Flask +Version: 1.1.2 +Summary: A simple framework for building complex web applications. +Home-page: https://palletsprojects.com/p/flask/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +Maintainer: Pallets +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +Project-URL: Documentation, https://flask.palletsprojects.com/ +Project-URL: Code, https://github.com/pallets/flask +Project-URL: Issue tracker, https://github.com/pallets/flask/issues +Platform: UNKNOWN +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.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +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 +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* +Requires-Dist: Werkzeug (>=0.15) +Requires-Dist: Jinja2 (>=2.10.1) +Requires-Dist: itsdangerous (>=0.24) +Requires-Dist: click (>=5.1) +Provides-Extra: dev +Requires-Dist: pytest ; 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' +Requires-Dist: sphinx-issues ; extra == 'dev' +Provides-Extra: docs +Requires-Dist: sphinx ; extra == 'docs' +Requires-Dist: pallets-sphinx-themes ; extra == 'docs' +Requires-Dist: sphinxcontrib-log-cabinet ; extra == 'docs' +Requires-Dist: sphinx-issues ; 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 + + $ env FLASK_APP=hello.py flask run + * Serving Flask app "hello" + * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) + + +Contributing +------------ + +For guidance on setting up a development environment and how to make a +contribution to Flask, see the `contributing guidelines`_. + +.. _contributing guidelines: https://github.com/pallets/flask/blob/master/CONTRIBUTING.rst + + +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://palletsprojects.com/p/flask/ +* Documentation: https://flask.palletsprojects.com/ +* Releases: https://pypi.org/project/Flask/ +* Code: https://github.com/pallets/flask +* Issue tracker: https://github.com/pallets/flask/issues +* Test status: https://dev.azure.com/pallets/flask/_build +* Official chat: https://discord.gg/t6rrQZH + +.. _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/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/RECORD b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/RECORD new file mode 100644 index 0000000..6b5bfae --- /dev/null +++ b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/RECORD @@ -0,0 +1,48 @@ +flask/__init__.py,sha256=YnA9wkwbJcnb_jTT-nMsMFeFE_UWt33khKzdHmMSuyI,1894 +flask/__main__.py,sha256=fjVtt3QTANXlpJCOv3Ha7d5H-76MwzSIOab7SFD9TEk,254 +flask/_compat.py,sha256=8KPT54Iig96TuLipdogLRHNYToIcg-xPhnSV5VRERnw,4099 +flask/app.py,sha256=tmEhx_XrIRP24vZg39dHMWFzJ2jj-YxIcd51LaIT5cE,98059 +flask/blueprints.py,sha256=vkdm8NusGsfZUeIfPdCluj733QFmiQcT4Sk1tuZLUjw,21400 +flask/cli.py,sha256=SIb22uq9wYBeB2tKMl0pYdhtZ1MAQyZtPL-3m6es4G0,31035 +flask/config.py,sha256=3dejvQRYfNHw_V7dCLMxU8UNFpL34xIKemN7gHZIZ8Y,10052 +flask/ctx.py,sha256=cks-omGedkxawHFo6bKIrdOHsJCAgg1i_NWw_htxb5U,16724 +flask/debughelpers.py,sha256=-whvPKuAoU8AZ9c1z_INuOeBgfYDqE1J2xNBsoriugU,6475 +flask/globals.py,sha256=OgcHb6_NCyX6-TldciOdKcyj4PNfyQwClxdMhvov6aA,1637 +flask/helpers.py,sha256=IHa578HU_3XAAo1wpXQv24MYRYO5TzaiDQQwvUIcE6Q,43074 +flask/logging.py,sha256=WcY5UkqTysGfmosyygSlXyZYGwOp3y-VsE6ehoJ48dk,3250 +flask/sessions.py,sha256=G0KsEkr_i1LG_wOINwFSOW3ts7Xbv4bNgEZKc7TRloc,14360 +flask/signals.py,sha256=yYLOed2x8WnQ7pirGalQYfpYpCILJ0LJhmNSrnWvjqw,2212 +flask/templating.py,sha256=F8E_IZXn9BGsjMzUJ5N_ACMyZdiFBp_SSEaUunvfZ7g,4939 +flask/testing.py,sha256=WXsciCQbHBP7xjHqNvOA4bT0k86GvSNpgzncfXLDEEg,10146 +flask/views.py,sha256=eeWnadLAj0QdQPLtjKipDetRZyG62CT2y7fNOFDJz0g,5802 +flask/wrappers.py,sha256=kgsvtZuMM6RQaDqhRbc5Pcj9vqTnaERl2pmXcdGL7LU,4736 +flask/json/__init__.py,sha256=6nITbZYiYOPB8Qfi1-dvsblwn01KRz8VOsMBIZyaYek,11988 +flask/json/tag.py,sha256=vq9GOllg_0kTWKuVFrwmkeOQzR-jdBD23x-89JyCCQI,8306 +Flask-1.1.2.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 +Flask-1.1.2.dist-info/METADATA,sha256=3INpPWH6nKfZ33R2N-bQZy4TOe1wQCMweZc9mwcNrtc,4591 +Flask-1.1.2.dist-info/WHEEL,sha256=8zNYZbwQSXoB9IfXOjPfeNwvAsALAjffgk27FqvCWbo,110 +Flask-1.1.2.dist-info/entry_points.txt,sha256=gBLA1aKg0OYR8AhbAfg8lnburHtKcgJLDU52BBctN0k,42 +Flask-1.1.2.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6 +Flask-1.1.2.dist-info/RECORD,, +../../../bin/flask,sha256=1dZf-B9wznqZCTxVniq_ELSd_wWZN4nLSktKmjUKPtM,277 +Flask-1.1.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +flask/json/__pycache__/tag.cpython-36.pyc,, +flask/json/__pycache__/__init__.cpython-36.pyc,, +flask/__pycache__/config.cpython-36.pyc,, +flask/__pycache__/views.cpython-36.pyc,, +flask/__pycache__/app.cpython-36.pyc,, +flask/__pycache__/logging.cpython-36.pyc,, +flask/__pycache__/globals.cpython-36.pyc,, +flask/__pycache__/blueprints.cpython-36.pyc,, +flask/__pycache__/cli.cpython-36.pyc,, +flask/__pycache__/templating.cpython-36.pyc,, +flask/__pycache__/wrappers.cpython-36.pyc,, +flask/__pycache__/debughelpers.cpython-36.pyc,, +flask/__pycache__/testing.cpython-36.pyc,, +flask/__pycache__/sessions.cpython-36.pyc,, +flask/__pycache__/helpers.cpython-36.pyc,, +flask/__pycache__/__main__.cpython-36.pyc,, +flask/__pycache__/ctx.cpython-36.pyc,, +flask/__pycache__/_compat.cpython-36.pyc,, +flask/__pycache__/signals.cpython-36.pyc,, +flask/__pycache__/__init__.cpython-36.pyc,, diff --git a/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/WHEEL b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/WHEEL new file mode 100644 index 0000000..8b701e9 --- /dev/null +++ b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.33.6) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/entry_points.txt b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/entry_points.txt new file mode 100644 index 0000000..1eb0252 --- /dev/null +++ b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +flask = flask.cli:main + diff --git a/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/top_level.txt b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/top_level.txt new file mode 100644 index 0000000..7e10602 --- /dev/null +++ b/env/lib/python3.6/site-packages/Flask-1.1.2.dist-info/top_level.txt @@ -0,0 +1 @@ +flask diff --git a/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/INSTALLER b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/LICENSE.rst b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/LICENSE.rst new file mode 100644 index 0000000..c37cae4 --- /dev/null +++ b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/LICENSE.rst @@ -0,0 +1,28 @@ +Copyright 2007 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. 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. + +3. 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 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, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/METADATA b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/METADATA new file mode 100644 index 0000000..1af8df0 --- /dev/null +++ b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/METADATA @@ -0,0 +1,106 @@ +Metadata-Version: 2.1 +Name: Jinja2 +Version: 2.11.3 +Summary: A very fast and expressive template engine. +Home-page: https://palletsprojects.com/p/jinja/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +Maintainer: Pallets +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +Project-URL: Documentation, https://jinja.palletsprojects.com/ +Project-URL: Code, https://github.com/pallets/jinja +Project-URL: Issue tracker, https://github.com/pallets/jinja/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.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +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 +Classifier: Topic :: Text Processing :: Markup :: HTML +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* +Description-Content-Type: text/x-rst +Requires-Dist: MarkupSafe (>=0.23) +Provides-Extra: i18n +Requires-Dist: Babel (>=0.8) ; extra == 'i18n' + +Jinja +===== + +Jinja is a fast, expressive, extensible templating engine. Special +placeholders in the template allow writing code similar to Python +syntax. Then the template is passed data to render the final document. + +It includes: + +- Template inheritance and inclusion. +- Define and import macros within templates. +- HTML templates can use autoescaping to prevent XSS from untrusted + user input. +- A sandboxed environment can safely render untrusted templates. +- AsyncIO support for generating templates and calling async + functions. +- I18N support with Babel. +- Templates are compiled to optimized Python code just-in-time and + cached, or can be compiled ahead-of-time. +- Exceptions point to the correct line in templates to make debugging + easier. +- Extensible filters, tests, functions, and even syntax. + +Jinja's philosophy is that while application logic belongs in Python if +possible, it shouldn't make the template designer's job difficult by +restricting functionality too much. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + $ pip install -U Jinja2 + +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + +In A Nutshell +------------- + +.. code-block:: jinja + + {% extends "base.html" %} + {% block title %}Members{% endblock %} + {% block content %} + + {% endblock %} + + +Links +----- + +- Website: https://palletsprojects.com/p/jinja/ +- Documentation: https://jinja.palletsprojects.com/ +- Releases: https://pypi.org/project/Jinja2/ +- Code: https://github.com/pallets/jinja +- Issue tracker: https://github.com/pallets/jinja/issues +- Test status: https://dev.azure.com/pallets/jinja/_build +- Official chat: https://discord.gg/t6rrQZH + + diff --git a/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/RECORD b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/RECORD new file mode 100644 index 0000000..1fc14e3 --- /dev/null +++ b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/RECORD @@ -0,0 +1,61 @@ +jinja2/__init__.py,sha256=LZUXmxJc2GIchfSAeMWsxCWiQYO-w1-736f2Q3I8ms8,1549 +jinja2/_compat.py,sha256=B6Se8HjnXVpzz9-vfHejn-DV2NjaVK-Iewupc5kKlu8,3191 +jinja2/_identifier.py,sha256=EdgGJKi7O1yvr4yFlvqPNEqV6M1qHyQr8Gt8GmVTKVM,1775 +jinja2/asyncfilters.py,sha256=XJtYXTxFvcJ5xwk6SaDL4S0oNnT0wPYvXBCSzc482fI,4250 +jinja2/asyncsupport.py,sha256=ZBFsDLuq3Gtji3Ia87lcyuDbqaHZJRdtShZcqwpFnSQ,7209 +jinja2/bccache.py,sha256=3Pmp4jo65M9FQuIxdxoDBbEDFwe4acDMQf77nEJfrHA,12139 +jinja2/compiler.py,sha256=Ta9W1Lit542wItAHXlDcg0sEOsFDMirCdlFPHAurg4o,66284 +jinja2/constants.py,sha256=RR1sTzNzUmKco6aZicw4JpQpJGCuPuqm1h1YmCNUEFY,1458 +jinja2/debug.py,sha256=neR7GIGGjZH3_ILJGVUYy3eLQCCaWJMXOb7o0kGInWc,8529 +jinja2/defaults.py,sha256=85B6YUUCyWPSdrSeVhcqFVuu_bHUAQXeey--FIwSeVQ,1126 +jinja2/environment.py,sha256=XDSLKc4SqNLMOwTSq3TbWEyA5WyXfuLuVD0wAVjEFwM,50629 +jinja2/exceptions.py,sha256=VjNLawcmf2ODffqVMCQK1cRmvFaUfQWF4u8ouP3QPcE,5425 +jinja2/ext.py,sha256=AtwL5O5enT_L3HR9-oBvhGyUTdGoyaqG_ICtnR_EVd4,26441 +jinja2/filters.py,sha256=9ORilsZrUoydSI9upz8_qGy7gozDWLYoFmlIBFSVRnQ,41439 +jinja2/idtracking.py,sha256=J3O4VHsrbf3wzwiBc7Cro26kHb6_5kbULeIOzocchIU,9211 +jinja2/lexer.py,sha256=nUFLRKhhKmmEWkLI65nQePgcQs7qsRdjVYZETMt_v0g,30331 +jinja2/loaders.py,sha256=C-fST_dmFjgWkp0ZuCkrgICAoOsoSIF28wfAFink0oU,17666 +jinja2/meta.py,sha256=QjyYhfNRD3QCXjBJpiPl9KgkEkGXJbAkCUq4-Ur10EQ,4131 +jinja2/nativetypes.py,sha256=Ul__gtVw4xH-0qvUvnCNHedQeNDwmEuyLJztzzSPeRg,2753 +jinja2/nodes.py,sha256=Mk1oJPVgIjnQw9WOqILvcu3rLepcFZ0ahxQm2mbwDwc,31095 +jinja2/optimizer.py,sha256=gQLlMYzvQhluhzmAIFA1tXS0cwgWYOjprN-gTRcHVsc,1457 +jinja2/parser.py,sha256=fcfdqePNTNyvosIvczbytVA332qpsURvYnCGcjDHSkA,35660 +jinja2/runtime.py,sha256=0y-BRyIEZ9ltByL2Id6GpHe1oDRQAwNeQvI0SKobNMw,30618 +jinja2/sandbox.py,sha256=knayyUvXsZ-F0mk15mO2-ehK9gsw04UhB8td-iUOtLc,17127 +jinja2/tests.py,sha256=iO_Y-9Vo60zrVe1lMpSl5sKHqAxe2leZHC08OoZ8K24,4799 +jinja2/utils.py,sha256=Wy4yC3IByqUWwnKln6SdaixdzgK74P6F5nf-gQZrYnU,22436 +jinja2/visitor.py,sha256=DUHupl0a4PGp7nxRtZFttUzAi1ccxzqc2hzetPYUz8U,3240 +Jinja2-2.11.3.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 +Jinja2-2.11.3.dist-info/METADATA,sha256=PscpJ1C3RSp8xcjV3fAuTz13rKbGxmzJXnMQFH-WKhs,3535 +Jinja2-2.11.3.dist-info/WHEEL,sha256=Z-nyYpwrcSqxfdux5Mbn_DQ525iP7J2DG3JgGvOYyTQ,110 +Jinja2-2.11.3.dist-info/entry_points.txt,sha256=Qy_DkVo6Xj_zzOtmErrATe8lHZhOqdjpt3e4JJAGyi8,61 +Jinja2-2.11.3.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7 +Jinja2-2.11.3.dist-info/RECORD,, +Jinja2-2.11.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +jinja2/__pycache__/exceptions.cpython-36.pyc,, +jinja2/__pycache__/visitor.cpython-36.pyc,, +jinja2/__pycache__/lexer.cpython-36.pyc,, +jinja2/__pycache__/compiler.cpython-36.pyc,, +jinja2/__pycache__/bccache.cpython-36.pyc,, +jinja2/__pycache__/idtracking.cpython-36.pyc,, +jinja2/__pycache__/utils.cpython-36.pyc,, +jinja2/__pycache__/asyncfilters.cpython-36.pyc,, +jinja2/__pycache__/tests.cpython-36.pyc,, +jinja2/__pycache__/nodes.cpython-36.pyc,, +jinja2/__pycache__/environment.cpython-36.pyc,, +jinja2/__pycache__/filters.cpython-36.pyc,, +jinja2/__pycache__/_identifier.cpython-36.pyc,, +jinja2/__pycache__/nativetypes.cpython-36.pyc,, +jinja2/__pycache__/constants.cpython-36.pyc,, +jinja2/__pycache__/meta.cpython-36.pyc,, +jinja2/__pycache__/parser.cpython-36.pyc,, +jinja2/__pycache__/ext.cpython-36.pyc,, +jinja2/__pycache__/runtime.cpython-36.pyc,, +jinja2/__pycache__/loaders.cpython-36.pyc,, +jinja2/__pycache__/sandbox.cpython-36.pyc,, +jinja2/__pycache__/optimizer.cpython-36.pyc,, +jinja2/__pycache__/defaults.cpython-36.pyc,, +jinja2/__pycache__/asyncsupport.cpython-36.pyc,, +jinja2/__pycache__/_compat.cpython-36.pyc,, +jinja2/__pycache__/debug.cpython-36.pyc,, +jinja2/__pycache__/__init__.cpython-36.pyc,, diff --git a/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/WHEEL b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/WHEEL new file mode 100644 index 0000000..01b8fc7 --- /dev/null +++ b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.36.2) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/entry_points.txt b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/entry_points.txt new file mode 100644 index 0000000..3619483 --- /dev/null +++ b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[babel.extractors] +jinja2 = jinja2.ext:babel_extract [i18n] + diff --git a/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/top_level.txt b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/top_level.txt new file mode 100644 index 0000000..7f7afbf --- /dev/null +++ b/env/lib/python3.6/site-packages/Jinja2-2.11.3.dist-info/top_level.txt @@ -0,0 +1 @@ +jinja2 diff --git a/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.txt b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.txt new file mode 100644 index 0000000..9d227a0 --- /dev/null +++ b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2010 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. 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. + +3. 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 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, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA new file mode 100644 index 0000000..b208d93 --- /dev/null +++ b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA @@ -0,0 +1,103 @@ +Metadata-Version: 2.1 +Name: MarkupSafe +Version: 1.1.1 +Summary: Safely add untrusted strings to HTML/XML markup. +Home-page: https://palletsprojects.com/p/markupsafe/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +Maintainer: The Pallets Team +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +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://palletsprojects.com/donate + + +Links +----- + +* Website: https://palletsprojects.com/p/markupsafe/ +* Documentation: https://markupsafe.palletsprojects.com/ +* License: `BSD-3-Clause `_ +* 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/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD new file mode 100644 index 0000000..b44f1ce --- /dev/null +++ b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD @@ -0,0 +1,16 @@ +MarkupSafe-1.1.1.dist-info/LICENSE.txt,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 +MarkupSafe-1.1.1.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 +MarkupSafe-1.1.1.dist-info/RECORD,, +MarkupSafe-1.1.1.dist-info/METADATA,sha256=nJHwJ4_4ka-V39QH883jPrslj6inNdyyNASBXbYgHXQ,3570 +MarkupSafe-1.1.1.dist-info/WHEEL,sha256=d2ILPScH-y2UwGxsW1PeA2TT-KW0Git4AJ6LeOK8sQo,109 +markupsafe/_constants.py,sha256=zo2ajfScG-l1Sb_52EP3MlDCqO7Y1BVHUXXKRsVDRNk,4690 +markupsafe/_compat.py,sha256=uEW1ybxEjfxIiuTbRRaJpHsPFf4yQUMMKaPgYEC5XbU,558 +markupsafe/_native.py,sha256=d-8S_zzYt2y512xYcuSxq0NeG2DUUvG80wVdTn-4KI8,1873 +markupsafe/__init__.py,sha256=oTblO5f9KFM-pvnq9bB0HgElnqkJyqHnFN1Nx2NIvnY,10126 +markupsafe/_speedups.cpython-36m-x86_64-linux-gnu.so,sha256=YAxqjdtS2XJQ043wfxMAnE1u7KpsBc49UrW9yGPiK0w,38875 +markupsafe/_speedups.c,sha256=k0fzEIK3CP6MmMqeY0ob43TP90mVN0DTyn7BAl3RqSg,9884 +MarkupSafe-1.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +markupsafe/__pycache__/_native.cpython-36.pyc,, +markupsafe/__pycache__/_constants.cpython-36.pyc,, +markupsafe/__pycache__/_compat.cpython-36.pyc,, +markupsafe/__pycache__/__init__.cpython-36.pyc,, diff --git a/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL new file mode 100644 index 0000000..92946fe --- /dev/null +++ b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.31.1) +Root-Is-Purelib: false +Tag: cp36-cp36m-manylinux1_x86_64 + diff --git a/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt new file mode 100644 index 0000000..75bf729 --- /dev/null +++ b/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt @@ -0,0 +1 @@ +markupsafe diff --git a/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/INSTALLER b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/LICENSE.rst b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/LICENSE.rst new file mode 100644 index 0000000..c37cae4 --- /dev/null +++ b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/LICENSE.rst @@ -0,0 +1,28 @@ +Copyright 2007 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. 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. + +3. 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 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, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/METADATA b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/METADATA new file mode 100644 index 0000000..eb5f709 --- /dev/null +++ b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/METADATA @@ -0,0 +1,128 @@ +Metadata-Version: 2.1 +Name: Werkzeug +Version: 1.0.1 +Summary: The comprehensive WSGI web application library. +Home-page: https://palletsprojects.com/p/werkzeug/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +Maintainer: Pallets +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +Project-URL: Documentation, https://werkzeug.palletsprojects.com/ +Project-URL: Code, https://github.com/pallets/werkzeug +Project-URL: Issue tracker, https://github.com/pallets/werkzeug/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.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware +Classifier: Topic :: Software Development :: Libraries :: Application Frameworks +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* +Description-Content-Type: text/x-rst +Provides-Extra: dev +Requires-Dist: pytest ; extra == 'dev' +Requires-Dist: pytest-timeout ; 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: sphinx-issues ; extra == 'dev' +Provides-Extra: watchdog +Requires-Dist: watchdog ; extra == 'watchdog' + +Werkzeug +======== + +*werkzeug* German noun: "tool". Etymology: *werk* ("work"), *zeug* ("stuff") + +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://palletsprojects.com/p/werkzeug/ +- Documentation: https://werkzeug.palletsprojects.com/ +- Releases: https://pypi.org/project/Werkzeug/ +- Code: https://github.com/pallets/werkzeug +- Issue tracker: https://github.com/pallets/werkzeug/issues +- Test status: https://dev.azure.com/pallets/werkzeug/_build +- Official chat: https://discord.gg/t6rrQZH + +.. _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/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/RECORD b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/RECORD new file mode 100644 index 0000000..e2aca7a --- /dev/null +++ b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/RECORD @@ -0,0 +1,101 @@ +werkzeug/__init__.py,sha256=rb-yPiXOjTLbtDOl5fQp5hN7oBdaoXAoQ-slAAvfZAo,502 +werkzeug/_compat.py,sha256=zjufTNrhQ8BgYSGSh-sVu6iW3r3O9WzjE9j-qJobx-g,6671 +werkzeug/_internal.py,sha256=d_4AqheyS6dHMViwdc0drFrjs67ZzT6Ej2gWf-Z-Iys,14351 +werkzeug/_reloader.py,sha256=I3mg3oRQ0lLzl06oEoVopN3bN7CtINuuUQdqDcmTnEs,11531 +werkzeug/datastructures.py,sha256=AonxOcwU0TPMEzfKF1368ySULxHgxE-JE-DEAGdo2ts,100480 +werkzeug/exceptions.py,sha256=UTYSDkmAsH-vt8VSidlEffwqBVNXuT7bRg-_NqgUe8A,25188 +werkzeug/filesystem.py,sha256=HzKl-j0Hd8Jl66j778UbPTAYNnY6vUZgYLlBZ0e7uw0,2101 +werkzeug/formparser.py,sha256=Sto0jZid9im9ZVIf56vilCdyX-arK33wSftkYsLCnzo,21788 +werkzeug/http.py,sha256=KVRV3yFK14PJeI56qClEq4qxFdvKUQVy4C_dwuWz9_Q,43107 +werkzeug/local.py,sha256=_Tk7gB238pPWUU7habxFkZF02fiCMRVW6d62YWL1Rh0,14371 +werkzeug/posixemulation.py,sha256=gSSiv1SCmOyzOM_nq1ZaZCtxP__C5MeDJl_4yXJmi4Q,3541 +werkzeug/routing.py,sha256=6-iZ7CKeUILYAehoKXLbmi5E6LgLbwuzUh8TNplnf5Q,79019 +werkzeug/security.py,sha256=81149MplFq7-hD4RK4sKp9kzXXejjV9D4lWBzaRyeQ8,8106 +werkzeug/serving.py,sha256=YvTqvurA-Mnj8mkqRe2kBdVr2ap4ibCq1ByQjOA6g1w,38694 +werkzeug/test.py,sha256=GJ9kxTMSJ-nB7kfGtxuROr9JGmXxDRev-2U1SkeUJGE,39564 +werkzeug/testapp.py,sha256=bHekqMsqRfVxwgFbvOMem-DYa_sdB7R47yUXpt1RUTo,9329 +werkzeug/urls.py,sha256=T8-hV_1vwhu6xhX93FwsHteK-W-kIE2orj5WoMf-WFw,39322 +werkzeug/useragents.py,sha256=TSoGv5IOvP375eK5gLLpsLQCeUgTR6sO1WftmAP_YvM,5563 +werkzeug/utils.py,sha256=hrVK4u_wi8z9viBO9bgOLlm1aaIvCpn-p2d1FeZQDEo,25251 +werkzeug/wsgi.py,sha256=ZGk85NzRyQTzkYis-xl8V9ydJgfClBdStvhzDzER2mw,34367 +werkzeug/debug/__init__.py,sha256=3RtUMc5Y9hYyK11ugHltgkQ9Dt-ViR945Vy_X5NV7zU,17289 +werkzeug/debug/console.py,sha256=OATaO7KHYMqpbzIFe1HeW9Mnl3wZgA3jMQoGDPn5URc,5488 +werkzeug/debug/repr.py,sha256=lIwuhbyrMwVe3P_cFqNyqzHL7P93TLKod7lw9clydEw,9621 +werkzeug/debug/tbtools.py,sha256=2iJ8RURUZUSbopOIehy53LnVJWx47lsHN2V2l6hc7Wc,20363 +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=rOhqZMRfpZnnu6_XCGn6wMWPhtfwRAcyZKksdIxPJas,6400 +werkzeug/debug/shared/jquery.js,sha256=CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo,88145 +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=gZ9uhmb5zj3XLuT9RvnMp6jMINgQ-VVBCp-2AZbG3YQ,6604 +werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220 +werkzeug/middleware/__init__.py,sha256=f1SFZo67IlW4k1uqKzNHxYQlsakUS-D6KK_j0e3jjwQ,549 +werkzeug/middleware/dispatcher.py,sha256=_-KoMzHtcISHS7ouWKAOraqlCLprdh83YOAn_8DjLp8,2240 +werkzeug/middleware/http_proxy.py,sha256=lRjTdMmghHiZuZrS7_UJ3gZc-vlFizhBbFZ-XZPLwIA,7117 +werkzeug/middleware/lint.py,sha256=ItTwuWJnflF8xMT1uqU_Ty1ryhux-CjeUfskqaUpxsw,12967 +werkzeug/middleware/profiler.py,sha256=8B_s23d6BGrU_q54gJsm6kcCbOJbTSqrXCsioHON0Xs,4471 +werkzeug/middleware/proxy_fix.py,sha256=K5oZ3DPXOzdZi0Xba5zW7ClPOxgUuqXHQHvY2-AWCGw,6431 +werkzeug/middleware/shared_data.py,sha256=sPSRTKqtKSVBUyN8fr6jOJbdq9cdOLu6pg3gz4Y_1Xo,9599 +werkzeug/wrappers/__init__.py,sha256=S4VioKAmF_av9Ec9zQvG71X1EOkYfPx1TYck9jyDiyY,1384 +werkzeug/wrappers/accept.py,sha256=TIvjUc0g73fhTWX54wg_D9NNzKvpnG1X8u1w26tK1o8,1760 +werkzeug/wrappers/auth.py,sha256=Pmn6iaGHBrUyHbJpW0lZhO_q9RVoAa5QalaTqcavdAI,1158 +werkzeug/wrappers/base_request.py,sha256=4TuGlKWeKQdlq4eU94hJYcXSfWo8Rk7CS1Ef5lJ3ZM0,26012 +werkzeug/wrappers/base_response.py,sha256=JTxJZ8o-IBetpoWJqt2HFwPaNWNDAlM3_GXJe1Whw80,27784 +werkzeug/wrappers/common_descriptors.py,sha256=X2Ktd5zUWsmcd4ciaF62Dd8Lru9pLGP_XDUNukc8cXs,12829 +werkzeug/wrappers/cors.py,sha256=XMbaCol4dWTGvb-dCJBoN0p3JX91v93AIAHd7tnB3L4,3466 +werkzeug/wrappers/etag.py,sha256=XMXtyfByBsOjxwaX8U7ZtUY7JXkbQLP45oXZ0qkyTNs,12217 +werkzeug/wrappers/json.py,sha256=HvK_A4NpO0sLqgb10sTJcoZydYOwyNiPCJPV7SVgcgE,4343 +werkzeug/wrappers/request.py,sha256=QbHGqDpGPN684pnOPEokwkPESfm-NnfYM7ydOMxW_NI,1514 +werkzeug/wrappers/response.py,sha256=Oqv8TMG_dnOKTq_V30ddgkO5B7IJhkVPODvm7cbhZ3c,2524 +werkzeug/wrappers/user_agent.py,sha256=YJb-vr12cujG7sQMG9V89VsJa-03SWSenhg1W4cT0EY,435 +Werkzeug-1.0.1.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 +Werkzeug-1.0.1.dist-info/METADATA,sha256=d0zmVNa4UC2-nAo2A8_81oiy123D6JTGRSuY_Ymgyt4,4730 +Werkzeug-1.0.1.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110 +Werkzeug-1.0.1.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9 +Werkzeug-1.0.1.dist-info/RECORD,, +Werkzeug-1.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +werkzeug/wrappers/__pycache__/json.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/auth.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/response.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/cors.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/etag.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/common_descriptors.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/base_response.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/base_request.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/user_agent.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/accept.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/request.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc,, +werkzeug/__pycache__/exceptions.cpython-36.pyc,, +werkzeug/__pycache__/security.cpython-36.pyc,, +werkzeug/__pycache__/useragents.cpython-36.pyc,, +werkzeug/__pycache__/_internal.cpython-36.pyc,, +werkzeug/__pycache__/urls.cpython-36.pyc,, +werkzeug/__pycache__/utils.cpython-36.pyc,, +werkzeug/__pycache__/http.cpython-36.pyc,, +werkzeug/__pycache__/testapp.cpython-36.pyc,, +werkzeug/__pycache__/datastructures.cpython-36.pyc,, +werkzeug/__pycache__/formparser.cpython-36.pyc,, +werkzeug/__pycache__/posixemulation.cpython-36.pyc,, +werkzeug/__pycache__/serving.cpython-36.pyc,, +werkzeug/__pycache__/local.cpython-36.pyc,, +werkzeug/__pycache__/wsgi.cpython-36.pyc,, +werkzeug/__pycache__/test.cpython-36.pyc,, +werkzeug/__pycache__/routing.cpython-36.pyc,, +werkzeug/__pycache__/_reloader.cpython-36.pyc,, +werkzeug/__pycache__/filesystem.cpython-36.pyc,, +werkzeug/__pycache__/_compat.cpython-36.pyc,, +werkzeug/__pycache__/__init__.cpython-36.pyc,, +werkzeug/middleware/__pycache__/shared_data.cpython-36.pyc,, +werkzeug/middleware/__pycache__/proxy_fix.cpython-36.pyc,, +werkzeug/middleware/__pycache__/http_proxy.cpython-36.pyc,, +werkzeug/middleware/__pycache__/profiler.cpython-36.pyc,, +werkzeug/middleware/__pycache__/lint.cpython-36.pyc,, +werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc,, +werkzeug/middleware/__pycache__/__init__.cpython-36.pyc,, +werkzeug/debug/__pycache__/console.cpython-36.pyc,, +werkzeug/debug/__pycache__/tbtools.cpython-36.pyc,, +werkzeug/debug/__pycache__/repr.cpython-36.pyc,, +werkzeug/debug/__pycache__/__init__.cpython-36.pyc,, diff --git a/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/WHEEL b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/WHEEL new file mode 100644 index 0000000..ef99c6c --- /dev/null +++ b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.34.2) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/top_level.txt b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/top_level.txt new file mode 100644 index 0000000..6fe8da8 --- /dev/null +++ b/env/lib/python3.6/site-packages/Werkzeug-1.0.1.dist-info/top_level.txt @@ -0,0 +1 @@ +werkzeug diff --git a/env/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc b/env/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80fc83c995868483f4bf39304aa22e2bda14dc42 GIT binary patch literal 275 zcmYk!y-LJD5C`zt-KaslClEB)rMLtXu@SMcu(3G1G;@2m3m4okvYX;k*!Uv0`bcT5 zd<82fD(b+0K4AEr&1U;Zi6_()G@zMc54<~4TnWRiXaoZ-o`8YM z?xEZn4i~*E(nc3IGH!2OOwyQQ?X8tgjX9!~twVe#4oWs=(|K2B;~t{&YsBfrNvjc? z~lJ_Q7KR~4k#r9k61Q{>T?b7&aAE$M)p$=`Bulm-g`7ngxd~>m?|D^iAP=)Q7 TUs|tvqpuh-ak4U=vjg@C3*b$B literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click-7.1.2.dist-info/INSTALLER b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.6/site-packages/click-7.1.2.dist-info/LICENSE.rst b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/LICENSE.rst new file mode 100644 index 0000000..d12a849 --- /dev/null +++ b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/LICENSE.rst @@ -0,0 +1,28 @@ +Copyright 2014 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. 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. + +3. 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 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, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/env/lib/python3.6/site-packages/click-7.1.2.dist-info/METADATA b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/METADATA new file mode 100644 index 0000000..00d6974 --- /dev/null +++ b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/METADATA @@ -0,0 +1,102 @@ +Metadata-Version: 2.1 +Name: click +Version: 7.1.2 +Summary: Composable command line interface toolkit +Home-page: https://palletsprojects.com/p/click/ +Maintainer: Pallets +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +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 :: 3 +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* + +\$ 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 -U click + +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + +A Simple Example +---------------- + +.. 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(f"Hello, {name}!") + + if __name__ == '__main__': + hello() + +.. 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/ +- Releases: https://pypi.org/project/click/ +- Code: https://github.com/pallets/click +- Issue tracker: https://github.com/pallets/click/issues +- Test status: https://dev.azure.com/pallets/click/_build +- Official chat: https://discord.gg/t6rrQZH + + diff --git a/env/lib/python3.6/site-packages/click-7.1.2.dist-info/RECORD b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/RECORD new file mode 100644 index 0000000..7117a60 --- /dev/null +++ b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/RECORD @@ -0,0 +1,40 @@ +click/__init__.py,sha256=FkyGDQ-cbiQxP_lxgUspyFYS48f2S_pTcfKPz-d_RMo,2463 +click/_bashcomplete.py,sha256=9J98IHQYmCAr2Jup6TDshUr5FJEen-AoQCZR0K5nKxQ,12309 +click/_compat.py,sha256=AoMaYnZ-3pwtNXuHtlb6_UXsayoG0QZiHKIRy2VFezc,24169 +click/_termui_impl.py,sha256=yNktUMAdjYOU1HMkq915jR3zgAzUNtGSQqSTSSMn3eQ,20702 +click/_textwrap.py,sha256=ajCzkzFly5tjm9foQ5N9_MOeaYJMBjAltuFa69n4iXY,1197 +click/_unicodefun.py,sha256=apLSNEBZgUsQNPMUv072zJ1swqnm0dYVT5TqcIWTt6w,4201 +click/_winconsole.py,sha256=6YDu6Rq1Wxx4w9uinBMK2LHvP83aerZM9GQurlk3QDo,10010 +click/core.py,sha256=V6DJzastGhrC6WTDwV9MSLwcJUdX2Uf1ypmgkjBdn_Y,77650 +click/decorators.py,sha256=3TvEO_BkaHl7k6Eh1G5eC7JK4LKPdpFqH9JP0QDyTlM,11215 +click/exceptions.py,sha256=3pQAyyMFzx5A3eV0Y27WtDTyGogZRbrC6_o5DjjKBbw,8118 +click/formatting.py,sha256=Wb4gqFEpWaKPgAbOvnkCl8p-bEZx5KpM5ZSByhlnJNk,9281 +click/globals.py,sha256=ht7u2kUGI08pAarB4e4yC8Lkkxy6gJfRZyzxEj8EbWQ,1501 +click/parser.py,sha256=mFK-k58JtPpqO0AC36WAr0t5UfzEw1mvgVSyn7WCe9M,15691 +click/termui.py,sha256=G7QBEKIepRIGLvNdGwBTYiEtSImRxvTO_AglVpyHH2s,23998 +click/testing.py,sha256=EUEsDUqNXFgCLhZ0ZFOROpaVDA5I_rijwnNPE6qICgA,12854 +click/types.py,sha256=wuubik4VqgqAw5dvbYFkDt-zSAx97y9TQXuXcVaRyQA,25045 +click/utils.py,sha256=4VEcJ7iEHwjnFuzEuRtkT99o5VG3zqSD7Q2CVzv13WU,15940 +click-7.1.2.dist-info/LICENSE.rst,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 +click-7.1.2.dist-info/METADATA,sha256=LrRgakZKV7Yg3qJqX_plu2WhFW81MzP3EqQmZhHIO8M,2868 +click-7.1.2.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110 +click-7.1.2.dist-info/top_level.txt,sha256=J1ZQogalYS4pphY_lPECoNMfw0HzTSrZglC4Yfwo4xA,6 +click-7.1.2.dist-info/RECORD,, +click-7.1.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +click/__pycache__/exceptions.cpython-36.pyc,, +click/__pycache__/_winconsole.cpython-36.pyc,, +click/__pycache__/_termui_impl.cpython-36.pyc,, +click/__pycache__/core.cpython-36.pyc,, +click/__pycache__/decorators.cpython-36.pyc,, +click/__pycache__/utils.cpython-36.pyc,, +click/__pycache__/_bashcomplete.cpython-36.pyc,, +click/__pycache__/globals.cpython-36.pyc,, +click/__pycache__/termui.cpython-36.pyc,, +click/__pycache__/parser.cpython-36.pyc,, +click/__pycache__/testing.cpython-36.pyc,, +click/__pycache__/_unicodefun.cpython-36.pyc,, +click/__pycache__/types.cpython-36.pyc,, +click/__pycache__/formatting.cpython-36.pyc,, +click/__pycache__/_compat.cpython-36.pyc,, +click/__pycache__/_textwrap.cpython-36.pyc,, +click/__pycache__/__init__.cpython-36.pyc,, diff --git a/env/lib/python3.6/site-packages/click-7.1.2.dist-info/WHEEL b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/WHEEL new file mode 100644 index 0000000..ef99c6c --- /dev/null +++ b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.34.2) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/env/lib/python3.6/site-packages/click-7.1.2.dist-info/top_level.txt b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/top_level.txt new file mode 100644 index 0000000..dca9a90 --- /dev/null +++ b/env/lib/python3.6/site-packages/click-7.1.2.dist-info/top_level.txt @@ -0,0 +1 @@ +click diff --git a/env/lib/python3.6/site-packages/click/__init__.py b/env/lib/python3.6/site-packages/click/__init__.py new file mode 100644 index 0000000..2b6008f --- /dev/null +++ b/env/lib/python3.6/site-packages/click/__init__.py @@ -0,0 +1,79 @@ +""" +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. +""" +from .core import Argument +from .core import BaseCommand +from .core import Command +from .core import CommandCollection +from .core import Context +from .core import Group +from .core import MultiCommand +from .core import Option +from .core import Parameter +from .decorators import argument +from .decorators import command +from .decorators import confirmation_option +from .decorators import group +from .decorators import help_option +from .decorators import make_pass_decorator +from .decorators import option +from .decorators import pass_context +from .decorators import pass_obj +from .decorators import password_option +from .decorators import version_option +from .exceptions import Abort +from .exceptions import BadArgumentUsage +from .exceptions import BadOptionUsage +from .exceptions import BadParameter +from .exceptions import ClickException +from .exceptions import FileError +from .exceptions import MissingParameter +from .exceptions import NoSuchOption +from .exceptions import UsageError +from .formatting import HelpFormatter +from .formatting import wrap_text +from .globals import get_current_context +from .parser import OptionParser +from .termui import clear +from .termui import confirm +from .termui import echo_via_pager +from .termui import edit +from .termui import get_terminal_size +from .termui import getchar +from .termui import launch +from .termui import pause +from .termui import progressbar +from .termui import prompt +from .termui import secho +from .termui import style +from .termui import unstyle +from .types import BOOL +from .types import Choice +from .types import DateTime +from .types import File +from .types import FLOAT +from .types import FloatRange +from .types import INT +from .types import IntRange +from .types import ParamType +from .types import Path +from .types import STRING +from .types import Tuple +from .types import UNPROCESSED +from .types import UUID +from .utils import echo +from .utils import format_filename +from .utils import get_app_dir +from .utils import get_binary_stream +from .utils import get_os_args +from .utils import get_text_stream +from .utils import open_file + +# Controls if click should emit the warning about the use of unicode +# literals. +disable_unicode_literals_warning = False + +__version__ = "7.1.2" diff --git a/env/lib/python3.6/site-packages/click/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f248ebbeb11762534c80d402495e1871f63fabc9 GIT binary patch literal 2689 zcmd7T*;?C16bEnvwlTKZm#_u}LI|7L!@d}UfrRY~aC2@HSsL&(+BzeLkVoiCw6}dF z-}b7n(5s$vY#@Du!pEPVMw%JT(b!sUZB76E$Cod^x5Q$9#eVu}MDOFDUTKQOoEXHM z2B*<&@EW19f!u^{f+ltx9fvqOflfezokS-g$!<)A%bh10qUC_nuLU%(qyBpmDJ?tKIFZ8l| z(S6Xz?sH#x{m{>Tg&u$bc0YO$2H6AXAsAv0qK9FaJ%k>C5%w_pHN0kzphsbp{Tgk6 z!5($rcw;ceHqhfR&VJ**^(J6~J?6giCSj62?!Nb?V2b?~Jq^?B3G@uiu-~C)VU|6K zo`X5|dvp$R>?!m-%(JJ_3$VbRK`+80dltO}OYAxHGAy%m=oMID&!bmimA&A8@YZ0B zy@+0ib@mc^12)*p=uOyUub{VJi@l28hHdr-^bYK>*U-DL%U(zC!5(`9y$}2BO>`de z>@D;G9I&_11t_q0(1&oy-gS?>A{5zs=wmo$@1sxPgq=s9!YTUz{SiL03+PYqiG7GZ zgERCIoI6FhaE`BIQzt*F>4GcmuZGlyWoYSzt}w11qjKOIUf@*lNcuXIN;pR8(TK{z z(2?WHk`aVaXelj>C@?(ht4Kd68A<=%umjJte8+I5j~ClYhLJYzDt^wm^Z9vfLq?O@C|O!KX-fqa?D>2n`Kwc$(uxcx5ZdsAhz1wNgN({JEzVo9%Q*SHv<;e3 z>NK7Y18tRDkxT#GfZq*M4b@a$-B&!}N9fD}PE@GfAs#lru(QrW;JU(&WZ>7%`;qug zJrl=xb0H#oUU4J&(lL1%)~{~4vXteCNGQB4WxdSWY(LM~Z3q6HRGvkBOe|t;qQrfD z^h{Z};Y)irmDUU`txZSRfwH2222VbB%WjUd8*W{w(bSCwP9Orc~31_Z25VaZM=PszT4tyDJ@0miX)}?Mmx@>*0?Kv z?vlL-uJOS=mo3d>KlNxm!2%Qms!*+vEf2~H&HD1X??q(V6{YZTnlG!))&|2_G#5W% zyTYPEVdc5pv=(8P1M{1-u$=dNRa`idR^Ca2;$)umE!WiY2Q9rB8|^X=l60+#ZEGRJ#HXy^yzwrfKL>9X+}{P{n^@{NVEP49_JCI=!IA)T#g6RNHVjk0E!zvLd?2p;*Y5`2Be=q1zKgOHA~S-(MHiu(LvEk(M8cs(L>RTQB8}d&8k%& zwZ5Y0rx>6Zq!^+YrWm1kjREOendnPSjZ&+Df&0V_N|vkD8#+pcyam-59zc@zR7I+B zJWy{bCMe!fOj5k3n4*}bn4y@Zn4`#1%wtp&5k6wA7N}v7Vu@mzVufOr;seDR#X7|X z#U{lT#WuwbMm151B;M{WHSAIBQ{*WQC<+vZ7+^S(ze>%DFYUk)rYmtpxK{JQQa+ZU znla6%FBJ37m^!Df6#vZ6M_xD|%5bh!k*+hhBs^*Tx*pBj^tP#|X-Z#4rkM*LtEuhU V>t>f8z5Wd&-jMx2{Kn&r{{na%%Ci6f literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/_bashcomplete.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/_bashcomplete.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..21eb35f1ba4e147202f069562c5b495ed3d36e01 GIT binary patch literal 9935 zcmcgy+i%=fdgpC8)MzwTWceCzaxzhp;buopQg53&kvEQGBknq~VJUG!Tba;vC=Ew5 zobe&Yk>wenfV_6o%@c8Xogv1Gg0ndz3Cl5AU@*>2e>tIDH!P@L(^ zbt_IqRqiOkIYaS|ZI{Gfs|x*-^UXPxPn1CWSm7mSp3geZ@UpYO=bYo-Gv0!CoL9cq zokdS;pWw&#ROck0=g&M*oKt*(AIJ4HU*sonJ;P7(Q@Ebxr}-INpXF!yv$&q)=lG9s z{SkkTKacBkobeZMeV$kOi?}kr#9zYo1^zOB1=lK9*A%<%cwPuF#m3rGxg-eP61% zgQ%A+@u4g1aAkbUmR@Hzv*jGZiv}WKua!on!+XNJ{?xu`;u}}juisp4+`L5>tiPJu z_q&(Z-fw(#_4XR|xP1HeN^R+J{@MBS%jelBnfpa{Gw3{G^qM{NL zM-zHo67r~z{T8hv$fR-<7wWxql?gjG{gUi{!1Tj|Sp6D1q)2!YHih4h8iCvOLOXn_ zXiDxA9jf>uO~Jj*!vhaXbV{0am!<0i@57uJCtox^_oG&Wd&#;EcNJdP$9PW?sMXjD zZ0S|dB|8i6PH$&}*){{uQ_XulVbhqzN)6^vduP)=(oR0_2~d2xiAZZXu#J_aTJ6e* zw{KrvU9Z26S&uX;Ip#=vsg7mW*bQ4xG0JrGq{Ns#s@loEHhY3?dykl89`gfeY;F6Y zJ>KrL1G4#};(t z+=pkPg}Iz#^u$z?nmi^!*NVpi#%$54OR&~|@2 z?!xNzpjY4YJ6?z;o{|w98h}@DHqtSLtXd<7aHIx~sWvwKu$A{2?k-mcnuY}|LlR;)v{V}r==&fWdgt?yp0JFnIMys^;)w8*~#&U9SC5njS6 zQraq4he}&U8++QGHqs-#Z49-jfVMF-xY0I;`X2fWRbKd7KdH2fdkQyCDe%z6)mZsX zt;cF(x6*h#YNUH4Ppmt02RnvWb;^0Wa^|Of+IQ+(wiTaj_`yTB< zi}i4DKQ0Qd-*KB>d^|T%BOx2c`j!{PCv(8OcIEcX~kLyGJhG$1U9 zVyJPIYhURjeWw=b$QTty+OWX& zZA*MK)Yp_@0aPLOp$@vnSH>jW2miG59w`6)AEEN~Au0t>GQToM=Fn_wBkjS?9c5^O zu8H;H39a|RbGMWS&*3>%U>DsYBE4I#2t9yn)MGAd`JQk^v-ODeHeusIY9d9{-zl(V6b{XV#kzhmGG@!u`e2O3? zk+e&uA{P^K&=?vSwcLpLArpfjKzx}W0U!u3vduxK!#aM57-thp+)AAB#l%S_v@jh4 z%XCNQ$IHOV!gL?&2vVPcXYo5e*#W)5T&uPgo5{As3($pYwjrvx!kjvt-scUlN4OOG zhViN72^fiJtdGOv@`W5{TTZ#_ZhO#4$SSf%)PB z4AT#sV_0FY^N{FBM%u+#2V=!q^bs#nN4**C#8$J*6Km4Za*8nK2A)fcN>0yH-`R{> zw9~?ZM5VtZy*rm8JuRw=1VS@-dpn$V^&^1&Oo+4TBRwifu#ftTRTwbe}j zN#Z2wH5}n-oVFmtjroxZc`MtxFox>iXb+6Fv3A8Xl$pMJ`|9PN18}tE*N`uZttmzO zuJks^gZ6sqw?vp`F_qn#AHs=`S&%B>^4l_%4lkiG9we1|-L}Nb7$`^^og&6=cHFIa z27y}_*dKYZB|J(fJsuYVLM5rhu>t9X@Z;84U*egJOU^9GFP%9q_yPBJoFc}OHBap# zUOZ~Kzs6!Dqm&s!6jP#(p`Oz!KpIQ6G;t9)E<&RL=fTjG;%?nkOA823Mq=#%KTi5s64m-+b zG8j&hShCS6Gs>o(HY5ZKIRjdkD*Ekz;mf z)rRXhZ7CxIDuz%oLI5agUnrZ1`?>bSqGxTL0DWWxH45sguw}Sn@dTl5$R=8#{e^=pv^2pH<|kXV~!cm~ZUN0Vv5*dtvB9rfh(OvW^g{>2Jc_(Ao*ysdADU zl9vPsa=t^Ddz?g2l_CJeBrF~5Inf*noWvVA{WFd+1pkE64O(_1#}8WYQ82t}>*B{mh2k}F1*eHUkQzz9 zF}(+h6vWA)8kmRnAWbDMpyJr^(&dYHi8=)@Q|ta$JWAJX7m|TS^auefB|eBcW#u+> zDw8|0&8am@6Qc|xpUjPpCXVnDPCIW>c82^0vPEoEBgAhb>Vc#y@{JCYl1Vn1S6CV9A0aq> zP`Q)fy0-fd6H5EPv8F_EWF_VzVg#yyL!FVaJVY>0>J0s*oF`=60fL+)J|#U%DzRCX zLS`@?QlqH0<#VLu_Q7~b^#rTB{J~E8vPVM?Qa?BZT5IJ)2EaVp>aVro;^? zRcAK0i9~UT%#`-TRicnCF(VEakANGSmh1R83=2y*DdqwJB|N$K3*2SdHAyc6%D==- zr0hd}5+q-S>?j)s>_x^tS*@1Dy{fXaj$Q?>04R5<^<{osjVQFu6l8S*+5C89z(m)O za4La!PlXQDpaWD=DLf@?qm)X9Z3`5(Q3;@}?q$%C=(Z-_Mz45*7!$Too@=0%(Wj{A z`>gOkF)pz}b$1z+w+2$QR8jIKbQFF}pat<$BHp?2au<{35>K{^(~)MfV6lYG`4z%Q zB_c_<$PkXI10hXdA_zM)tHh`u&Lr{ksX3>#OJXWMo@LmS`hTg2w20V*%kcs(^+^yo ziW-qjR9J$Hb1dg88ofc}EC{cQyqVNae({t4eenSISvucK>|>rT^axN&kmv=&3U9A&Z7WQNlC$!;Z9oh0LjN)^MCP$6a7{P9hNq4De$mdtRSfvNk2NSaF`nQYj~r#mCrm z`+dR`LK#`;bGzX|dMvKfOjHzeDxrrko4eu>rMaQFL2oE0l>v%O1|%57X7ZKBo)I>^ zC4f8#^b&7-tmTFc-Wwn|XmAv+oyBZHxkTQX&8dh}l0r%5rmZ7}Bw^(kBB3mC@`+&P zi6@i@DOL&Sg-V`g8S~OB%X9`w4C;F70^ZF7%g$;B?n=0?z;7>VsEdDsv6<(ln)niyhC-55*t*f^r1nuzER;(8C7tg*2u(9Ax<0c?f5Cgjr6Aw z#>h;527!84L1JWKXzm%nt)GmF$i|DjkRqQZK9%=CLh%I8aSecA5|=)OF9$B!)@odm zUohp51Jbtqu9Fn>$bzIn35qq>kz*2G$67Cpi};S@i(U}xsNlw>>r}(IDgT2v}h!2JrU zulO>7Ye~bG3e_;qX@Y{@EE1-5(;=nNM`J=7+E^A8`=ExXNJ$tw*YKr+{1D_Ld3<41 zpl=f3C_E27JkcHaojk+01o$qX{)Na$o+o!1uZ4qo#a%j)>Ft&uBc~kAJSL8eB%5Ke zuj5T@(4%$a5VT}*k4_tO%2+FC=Xjs-SA0hArMb&A=|0^`&KaC0h09*(sOVL+<~{f z6d_V2KRzt%;S(Kx%2PmH$>1j5^}(Yet{*2n-a~~OPfDQM2mgrc1#WF40)W?_fv(Q3 zN+nDba~7*0=opBmx9(V}<$Hn*PSB5+u3eHYfSQ6jqY_t;KfIBeDHuJcO-e19VC1uS ziuy=eAqButO-@Et6f#cpw4DEvwnh9T1XIAr1>gk`M4d-%4i!1@7i|O}cx%5XC>oT4 zjlpaJVBra!o>Ax~YmE|Kks>E1SD=(LOmfb`0F~8HZX^cibvpPiLdkPd>zTdY?IW^I zY?1I=oWjXDarncdv-ZAo#P`T+*Vo<`Coo2SQt9LCvREK8j862~B5@58%zs9=@6(C0 z7K!MIk~Zm9GMF}; literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/_compat.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/_compat.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4fa289759dd0f6d02a9ee04ca0f0716155f741d7 GIT binary patch literal 18525 zcmch9Yj9jgcHVu>1A_qwLL@~|lr*Balt7UXMRK)Tt(Hp?1h|wakPAQ}IeH8R(|5=L z=B2)ONCG?9tQU%j^j!>n|Q0@BsUeu@g`2> zl&f5o{7CJORKD-@ojVUgmZNMu;O*OeAKmAiK7C$&F3(I%DJd&mbLXgYE0#J9Ne24c;l!2sl3(tX@4Sb z75A#~;Lcb}S2lkZu@{pzb~O6`5mE*?LFZtSnX5$aXxt2QU}z-?^)_$ z-(G)Y$1NVhm4oULTzSNQ6z#))_Cs5L*MF?|xc@})3BTY!R&|O``bYeya6YOIsYlVz zXZ&Nur`2Kg80yc+_>W`!8TEuJ;L7pMywKy>;vh}W-z}?|yJ@K> zhn_uIJUR4icj(z8=2`WWI*R^h)o0W(oS#!qt7mXNrDoJ|oS#=+^{hGpyicobbyCfu zc1C?oJ*Q5gc2+&FPUET1Hvg4ChgtLs!14uRS+$8H%A@}0fY}+ra#o!+*s9MOOx0gf zFR0I94p%&C-)Xu9N^<{MhwF~N%7^7EXjIPEQy{BG_G5X7DF~;ae)wLL->joqBzWRz< zLO&PPvRc7tbLsc*)fZ>c`X_Rl^%k#C&nJcy(Z|U418+>q9p!KfPlWUspe_*3|~y zc~#X_1AV>LJgAzcSJjePSyF8|FROQz#uIO-K!rHpP#tv_=bQdbb&pT@r+1vkL{&v^J%67Ogk^=loOt^J?p7-QrvRY5$CWR_bpnd)b=#)<+Zyi!*k#_l95Ic-7y$ zRI7xwR?^-->Wqv7e&#%JU3U|d*S-^`Nhju7UxS#uP?4#d2N0xf62e= z*IVs|-wdBC?pdB+dSia6w0v!0<;I1j`N;a{I=b3A@Ybm_XWn}A%`bfE)XC4kef-Vx z$*l_~i*Hv5LhomzGKV9WLJ?Z)_Kww_#M#-g0It0_<3?_<8ASVU`(d?K_fZdh3|ncb zTJv@^jmyffmOJ&ZckS<5dK`U8@q^jt!bbbKcCCGKty8P3lc)Vgt^Dqb;d7OGt+El9 zrAn*OE{C)2&FEqDSL%;b>UH`sK_q=FTTh@|sHE7ykLN57LE;oDUC7gotey(3uC-%t z+g-?2v=1wL+X?M1?&FHnb-SK&znun>-eQ!|e!E_-_$xqnvR-TYrL|7A>T9AnS#9Zx zU($YAmDlQiuYFI~Lbhj|XfJ_Y^Mfz}H#%5aY&GZVtpGi&`1ivr*KX)?yY1_lRFn=v zbk>NnJ>;UauXRfYnscD{vPdYX^JqqUOO5h|UkcGv$-Mn2E(ZrtSZ>zlpJzJ*f0_iV zaB}(MnLP@Pj-#>(>a2qnJNCMx>wJMx<4h98YzmDW5_ow4

AlKERGnReKKcqwSue3&qeJ#j^HH}zD4T*mcfK_ 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 LNbrItlJfrmKjeCh literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/_termui_impl.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/_termui_impl.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..762d371481d8e622c2f3d2ddfeb207c90ab2945b GIT binary patch literal 14174 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 OmS^KT%{H9l<^LP94{4kL literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/core.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/core.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..83e37f32762906639a024974dc99bdf51e13b410 GIT binary patch literal 61745 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/decorators.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/decorators.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5a3882a66840493ebf03462b404d8f044cdfa613 GIT binary patch literal 11648 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/exceptions.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/exceptions.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b56103f3e95ce53b11ff3ce7dfd14d7a803c50c GIT binary patch literal 9029 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 H70LO3bZ7#a literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/formatting.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/formatting.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6973e6485ee35066a94212cb8dfe652cf56ef67d GIT binary patch literal 8660 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/globals.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/globals.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..38259b14e0c88e65a648b3f397899c9d92b57bf5 GIT binary patch literal 1831 zcmZux&yUxS9Mgm`>lZX#_%zH2KNz4=8e~C_d{0<+$JK=jg<-2gw=R42QX#WQO zMu#`1cT=r|{S>VY*BmI>o&AK6;LN$VDz*MrWxRV=%>NgX|;M8xwMzNlO?l$U>0H3Qnjc zl$_H`;&e)2P{xG)pO5Bmq8F!vIkGf5C$zXc&x8@3OYllbu8klvFCnIMjW^|lDX5cc z0RaNC$+9ZgWL{EhXDzNd;eu&Hoi?36Z{(ydh_t~`X=F}~RF@w0vQlKJ4atNmg|Wm| zEb|v>T?>}!IXTZH?B;TnIk;?aB7p@Xtb=RIg0PGhD_N|FbQUZ!x|ZN`K|L!F_!f&T ze`#=YtVvnf>`fMr$s`vpo6MiKe^{nVG2do<+&CGJ$r`Z36)ER}PbTE6@n_A^q@;%C z#7YGjoDjJrRya@J{Mc0B%p)@)*JMpq1(aJdpXvgRz_!p`x&v6B)2-q2w5C$gg=%sq zfcqt_lqadB0Bj(bq0$OM-{fQ>E+B(PRpDeVelSLx`8e3!_;S8_aO^9?qXH}x(g?}F zU5C?~e_@Q0x<3ngs1xfbJFEApP-VyEW&O@dxLK=`t`7TNgegqutq7<1F79Eo z2Vb|;>RUok>wB>9T0M<8UZLygG~S?Vj1iAOk@3}|AE8Esmqj7YyOeYy=;Rr$JvKh@ zbksA@eo#G_&A4Q4Hmg&}dz+oQPs>si94;O+cM6Ltl{HH9mkH3;h70$lQgQ z`DHhJh64P3STyjjp|Nlbprfmgk3_E5fZErX({8mKx23Us83{`~OJOS+({?FF7+NNm8`)pes0y$qX7D-iio(G_%>!)06FuVm!AlJ5@gp=~7w zU(kwts}TG#(LjPZ_reG!O6xOkPzHvA1UyS!cDuG44yMN=YAvp_Xo)!`43wZ_UQls literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/parser.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/parser.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fb41df09948015f6f305d94251be72ec40f6c521 GIT binary patch literal 11757 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/termui.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/termui.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..68c6d9393d2ed663ac334b00db646bd9c6a0d7d8 GIT binary patch literal 21550 zcmd^nTW}oLnO=9#1%n|7UPMdO#d3?5M2t*=)Maf4D``bhgiTup8IdxjksVB9P6IQ* zO!w$?4?#eKls8apZ?f9;=C-L+QrVYOIaSGKHWFy{0GMrDjRK%gwTUSDF>&sZy`npJ~px4(espYt5R}E2z&lXQf_6 zz22-#eFpUt%@b0up+47~llm;`Cz~gwUPpbtIWP4Sy;J?u&C^n!L;XzijMPu|&h{T` zJ|^|~-nsslnqQLoDbyctJ}&jss6WwsLh5IF=lf4KpOpGp)SqfT@ zkEV@W))r;!lr%v-(^_SI4>T936 z&9A6S>N4*5>OFNuUB#W})E)J*dIhx$>Q(g`o_$r_RllOXjyun*_tmee*HL>xy`kR3 zvlrF()vu|yaOa}BrryS#1$9qdSMT6XLw%r@)wfW4Nqwlkt!|?BHRU!hsiyjl`Yx_6 zt9RA+&}LD6q;9F(xN}9hcbvu#9umPT4}npq;by1axv_lh{de!KUcdG3``=r+gIlLJ z!gO`J8>OM{uO{8y5cjIxBuLX8)Mjuc~l8820#D^?E1n zwmF5lb{yRgb(zZ|wZF}`c>2D>}U-Cp?cSuE}0S6KKgo?~%=#aCH8&*B9Z z7g;n}e8l1hEU*Qfhku2|DvK7207c_Wv$EC;+FQ+%4ppX_!^8v@mVXt?BMYCtWq2)a@1f%Ac4nPueH8=MzOU3@~pm z@^SKqGF;w`jJjKX`lGA;Hj&If&wj4sJK?TY*uFhy&mFm&&dAv(VR$Rr(!>l1U=Sop z!^^4z9rp*RCcOTsqY1IkFJDRfgDZpX;PTqA+f$cc3H#mP<8P){+P!Xj%a$abVRvz` zlb!8!l?tO()6?quFlxWbX_QeoZq3sTd@tW^S9y)U8GKlmxe_}gXRkV{C}(R{e|=Qe zUr(J;C3W{bTve63=_zlsl$O)VsIpnz_x9a=_Zw^hhJ+UHjXeFHDs6hBYC1D2;i-pb z)sg#zgEf~|b}RnECwq-u?~=be^U0q7(I)i*~E1h^df11r$61TVWUdr4_ z`bCT=ur|d4Cvb9Apl!kUmvAeYL*bOl?&Iz=?wott)!)E%fpa30FcvtH=m9q;1-#PI zx(Dd_X?X-XU~S}VR_@@bP(fCXf_~Vj>X*OXOQ;;sXus`P1X z?*y>!Zq@Yjn0a|b%mMEs2iTh#xue-pdB3_h_uvm6TpgVl&F#B;Cr2mscWyf$FO6KZ zo7GFH2TCbng=-@`z3q%Z=N~WKb9UxNmC;GGsNZvc)BE4$C66; zj^;OK_T8U4s`8oVI@{m8=X}Ur)%g#c$os$j{RkVb1)BiQZP{IkANWJS*9Qgp!de%7|8A$7`1l|A z!uO(X2wL>Hd(v(k`DrIe{dN%5ef+J3Y_I$@_RTIk)S=%Cup<}i^7_qnG?ymY56F%a zxt5XrwH-eRBL%LGPDBXk;UM*s?nV^!F5$&)BApa7+3xmwm`U31_}$bGBIWC#n}le+ z6h3G#wS?ifeAL4Mr*0>)xafnMC%6%SJ*cH6{~L=}rDrVY8gI#@WYgH);ST~0(i|`3 za35bk*vByHwqq6g$#5{hN(IF2zFG_)gg(G{uN$d&J2`evuN~}BaNoMDB z&o9Z;StClg1R0lY4Sp77p|*wP1g4R_@b3qZC~OVH`rUOuiVbD>onSBsqXZNpXtdZM z6-@qtaH2T%H@f%3h-eWcS=tyzX}5=)7eQRaeyFCV19lx60l&n7iEz>(WEiKDYEG+z zUbz}WGG?wEBFEq4R9FXr8YwU}5(s;}ORfqcuzYRF50b6KU}@rM0X`XOsuMCy3vbkN zh+(GfPT1a(S(^C;8v$ARRAYI}a~1lt)WK zrHKy)MEo0uFineHgK{(Y6cn)?1bhcb#9xOp=G#utW9+wDNvgPcS`&ad1Oa&~9;U4p z*$uWX_B_Y}G@N#PDtl9dPcn!l{|@(>T?8mVM6;n{Y(1znnA6hM^o^tSJnG!Os>^pzW{ZJ&Mq9##U zS%w1XMZK&9lxNfx-o$87EU55hkKKogwblzK^+J7yPtJTd+*ykQt!~l;q4ddWH*PK8 zpsAowunSMW%op8t)YxZMA2Y29mFa}tC=^wn;I)J*hXYl~E6uw#_iVY0`tH+~qF?XD z?Vy*uxj4~kcUDGS@}VM{>F+-IUN{J`&nT-W8Q7A)`;vW`M4N8MK5T&y3clIFiLYYe z$>4YGPNSwzVJ@PviK3-BH%+_<5cJnj%VzpvLMy3pS{7_{Eh<*c$0moiAk<&yllqva zWhd=Y41ds6y9HkQSJ-s5(xL@9@KKRkj1?YiQRf2w4CY6E?EBo$dY2Vo_?>l=l(CVHA#a7a)Q0xbW zV$+#1g^p&_$*rpHsM=mFdI?waxVo=OxOxUx73glCLT9W+^Qo(-ht844KRyrb?mV1gi-?6oBTaE4@dH4%EVR8jh{NrJmP~bKG+{zeO#Q!s0?9Ze3 z~879E75Lg=L-3`egoUm@Q`0aEpvCW5(xWl z=0;%k@$Nax0-^r|y)N}1aTFQO?`bj({Vodh^gY&BSg#p2NanBKLXlPAQweoe5pR;d z#`|xx5avHS=7m{Bu&uwvhhy$0=JQQ<3$ zs^*eA$;X4RK&_6CzJqt$Y`{NyDQLY4uY#8nylT@07pdsi#PR9vL1IFZmLWe&^t0&K zV8J?j-pJc5<5OApU>Smk(MOS1@uUQg1#QL^bsDyK>5ijjRP9q|uRJP)@415kzGv-s z9o8oN9myZ>Tuo;-YxvCWJ1Fb)ZtTv1W6~b2z}76`?g?JG&IbRvgW3e>FcB6jvumog?18XHaLkA{Auk_QY7^?u|TLz3&c<2zo(#yt;mU*2{R(|=F zS6^$)WR>-Hl=iY2nNys=B?Qf{4cE{x8o;HPRl0E-&+B(@-n#xR_(|_Hv)LQDz1%2g z-n!ECglYOIGq0@=67`&Pu(|=SZL<4+xFR~O9Fe{??-_R<^t*fU5LgxqooBMWriS>C zMOJzD=E{vb51(XxCif6~`Yx`ez&56v$v6%@O>I)&L(w<`@7PX~%~=y4_T)PJNJ(c1 z(=(%gkuD_eMZqODd^ZXcO`K#N091})18RVNfmHTEulwAB)!=u58u20(u9`I1f@v2RbA$Vb1__MS)W6>iu%V!_3Pk&|SqEXe zyWVZfUK~IR)pVG^fP-mv$Y0X#1kr|gab7*rV^gS3i!4bl}Ftbo8y7S?jPE(5cgWXPvdYK=blW~;lxCf9J zCS{gweMgCZZRO5Q@}F3Xr3?>?IO@V9CX?IFG&F}PJWy#Ujyp4I!G%a4q>F@~=TVHD zA3g)B0Ck9q``pNlsxZkwE8mCF^)U=C;MQGfl#JCtF{G(C)6`nLnt5UG02O~e`#OQ~ zV4&ap3J4-GBkn#&LwXfxUzIhEIYIHZumQwXD)K_+)*E$w5+h|ZU^1YMG<&R@6mZUI zY&@;3jOd5X=7bXuyQ^K8(VAvhHp>TT3^-#yci@$2RGMdK0#6YFo)OZS+ilLv!(uGy z<-jtt`RN5Axadfv!q7Z!TKTG(qOzW>n+ z3u}RHBtP{17Z%8{8p-FL@3)1Oq6rN)T4}O}>HX$@>^Xh7glU3^L;2)r9KYu?_0inOgOmECDt$Ij84nAZ>q#aT`B0=bcd)#<)q0b`5lq5cuN&lg73rZ)}jWN{`H%u#^ON*PZ z)eEDIv;*%=8uk-^LFN-^P83eXP)S$AK?9xNld(;Iuy%5{rEwsS-DuV?3APQk1RVk1 zA=}O5WOFB$ac8#ZS8Bn_VSSu$*?AxeSt3HcHtaFs&{mVJ9jA2bpmXlMEj-+S$RpD;QC!4bhadu(1^D#NB(LOA*y9-c~w@e~4M>xSe zIg$X+`d4im89XNfjFCGQ4mK6HRu6=vc6`&lVsGL%18M9?KVzH-xg6}n_}p@|7fv&H zelbrF4#tpf0(GC!F(nWjKl6tJ1u)CFxtI9h%EJfUG%;>6+Hczw{+#*%v1BwYdYps` zpRZG2gxH2V6@my04D(>ZN}R$8eD?q(*~Y4#J>r%z3^b;>Nw0bvF)er%;l6{rrem0R z8mCZ6i-8efA+Eta!SB!%dyO*GhySM+1_?CU5O76{B*Y>W;s_K%Z-?!G1Bj;EO$RyAp$|U#hb+{ z{1j9zvsepLxFadC!-074d))fyG6H>?`C95+Vb}zR22!jPUjj3>wpZdljpkUp%XC3BMi5>Ia4EqYxLeuCXAtZ7La^F96% zTYL;tlH@o2kT0lswP1NjTSz<7Tf>ZYZCY)BSZ5$5=dS=QB^k7wP(jN86%ygtXhW{a zl5#;C`GjQ`q#bx_H#!2KmZABDM$0Gbji=oHs;hxz3n3X<;C$rX!)7H7o9^e>zj(D7K1cZmkm z=rAS#AVk8GRe8Q3Wn&7LL>FeaXyIl0Sv12Md>xMHy#jqwIywC4XeX6bHH$C~fNH{t zfo~C2po!brZhXuv$1mY$_U5#znv)GYK@&3ifcV8|H%VkEyECC9;>3Xa5HJW3aw#2t zJOrIg2jWZ{qYoRzlcR7ih{!XvWQ0CO9ZRptHOTSksLF?70!`u1s@lUbMw*S;O=Edz;3P#qnsgwI{V);X{MjskbGAIWWObep?I zgA*RNL^H9YMm~&^92}&`qYxt?nglX66k0ikuZswvHZ)~Nh%#wVCRM_g3K+zk2?moG zCP$uXE%71P#!Ha!Q~<@wfMhUrHl^NE$4RHlrSl{RF-@zb_1KnzSx`IwsBb@kfW3Pz|L zBM$`_v6GLFL?Ju!{nj!_3<{$#|LORznSGobKl5M>d1*uFje|JpQrdly1x!xf3_gWs zECGpipbANbqGLI?o`8g256Be(Nqpy?Gd3~X?I=<;>x8L--KNFwMiDQmc?AI;?Cnwg z980XePfZKE57a-=;iLMJnOi-owE`L2dQM)q_CM6-9s~viyXg?MfNmeon>tj!e>fW7 z1#rL}z;1+gj~V#b4Mvk-=Zg*(#nI*IA&(hOW`69LU@tI%Vf^}}#D&rg zYTqid9Vjc08`G!?1*c@n0ob)qYpm50-UD|jl_x?@t{)MYZnZGf#QT$r5k<4rqCq@< z(eJ*t=7E7Meu2dhaqFfc#`n1;Ux49DoHeZ(TW#t)1hNH(xA!3_N{Z7&)pGTVryl7%>A= zTeNHP&avG`s7Hr^6i48{1wtllo+(Hj*dHK4E^dl?phh4BbVNr+c>wSTIX0s`#<-m2o(3ej7wW|AvHjGT z&uTz{_(-yel) zrK}=!qW9qif-CMv_|kua1s!CKQ~GbR{+lfR9*fUd{1%JfX7Mu?zr*5hvH068{tk=Z zW$|}euw&EXv`;!?PJ=jcFv}O|n&XWI@}iSQA|vH_d%<+mKX-Iw5Nt>+fkifG)6Z z9I_xP6@yAiS;)EoeHw?D(Ew;pN0E6;q1*KsQAv#`O)kqu(IjWOUwWqv4jZKg);Dn2-Vv* z`2j)1O@tx&JWta>8pBU_o|$Nm0G=v6ak!5kPxT=w)n5=RaSMpbHcte zW8b-2yfcG$7StTxL7K1h11K?yf*IBD>^poDDNDFk^GNo^XrSv;!P{`C-${3A0(YsWKJ>^KbxrjR>K--IHbghwq|`v@HBDsR!dsHVbsyq zw1*~{bQMSz|02EV3#KaTUby&e9(C~V#k!}SyLic8-+1GqoLIQn7#sP=wY_%t?u`{h zH&@tl4dB>%gZUd@pyeHSvjIjdAwg5FPA8!>HdEly2hKnMcE=?70<>FVe#rFnfFtaZepL z3*#)H2gaKA{uYV+Vrys~5;s<$*}T+t zpf!@1v2g27I%48h$`l?X=ucQSlxu_;MLL>w>{gz}Ija8d+4rNZDBgz0ShoDdPxdZ8 zq$aasQcNC4RVx$^83LEYk%yvAt@9p3+Yg`S17?~bi>4|kACyUros&a`=D1*z)sQkQ znP=JTT_kCn>M8SzKyDR~)0fy!UDC&z-ug!7t!?1s9<~Y&uXg***@6Ih)DJQ$o3VtW z8JW+@YjB57C~-!AlXd?g^|x2>lJh20Up@Cc@<5pG>LC+^wHof^pE?dinGX}oG!xO< zXfJ>KE;RERE|>x_F$#Yj`KKTkgK{A9{lvsFXiUnUj<-9VstS!l!-PAIq{uJb4#4v0_<7(XD-lMa~DFm@;+_JBzV1;}*Z|IP<^ zq)t6a^VGErXBMps^P1?Dw&wH_4V@t;n=r!H%lJBonwcREUx2sQ0Z>VMaAx&C$9rwk z82_sHkjf;LnMs4pe1|f6jzC{`N0r}lk;TUoXD-6`$U{a>JkH5ANC+u`>8j4J%^64Q+P(4LDU0xO*hAZ~-fgvN4axS*ZI!8?w;2i6n6z z#|xOuchqZ57--b&57J3RAow_`gcN~<5#)gC-$(89@?!cRE%MVzD}3WRK9c%gB!E<5 zR^UvjrIONTWn_HPu&L=qqz_7h7jin0p*}JuM;TO93H}=h@rD9Z5zL$92BCiIM}Z?m z?1T{S#FDYG4vO;4CG81mA{bhL_ro6h5h{Y03w~0ZmjSi$29CS6hp8l$tRb$$TToY! z5rI$_JSB(?Sc4o{d$3qxsRSAnDP3S7iN65X48hCM!0A34^gQOV8G~-VV3M9d8^r={ z$q7IZHBz`3w4F*gyAQX3iF6n-BMalm*djMgsA9Zy$pbWwat5kQ{u%sy#>H%6YD_>i ztt076987Sw(~pNmu`^6A571hmu#r7|hj)S=WOS1EitQ{NwQRg@HGzA>?D7`)7mnq@ z>4|GP$2KA;gn1- z!Fh(5;HL@M-MeN*yzZi--U9E+{E_DT_~{^ z3BACMw<%H+#A2#4BuJUjY%oA(bTAYsd>R@!8H-s;?yj!h5DG!=cGaL5hv1_7+1w=K z$Yu-7P_X?7Qbqp(3jCr48aHQIu5x5}8AZSOL%#7ZS^O&&|C;aCa;Qnu1ENj;8@zIn zf^7~J=h-TSlH@i4+>G3qt zhgGa0aavcw=SUV5BR7jKu*2WSAx(UnYnpi`eH^ zE*^BUFx`l{7{q zk*J>9x7$G%syj>UO+lXx0R?@wNZ^{Edf&`#ibqZ#>H-?Lx1flalhbBQ!)lH+rzbE2 zfs@4TuB1p5QFJaU=OZ>T6f--DX_%ovFtX$Gl*^(cxohT6t%SSas9p>?O6+4h>_TZa z(GQ3NqsDMPMSx;}9~1#+J90WCNRDZ=vS}7mqw=r{q#^aYOz0yNCRm3${3GmP{cll# z0hREI{v+P_clq4|Yyu4htGCE0$P1ju5r6pi_%7^HJQ>@iJ}y%E@fi7ej`MQh$?bc4 zF1Q8EC9zk_!H>ZwmJz%qV+f$CL>th%80t3xe$h9$z#@J`Ybp1vLkF0EuSfu^ixmkD z`A<8HyJQDqfcW^?7CPCXLTPJib#;5#H^1mYK2?Y;+Z}U&aU1MK(g5>W8fGClM*7E4 zcocI+CGY9zCX>1+>j;esTa!+2{@uHCtQ6Nf8uz)RMw-CemMX_XApx-c3L zm89K{TZy`gDHUljYjCtNTQ^3kve`b|vqTHjCrQ%HDdm0pLm}fCfQiOiey(MiyEG9)T-3be$Aand9$><;0z{tUp03cyo@L03ZEE!Jrr* z<(<#Jd>j5fDrP(MP;m9s^STj!rDSn&u{eK4{>3S==cI=sk9gy_<9Vqgx{U+f&nUzJ zcb7(vzA8VDgqSMz9@p8a^9K$jvUL(A1ixl2QO+jZR29dPq&pq&JV*2niN1*v8V4kZUfdjTf0}!Xw={ z((v%6IXaaW$)3ml&JI0-#=c<<@MKN_7cZ&o*xpb@pod`DG9~Kq`G%bSxsu#|-C)K5 z+P7MNfj?3*eP-JJh6D~gi<`RxI^-c|cvSR1K;7&q_` zo4bO(bmx>gidcrr*@KdQR(^p&|7SdDl$TfTt~6#>mX}vn^y|2DclmCkvb=2TJW@8l zvVwP(SM-nZSpS5@Pg(p13mySoS!vYp4*$>=#qvs{$_xE3__X0IFE?Bs69135Ty9*| zdu+*{D$~Etf;kcT2P|aeGw|N`;bD@an{xKkfQ2qLO<$Whcja`ODl{1q`OP--3mZJKl~s7|G%@fc8_;jD_$MrW&Z5EM8!WD}c#*{& z7Cgi$=fxy}MshNYuaS;qO&_6HQlc#B|G-N@A6b*YeF9^`P#5qZtG$lU+^`qENscK$ zbWsC4wf}I$^pXF{W%-Sb<5PX``x;)kRGX>SYqMZjQ~&B8)Gybr)SsQcJ9$;#s-2s> XcHH{y+Fbo?{bK#g5rTJ`?|*7rBB literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/testing.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/testing.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ed9de6aa7a7d81bd5121aeebf233e2dbcc620b5 GIT binary patch literal 11633 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/types.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/types.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8a203a143771803869651c0cc44d161461dd617 GIT binary patch literal 22438 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/__pycache__/utils.cpython-36.pyc b/env/lib/python3.6/site-packages/click/__pycache__/utils.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1049e1c2f687d7364a0dc35839086af970fe4c5d GIT binary patch literal 15441 zcmd5@-ESP%b)T92EsCITMf+OxZp!iDzY5x~;}idjZCT1vcHe55yWO&t zqe^{eyVNS#7TRUB%dN7sD`;0*6=_$|uC}VuuAyCP)udfVyWXlxdj{>9){L|pXg697 zY0siP+nSa39NKfOIcXn5`&jFkwCB;DZ_P{lINHZs$EAG&?GvpN(msjy$<|3}FQC29 zT9Ec*{l~UXwNBZVKNtT7dpL!6r(36OD}3Hx_%mCd#k14>$G6Y4&Pe~q(LUQcEA2CA zpKG1N*m?g6{|i0mjMaKlomJ;PvRYqMPpB{8{*-!BeG&Jk)$ggNmHUz1a^JMnm((*K zS?U@8OAkw}XYl=5bspc(%lBv1vbvxyqUU+lRL^7VbLyMwlDdp1UskWECG`SY7t~kP z6}-EsUR5uuui;5ky{5jdUP9}6%=iuUGG=^PX8ek>?^w-meZpg1{RHP|HSP3NTlqb2 z*iYJt{~&3{iSo5R@_95&@O;4=CQ*AwdxLf_(rqt{13aBy3qnutVz~Cb?U+w`LEjI( zZNH7~L-skd?k8?=MG200jW{1&dalih&~ZA`z-c9?@WBj4GV)84zeirZ=J$5H>j-|j|z zY%jwNUOWcSL)Fgqxub)`C!iGk_~c&xqQ#T)IxZvJ4Q9fUy=czt;w zZ@a`l|9E%sxrR@?fQzy>t&z29KeQg&o6bWEXXdQ_*1p^{1m$%*?)?e%T{7-HS|+9 zkYromvqI-R$Q-O_^QdNSD)VEz;8Fmg!&{N0g)A1!eEjFX3$yR_O^WT-V1mX&*5S@4PbN*7@fEEC4B$n zGA>=AC^WbL(IZIsIU3lW_0ZbK7WYf*)_z$z`;`ZKBj>vHf!?oZ=Zd)Ar4Qs#j!zb=pYG$)ED)ShcvwP2f*H4Bz1WvnAsQfVYl?#-|r0l5YZutE{ zj%Ur|UD4dJ$%PI=}w9GE8M(FQk?++f$89ACdT*08Hi8P^8B;}jkJP4w>KQ~dGpUdJbH;o@6R`c}(PcB=$M zS5-Bro3g5_8K|NPj&2tBs+v>BaIdL(bsYD)I-ySDKBE@YW4JfeDRmn6S@pO&gZrE+ z0r}_B`rF>#?h5q8-fynDeY9OF4Hx^~irs#&<>Oeizdr1H+PqmCikwlAAG=|cKnV5w zyDqgx!^K~+;UDe?Q2_O|4LP;#yK7z?blvWT-^B{Pr!g7~75m_<9*4^`xju6To`$@I z_;+PRq8oidBa5zkcO!^h{2#_Xpm4E-O9_#I1JzVa70XNN5jGl4v{VYD&4(Y4_5(OgVS^Q4EshQKS|50x?vM{eCa4=lIm$;ySPMa+Q}ico9i6 zA#U2DK-+B+U;H>OR;g-d|3J=XoqBm5-}g@Dw6mCxC?pU$w1kh~aUKndVQSeCM6uB+ zPFjOD_mV{G8|VPh|0Zs-_k$44wyF5pwcQTUDN~($rzQX>I!vj80*3P#Mk%PQtr>j^ z(u@)j@(21K=LKnGZI%TxXLaw)E5ndjgd7rPxbUO>3+|8hUu#x0_mh?(<#k#mNqdO_ zm}qU`kbn-v7zo73YXb9*wKtI9O9c%Z?vV{V4JOx2+ zR+aN{<$VXH0!Ztg6<&u@uO~A-2bylrh61pyz4NLBr=hVuyI+E6=Ej|54#a7z%E!)+ z?R!xD(1iBB^C1iX8UYy#P*_*@{^1r76OY*(JR2kzj40Uk6A=VCYf{g<+rjz z(`by1EPV@I^bD6N3mK%2zMtB@c|J`NLhtv{H9m!lRe?T$9&qgQ&M9bv^JJ}K1!a>E z3%ZyxUnw$34G=*fX|~8<5HCC_XYVW5C=bk04WU;dXo*!)^d(4c7qm;Ux&y;;aTVN0 zTGK1I98Jga>Zf>Z3@@m&z4-!2kv3CM5>laF8rg(R&*M4?-_JyR7dC7ZLT<}E2dT^5 z@nWGX@Z%bk1vE?_imEt%;nB>B1P!e~4dj-Wp&_B3(1%T77JxMYS7?$-9L*E{jNPY? z31|?EiQn%B>wcK@cRwz$QO1!yIgO3!u1DjBY(6q3wuro=F%Q21?izf#)zs<`kFH}xK z8Gi2mWbGEeTr)atzckmJRu2;&X#$)wTy;5Jmr-oKZdUVmF_#>8H$0z34 zvB3ww&w|khfsK1vRa6!CimItP?o~CT8o1ZgteV5Uu8!ew=hL}w`~HApn!;{MBNu1U zz$!+pk3GDKgbOk?43`drCw3t3T>NQ+GL;cHH z{ME#=XAdlUwCXSD|99guIoQ9QSmp5pt7I&AG>>tO43&nHjS|rJ@La#g%lCL0Q;Xn} zWb`Y19)-`(VkaJ9W>it$gN+>hHrEhr9%+gQJ^%e@tarc)nbI~#t@r)US&tm@kDsxg z;pWxmjQ)T#{eYJ?FJl%QvzsvEBYDolu)oAd+~c}UE;Ii$-`rj4(yHel4X_eEB9jm{ z1s_0x*7Xyk66`{H$u_-R-bY5YzLdbsLfF8Wv-C>|tpA7hK0E^bgON3O9iFr$?_oXa zcQK*_AJ+=&XqDL-S^5`A1tWivz$bWU<6Z*;*zm9`qPTxCvN!9LiKEKq40}jRo=}lv z{HJCl=J+&e&}-f=C$r#QuK4dT-2|TSndBJW&&!;$b1gzs61}&CM{9X)-$ph9O)}MI$2$d%^lp!<-;ECO`^5aO z2k3}!+P06FtC@T^8oFKBo(BBMwE_4JtO6JJ3_O`g;6e;zElM`rD~k^V<`;24jK&}o zP_`pr4q*!&VG%EZ8}1o12XVtVSnE$Zy$DD78k_O7-$N+3z$a`U123Q#!zV$nAc+N} zH6IILd2!r5!7s9-!!p25%rtYjjb_yB!1*GF&;2Oe)9FI=2EgaIpQHkSI!y>!Xuco>c@UXJ&ICip3M8t?B zpjV<1ZzpZYWQWFc-yM-3zNdit9Is>{`5UhSp^!%ldma*ET7zl~1I^f)Vg3wHVSf_*&RxLYaW8TQd2VY$n}Y2Hf55)i14ziG zs4RAoO(*BEOm0ea)Q6}v0wfm?InlIi4A3dQ1VhbDe#*lk<30; zCC8B3jsK$Y*JvKsw3Rf?Tgm36Cn=xdOeL@ZOy*B=7n(?}~lSPl%aOX}`1 zK0n6Gab6e_(6q-8pR8rnq`UZ@I$=L8;aCyBBwM7jSq6~jf53Q7%Y@{gFiLzTYl(68 zx>GHk!WAvX*qnN80WJP(;8U*6ON()LK4E{x;WcB5h0{tWiJQL0slSX%g1ChkSxCT% zspuw-au_mv2t)42cq(bblJ_^jnaO3)Xv*vgM3|AJ6(fdOAPSx?xCx||(u6gT0h7AMe>Jj)q-D%8da;=)C9_Ck6$+do_inU3z=^E|$Yeqd#qkiT zea%mHeAsc2!#!Wr-R<3E13D>_d>JX;F3cgZ3<`NlrR8%c$VAKTz#$?NGt0<84stYB zVK(=R({hDC8*w4vL(OtS*`^@?82kd7-u3#(wXq8jt0D0^7bJvpq0_l^i0QMpP)v9& zY;L-Ptnfg(ukJnhPPi3DJ4l@(L#M!a`J#;VB78tEAuVA`>C9cEtZzt??mKu0FY8IZ zs}eL!IqlJw)nK;l9F9TkLYRe|J{W>39 z<%P+JgT#A$Ldj8Roi9jtHY44bqh7_ONSHCzT*K!YJ|c*b1b&=x2@)u>3vhBjuH2D; z-{ceID5^*%*W#DqJR?cWBs7TG@qP_H$Tf8wYzNFcLJ-h0`E(9 zgCXP-<4;enmc`Sd?54%&a^_Ug?hq@Nh?V%_MXGX2@+RHo-m-v|ne{ zv0OgQVeP>;1X|AWBIqJNBGSm@nKY-kkQ|oTw`jqt%sh{LCLS86o*I<%vl*Cw9Yx{2oovxL4N*hQl^QPRFEJ=kq;|fM05TGww?%^Ns|jTO+)b>;rhUZ1RulSWUU#o zNMs+3(g>Dth{nj9vhVIODkW!Y0!d(ZafaoQSv0RIVjx6jLS2_6mQ7Dnh(QuDAsQT4 zwt^_uBI1?XVxRz-MO0@zKtYX(O<^1}eaO^$-NY#Vf@ci@PI=%NAKnVhZvF6nprepz zF`Dfl?C`WQEPa3Zs~V=6p(sY*0)CHjSHs5b*Qaz2?N*Tri-1so6yK;%$Rxs}K< zB3=h?EWnsT=5i&(-*OppT;FEVNxl)yFa0}g>9HhNN1_LBPoiE-zCq`g0)U8AepQmpmlT}NK(kQ zK0$kvbr6hfC*s&JrQm%V{IMd$NQWjDxuR@=QIzBaD30`u&H-O|V35I3L*w9dY03vi zf)qN2E}Ion2FwE-XDV%c{-%tM2Reoc^X3Eq8q2u>&JOF! z7)O#L&SIi6)kF;RmJ~`-eIh`a$f-#w7mR^}i*QsH9pyWji6v0b{s`s(ipc@fHfoN) z<&41(;q;xGQy8UfK%H+aXH$kK>*eaQxKFML=q7NH>vGm#(B+iznF`IeNZo~{q5=mj zqR`1?m4}=TW`*e;49w9U6Z;fm{r|b}( z`##DVH|f8Zm`WLyRSD^z7x1jSSy3jv!giH~UMvYhs;47wkrt9ZmCYIoy1*>v9~8^X zWX#QZTA4((548>Eds_NM+GZ^h;^ROhU;oSt#-<@#&jne~a>7#l>xQ+)6{|u!r z51W`TOWXl;g~@1G3PeJsdDK1IRSeG#h2^ww45$cj z8WZq4Ue~>K$9*ri5Ida@m);K6XrwG%9iza#V{!sZ+2WappO1Dg-oAC`=6lV_Sr&Uy zba~A~>`=gZCk!4;y*6lHI^64bm<$@teebq=QAZvk`0EqvUR!?udejxm0*nuZcgMs_ z;`d*nEPd_$w^&S4uKfS?xAzPGrCk!DoU%qaBe+!Nh z>a{$C>AJ9Vz(!)6Of3!`?)v8E1rmW4kq!}%1=6!fG={>*HMtexi#$k)7lO-t$;o>L zzNjLwX`DpNoB|Kz=M9DziyqK`u*V?zLHduJPl*PFfRUKJ%<|s#H?s(jnGi-9Vsc0( z9qob$bdx8X=cWuG1~F;v>h0Utuim|y&b@u>+SRwSZ}@G;hkKO|mll7tk9vGrWbccg zDOu9v0Iz-R*6Pa5H`{OB`p%8L84Nc~+eN>0inn@RKdtGGmRv7QUXMXnK{T)EKOQRyI%42i{I6#&u0w*QN=aHv)YN)o4 z-8Xc!<%hR}EY8YE32X3kB4UgY>Sa+<3KyGjF4lZ17G`WPC+K-iCUEgP94Nyff0QI- z6>khto3Ilu;m1T?|MHvHgeJ2fbLMAEWE~e-ehMppcX~0vp2bXx1!W%N@|Z|a5oo66 zk4HEm0PNlY*NVwY9{`oGAu0>{EOLMclkuSei98L58pQ^%n3%=BBp4!xbzvq!GvRDu!_8Nv~R#<4nlUQejnF} zWk2juFxRA5`;XD*04+-G&Oeg|Nl~a%{K8=Z8JCKopZt|@Eef7l#33BU;ha&(@_b{asSGlNjw4tyYu)-N8OpT_s$-% zM;s?lYqoj=5Bok-(R&tAyKAh)Q$stORo4=Y8 z0gRs#^rJO6N?KBlOhLA0`9nd7X;!3&3vHZfajPlg(i!IC;K+Nsy2pv0=H)qFF7d)2 zvQ!+Fa^%ISShFd?~INA96{{pxUVQc^Z literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/click/_bashcomplete.py b/env/lib/python3.6/site-packages/click/_bashcomplete.py new file mode 100644 index 0000000..8bca244 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/_bashcomplete.py @@ -0,0 +1,375 @@ +import copy +import os +import re + +from .core import Argument +from .core import MultiCommand +from .core import Option +from .parser import split_arg_string +from .types import Choice +from .utils import echo + +try: + from collections import abc +except ImportError: + import collections as abc + +WORDBREAK = "=" + +# Note, only BASH version 4.4 and later have the nosort option. +COMPLETION_SCRIPT_BASH = """ +%(complete_func)s() { + local IFS=$'\n' + COMPREPLY=( $( env COMP_WORDS="${COMP_WORDS[*]}" \\ + COMP_CWORD=$COMP_CWORD \\ + %(autocomplete_var)s=complete $1 ) ) + return 0 +} + +%(complete_func)setup() { + local COMPLETION_OPTIONS="" + local BASH_VERSION_ARR=(${BASH_VERSION//./ }) + # Only BASH version 4.4 and later have the nosort option. + if [ ${BASH_VERSION_ARR[0]} -gt 4 ] || ([ ${BASH_VERSION_ARR[0]} -eq 4 ] \ +&& [ ${BASH_VERSION_ARR[1]} -ge 4 ]); then + COMPLETION_OPTIONS="-o nosort" + fi + + complete $COMPLETION_OPTIONS -F %(complete_func)s %(script_names)s +} + +%(complete_func)setup +""" + +COMPLETION_SCRIPT_ZSH = """ +#compdef %(script_names)s + +%(complete_func)s() { + local -a completions + local -a completions_with_descriptions + local -a response + (( ! $+commands[%(script_names)s] )) && return 1 + + response=("${(@f)$( env COMP_WORDS=\"${words[*]}\" \\ + COMP_CWORD=$((CURRENT-1)) \\ + %(autocomplete_var)s=\"complete_zsh\" \\ + %(script_names)s )}") + + for key descr in ${(kv)response}; do + if [[ "$descr" == "_" ]]; then + completions+=("$key") + else + completions_with_descriptions+=("$key":"$descr") + fi + done + + if [ -n "$completions_with_descriptions" ]; then + _describe -V unsorted completions_with_descriptions -U + fi + + if [ -n "$completions" ]; then + compadd -U -V unsorted -a completions + fi + compstate[insert]="automenu" +} + +compdef %(complete_func)s %(script_names)s +""" + +COMPLETION_SCRIPT_FISH = ( + "complete --no-files --command %(script_names)s --arguments" + ' "(env %(autocomplete_var)s=complete_fish' + " COMP_WORDS=(commandline -cp) COMP_CWORD=(commandline -t)" + ' %(script_names)s)"' +) + +_completion_scripts = { + "bash": COMPLETION_SCRIPT_BASH, + "zsh": COMPLETION_SCRIPT_ZSH, + "fish": COMPLETION_SCRIPT_FISH, +} + +_invalid_ident_char_re = re.compile(r"[^a-zA-Z0-9_]") + + +def get_completion_script(prog_name, complete_var, shell): + cf_name = _invalid_ident_char_re.sub("", prog_name.replace("-", "_")) + script = _completion_scripts.get(shell, COMPLETION_SCRIPT_BASH) + return ( + script + % { + "complete_func": "_{}_completion".format(cf_name), + "script_names": prog_name, + "autocomplete_var": complete_var, + } + ).strip() + ";" + + +def resolve_ctx(cli, prog_name, args): + """Parse into a hierarchy of contexts. Contexts are connected + through the parent variable. + + :param cli: command definition + :param prog_name: the program that is running + :param args: full list of args + :return: the final context/command parsed + """ + ctx = cli.make_context(prog_name, args, resilient_parsing=True) + args = ctx.protected_args + ctx.args + while args: + if isinstance(ctx.command, MultiCommand): + if not ctx.command.chain: + cmd_name, cmd, args = ctx.command.resolve_command(ctx, args) + if cmd is None: + return ctx + ctx = cmd.make_context( + cmd_name, args, parent=ctx, resilient_parsing=True + ) + args = ctx.protected_args + ctx.args + else: + # Walk chained subcommand contexts saving the last one. + while args: + cmd_name, cmd, args = ctx.command.resolve_command(ctx, args) + if cmd is None: + return ctx + sub_ctx = cmd.make_context( + cmd_name, + args, + parent=ctx, + allow_extra_args=True, + allow_interspersed_args=False, + resilient_parsing=True, + ) + args = sub_ctx.args + ctx = sub_ctx + args = sub_ctx.protected_args + sub_ctx.args + else: + break + return ctx + + +def start_of_option(param_str): + """ + :param param_str: param_str to check + :return: whether or not this is the start of an option declaration + (i.e. starts "-" or "--") + """ + return param_str and param_str[:1] == "-" + + +def is_incomplete_option(all_args, cmd_param): + """ + :param all_args: the full original list of args supplied + :param cmd_param: the current command paramter + :return: whether or not the last option declaration (i.e. starts + "-" or "--") is incomplete and corresponds to this cmd_param. In + other words whether this cmd_param option can still accept + values + """ + if not isinstance(cmd_param, Option): + return False + if cmd_param.is_flag: + return False + last_option = None + for index, arg_str in enumerate( + reversed([arg for arg in all_args if arg != WORDBREAK]) + ): + if index + 1 > 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 [] + + has_double_dash = "--" in all_args + + # 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 not has_double_dash and 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, use '_' to indicate no description + # is present. + echo(item[1] if item[1] else "_") + + return True + + +def do_complete_fish(cli, prog_name): + cwords = split_arg_string(os.environ["COMP_WORDS"]) + incomplete = os.environ["COMP_CWORD"] + args = cwords[1:] + + for item in get_choices(cli, prog_name, args, incomplete): + if item[1]: + echo("{arg}\t{desc}".format(arg=item[0], desc=item[1])) + else: + echo(item[0]) + + return True + + +def bashcomplete(cli, prog_name, complete_var, complete_instr): + if "_" in complete_instr: + command, shell = complete_instr.split("_", 1) + else: + command = complete_instr + shell = "bash" + + if command == "source": + echo(get_completion_script(prog_name, complete_var, shell)) + return True + elif command == "complete": + if shell == "fish": + return do_complete_fish(cli, prog_name) + elif shell in {"bash", "zsh"}: + return do_complete(cli, prog_name, shell == "zsh") + + return False diff --git a/env/lib/python3.6/site-packages/click/_compat.py b/env/lib/python3.6/site-packages/click/_compat.py new file mode 100644 index 0000000..60cb115 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/_compat.py @@ -0,0 +1,786 @@ +# flake8: noqa +import codecs +import io +import os +import re +import sys +from weakref import WeakKeyDictionary + +PY2 = sys.version_info[0] == 2 +CYGWIN = sys.platform.startswith("cygwin") +MSYS2 = sys.platform.startswith("win") and ("GCC" in sys.version) +# Determine local App Engine environment, per Google's own suggestion +APP_ENGINE = "APPENGINE_RUNTIME" in os.environ and "Development/" in os.environ.get( + "SERVER_SOFTWARE", "" +) +WIN = sys.platform.startswith("win") and not APP_ENGINE and not MSYS2 +DEFAULT_COLUMNS = 80 + + +_ansi_re = re.compile(r"\033\[[;?0-9]*[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 + 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_compat_stream_attr(stream, attr, value): + """A stream attribute is compatible if it is equal to the + desired value or the desired value is unset and the attribute + has a value. + """ + stream_value = getattr(stream, attr, None) + return stream_value == value or (value is None and stream_value is not None) + + def _is_compatible_text_stream(stream, encoding, errors): + """Check if a stream's encoding and errors attributes are + compatible with the desired values. + """ + return _is_compat_stream_attr( + stream, "encoding", encoding + ) and _is_compat_stream_attr(stream, "errors", errors) + + def _force_correct_text_stream( + text_stream, + encoding, + errors, + is_binary, + find_binary, + force_readable=False, + force_writable=False, + ): + if is_binary(text_stream, False): + binary_reader = text_stream + else: + # If the stream looks compatible, and won't default to a + # misconfigured ascii encoding, return it as-is. + if _is_compatible_text_stream(text_stream, encoding, errors) and not ( + encoding is None and _stream_is_misconfigured(text_stream) + ): + return text_stream + + # Otherwise, get the underlying binary reader. + binary_reader = find_binary(text_stream) + + # If that's not possible, silently use the original reader + # and get mojibake instead of exceptions. + if binary_reader is None: + return text_stream + + # Default errors to replace instead of strict in order to get + # something that works. + if errors is None: + errors = "replace" + + # Wrap the binary stream in a text stream with the correct + # encoding parameters. + return _make_text_stream( + binary_reader, + encoding, + errors, + force_readable=force_readable, + force_writable=force_writable, + ) + + def _force_correct_text_reader(text_reader, encoding, errors, force_readable=False): + return _force_correct_text_stream( + text_reader, + encoding, + errors, + _is_binary_reader, + _find_binary_reader, + force_readable=force_readable, + ) + + def _force_correct_text_writer(text_writer, encoding, errors, force_writable=False): + return _force_correct_text_stream( + text_writer, + encoding, + errors, + _is_binary_writer, + _find_binary_writer, + 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 _wrap_io_open(file, mode, encoding, errors): + """On Python 2, :func:`io.open` returns a text file wrapper that + requires passing ``unicode`` to ``write``. Need to open the file in + binary mode then wrap it in a subclass that can write ``str`` and + ``unicode``. + + Also handles not passing ``encoding`` and ``errors`` in binary mode. + """ + binary = "b" in mode + + if binary: + kwargs = {} + else: + kwargs = {"encoding": encoding, "errors": errors} + + if not PY2 or binary: + return io.open(file, mode, **kwargs) + + f = io.open(file, "{}b".format(mode.replace("t", ""))) + return _make_text_stream(f, **kwargs) + + +def open_stream(filename, mode="r", encoding=None, errors="strict", atomic=False): + binary = "b" in mode + + # 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 binary: + return get_binary_stdout(), False + return get_text_stdout(encoding=encoding, errors=errors), False + if binary: + 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: + return _wrap_io_open(filename, mode, encoding, 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 errno + import random + + try: + perm = os.stat(filename).st_mode + except OSError: + perm = None + + flags = os.O_RDWR | os.O_CREAT | os.O_EXCL + + if binary: + flags |= getattr(os, "O_BINARY", 0) + + while True: + tmp_filename = os.path.join( + os.path.dirname(filename), + ".__atomic-write{:08x}".format(random.randrange(1 << 32)), + ) + try: + fd = os.open(tmp_filename, flags, 0o666 if perm is None else perm) + break + except OSError as e: + if e.errno == errno.EEXIST or ( + os.name == "nt" + and e.errno == errno.EACCES + and os.path.isdir(e.filename) + and os.access(e.filename, os.W_OK) + ): + continue + raise + + if perm is not None: + os.chmod(tmp_filename, perm) # in case perm includes bits in umask + + f = _wrap_io_open(fd, mode, encoding, errors) + 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 _is_jupyter_kernel_output(stream): + if WIN: + # TODO: Couldn't test on Windows, should't try to support until + # someone tests the details wrt colorama. + return + + while isinstance(stream, (_FixupStream, _NonClosingTextIOWrapper)): + stream = stream._stream + + return stream.__class__.__module__.startswith("ipykernel.") + + +def should_strip_ansi(stream=None, color=None): + if color is None: + if stream is None: + stream = sys.stdin + return not isatty(stream) and not _is_jupyter_kernel_output(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/env/lib/python3.6/site-packages/click/_termui_impl.py b/env/lib/python3.6/site-packages/click/_termui_impl.py new file mode 100644 index 0000000..88bec37 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/_termui_impl.py @@ -0,0 +1,657 @@ +# -*- coding: utf-8 -*- +""" +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. +""" +import contextlib +import math +import os +import sys +import time + +from ._compat import _default_text_stdout +from ._compat import CYGWIN +from ._compat import get_best_encoding +from ._compat import int_types +from ._compat import isatty +from ._compat import open_stream +from ._compat import range_type +from ._compat import strip_ansi +from ._compat import term_len +from ._compat import WIN +from .exceptions import ClickException +from .utils import echo + +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 __next__(self): + # Iteration is defined in terms of a generator function, + # returned by iter(self); use that to define next(). This works + # because `self.iter` is an iterable consumed by that generator, + # so it is re-entry safe. Calling `next(self.generator())` + # twice works and does "what you want". + return next(iter(self)) + + # Python 2 compat + next = __next__ + + 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: + return "{}d {:02}:{:02}:{:02}".format(t, hours, minutes, seconds) + else: + return "{:02}:{:02}:{:02}".format(hours, minutes, seconds) + return "" + + def format_pos(self): + pos = str(self.pos) + if self.length_known: + pos += "/{}".format(self.length) + return pos + + def format_pct(self): + return "{: 4}%".format(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): + """Return a generator which yields the items added to the bar + during construction, and updates the progress bar *after* the + yielded block returns. + """ + # WARNING: the iterator interface for `ProgressBar` relies on + # this and only works because this is a simple generator which + # doesn't create or manage additional state. If this function + # changes, the impact should be evaluated both against + # `iter(bar)` and `next(bar)`. `next()` in particular may call + # `self.generator()` repeatedly, and this must remain safe in + # order for that interface to work. + 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 "{}"'.format(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 = "{}{}".format(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('{} "{}"'.format(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 "sensible-editor", "vim", "nano": + if os.system("which {} >/dev/null 2>&1".format(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( + '{} "{}"'.format(editor, filename), env=environ, shell=True, + ) + exit_code = c.wait() + if exit_code != 0: + raise ClickException("{}: Editing failed!".format(editor)) + except OSError as e: + raise ClickException("{}: Editing failed: {}".format(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,"{}"'.format(_unquote_file(url.replace('"', ""))) + else: + args = 'start {} "" "{}"'.format( + "/WAIT" if wait else "", url.replace('"', "") + ) + return os.system(args) + elif CYGWIN: + if locate: + url = _unquote_file(url) + args = 'cygstart "{}"'.format(os.path.dirname(url).replace('"', "")) + else: + args = 'cygstart {} "{}"'.format("-w" if wait else "", 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/env/lib/python3.6/site-packages/click/_textwrap.py b/env/lib/python3.6/site-packages/click/_textwrap.py new file mode 100644 index 0000000..6959087 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/_textwrap.py @@ -0,0 +1,37 @@ +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/env/lib/python3.6/site-packages/click/_unicodefun.py b/env/lib/python3.6/site-packages/click/_unicodefun.py new file mode 100644 index 0000000..781c365 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/_unicodefun.py @@ -0,0 +1,131 @@ +import codecs +import os +import sys + +from ._compat import PY2 + + +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 + + from . import disable_unicode_literals_warning + + if not PY2 or 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 locales were discovered. This most likely" + " requires resolving by reconfiguring the locale" + " system." + ) + elif has_c_utf8: + extra += ( + "This system supports the C.UTF-8 locale which is" + " recommended. You might be able to resolve your issue" + " by exporting the 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 you can pick from. The following suitable" + " locales were discovered: {}".format(", ".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" + " but the locale system could not pick up from it" + " because it does not exist. The exported locale is" + " '{}' but it is not supported".format(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/python3/ for" + " mitigation steps.{}".format(extra) + ) diff --git a/env/lib/python3.6/site-packages/click/_winconsole.py b/env/lib/python3.6/site-packages/click/_winconsole.py new file mode 100644 index 0000000..b6c4274 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/_winconsole.py @@ -0,0 +1,370 @@ +# -*- 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 ctypes +import io +import os +import sys +import time +import zlib +from ctypes import byref +from ctypes import c_char +from ctypes import c_char_p +from ctypes import c_int +from ctypes import c_ssize_t +from ctypes import c_ulong +from ctypes import c_void_p +from ctypes import POINTER +from ctypes import py_object +from ctypes import windll +from ctypes import WinError +from ctypes import WINFUNCTYPE +from ctypes.wintypes import DWORD +from ctypes.wintypes import HANDLE +from ctypes.wintypes import LPCWSTR +from ctypes.wintypes import LPWSTR + +import msvcrt + +from ._compat import _NonClosingTextIOWrapper +from ._compat import PY2 +from ._compat import text_type + +try: + from ctypes import pythonapi + + PyObject_GetBuffer = pythonapi.PyObject_GetBuffer + PyBuffer_Release = pythonapi.PyBuffer_Release +except ImportError: + pythonapi = None + + +c_ssize_p = POINTER(c_ssize_t) + +kernel32 = windll.kernel32 +GetStdHandle = kernel32.GetStdHandle +ReadConsoleW = kernel32.ReadConsoleW +WriteConsoleW = kernel32.WriteConsoleW +GetConsoleMode = kernel32.GetConsoleMode +GetLastError = kernel32.GetLastError +GetCommandLineW = WINFUNCTYPE(LPWSTR)(("GetCommandLineW", windll.kernel32)) +CommandLineToArgvW = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))( + ("CommandLineToArgvW", windll.shell32) +) +LocalFree = WINFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p)( + ("LocalFree", windll.kernel32) +) + + +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( + HANDLE(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: {}".format(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 {}".format(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( + HANDLE(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 "".format( + 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)) + if not argv_unicode: + raise WinError() + try: + argv = [argv_unicode[i] for i in range(0, argc.value)] + finally: + LocalFree(argv_unicode) + del argv_unicode + + 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 _is_console(f): + if not hasattr(f, "fileno"): + return False + + try: + fileno = f.fileno() + except OSError: + return False + + handle = msvcrt.get_osfhandle(fileno) + return bool(GetConsoleMode(handle, byref(DWORD()))) + + +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 _is_console(f) + ): + 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/env/lib/python3.6/site-packages/click/core.py b/env/lib/python3.6/site-packages/click/core.py new file mode 100644 index 0000000..f58bf26 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/core.py @@ -0,0 +1,2030 @@ +import errno +import inspect +import os +import sys +from contextlib import contextmanager +from functools import update_wrapper +from itertools import repeat + +from ._compat import isidentifier +from ._compat import iteritems +from ._compat import PY2 +from ._compat import string_types +from ._unicodefun import _check_for_unicode_literals +from ._unicodefun import _verify_python3_env +from .exceptions import Abort +from .exceptions import BadParameter +from .exceptions import ClickException +from .exceptions import Exit +from .exceptions import MissingParameter +from .exceptions import UsageError +from .formatting import HelpFormatter +from .formatting import join_options +from .globals import pop_context +from .globals import push_context +from .parser import OptionParser +from .parser import split_opt +from .termui import confirm +from .termui import prompt +from .termui import style +from .types import BOOL +from .types import convert_type +from .types import IntRange +from .utils import echo +from .utils import get_os_args +from .utils import make_default_short_help +from .utils import make_str +from .utils import PacifyFlushWrapper + +_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 = "_{}_COMPLETE".format(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( + "{}. Command '{}' is set to chain and '{}' was added as" + " subcommand but it in itself is a multi command. ('{}' is a {}" + " within a chained {} named '{}').".format( + 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: + from warnings import warn + + warn( + "Parameter callbacks take 3 args, (ctx, param, value). The" + " 2-arg style is deprecated and will be removed in 8.0.".format(callback), + DeprecationWarning, + 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.""" + 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. + + .. versionadded:: 7.1 + Added the `show_default` parameter. + + :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. + :param show_default: if True, shows defaults for all options. + Even if an option is later created with show_default=False, + this command-level setting overrides it. + """ + + 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, + show_default=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 = "{}_{}".format( + parent.auto_envvar_prefix, self.info_name.upper() + ) + else: + auto_envvar_prefix = auto_envvar_prefix.upper() + if auto_envvar_prefix is not None: + auto_envvar_prefix = auto_envvar_prefix.replace("-", "_") + 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.show_default = show_default + + 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 = f'{__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 = "{} {}".format(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): # noqa: B902 + """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): # noqa: B902 + """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 __repr__(self): + return "<{} {}>".format(self.__class__.__name__, self.name) + + 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[0] if sys.argv else __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. + .. versionchanged:: 7.1 + Added the `no_args_is_help` 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 no_args_is_help: this controls what happens if no arguments are + provided. This option is disabled by default. + If enabled this will add ``--help`` as argument + if no arguments are passed + :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, + no_args_is_help=False, + 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.no_args_is_help = no_args_is_help + self.hidden = hidden + self.deprecated = deprecated + + def get_usage(self, ctx): + """Formats the usage line into a string and returns it. + + Calls :meth:`format_usage` internally. + """ + 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. + + This is a low-level method called by :meth:`get_usage`. + """ + 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. + + Calls :meth:`format_help` internally. + """ + 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 is a low-level method called by :meth:`get_help`. + + This calls 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): + if not args and self.no_args_is_help and not ctx.resilient_parsing: + echo(ctx.get_help(), color=ctx.color) + ctx.exit() + + 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{} ({})".format( + "s" if len(args) != 1 else "", " ".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 = "*" if args else 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 '{}'.".format(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`. + """ + from .decorators import 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`. + """ + from .decorators import group + + 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. + + :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. + :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. + + .. versionchanged:: 7.1 + Empty environment variables are ignored rather than taking the + empty string value. This makes it possible for scripts to clear + variables if they can't unset them. + + .. versionchanged:: 2.0 + Changed signature for parameter callback to also be passed the + parameter. The old callback format will still work, but it will + raise a warning to give you a chance to migrate the code easier. + """ + 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 + + def __repr__(self): + return "<{} {}>".format(self.__class__.__name__, self.name) + + @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 {}. This is not supported; nargs" + " needs to be set to a fixed value > 1.".format(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: + rv = os.environ.get(self.envvar) + + if rv != "": + return rv + + 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(repr(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 in [None, bool]: + 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 = ";" if decl[:1] == "/" else "/" + 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 ({}). Did you" + " mean to declare an argument instead of an option?".format(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) + action_const = "{}_const".format(action) + 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 += " {}".format(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 = "{}_{}".format(ctx.auto_envvar_prefix, self.name.upper()) + if envvar is not None: + extra.append( + "env var: {}".format( + ", ".join(str(d) for d in envvar) + if isinstance(envvar, (list, tuple)) + else envvar + ) + ) + if self.default is not None and (self.show_default or ctx.show_default): + if isinstance(self.show_default, string_types): + default_string = "({})".format(self.show_default) + elif isinstance(self.default, (list, tuple)): + default_string = ", ".join(str(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 = "{}[{}]".format( + "{} ".format(help) if help else "", "; ".join(extra) + ) + + return ("; " if any_prefix_is_slash else " / ").join(rv), help + + def get_default(self, ctx): + # If we're a non boolean flag our 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 = "{}_{}".format(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 = "[{}]".format(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" + " {}".format(len(decls)) + ) + return name, [arg], [] + + def get_usage_pieces(self, ctx): + return [self.make_metavar()] + + def get_error_hint(self, ctx): + return repr(self.make_metavar()) + + def add_to_parser(self, parser, ctx): + parser.add_argument(dest=self.name, nargs=self.nargs, obj=self) diff --git a/env/lib/python3.6/site-packages/click/decorators.py b/env/lib/python3.6/site-packages/click/decorators.py new file mode 100644 index 0000000..c7b5af6 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/decorators.py @@ -0,0 +1,333 @@ +import inspect +import sys +from functools import update_wrapper + +from ._compat import iteritems +from ._unicodefun import _check_for_unicode_literals +from .core import Argument +from .core import Command +from .core import Group +from .core import Option +from .globals import get_current_context +from .utils import echo + + +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 '{}' existing".format(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 with + underscores replaced by dashes. 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 _, 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 diff --git a/env/lib/python3.6/site-packages/click/exceptions.py b/env/lib/python3.6/site-packages/click/exceptions.py new file mode 100644 index 0000000..592ee38 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/exceptions.py @@ -0,0 +1,253 @@ +from ._compat import filename_to_ui +from ._compat import get_text_stderr +from ._compat import PY2 +from .utils import echo + + +def _join_param_hints(param_hint): + if isinstance(param_hint, (tuple, list)): + return " / ".join(repr(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: {}".format(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.command if self.ctx else 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 '{} {}' for help.\n".format( + self.ctx.command_path, self.ctx.help_option_names[0] + ) + if self.ctx is not None: + color = self.ctx.color + echo("{}\n{}".format(self.ctx.get_usage(), hint), file=file, color=color) + echo("Error: {}".format(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: {}".format(self.message) + param_hint = _join_param_hints(param_hint) + + return "Invalid value for {}: {}".format(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 += ". {}".format(msg_extra) + else: + msg = msg_extra + + return "Missing {}{}{}{}".format( + param_type, + " {}".format(param_hint) if param_hint else "", + ". " if msg else ".", + msg or "", + ) + + def __str__(self): + if self.message is None: + param_name = self.param.name if self.param else None + return "missing parameter: {}".format(param_name) + else: + return self.message + + if PY2: + __unicode__ = __str__ + + def __str__(self): + return self.__unicode__().encode("utf-8") + + +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: {}".format(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 {}?".format(self.possibilities[0])) + else: + possibilities = sorted(self.possibilities) + bits.append("(Possible options: {})".format(", ".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 {}: {}".format(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. + """ + + __slots__ = ("exit_code",) + + def __init__(self, code=0): + self.exit_code = code diff --git a/env/lib/python3.6/site-packages/click/formatting.py b/env/lib/python3.6/site-packages/click/formatting.py new file mode 100644 index 0000000..319c7f6 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/formatting.py @@ -0,0 +1,283 @@ +from contextlib import contextmanager + +from ._compat import term_len +from .parser import split_opt +from .termui import get_terminal_size + +# 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 = "{:>{w}}{} ".format(prefix, prog, w=self.current_indent) + 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("{:>{w}}{}:\n".format("", heading, w=self.current_indent)) + + 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("{:>{w}}{}".format("", first, w=self.current_indent)) + 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) + wrapped_text = wrap_text(second, text_width, preserve_paragraphs=True) + lines = wrapped_text.splitlines() + + if lines: + self.write("{}\n".format(lines[0])) + + for line in lines[1:]: + self.write( + "{:>{w}}{}\n".format( + "", line, w=first_col + self.current_indent + ) + ) + + if len(lines) > 1: + # separate long help from next option + self.write("\n") + 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/env/lib/python3.6/site-packages/click/globals.py b/env/lib/python3.6/site-packages/click/globals.py new file mode 100644 index 0000000..1649f9a --- /dev/null +++ b/env/lib/python3.6/site-packages/click/globals.py @@ -0,0 +1,47 @@ +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: if set to `True` the return value is `None` if no context + is available. The default behavior is to raise a + :exc:`RuntimeError`. + """ + try: + return _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/env/lib/python3.6/site-packages/click/parser.py b/env/lib/python3.6/site-packages/click/parser.py new file mode 100644 index 0000000..f43ebfe --- /dev/null +++ b/env/lib/python3.6/site-packages/click/parser.py @@ -0,0 +1,428 @@ +# -*- coding: utf-8 -*- +""" +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. + +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. +""" +import re +from collections import deque + +from .exceptions import BadArgumentUsage +from .exceptions import BadOptionUsage +from .exceptions import NoSuchOption +from .exceptions import UsageError + + +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, "{} option requires an argument".format(opt)) + raise BadOptionUsage(opt, "{} option requires {} arguments".format(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"('([^'\\]*(?:\\.[^'\\]*)*)'|\"([^\"\\]*(?:\\.[^\"\\]*)*)\"|\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 ({})".format(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 '{}'".format(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 {} takes {} values".format(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 = {"-", "--"} + 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, "{} option does not take a value".format(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("{}{}".format(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/env/lib/python3.6/site-packages/click/termui.py b/env/lib/python3.6/site-packages/click/termui.py new file mode 100644 index 0000000..02ef9e9 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/termui.py @@ -0,0 +1,681 @@ +import inspect +import io +import itertools +import os +import struct +import sys + +from ._compat import DEFAULT_COLUMNS +from ._compat import get_winterm_size +from ._compat import isatty +from ._compat import raw_input +from ._compat import string_types +from ._compat import strip_ansi +from ._compat import text_type +from ._compat import WIN +from .exceptions import Abort +from .exceptions import UsageError +from .globals import resolve_color_default +from .types import Choice +from .types import convert_type +from .types import Path +from .utils import echo +from .utils import LazyFile + +# 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 += " ({})".format(", ".join(map(str, type.choices))) + if default is not None and show_default: + prompt = "{} [{}]".format(prompt, _format_default(default)) + return prompt + suffix + + +def _format_default(default): + if isinstance(default, (io.IOBase, LazyFile)) and hasattr(default, "name"): + return default.name + + return default + + +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 = hidden_prompt_func if hide_input else 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: {}".format(e.message), err=err) # noqa: B306 + 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, "Y/n" if default else "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 created. 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. + + Note: The progress bar is currently designed for use cases where the + total progress can be expected to take at least several seconds. + Because of this, the ProgressBar class object won't display + progress that is considered too fast, and progress where the time + between steps is less than a second. + + 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[{}m".format(_ansi_colors[fg])) + except KeyError: + raise TypeError("Unknown color '{}'".format(fg)) + if bg: + try: + bits.append("\033[{}m".format(_ansi_colors[bg] + 10)) + except KeyError: + raise TypeError("Unknown color '{}'".format(bg)) + if bold is not None: + bits.append("\033[{}m".format(1 if bold else 22)) + if dim is not None: + bits.append("\033[{}m".format(2 if dim else 22)) + if underline is not None: + bits.append("\033[{}m".format(4 if underline else 24)) + if blink is not None: + bits.append("\033[{}m".format(5 if blink else 25)) + if reverse is not None: + bits.append("\033[{}m".format(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/env/lib/python3.6/site-packages/click/testing.py b/env/lib/python3.6/site-packages/click/testing.py new file mode 100644 index 0000000..a3dba3b --- /dev/null +++ b/env/lib/python3.6/site-packages/click/testing.py @@ -0,0 +1,382 @@ +import contextlib +import os +import shlex +import shutil +import sys +import tempfile + +from . import formatting +from . import termui +from . import utils +from ._compat import iteritems +from ._compat import PY2 +from ._compat import string_types + + +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 None 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 self.stderr_bytes is None: + raise ValueError("stderr not separately captured") + return self.stderr_bytes.decode(self.runner.charset, "replace").replace( + "\r\n", "\n" + ) + + def __repr__(self): + return "<{} {}>".format( + type(self).__name__, repr(self.exception) if self.exception else "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 = formatting.FORCED_WIDTH + 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("{}\n".format(val)) + sys.stdout.flush() + return val + + def hidden_input(prompt=None): + sys.stdout.write("{}\n".format(prompt or "")) + 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 = termui.visible_prompt_func + old_hidden_prompt_func = termui.hidden_prompt_func + old__getchar_func = termui._getchar + old_should_strip_ansi = utils.should_strip_ansi + termui.visible_prompt_func = visible_input + termui.hidden_prompt_func = hidden_input + termui._getchar = _getchar + 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 + termui.visible_prompt_func = old_visible_prompt_func + termui.hidden_prompt_func = old_hidden_prompt_func + termui._getchar = old__getchar_func + utils.should_strip_ansi = old_should_strip_ansi + formatting.FORCED_WIDTH = old_forced_width + + def invoke( + self, + cli, + args=None, + input=None, + env=None, + catch_exceptions=True, + color=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() + if self.mix_stderr: + stderr = None + else: + stderr = 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): # noqa: B014 + pass diff --git a/env/lib/python3.6/site-packages/click/types.py b/env/lib/python3.6/site-packages/click/types.py new file mode 100644 index 0000000..505c39f --- /dev/null +++ b/env/lib/python3.6/site-packages/click/types.py @@ -0,0 +1,762 @@ +import os +import stat +from datetime import datetime + +from ._compat import _get_argv_encoding +from ._compat import filename_to_ui +from ._compat import get_filesystem_encoding +from ._compat import get_streerror +from ._compat import open_stream +from ._compat import PY2 +from ._compat import text_type +from .exceptions import BadParameter +from .utils import LazyFile +from .utils import safecall + + +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") + else: + 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. + + The resulting value will always be one of the originally passed choices + regardless of ``case_sensitive`` or any ``ctx.token_normalize_func`` + being specified. + + 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 "[{}]".format("|".join(self.choices)) + + def get_missing_message(self, param): + return "Choose from:\n\t{}.".format(",\n\t".join(self.choices)) + + def convert(self, value, param, ctx): + # 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 = {choice: choice for choice in 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(normed_choice): original + for normed_choice, original in normed_choices.items() + } + + if not self.case_sensitive: + if PY2: + lower = str.lower + else: + lower = str.casefold + + normed_value = lower(normed_value) + normed_choices = { + lower(normed_choice): original + for normed_choice, original in normed_choices.items() + } + + if normed_value in normed_choices: + return normed_choices[normed_value] + + self.fail( + "invalid choice: {}. (choose from {})".format( + value, ", ".join(self.choices) + ), + param, + ctx, + ) + + def __repr__(self): + return "Choice('{}')".format(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: + self.fail("{} is not a valid integer".format(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( + "{} is bigger than the maximum valid value {}.".format( + rv, self.max + ), + param, + ctx, + ) + elif self.max is None: + self.fail( + "{} is smaller than the minimum valid value {}.".format( + rv, self.min + ), + param, + ctx, + ) + else: + self.fail( + "{} is not in the valid range of {} to {}.".format( + rv, self.min, self.max + ), + param, + ctx, + ) + return rv + + def __repr__(self): + return "IntRange({}, {})".format(self.min, self.max) + + +class FloatParamType(ParamType): + name = "float" + + def convert(self, value, param, ctx): + try: + return float(value) + except ValueError: + self.fail( + "{} is not a valid floating point value".format(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( + "{} is bigger than the maximum valid value {}.".format( + rv, self.max + ), + param, + ctx, + ) + elif self.max is None: + self.fail( + "{} is smaller than the minimum valid value {}.".format( + rv, self.min + ), + param, + ctx, + ) + else: + self.fail( + "{} is not in the valid range of {} to {}.".format( + rv, self.min, self.max + ), + param, + ctx, + ) + return rv + + def __repr__(self): + return "FloatRange({}, {})".format(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("{} is not a valid boolean".format(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 ValueError: + self.fail("{} is not a valid UUID value".format(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: # noqa: B014 + self.fail( + "Could not open file: {}: {}".format( + 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( + "{} '{}' does not exist.".format( + self.path_type, filename_to_ui(value) + ), + param, + ctx, + ) + + if not self.file_okay and stat.S_ISREG(st.st_mode): + self.fail( + "{} '{}' is a file.".format(self.path_type, filename_to_ui(value)), + param, + ctx, + ) + if not self.dir_okay and stat.S_ISDIR(st.st_mode): + self.fail( + "{} '{}' is a directory.".format( + self.path_type, filename_to_ui(value) + ), + param, + ctx, + ) + if self.writable and not os.access(value, os.W_OK): + self.fail( + "{} '{}' is not writable.".format( + self.path_type, filename_to_ui(value) + ), + param, + ctx, + ) + if self.readable and not os.access(value, os.R_OK): + self.fail( + "{} '{}' is not readable.".format( + 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 "<{}>".format(" ".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 type into the most appropriate + param type. + """ + 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 ({}).".format(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/env/lib/python3.6/site-packages/click/utils.py b/env/lib/python3.6/site-packages/click/utils.py new file mode 100644 index 0000000..79265e7 --- /dev/null +++ b/env/lib/python3.6/site-packages/click/utils.py @@ -0,0 +1,455 @@ +import os +import sys + +from ._compat import _default_text_stderr +from ._compat import _default_text_stdout +from ._compat import auto_wrap_for_ansi +from ._compat import binary_streams +from ._compat import filename_to_ui +from ._compat import get_filesystem_encoding +from ._compat import get_streerror +from ._compat import is_bytes +from ._compat import open_stream +from ._compat import PY2 +from ._compat import should_strip_ansi +from ._compat import string_types +from ._compat import strip_ansi +from ._compat import text_streams +from ._compat import text_type +from ._compat import WIN +from .globals import resolve_color_default + +if not PY2: + from ._compat import _find_binary_writer +elif WIN: + from ._winconsole import _get_windows_argv + from ._winconsole import _hash_py_argv + from ._winconsole import _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 = 1 + len(word) if result else 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 "".format(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: # noqa: E402 + 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 '{}'".format(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 '{}'".format(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 = "APPDATA" if roaming else "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("~/.{}".format(_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/env/lib/python3.6/site-packages/easy_install.py b/env/lib/python3.6/site-packages/easy_install.py new file mode 100644 index 0000000..d87e984 --- /dev/null +++ b/env/lib/python3.6/site-packages/easy_install.py @@ -0,0 +1,5 @@ +"""Run the EasyInstall command""" + +if __name__ == '__main__': + from setuptools.command.easy_install import main + main() diff --git a/env/lib/python3.6/site-packages/flask/__init__.py b/env/lib/python3.6/site-packages/flask/__init__.py new file mode 100644 index 0000000..1a487e1 --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/__init__.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +""" + flask + ~~~~~ + + A microframework based on Werkzeug. It's extensively documented + and follows best practice patterns. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +# utilities we import from Werkzeug and Jinja2 that are unused +# in the module but are exported as public interface. +from jinja2 import escape +from jinja2 import Markup +from werkzeug.exceptions import abort +from werkzeug.utils import redirect + +from . import json +from ._compat import json_available +from .app import Flask +from .app import Request +from .app import Response +from .blueprints import Blueprint +from .config import Config +from .ctx import after_this_request +from .ctx import copy_current_request_context +from .ctx import has_app_context +from .ctx import has_request_context +from .globals import _app_ctx_stack +from .globals import _request_ctx_stack +from .globals import current_app +from .globals import g +from .globals import request +from .globals import session +from .helpers import flash +from .helpers import get_flashed_messages +from .helpers import get_template_attribute +from .helpers import make_response +from .helpers import safe_join +from .helpers import send_file +from .helpers import send_from_directory +from .helpers import stream_with_context +from .helpers import url_for +from .json import jsonify +from .signals import appcontext_popped +from .signals import appcontext_pushed +from .signals import appcontext_tearing_down +from .signals import before_render_template +from .signals import got_request_exception +from .signals import message_flashed +from .signals import request_finished +from .signals import request_started +from .signals import request_tearing_down +from .signals import signals_available +from .signals import template_rendered +from .templating import render_template +from .templating import render_template_string + +__version__ = "1.1.2" diff --git a/env/lib/python3.6/site-packages/flask/__main__.py b/env/lib/python3.6/site-packages/flask/__main__.py new file mode 100644 index 0000000..f61dbc0 --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/__main__.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +""" + flask.__main__ + ~~~~~~~~~~~~~~ + + Alias for flask.run for the command line. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" + +if __name__ == "__main__": + from .cli import main + + main(as_module=True) diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1cfa64bab67a94dc64a78c5348b5c4fe63f969f GIT binary patch literal 2086 zcmbuA%TgmZ6oze#X>72KF&KtxbH@y}xy&sjl}ct(smda$)XXAP+Gyl%*=|r@Mp6$j zi#$uVd51iSx7lP~A*-BoY!5EBX^P)p|2k41oujrdOQqsJf4qO+buyX1GZWVo@OSWU zHh}yL%lKJ;N@c?-HkC!r0q0nbcv?+|d6p;6tC`SY4)BccsM)Z<3dFOj7|yXd;)0qF zORPj(1TM2O@f>i4Rfy-+LRe*0;*wenYph0GR!iYBTPCgm*IAu-0eFS25Lba$*(&j( zdJ?X&HR2lZI$I}R0^VR7#LK{&Y?HVSyv4SNSAe(KHu0)*!yUFm`~-NH?Gmp6@3B4N zb>MxrPrLzqzz&Evfe+as@fPqAJ0ji&K4!>d3T)PrLHsN7C+;m zZ)68E(s&|~NIwgGlO{lU(TTMMnAOq`wDj!f>@a%z+QbnIl<|{`k0MZ_qi}ZqN2~*Y z^HzRHAzPgOR+=P+X9E{rt5haBh;U%$O&oQD9?+ub!cMsD2Zrk}6E|=}+)K5FYK(pE z#Za0%oL}h+!$p!zST(dpD@@qsVVJ$+#tIMfTYQL`aOcJkgH<6Yi@7-u2{}d@6VTT4 z*zi6KFZHD5bR&Hp!no*31AZNSE5k$yD>-yZ2c6Vn4N9T7k?{D3q8QPY{5lS>rUfG- zpLYW)XKi?+ESb`xCo#QmuG5))3)fXM!#US79%sn(-t~66rrS zQ`0ANWg^l_0bS~GKfcAR>KzFSW7d(6jT-F>MwWZ=LvQ4rClfoYP-Rq%ad9AaVceN+ z5Cx-$R>mH5M#Gthu%)r}D2b{GdXZ4j^NABz9p^I2jaGm~ALm(rWWhx6WG^ zzcjucI2?BCan5G0gXmgZX#5q>IS^L69lx(%c4+i8j+DQQq&84S=fNCgH2k1sU_mbq z;U(3x7@33W>H?51qRgRJ?2KOrqvydG%s{8$mCz-;$$9opmod14vVc;>0jHr?IcK=oitE> y^FoG!`0&cM>1%bQoWrTHoVSwu!R$9-?59e8i)AznWI8vWrN61s=kV_T>(qbdcSQ&Q literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/__main__.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/__main__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1d2a816efefa8e2105a4bb8b53c37c2cbcae147 GIT binary patch literal 378 zcmY*VyH3L}6t&~fgoyrw#ekF{O=%YtA;fD&NM*|6n%JdQZ70OZPzL@0@e8c{QdSoD z1qOuUwn!Z5p8L>!PlvlLKEUb&;Jm)*o73-;6+()3+h%ouUT?jluA*}uoRk) zHtAVWR_j_kESn5Z#>ZoPOQqzEalJAr3a$;$@a60}nI>0~wuVPtxZC0j+B;&{`TbIN zG0gX=A*y7pyeLW;V7!#k)0s~ml&X``yN5>;~F3dxcQSAssC dG^sm!%e$eYYTbpWn<;0J?O_I%d@qCt-Y>Q9YA65z literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/_compat.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/_compat.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de0955daaa39a98e6d042b64b7e252c26d422d7b GIT binary patch literal 4576 zcmbVPS##9b6~0<}b-OXf*zAba(-qt}CX=FEgfK9KP^sx5mbA z%skLkW-3*w$ zV~VkVvVGS)@OyaTe`t(xW;3pFJy2bj*TfzfztGt(wTjf z&f0V096vtPKzW*M!=s ziAzKF=Nk08JY;XR=Zx#WWlz})1`E_P&EK+2SBx}alPeol&|1sp_!;{GW@j;eS&i>z z6!bnDT;9JSKgZ8Q(rejz$ajHXgnSp3eDh+STl^9~16e=e z`U-1Y8T`9y;pzl#ywP;LsM~WBHS+cTtEz@pqOP!d{iU0|{w*t8>bL#CPx@B8+3Q6z zvD$7dxD|z#YsHE5dp&&dXggH3o45snD- zgy(mB&&u~H8rbV6%}kzUFY5KBzq*zzTT6>SU9_IKK_HS?EnE(KPlT~pw(hTdzHn>d zLEvu2qWV1rcI$f`&_g(@i{A7+z!RGQy9}n$T7LydwH;|-NP+(}ZzkQ|&7R*|Xm9!f zUsw`d-+g^MxvA`z!`zC^UOz403EXa*yLXXOEXKoR5#Ru45=C*Y0ZG7nT^q8YrX*bPfqkaDWrd@#K-4Btz zFd_}b>Z>B@YzBcVS7Z1cBjptYP`LW|OOK?Yi{4{vkivT^yftmY$(8xEi>!<@iK(tCkKkB=MA4|4EWIyJ%=7=hsRE67e zmkmDUqGRO-`y}bzu#|i^tfc*mRuqcHa@A7Cv<}Q2Fyq*}v$+{}nWNEh^A1LJvb;1} zN4BhxMD={j5DCOJl|XuHP}od53%3yo6OOYP`d-8Z;-Dx(!Vvb9?uWdtQuH>F#KQ*H z{cbN1T@fa+lSB@cwQ#k0Cx|>Zi0=Z)G8`;Q4$V4_JcWHQj^PFIA=>H8`>6e#m}TKr zrtqTJ9xF*vPnk~n8ea!^#J*wQXdN8AuuGZi2^$)304W2w(P2Itny4P;;MxNz+(cNe zD$ACK8XsGf0T}7RZ)%|Ff#moiW^~1800gs7lHNsmgteEd7@48bczbwUmt-W?IU&#;F;)U6EFkH9vOfM2S`6z`_Ofm726Lvn*ML z3?GVZ$GJ}oD2A9eXna(@X1=Qh)@9(}iO{GzPB-G40pT^rdA;cd*^Imlx|yiDvL@vL?x6=`mD7oR6;TJId%##Z3A=p=dUYjFLs3p#& z$3aM?Xk3oSm-!KyiK?Y$EP_tv5elK)AdZ8q5y*(=7#lgJPK06md}_>sgrmKWXf5S` z!V*ekT}~%xG>71?>bl-aD`LlkA%!bZ!Aomy>?Vm!jkq66DozbuQbA2ks!WH4f~Uof zpE!<9d{l^PRedlyl1k0B8U=X;^YSWzYXqp4$|V9y!975}kv{?W9Ueuntd$Kl@(e|w z*oo0nt&PRNQ{p{k(`UD4_W+<6YzxUd6kFcD>9e5E`}gnDe>lN#UWk@cU5| z97y!BZd3$09nf?z>r}{h4M072;^5QyuingCeoQ@IPRw%A`)&I{V6_EKl5Vtx_R$YV z4WRYan_oEbCR8rs*j*L!I5;&-<#S0rMOw-;K+PO76Q#NzQUGjYXW0OZ7s4o(~+WuoBHJ-d&vMY|yQKs>O zmzMJ8DXk=8CvoWTLcvAVtz`|78i`ZG50lgkqHr~x1S*i7`AnsS^Yx*Wk(4uFCr=Wf z`j?jckXrskQfnaRXh`=XIZ4PdFTyXKmmnSDrrY*X1Hj%t>R>?i)E8a@}+mKG| z+nbtVM|kR#wCCtTh5c0PhL6?p1t_u(NpK)i^tDYg-wf5d!2-#ik{X#i(?^) zyOKPuJcHgDsz2KWOv!IS+q^S(kB_l#X8km|9t{T1~6t zUDRqiec{$?7^~{lLebd!F6+3986I7(F#=Wuo6DkriOZzW14 zj#U+H#d3bX|98Ib9spdeN^;pCr~CCgzV{vf`}&^VvuEgE{A9U2{Qc?FZ>79{IUK)? zzh*m=N`xYYn<#-IoM~X+}cpr|B7LUsDIF64MkIC_V9Dl0#DLFn+ zyKnve;{7;27#^xUu>N52K{-B*&J`7<@hL$A1*#D$H#E|NbwOl{uGWM zEj}v8_thR-KT$j($M@rSqBtSP57Z{tA1^*G#}DH8)5TBAae(8K#glUUQ0>%up;(aP z<2Zhz_=FrkjN{YA({lU>j-M<(DaVi2o?3sp__Q29hT~_7&&cr!96wupR*old{9N%l zIiAGvXNsSZ4@K3)6#`pdJp?$?5HH3aAwbx*7$`IEpK^;L5@)7Xmz9t1ees)kZyNEUiV$t%7P` zYPqqo6<1fUwx)uoPCt1%xLm2#qE=H{pTaXyy%|jfXBN($divB%t+LsShQ3W~oSRIy z2V2$kD2!^Y3Vw`kZiJOqRJsx4Wl@YXealxX)jAGx7aPmh@ZEnts)SM8#NnO`>+74X z%2F*lTU~D9#L$^aI3K;Y88!K9-2Hkj+M12y1{)j?qm{~LtyPL{E=L<2j5KwAaq;r3 zIfL8wU#PdDxL&C(MDg_~HcyYe9<{DE!nsCkx>jr4h(dYmX0;ZYJF>4=HgIyU?#Fx- zR%1*RPL0hsHe1#Ds{fkYJZ2r&M$S~4(R|e0KzE{Vr!hA;nO&|`@s(R^HaG)&s_4>c z6qj0C8xcF*A4hSe+LY&;tr$()OM|WGW=nqIzWhw1zEWMq(Oz{l-NM~Vn=L*$TAJS2 zm}%X7rPf%g)Y$A0Pc-nZo9y+d9*8?LUW(NmmzG;MOU+hA)+NpM(IYea{mrP^#O&hi zky2C-HyY@EX(eu~m#$Z%8>N-a`ZBKVFI~p-mDT7>W3wJ!60pMQk(FvaEN!Su_&vHB zwMt>Mw7FUWEX%8SCaPb@#REJfh+mDu(mGy?<~WeOJYQ>6!cy31sap@#07bZKxw6cg zH{u4sthI%k`#0lSX+=P!pA%kP;n_XQaYTTuHC8e6IC0-Xw7eNdGmXZzYP6t+D4?=Z zS>|*e2H-BM$t$&@iY!XlxWQ>SxY}shsk6|B3u9(JG3Y7>fpdG!Im~a|l2ZrFsg8CZ z#Kb6&Zbd*}c9#o-u`Q#2GNMCgtIdr{Yxyc*5$_)&TRXFzu{b8M>_VJ5=nWTrh- zZC2|TNqsqr!Ep)Peb+0s&FH67@r(HVoyVVOt#3TBQQbJTL}WVkRJ2~Ly!U+T387s2 z6H{B**lO=Btyiu^B}+FhvO9Tvq|!t9FaA7^Y@hiy_L+apL-_b=YDKvG2Lrd#=zsdd z)NNAA?Dn-QAUe&U608e~2h9dZV5JpQTLEAMkg?8-0Gs7&LA4$TFp_M7Xs(c0DneV0 zo2@`ERB)q$M{0nea4Wc4sfV>FEXZxPd!}m-vU`uFSc{N)QO?-)wH; znJo+|BzccGOduKuNgjY%w`Bju)hNap!!7u}dIM9mzR@6%1{fnIX1NhpT8+3FG~%Fv zCSu#eO0C-3l4;T1Y&9AIA+|8I*a%jtH}OU?Bdl-G1eyh{hHf15SPQlqn{hzup*zq# z8Gv0>mOwjYC2Ht8dJutNZ=s?3DprE6qhl?uo#tl1k>w~@im;}5L&p#W-I=_a1wA}BtPZReU%ZKa*7#H-DA{@M+G1M1T&0`Kul zSnBqOW^+OduMh$T@R3T7q%-OK!1hD3x(XT#FMx1?Jik=%pP5X@1fa=Gd=6jnEBqij z;k=xXw+wsD%;RE{!f&c?WKVn^-^=`A{t*ga#$WSaq1h+}aX3X$xR{M{#l9$C?2iVD zgV9iNI2tMLiAKZB?R0T3zO(oq!*>qf`|#ZtjfeS zd9-*e91MrT;nhqvUHnvZUpRvQ_Q>Z*bbmM+?)@k&zsJITa&}yPjfcFtKRke|ynhdb z*>U{0Cp?7Thr=U3em~yxK=fcSh#o2)4@Zg*cxBXWEi$B%}O$?=o8=R`Om$4`ZS zJDdz3M~hE~pAJt#EPE#WJ7FPw0%xAZeW$}G<-X^l=hi+GK4pG|PlwOo-si(-!{_k* z+3+*r^Z1?$KO0Wr`*T{a zJd2~3!`bj0TA2=C3D4vEOn4!D72h-AYvDzFpN(e2*TXq!?Ob>%yo__N;M}i-UkK+v z0R1VR4;R8koV|dvZ-j5kov%i(g;&D27|O4C{Q6cHg)8!F0l)rUxEfxSUyJzl_rq$qCcoam zuWMmV+J6(r>tS7vui&^5ZpiUlIDRjT<@jwJH^Y`37je89UYFx{aC{@YDaT*L@m9Dk z$M53!OW}?je_wbjd>?aA3co-60eqLkKNWr%-<9xo_yN9`!ap5;1>eizSHlnS9fm&` z{uz8n;hzn^hVPZ|qwr&VuZF)C{!sYCSeL8ep9{Z^Gu7}%!atAiweUX({{p_Rh2IE& z6yLS*FNQyc@AdFM41XNo_3$r+KY{N?_?N?<#P>${ABF!hzTX3HN{4?X{HtgaBnZcU zE&S^^ZiRm%{3%@D41YTOCcdwSKNJ2ezHfv-7yeCr-wgj&`1APQ3V$K|MSO3EBj7Cm zpxt+lxX-ONL4kt6^5tvg&?>9ZqW=jDj=7k z+*PlvM?ph4s9`H$8(Q+y7o-V~4;6yo5=05IW;CWmw2;4URKX?C2X?{H`#4&yLO$LK zK=7q0_Dqu#?Yu5T`1MOR}mEoqI@)qV~Aw|1z~X5W)<=SUM&ro2Qhy3W~EVsj3$RhJHuchTS6g1 zvm%3RK(Z#ALf1Sg#5A-~i7~qr1at?mFb#}>Qv{wLY=BGRNpt%|#k})IwRKfZdOet0 zsn(*Ya;XI2v{foW0xN@4Q&*JUPm;@50t$CwCC2P1MRHr(RMw5Xp`{nd1{xCZ)~RIx zadWCHuv}(OMfT*Ji43uhDKtIRFrlTLT}KNLl}F8F)vDLHa@FS4lmY|Mv$?7YWt2=5 zNDpKxc^xnuyr|Ailu87eQfX2>UMK{Wa2Tnm_#)Z5(U6Lh^BsKS4(O793Y@c zKo{`Q+-d@ePC_89L)KELu(TCGtAsfKW0conmf{BbCz91F7ToqJ0UM+&0Ew25c6{9e z#KYE!rj`*abx;6`?1TljtC0(s3c@4n7gPXtn@~np3A6aBDb!OeN&B|WTg~Jbnov7h6DJBMCf_;zu0|5x zeB~-s6)s4n^?7PA9U2Nbz>P+Hjaon*3<2GC3raFysb6#O3jDzGIY1Wps6n~M%4}|6 zjnC`FHOxg+6AP^Zk9H^7@44kW~#25AbRj1GaJA_M2klh+P2Vt zydi)(1WtRXIc0+dSyG(br;2gW&zw8_OE(acEni&dnE+Y zf;^ute8x0F5G;eiw5rP`8j)aVxmpGp(Wev}#|g>~Wg}O>)I{!XvCdNMW^hAvY`#ac zIIxDUw?ChFyJ2wZ-Re#Doan${0wpENl)>+{SfJizT9TpN;gwH5Y3`H}#|>z~GFI21 zvUuFF>rWO=Cz>f=#Y)4Xql{CK6l9vr^R9Vvil&LF^1|%=o3rz!x#`zu z%R$%xaB7PQj4IU@@Io~P2BD{ZN;;-dNjTAz;H#kr#4{gVHH(qg>SsHEaVo)sLGqd# z(K76tV1Z$EWd+~{#>tg5w80F4Sa=k_zY#3~S(*bhRgxHw+SCZs2Wg`M>&aBFD}NLQQ3_^*dm2<^$tUf%2wMkhDtsC2^^gw zDaW&%#P!NXA#sriY`hD-JADpjEIl5xxCZGgdIDl0AVPdotjgjq7`0t2J0raiP3F?# zu1sMwxklaH=pfB%fi#o}OljRq34`WtC5dQ($@a;tmjCSu!5wgx#GN}f0?@K=26P#P z4GfQM5?U1|E7ZDUQyvjX0I6jhBnePN0F*WHg$b6Js|kYP6C}6l{@~T|nJvnrbiYY= z_2gnqrd1B94yi>W;~n~M^f1vSmG6?42gp{y1Yi_qn=@h>zGF+RtGy?{K%3^AQ8N7PB7eG3+@aTAQy8l0sh&4GY_&?9gs9>~ zIq%u-Lrs)D=n$|<%#fvuQ(CixVrLds*ABgt#ge&v@xr;;#S5>`PNs`{=fy?ukE>FKQy*OK%eQRd+@*?J7 zp?&}5`B{;qFdcJ?vu`byFf;ag{2HE&U+2dqwlVApUG1^y%a<=+n3-lnrTI&j7GpXL ziwDgF>iIo;>GkOgbH&bSzdXHozIeFfUIq(Xn!EURS0h-zH|A%%?q7iLw{T%`ws@au zXnyt_26VnOJ3Vv0G(Y==Hvj>}aW0dL59@nzcJ7tM^YI+Vb9ixn`f};a^jULjX?A}8 z()>dEfLvgA++-{ikIcSx`632WTAY0y2bjr=m!{7Wz%aS9=kV<8*%EA>rG=UEv#-w< z_q@7*shM8D|1%dZ6i4Of!liiu#D(Ig`1``Sw@Y|jE82Tw@e=Oj+lzbE-~^TzE)-|mc_n)w07RQwo6Ex(EdTMF4&532H4&8r zNAnsS%sc6w{+%JXnRDsXPG%=n%IswEncW!(Q`ZLK)9{++Zl`Vy)DN`!*79rpJMcF( z&$b5Wr}}bwX8`vO;+~$>+G7*)PWjCxq3v-AC=={a{MX0>%QA;_x_ze9N%AhU?-1X4~Fb@(0WL&9mkc2e>feF zw;tJn|7@r4TBiB`wjQM~4Si0nJ%+zb*mpP;=67;9J`wiI_)}{W_%&IY2hPPkTIKTv186)Z-F0tM(CgOX3(xiL1@_0p)Zy zZewx$HrvPa*@R13U)wK^{Ei0>F#?29B^~FF+Vdc{=&%F<(RSW!A7-D#aEZW>2&=AQ zLz?Y_yr6lvyi>*%Kg$XKlm#f$nD^ijM5@$kfLjdrtyz+T&L8x2i!rjpyS&HgcfUF`W$VDek*kX)-E_<`^Yl zwsT93MlC+WXGWl4iIs+ap5j;&Kxc1;0N2h@go_X2*2&?R^rt^ZoMQNPYmv_{7_;1__|te-yjj=oDHoMPA-BUcNo$blg!EB*f`-I%7$RJ%R@qX$ zr!Hv)I^{^w#-KZn??TI%U8pk9ss%?!99Lnwa?L^DMSx>{RY}ImvEUp$cQpJ3q=#bE zD)ET)v{aglxwMl5@eksw-4B6~+ITw)XH2_aIXIee4cFpz-Y_6Wc1U{d0h*#Y5eOy` zu+Oa2J7M%gJQ4zAnw0QTLqq9tKv*t)B)vVP;ET^EV2ki2uyq^<3bu}>1d=k>2IE6J z5-+xv-Ux6_MPdEIJVKgcI)^a1G9SjfRWA3E452S7%B(%KcA?a>(2JKbFy(&1I-FDi zNjDHR8NdNVPZTV9R(Amq#PWV?dnM@fS_W(V4dS;kwzsQ*XfhZwOy$1YR-!oCPW^YbAPJiAHjvrxxOD9kMUe$0T*V~sJmJJQ+Cn^^rSy* zCjAai+1V$)Sup3?F(~pjqx901U(HI8o^g$91=2XD-)B%MK&5a|f=g-3QRXf%?~`KJ zv~xscXaczuK>~@IB3e(CiEzddPDq7%?A$Ucra?unf>P>7I^J5SK_{-2#Xn?U2N_VC zIkaufJ|v1-;*COO;Z%k96P9fq=7`uo10hie&xb`YEhi~=)RMCfD}z2v=y3Lj4fy(> z(37KPr88PUo63{OsR${ZGfx&g7XWVpvx#7Bp+_rdA-GVHmtAKxK(q(L7U?Xslfq`` zsXYZ(ElsrL^6?dh%FwZNoOWJ&r=u5smrgs!2b&7cL{}@eTlIj$z%qjZtUB8HocLAJ{wLikDBRdxh!HTos$C%~{Iy0u)!kO~4w zAg>V&Cjo$8@oxH{y*QOb>xE#hk!V8$2*wR~ zilcS#OahPu02tsg!xNyP0jGY4Hcb4jgU6mLC2fgc?`hi~gi#iN(D)(`>!d1q1y3K7 ze2@U7j&6@A!l5oCCMpAREv?XhV^jUdQ>E z{{W`Mgh2svApkK9nTrM(#x?Q}7=`FKx1*~pQw1Qv&0u0lhzyAkOHZkxeAKY#>ri4W zxY+gpwnTN?Py`neb3q78{0EEB5gj(KTJk!&%UllH8-LnP=fL(}HJ$ca?-`|`fHNxd z`JqUa)&oII=rq^@UN}VnaU0eQQJ&$;b_4=woDescI;7iM0*B=ecC1$xlOT%9F5}(T z6+!$GP~E9T?3eZ)te^pQt}oOz#gq@rK+rKur7wZx?-DRuk~nj zT+3Z8=9&{*e~N9ZhgG^4;qL_!F+;rLx9~C9ABzr1JrUMZBrml`jS8+h8c*=v6TCj6 z&L~ZJGAFdCxUXxLrN#DuZl>8mt>X94)VBy@qc}(nQaj8`y2Ma=d!K?g&)i`#jZj8i zTWA*{jnd5;)V(ieZUN4q5~iUNK0;M-Ew___r43@d{snar_x6Rk!>QX@U}s+i36H78 zm;o9>+m?+-zzjxvD^|#oOl|>47vs1DIL40yp;o_Wf${ zcQu&BOUncT{^Pf`7BH8lm1?Eeu=H5w9IOCHPZ5%mu6z>CoLMVofHork6+&M1^CZ7h;7FifJF4V!}jMtSCieW!tm;0mp z$MHK5i+>WUD`qSMVFRY+c8;xez*hSZpLe!ad$Z+gL)-T$KB z9@IR-4}CdF1wsHw5a9yOp@r~5AWUw_MUH7u*-cjQMfwi0f{+6qq9`-+ln{HtKtru9 z^>lzB(&U0;N%TpIIf9gqA&Y3uL=}OqI3>=5zHWh|Tg&lfJyK95A|usPST`~(qqw$3 zkWgJ0!Fow6A{OuojYe#aZX$Hvcq(}zE@NfxS@k|>EXd80P#Bm(u~ff9uplK#jez}p zN&!aCJFUn=m>~TTxF8RMGe~TeFCc#(%q24?9fQ0@GmJL8#4q5u161R`fpfpd4zS5o z#zG!jCuNj3tl+?~x?5m!JLzlv@qKususpmI-#AminJk!~5~|>yVVd5@WQ-ZHkM_6V zbXps14Yh__BVqQVd^*+Ivo?yWd&3+AG1|QPD*qX%<%|=&UZwvvA>G?BQB4w+L~I0f zyKdBy$jiV)s*TO2(ko7h^%)SV63L($TKU&W{KhUq2%CLZb4RF0|Z1FeH!0!{Q9>4+6nw|^!qbGu1h+K}J1DTQZ_5%vxccZ%& zBY_r<7Z5c))7np3oKdzME<7wY#)S5seF3sKpMYST;s0o1OUHp@qWq^uAqbz{V* zYf-deG(m8+Rse4r)n)3<5H3$RkcZD;nUVFlMDfLZgf5&Fp98!zo8^l zryzYZSID~Yd^1EhOY-8PsRKWURog`eKBm`S^;tu<8s~kW#fm%+Z!0aZu=~vk7GZT2 z0<_jnMpz1CCk@9|zu095wtv=Gz-<&4i~<&^xZF-pM5+{nLk(bw_uI~s;aQ@clEKpi znm9>~SDrZu*-UvhROFbqa=m8Jk(9Z`@AMU}w$^Lk$?*%HH*uUV+~hgvgTH{0#=ppq zU*gB##s@4g^rkl{lo%hx0Cg2AHJ$wMn|y#1PD4s6PmhjK3U(nncE=c)D%mG zizh?H;8vEF2RM4p>}07Q-pcLd^lwHoq^{-TGp#;Ga;&9x;6A*ap+>ouM+`^b%_BRR zv#EE-Zsl>Ne+TDor_-tTE??nF_V4uZ7aft4naX~Uoj0Uzh=8}9euy|U_AAk>*?=vK zSvO)B6%s%;$vAERG#G;X6EP2@1EiLoAW8jZ3Yt{1Kq`~u0ty>rdOWb4_+(yaTQM(& z{B;8^a?0&6%bJvQb30p;{z1dl&Uh%jb(fof=2cffH0Dsi0xyFJj&DSR);w~$@SHOA zH;}P`Ad8yv#yGkJKFDXx+k}DZkT^|u;E<#h6$z7_J+ebWQa_Y%;o1s}akuiYS@*11 z)2~Ha9$;(LL^rF{CG!pnr*P>?;erY>N|Z|%ijSqlNptk^%ae$9@w$<1WmfIe*lq@FfwsTUw=I3w-v&;<7^y@yh`y_UvmKpRlvq9vI&oPItv6lfW}k9Ltuyl_-{NthR>n&Sk9o^F3(zi zh&G%I{5XD~`Ua5T$6<=Oc??LD7K9-RQ4?1PGfspdnr#1FL-Ys@61!p7o5W3mgTVGR zy;CsBIUyJkfSSCVT6D<;`BK30j=N_kirIxGlBXmbRuyUA-4ji#TIR+i*p*%r_l9o_C;Hy%jI(yrx#vBbSt7r@qi}>TfzY5jOjLDTP&N1asU=*_O2i+|y|#u5#M*lytRsdssodz>j6?0ANRFSm(#-+N3i0 z%apQ4>lS-Yi%$4}woPD=R8xZYwv#0roZN-tA#<3H;5jQ@NMe@#?n1BqJ$ zK?@mTltEz9V__C$__FJ{TTrGc7eEf^gUz{*(UWo5LfogE%kw!%81t8GfBp)zJb$A7G4B8yHjVM&eH+^gS!cnw3d^>~w z^VikC@;8uU}p~&2GY|?cBk*-bUJkf zGZEsc(xJCxP9_gkj$tb2NuY`3p4}DNN5G6~MCSLPFCN%ypohQ&paqedm;~%mwf10~ z7$cTaUEP5wM(U*Vn=QJoM^MXA6bc?`xFU(xy0DUH=oGh*#zZoQ@(AQe$ybo@Iat?P zl&%i|>-SVyVIZGZK?72>P7zG-C7p4tG6uW>LT2aOXe<;&z~iVfMw&xX&`BPtC%DuG zMJeqN*>6eZ)?`vfNn(uASR#$-lb|FJaZ8I4T7Zgok`rJXL)YMH5TTHq0khw=jA%-l z)h1pV`k?hus^zV=CFxRh6H`x`#Kq^RdU24G@=Dq_>8G;|Als{nNF|7T(ajeP34#b` zlPHZeAPk5~v%J9!*;A7ttu04O$hHWY(CNSjmB4WlC8u29ll}EqODcX4!0d`Db(;X1 z(6j}FJWi6d0NF)EJJdO;^I_oX?m^ z>;#~RUZ5l|XHgH%i>#=fYXxP(ggrxyv~wM~_r~@?p-2s(4D3ctGM&dLSfxNxODeGe zN=G5k+Jd4>m~BF@0Y*$a24hu!DlqKjQbZs~4BsE&jfMos(4HdGY%!O{m1WknZcyyBzBr|aksRvDZqbpKQ1sCx{X0(owe%cpx zk&c4M!{m|XgwPY7O$?k?9g)Dvs(J~&kkqe8RV3Qz6<3n?(RB)dPc)`Vl{To2E7OKM zL6sODZ=wk2Rs|UG<)E{0D|HQ0+ltlV>K|+scmWe1Q?6_=rC zs%FwDRZ&!tUts`hI9ywQ84_JE*rBUGnT6ebrNxWu+go*au-3}vGlgf-DheHm0)$*T zr7m@xSBg=hFFip;4aZoc4H%pLC7w^nOWuUChl^L?%;NgeQ|u|ej3ClZXzz($O8{R_ zat#&%CdPj)xDFcgBlFsUfsG%0WgNDA7o?52S zfd7ng)x>f07(RAV?~Y4IdQ#D9%os@R$`nqw(;FQ|jqeP;K*oM^ zBYx>0XSGh3OBqKydg-c0+8c`_WQB%ns$YgNwg*~z)hmF2@+`c zYxrqrkz&vukrt2+1bMz0|2hU0(>x_e27PjW1SQs{?FO$G(ILrRs1G>x=8*4 zqfzhuP2TXg_`x2x`y_L%*jM5mZB)&q7$sRh#r|epUF3mWPM1{s$t<3B7PGa*rC_L3 z>V>iNNCuHs@PiFx8C%Zsv;$ds#&WQ-kH8z2OOItnGWQ{0XB77y!f_^jpl^FnggX*7 ztCUkw=AY=rPvHPsVM<%r2jXK)(y67_VRMI8iGUnj&8}oZgykSdG4l;oH@2_xBd~YP zh^v|ASLP}NC^AjU5;YeQe?2V`;@>%(_DH8isEU*)+eEoCX@z{@s(7_1dxFkSiAtuE zA^b>+Icv!V|D`m|5Dk5wbOLGzLRF^^fDxp%67|9G(oUv*7 z#X#rlqZP?R(*t&l+j|rG4-1Y;&oHden=4F<4M9?L*gk7JXAE)1=%!6o-sA=oRAa8A zGO}oE#+P7ML;@OZd*qYiy3i4hqQ=2yUx$FM=WCXkh!oaT&0X6k%cLr{H3(9Yu8AN4 zEtspywr0a^HN5DGWIYOk6_U$gTOilaaQGt46mlOT9toKfUhOZk z0dFBBg3EAUENlgfPH`SG;u3QKIUG<9LL?qsMolTgDHA8{n{_k<#T)vHHtVgbvSh=0 zVdT+dqZp)^KEZ)NN>T3%f~0NE*VlFUm%LgxuZs98&{KIros%T)l&%?|%)UHj-@@tQ zzxaCaVz68Q37$Cd#OJR!!fTZmpLwdIxEgO%I0ao-JX!@7BYx+E+<)TT;Kdh%6L`w0 zCDW)uLj+{)28~oOoYEek!y#Zaf?XF9B+}*LRaD$i`vsT)ag5kaFqX$u`&1zAp@7Ru z;iBsGR)MafQglZclN{{=ULpgCkZhq$=llsVoe^MigXFYGkZ3T2wCBdUx<29EJJ~(q z0H(ksQBJVH^U2_GPA0w{*EOEIAL5&MZ-F6Dm>O2a5Hrk+fqJH}(b$+cp1gQGSs{;Y z@EuQ|uCswE6O|_HReP(l4A@Lc%rxK213@UyU%u{}CVUQ7F%{d4_^$9VZ|E6W%b(8?c#1XHa~5 z*lY2(DYij6N~NBre->d%IxOD1#|rVdS3D#lj6H@QB87^8`w26~AKgm*Ak zIR!mH31Hw>P&a7Rg%Inr1UaqEhF)xfV3IFYodV$al9loAif>Q{J9ke%wHLflQ(2f@ ztxjg)%qA%I#@Bgi0P(Dg0A4|2vTR!;+8K>C-Pf3)Oa_Ku+!68oxK;}qDu*4Qq27;* z5eP0-Tq7|i1r+}ji=qS9Wc}m+2`4)ACl<^|G;luzYy|^DOuZk;Y#)^IS#dl!|T}5KnIyXx;Sg%w9Q^T zid%q50mkWRw+p48kxdY2nX4d=aFt=~3Tcd_qCG1lNGgEDHlR@xJ{d%Hl)%%)1q<4P zM{S(iiXm5u9zpI=p`^Bz8}$2Y{|b&6wxLOvEyS#QiU@I-A-PqG54a#x@ZF#ZZq>l- z&7|%x<|~j!oeju=J_X|>!?|r2NXbymP6g_?w-hAWT%U$i*c~;eZE{*Nnxa50#vaCu zI^@xpHPSe`wY_rOf5UMaJKRvv7z4vqba#*52gmQ+VKk?s{1Bl(0Gk=jZ>V3wqxSe& zJ!KHouBc1xeO>LfNBsU7kL>YoT!{ZU&J`^DqW}ehHFMkJ3jX~@mb18%|M*RfbOwJC z_PHDIBN&DGKbgu?z?TJ>s1<9}ouwTXTBIteph93^vlPXX%tUMccBPppD^5a{$*NOU z{j3kO+;@aw+n$1DSj7Lt!f+Ea29t-xpxp_E^)1TeY9?1n6>I{9&zu5CeDVKTl5fo@ z)QGT26b!7~??@Ar1#k1Cq#fFCOcncg0<6U`#i4gcGM|IH=7D7X6nqbmtfM)LWbr=( zD98T`KmJ#K{1!giBmUinr98|l%!v`1ql2%+zm2Oi7MJ!WamjDa3KZZAF64q%!QQwe z@vE5%Hnj7sIOHBa&BFFPRR9a*HVp*3A%evLvHSeVM+Aw>s&As`(4DZs3BA4K`0b73 zUCn$CAgWiJcLu9{U61sRlaBv4Kts_2)35+jpUDyKYQ%~rq|A(|5fPOYUqWO9BQ%gg z3FBg3;x~UEg?Msppjm|20_(GXb`6mwhY-8+<#hc%cSZ7tDb^q&2N5Y*X%+R&An2k@ z5YFU4>-#Ddu!niscmvX{+mS)*fM-mFD0mmUq8bXpYs$J{0n|v1HhUOkEdjJ-vI(V1 zvkeu(pu5NshdI0qJFI>-gFRfu*7! z^|XN4yPCdeq)Df}s7fE(pEPipzBs8wKg1GSkgAXuioF-je4~~p$_eW{9@=K)1~3O5 z$6NI@4&9Ee!L?g6QfF7KBjg`@d(RG;b=j>gsC=9weCj(@n6X3z+4&{2k^NgNTy(w5 z`X8a+?ykGi_H3w&^JdVo-V6@i2`=BIHLN^$@f>;7dZ7`ZvVONxXGz*J!NOhu1CjNeYoZ-h0 z;G>-f*u$twuF36qu=}9OWsiS_x6lt$92XrC-YMCyM+CeM*4iF7PrJHubrQ#MJfAv{ zLweD8I+Hz?9f1a)%b1AX?uQbb7hi+wYgmkAe6DIXj5fOAv`g>HUixvjVR6m=AAVDKhyxtUd!U@NDKSM?PL^pqrVJMmKmgVGE{zV z<;lH5@&5DlTwG_E7a;N=&Y_(ko`Ti(&j_+I)rV!%NWN8~~98WeTI46Fscm zq>K)LFCc&&5tqQf9xToHCvdG9X%PKDmZ$E1Nruh z%9u>5hPD(Zr<2Y!JEh`=p-dq334Mh&!_}0>%tTt$#C5ecF1=1xw%O<$75i!5Dn810 zbSL3PQQh<=jJ6JOq8Q3Ai$E&`gWRli;SU@UfynxCai4x4m&H#}-B!*xleLXmfZ1nr zNo?#C`Z;#-6xy*%zM^YMcG#3XPCZbfW2Ljo76_U6&Wtw~0>vpA0up;2g-*yTj>@@s zn$v}+?8~v>Wjles0bOKuuRpyTdM?pW`I4#*O{ExyF)?J@z)nF6m>!i{q>C+-X|4eIk7DnNVnhB79BVA%)x)ABu|O_(+)`y zZ)~=wm#JVIFbAeP_EoymcA8bMZCk_!OpZ$JV3Y%arh>H=-=Icp+n9Na`?g57+l%!L zlJGBq(x#M@?CQ{p8xXXSG64)$e%Z2H$HZ&3LaL%|=^N>>!aBEv@ye!>hZrtEmb`jS z?0nLv0%M__pTe#k22Sf(=S0W!&avnYr;e0}#bkFEL3zhLhrlJ?{CTh$A5i90@>A&$;d`_?9~1Z2EqWcud5TP*wLd zff=VcCpuJ`i&v|zLpX6YwmKU^rzXnfS7sN>+&ig!`O*T8f~d7zV9A#=)=NQ9Ma#Pm zPNI`l?5s*7(2c_S1<6;+?5TZs%H{L3(`U`K_#7xNp!Jt9#sGol;`LSy46d_9!pDdRfhQEeV|&uH^5Q$kIrGQgowNcn1x)@)z?!60r`{c9z#5C# zC4$uuFV_dpAtd`u{14eqsqjL39{_JN8Fm)B%RybV25`E zY=_PE(OvPj-LE;r;<@c}Z*sqAOZ||rCi(nWHA?il#t+T@Qt5t_&^S7Efg`bb85eetACMG%ep727nx-W zFIL|GavO(W&(CMavtv0Hg&sl>8WX)oGP&$P<`4=^kKhi`ooM&Z7`wl}C<)6_7VQt? zPjXtnn)+(`tCI#l&PfwY4df|> z2<=q!I6gjW#I+iG0nptB`4fV<$Zn9 z-T>dlQKpWL^_f&(xngNK>A3k58yaaj;)WF^hgFD_eEWY-ka1^n2IaPl6~vcJ)EX&_ z3^l8^r|n5t&D|3xv|NI$7iHw=VW!Zx^fFXvVtZWQa@^_QJry`#&oVExf|~^qn4$xO#=$wr1Z3j)A`k!;2nHQXA9Jamu?qn%yZw+7c+8u3U3Fd9KpJ%m z?!Sd=Eiaw0FBlokncW`D3+#w8xSfkVgTE%bOjBnIroQ+93&yfCe;v^(NMMGehz7pq zW34_I_xLN1yQY8=D88~H<#a-T$$~PNWh%p%tXFidtcyEV;gu?{PUC7p{QBIm$d5mE z>IFD5hMO@!+7GE)6cj-1+FU%mrRf?!Jvr!W00FRAuac?j~W?I1X4cZ z_IDL!0+vfO?}*Xcu*_LYg_VAFPjt?Eyi`SoG&1n)OeHp$XAeatl|Gq4oW)MFtPv>6 zNB3}KyVpw1ZFyj}E4u5*OvA>0O8?RdQc9x`V?z>w8=JG&34c!Rkj!2)T+4{(X6(uB zk!*ODm=aKAe}&~V5=f`x)nxEy5VGe|8F`uTy22>0^jv6prl=W|cfg)Jl4#4!y9a}J z9mFN%aB~HjdWLb@D0yXkGQ$d#rPeKB(1K>@h#V$EbfHic6oFwH!96Ho1UtS?i56>@ zrF)zY&^o{O);(#BK@MIDN&4A^X__YzQ%C{rgUU`Qmgh^UBawCO`GGmA zbc3=Tfn`Z#vQ`eG505N11e3)c8d)uOk^)6%zymmL@teVe9!npc`1$AGci;$aUwo?a8m z%OdmQzJC0Xxyq!n*g6CrRHlO{bA&;5x zDU@@oM?0AAj%!^Ij1=^GYiIF=7iSIM?08~@dwbU;#ou1p{wiy%cbZr<{>o}nP&WTrI`O5` zw@%RJLhoD!tt>ZI>+oQOoi|G~FYYih5=mZyjG6cpn2>}*naEgHc@t5K>l`=m(axiX z@H@m+TMAXf zP}Vdvkj)_GV3fz$wC#{Bp12Fa`h-H(_hS(EBpPX+V+zkPbsSb;CzBfC!|nYpY7keG z^g`VZ>W&|(wz{0vMo@4Re?Rw$JX7|AC19xUtJ78AWl9ZVq%18hz z$M6^Mto<}Yc1(ihS1Lw^lu1FE=yFu^{+i_(7 z6)^dRedj3nludd-s5N3=^ztQGRTdp(b4^uemCOp!gqe*oD2N#yN0Hh7=krcI*abd! z3#qWPuNhg#1VG+1c4d$M{IP%sw|1s%h()!DU`A|cG*R!O7KoRqGmG`9Ub&Z= zlra0-!jvKaBz;w|KkW8}dd?G1G0vnl0nTx?upCuu>Zti%+`=m-CxcH1Pj0UkHO}ZE2P44K1-$8q+mnMRe820+TL3)ohvMsPz_Mep=|0u}dz62R$pYBcs z|B)p~B!Z7A)Uas5HvX_Aa8IJOzhmEb5Cm|4kN15SlP1pP2aZsotdTPawb; z!r1O(x0~^>C;RV86-RK>e{HGakco5e0-;Yx6MyYq#V8a(mM|-n8BpBM)KoVpa?b=( z*J3x%ea~p6HUOFamDGC@^fC}DR@m4?3_uThY01%3!Q(;Q5tZ)^4BdI$e+={|DTb-; z-JJscAC@BY62nw0e^?si#4y#~|7_nm)1vx!RTM zl*rWcf0SgYqlX=+WIJZr84nEJDa|0Eve*XsmG0VQ5a2b znIj*IR3o**Xd{|woq)Q}04f$)WKBeuv>~O{SjtmvjNoEEU~W1^8;MH(P&Ib+hR!-( z4QB6*8tWCRobvF+v8Pq#>5(A%^KVVRX06U1x{JW$5iXp zP#dT2f~&B{0GkZDNYyItOpMTNrX{z;>lFTNxc`@1B-;LIGlgL4HP27&io(j>XW2;j3E1 zL{b}b-|59Lpa})cR737jqdsWpbS5Wv5hHIBDDDX(_sA+>Kmrm+El3a{wVa>0`Q`*73C1-XC}kUBDbm5RXs7uwzI%n6d}V}>PvSr)sNO@G`Q0QeXDYVUplaH1?z?_@d#MOA!8C!Ya`yBc`)e4H~v3-Lhi@9>c#YO-C31Z71azf|*@-!TBvNlyd5xxKrwGBa3k{oi%Ev8ZBwbh)(gqe|55Sa{iD}Dxg=`{swKZqRY zlq0r(XmU=^CO8}HmMCd81#$Va_Jz%#*>C#HqSG1-<}6Wq04j|(KJ>V+H(g>; zYigC;tBS=xoZ(^nv`?6fZP6lzRtv!RjCfSw7QnaeWf+Ld5!wa!jo#<3VF!`Lrdx*< zW$n7F_YihbjNkOTpWNKczSi~Kt#dE!Gm(|AHX6H|+J88)v6vg_rX6V>%cZwk-{s!K zc(a(<8T?74!5!>H4}<5Jp#zVZC8Kn0)b;2dxC;INYo;y4!lPMIB~>OFj}*4>)r(HU zjuVP)d)hvz6>ZILP~lVSy1tY~G&AQ#azMp+g#8J|$~b7j+JJQknxwTnNx2c6KxUP; zhuK#H)775ewy1|{3d2>A$DZupZ5uy>I<)V0ruR&p>;Toq_C( z&_zp_Mzly}vu5^%(g18BN6Ffr-sN#b%C_8a$M8MaAq6B%aJ-mI^u%(GJNEWb_2_(f z)GGu9Od!B%rkvxQd!FMFPMjIm580W`V`g=jpnrp%PgBQ3Xu}WSZKMq?A>|UghWhW= z7nYG~tp1+nCx0|uroH$0bH!=7mpyO!sEs;u|XoPY21%}203c|Yzv zhN>O;HPqj56*S`F&cH(Iz2cSBd#AD67;V3ILHCcS%Xb1pZaT&9JZ zh6a}QXl_;!gN=-5(8Jg4f#n5yyk{01>H7?DUTk@Q&f#sr)#0 z9vG0VNk=mWurEP|DWNEWYJ`j)Pg|(Wq5=NR;7_(bU~;h3jv3|VqlC{^22q!&B8Huq zQ52P;2W!sAJx|G5@q+-KG8Hy^9=OQ-Wsp)yz_0;_z-KQPTmVQ6463FE5!Ei$ZlK6k z!A?MI0--iAekjeIh6KL>`%=0Zj78KV-cERM#V%01wD7d;0%>o#Jg@TfXHCc@Gu*`^ zBf7Mz5JE~vD-ldQfFKJ;Q?Vx zkSEqxTLKiw>LO%t!E>LiQ&^xxH#A%eCBZUb@gSJk)>T?b*)N{v#^%Iuw>EP~t7EvQ z3Lo9aqX$9BK*b5h@qIXsAK*uai|3%~N9k&-wce}R}p;WV{>D4pxWA2M!aFYQk$ z`L^d%y)oz!SH?&bWI<-Xd$ncTI3_!(SJ$Il>b3+Y+FtY_q|4EEFJ8KiC@ zH4D39PUb7W4{Vyb8lkF~5UNgm@+veS`kRJeIs!qt5{PEk!6BSBcDW5n1%iQ77Hd#1 zNFZL3ek@lA@D=N`Z4ME*noWR+Vn??5>C2@v(`QTbvtM{)c44tJJ3oJEet|R=Si$@< zw{M#;cH5Asx2j9rT+i(FVH+g~I^)qUEjqP8th0EhmKw~^lB5VUp@RKaQD_Y^XEKG| zNd+*OLJaKcnY5TlIwM3Y+hP*VJ*C&qtU-3&J(4rLgj?fq|7=CARyS*~2YQc)QOQo2 z-G&kKXhzEoe7K(lJE!b?zfg20I*g?!)-|fJ%$;yZD?tH`%9lseKv06w*_giU;uFBYkmp)vAxQh@z( zLlXc0TjD?U>(oBMeUw?qOXgjUd3Q!pXT!O-oEMz*=K?Bc3 zmCj?Wj84d8{k0mXKwp!z0F~N6E567Io+V@?tPPM_;Ct|P3YFDrVQy`RXFtZd(r|sO zHPXtVa$BZZTj7}jN%7o+7QcqJz_V|sM^bXUm&d}h5!nl#-G?f1dC;G4w)U~!C-&UU zBJjCS-8I=?c?r};z)2P9AfOt_8)i+aKxF9_W|ReAl^C=T&?zgs2f+S;H-EW5Y7x2YFd&mV;|PKYfoZrihb&uLsm%<`6Gg25jl3N zsbj^84O%S+X2md{gKUUSVY?~;5^{@yS=kn~`1O4BIOo{d|8 z@gFG218;M=jHy^BPv#!AzVO3lNU}+y6Udj)bKTaWy~sP;fPahoZrlZB-9{UNtc$Y! z*!C#KF-tLKDmd|_TPND1?4{$mbCcuoN5GW!0Ok=z-!YUk`03&H%lsMh<2X6_Ssb=M@c*()S{$syDn}MWV3AEVrV-C|F@CH4p9~3h1y6m{io}V(xzICIh-; zBo_$LN(Zp0XQzRCDyo1eHBCZ&7;qAu(lg+D>wLGIZ30`E!gc|)hLCrOWQ*I#t2P^P zb+w9adn6j&QZZl>JY^ff6i)%|P#n2e3Tm&pVik*#>%e zKR6n<5icOMT#gFnK?eZ|SObxVAQYi$25G4IcR8*S;=S^1R5wqv9$Bvm=ibQ>$k9-u z6+K3SZRK*Wz94Xi<^NI7wAV%(AfdcI0jN3N{q*sZlHkal;?Y;^$_i1mB@8do59Ks)=jAfBnsMw+>|?!+NsURYhyhMrEbqH;^#O?ZqlwaIV_AhewYmNNwA=H zj$||b^Eea++TH`2;$S}>!G+>@Hz*0qZI9`JbK_D`Aax3-QqoWGB{V|DllZ`X4Ql63 zS%{uIcucLEdwl?wsmx%1j9oG%;13VBC zd?JmM{qrbOpDG?gOYNooqw0o4gJ|u*#H{V zCe4wdKo5vILi3!f#y~nLlX{2GARXi+_gWzvP{?K9PgPT~A$UpvRThRcqZ7sv-_0iD z^tJ5+vj((SW&F`*@Xn*ncM+^lK$?RB_ZKj+?LM`%$8j95^F&^08zwMUpe|{(i3@1p z9WJxPgAU|v@LvKB?P_Mxtd*gdGRf5(Nn!Y~Wv*ptbKx%>=fZyMrtlcgemNaNtE%;_ z=Wj6`R4ke}mxly2P+;p;$USqBCV|p^oE8!Nqot9g6=St~J$b(3`{Opt7(s ziMFfG>*3J>!y1k8Gni_50%YQ4o?wD_d!IIyI<${zuZy4N-Tx(zp2d-|1PE~PM5pq9 zSXQLe)z~V5i)1V{2!c;THgl%)LU-g zT;Hus3t~Ap{k@%yU&fh!m<2O9LYeg2$V0~WAlx`ZM^jYr*M>ia5)U!_m+`{04amIY z4|+*SD!_V|Swa!C=XDr44=m=0hVl5UHuNxc}5<+27SR!dlaqN$TY;({qM)Ty#; zm||Ymn=m=G8bQvsmtgIpJAh@@8ps!Ateu`FM-FAkm`6&Oq^%5&gl^(D!WbiCc0d^B z4MW;tc!NVwFNNWA=pbbZ{+p9hpyw1^kHi6hB>rW72&6toNaeOb#R2*arHH7MCna>Z z@0U?)dB9X-#yj-xMJ!?_WyIQpT)`3&G@2R@u%mVKUM$t+k_5Fq*4fu>B7j)Hhty8j z`J8x=EbHuiAOZb+a0Y+P6?~A`-bVR`t;brx0+fPDGrN8*3)K@CAx@){_?_c#l8kJX&A`UsqHab19m_W#nrcAM#t7SnfFn!Ll^Cktpb1#neBgYR!?{bN{Gk>j)veU z0d3G~9rH{TCTYWli(HUoqtR?>Upa{`IO7e}{^WPkYz%Nz$i}Da@_HykJiN0s=AaV3 z#P;I|mMuY8Ujbks#64?=3i3c-z^=2CMH%J#T(?Hg!|KSwC~*SzI%9zB5%Ll1w1 zXT>Md0S5X&-6aD~u-F_ym18Zml4w@gaNe`LP4bjv(`5GKR~ncX5S zglik?OTmhpor6YFtO6`N23W|svMoEA<_lluvwbj;0wU6Y2Y~`rqIMEe+banEQUR9< zlBVnkNwdDfY9ov~wDzefgf*y|q*jCisG?wO++V<8o4|^AD|y|gs2u=g6#zp(K~R*J zQ`KOR5_ol%I&p5Y9wgldL=VUip5_7B8SK3XRauR1J*vP7DFO<*ufn=PqqQ&!c$UE+ z977`8Ed(?28-Y5ws_TuRH1A3z_WGm-tgNuw^B2`cOtr1(ZHSwL?l&Wv8#1r17>U!J>(IHp}zw_-2VK$q5wu6<2tez#xP~A z85pPu2;e>D{A7Q7Pl64#$8TqTQ%7y}1k_@~^(K|AOKPeSS^oxfW@j>MKA-r17+{ZIF z58yb1h>;n2zLo68K%FGnoqrjZ;;&V_CKA0Ul&uQwGlrPMo>dp)9XkS zAUJ~X0tPj4OCp?BF?J<*u&60Aj*JL|eaVI`4aU}jlG|nWB831zI?rlCL8!t5y)>{S zAq%Fq<>y27fDtIf*?5{u@~8R1+%=<>{5_sX63_Srtl+mS-|Ww$gb@8kD9p`5p{I4s z`8|_&yL_;=rYuMO06&a8NkI)_*G_{4^KlZe`!kf}bA1T?4plO%=(qWwGFP;`TmkL)=zJxOa~7=XP5} zs4m|S2&CFuiuBOhEt2Yol2x2MBrRzoq9ryw4Y7O`+gf?sp|EX;WeDK&+P3R&ZBStI zz24^&$zFC5$BEl}0UnJTu0H*C=F};W3<_X#lb*m<9HxX;2@%%_di)r1cp4w=K8b6L z_h7Y(dm!CbZKZqVhG_FbpS&dgIUGY9CU&;_O;f*%Uy4Nwb?5-K=kbo;B&bQa54bW4 zf@Vn%#_-=EXe@fy>xUK4-BDt+YBI?L+ErwNEL)H~QyIcZSs-g*pbjY68pv>D8FtU; z>->G14BOQa?G$P<9Cq+!?NT>E^5Q_JP)5YY6_MO#Jh_!lH%{+4?`i+f6U)KPGqbZU3+}Ed5N^ zzar;G;HUm4tvx)4ox7&C$Zh)RrEcwA8)Ln0kgHb}xx#g5Lbu@2+dhf@46N;=Z#o?O z2t){bl8r-Y&bRij9k?ygH1u6t1)=Z#KBXYQJDv}R@MJn1{s`}c4~%hYgJ`>j{$yHq zG&obIm8W#DP9IsibZCcri+u&8^zhmd3aH?cnSgM%=GR$NPg|+K$eoOp}D^jSsDGidH%3sLm!un}1{R z+$m?rRBZ)@WGywqEpL5zwOn4>LPo6Wo9g8EpkLDF9pB2}@v<`;n~qMy3MA2oEIlk@ zmyws(nvFU_@=sWaP1W;O%a?HEsbOJHOzcL~{f1cykifVnI2-V>NQv%~Fbq~gC?jwd z(T$b3DCax}pXsc<&3_gd&X5=}t!SN#Or!di&NFy9KUE|c8#$&LnQC)w@B+N@B#7$B_7XcUzF{=NhW5I=%c21q(xvyUyUu)(KIJ$ z_(n>XT81VsqpD`LvDt*yQ&Es4(Gg-^hslTG6Izh6by&o~4xZpoqJc5n2h-cRZ)YK8 ze4B!a805FV&bdgi4$u-6(4m$Y{Sa~1QC0zPH7#V6q0nQSrTixqDm))Xv5Y_l6w-&SlhjgA}ezv&}abpWFUJWseqYE@TK^A zp`^DCDB(y|uDpdoI6Y$fXaBA0c{--@GkH|`eEMW++F5K_8bbn0#Xp9Rc8-)d{yqMt zQWaApYWE56Y!C9Q633OT_!O^Eq;3zG`6~_qHkYH4OWgP`coQSY#I5alyL*)I;lJD^m74s{{^JRbO6ss|VG_SB~bvIsTD zj$R}1R7qv^36cmLvl2XOuX_eW0WvLl%ZBz)wuLpfT81~T+?!!D#N zq9n{yR>dIV)3Pvwzh)gDBKi-;&qE-GUWrdw>o;H$szYE#s5*bc-T=Q9?5|-40jabv z!18K-i)U+1?&Ai(>K=YW0g>N*M^j;*Pl#UGUwIs4XGVlES|PnldR=2e%M|j^Gg641%pC+R8nEhP9#?-Q*So zRcuM%F&9U`U2Mg3pNPI&yNB#S(2>;*8OzWmaZ(tTi-9Hm^PuM5v@Q zYxZq#Mc$M0rckbjJ)q*3?uy?5kb;=~clc@#+GpY~;&)t9HMEa3IFGM z1PrC&O!n$4?lZnK+eUHk60@mVjZ##mw2lC@cAyEdwft<3=AQ|h3vd;8)l*q|{By$!?-^33f5)cs?fUHiR zWrR556|j}hnsOf_p9Fa&IT!}H3pVcD$?;C!dlULBth%F&`j(9d;9`02Wu5oexBWj{ zs8gO(RvAK*o+P!C31LVfBY37lFSA7lR?5qZ<&7eRGHAu>APR{**M~?+BE=vEio%WO zJWFo+OJWTv2l^d5wX|8SQ3>q{ybcMSA#bjoE{J3!F~~5uOHwB{YHa6Y1Wsaq7FxPY z2yi49)BxgN#gF(~{ODorZSSwjgvpAVx%xpaxr7b$kHYpl1_BMsueSH}xZmz=z+Huy zv?Rp%eH_>*Uu1XQ%HN#FYSJcu{#HL6X4>Y0UDx$q=*S>KCMWVZ55aPhg$ehIu$!PH z_4d%tpyxIne1GsQ+{3>swCnW2(sR893lbnAFR}lyk0_(x_J#9U6F5A&rFI=GQ8>f3 zn5FRy+tu1455zf89pBdt+vZ1{#fOPEn>^xXMk@4rNX(wGn9(@-@fF^b3<6VOU&35_ z`7949L!T^!z=vY9-{4vtLX)X1qOidxN5pM8mN|xiFhpPLl;_?LFQXUokH|*=k%jpt z4wUVE4aP1k36gF#DgqIO|8Z9>oF`H;rh~^jNag?nW^Nwa;S!E>OHFt>`|&q$TO%Rv z8|-QerYD|9TVK&_4cfLIkhTu7EoGgTw|{L1mihO-rja^R`E?9qMj?>)&=5b3UlH8R zc=2g$<&93E)})!sDd><$9)~x^%g3~a6z1Gg`NT^sQ(Z=lD8>-E%-snw7sL005DYLf zA~-TY7=b!f*8U&eLveLCoxXOLce;0Y$@}u}V7@nFz91 z^_b{h7z`tnwHBrYe08HZorNGG4kKx1_=H6(hvERB=S7G}hOyKDASn|PCNUrJXNf-7 zaZWoF6#WuPCPYlID9O9x7xB!`5L?8VFg%nQg%C+GbKD-$onY8icc_7tDHH7K>*xis zg=vm!@azLt5je@@Cygm&QGFUya;<*;+CicdHgQ2xJJQ|N)wclq`YO|+)Kxesnf^Ya zm>FY3-upg~G{j4(NU7WD=Ew4D81V#%oPxPItIfBW$^(=;VE}^iMLSAdMOhabXAyo5 z;}w;6uW&_&>TF>_<5QL82oMb`*^FFk(a==TD)`+Qm-9wHMlw8|kdIP6HIdLXfF=Wn z!GvYMT`)jnpXlwwa&p`0!n3xIkhi82RUV&}SJ|d~B&MV&FE`}DZ^hMiV>}}JjUHjb z^qwDj;^1{t7^;eRc}Qq%*jlHZ0-p7@+;kZzrW8i;35Hj7tOi~zBVw8rtO`Uzsn_Xk zBuAlB{uw=*R>a;fckal9i_his7mt(@>*IyuNC`_aiuQn>lra7+{4DOpRtI%PgXt2x z@xwS9|2961%<(&XDvM%=9D!|?FaMnJkH8R61`36YFCDy+*`AXzfBu<^<#A%Jh zORlt|?(@8ghk<{Kx^e*%H8B~yfLNX8wE`=0c3*#~>}=IK*aG=Tpsrzr#3WD(9ShBx zp|nzyz(Ox<;m?#6^fU;dIEv|_przMoO+OHt$=y9&u7-=VHwj}ZO2>#b@-}bENC@ zqi--Rn<5hekX&?g87>H8-E|~Nlp5}(m&F~Ed)k8_Fm+6CRP%&w#89SG)kF~!0-$@R z5J8$1Kf@0O5*n!i`a|k&`cK%vc1XzrivNt{X&jBE4pPP*rwpNqlhJ~DJY{JU2!Ru} z&)`Qd+H~`nqBXbELSGz92AA=!>71@!w-CGm2$(QHCCN5#mf2b&$e&BJ~lZ zDh7xIA$u8DTq71{x@ns+!~_ejWOI+{@#C8Ruv7};)o(3p@w*2_aW}~Ve=ms2^v1@n z1SNUxC4aaMS)6X~P(`N@P}xOLPJjF^f!1l70{q*6qWCmF1iW=Q5CQLAO8p^!{@pzM z8^Sep^weGz`0Dh>-Va#)5nXb1;L!>sVn#rN@ue&0to;)_!ztR1)Vi6$YQ2GoP6#*^ z&;&9f&(pY6YoIVOs4A;1i#(*)_#|wg%#j!GFRj3V<{6sMu@s@xu9R5^22_z$amnnt z>QOHcU+)5AV~s&IX|-WbKw0n3U8Fwro!AR*c**rqOrO2*kW5!DqHum);poi83rs{r zZA~b*m_3V$GCpBKb%_FWzB)4=m|dIPXBMI&@BFD@#FZ7`Ffpsc1LA zwr%VJ;F`&owJX2?wc-8FM(<5LF7}xCMO%QE1y*%*8+pHIZvsjpKj10~N#B4y13@IL zaiQO3dum_{>}3~R5!BUE*p23DRnSwQ+BVV+`fAdwG}>L2UD9@yiP<&-a^uarNUXMd z%I>Z}AAMEfogN7=vY0ZIQ!(pYNBbJULGu#+q)r)9Lo&70IwISk>O&t{LHzPhKtA|5eJi&;3jHL5AXb>mqy|ck0kdgF zGRw}cm0yDgPC276B5U+?w0J%t79)6_`mzk&4%eSjHQ}CYsjTP9vP{;Cspae<%>?Fe zn8T4kVH--y%cSD;WD)+>Az0sFZF!I{ZV}?|RKf6SG~`Tpdg5e*80+QsMPoh>Djaodox`KkXCOmki05$WUu`Ru=PNXP5)M< z)IN5`1et1Jf56U-2&8tu;HK1im5Kyh2PimErCC)LBVoN{LM%J#%Txxhz=jmF!OBT> zey{xqE_~e1RCTYlcaHp%NH-qOfOzQk^cEhmli#5jvl;qolXS{<}IqWE#VuL=jaAV zmJZat^iqXhiG5H&rwUDC6|Fv}@M{OR=*F#$^qK&T=YfLmtcWv?z=nv+&^j6pKB6tKbm zqL4^1&A@>FzqPCBZKDXoY2vKMn~4)QF{x7!4sF`HrHKFmZ7Bh%ZPXr`3%#&NY~9#x zL!E}qrqF}}f(!5i5FmQ05D2*N3lQSY6^RuBBtS@rAAp3Ac%FA=b{*G29EiJ5_hWWu zcXsBT_iNtqHb$HmnsR+Z99PhGdg>X`C-QzZ&qrY}5`K36xhLeT&=by+5>wUSK8Wz< z&_?@S7!ha2y^v+yS&5F*0b$H+MA<_z9|>neZTB_>u0#iuWx?PhE%B>-Ipnd}jJjs+FdM!PT12bO zF@_%%?yg5-~F2doO_T>{7nI9tuCr9xjM`U(@_iPpYM`) z@|^wPxY0C>B4#}}c?%1n@3H8+Ulc8P(>cwHz?du0`Ea>+xpO+TgEL-m4fhJ6&Q;W& z!R(>b@Kwx0EcDK{Te6h0B*ZW+kasl;B#wWB_Lzsbm#fiElVB=}tTA|7@9Icd4iWse zy{LJPcZw?qZCcjrw1;jg-znBfE9*!$P(z4KxMwh6HRqHUc1?3uD~=E-4@X;NtETWb zW>k~ZliMk5;&fxFCZ;HgmSXE85~?n9tb7E^=}L}$`;%PHn(Yqsjb9Tk3+z-UF8b#} zd@fP8S<01VVSU`iB^;fkv&j~l6S_Hw$X8Hn-oK31YA&-Hd+W`U%iF9s=wF~I_ch}$ zWs))O&ufP2crm8a8w@fqBNsu7Gq|)>JUN@xXU#%m2-XAdI4ldNNrZBk{JB?j;|66RlB9D=V2%5gu zy3uLJajN5Z9TJrFYGycf2nHzc7;=n89WAmiVUFXRbq0Q%d!G~TW4bCnK@3sJEwh}s z^n01$HsM|ZnT04!+K@UoVlXSwgtOg3NwIcqr7hlt<|(F{#`I%Ic97$|eK+o`Tt;Z@ z)pk^a#;b)u>v;Or=FJ#kGyM_)Q5hUV z8!}#RW77uudY2c-oS63s9}w0F*9adIJ^{dCUIt3@9?yJ1_>Ax+;VZ&7gr^DL622$= zNce^DE8#c7S;FsxKL~FT{vxyi2n4HwVzFeY3iGzl#N>4UjSc!7`;2H9I+jhq8q!Im(HfNB=_ zH(VGmj1;s|Do`ba3<$A}sNrBZ7|}z6U{3QNoy+_E`kfC|Awb^1plHhhSGw&NzCLhP zSG3lndan+3DXgf`Q0uXBLG4qcDpWO9RfD=x9u7O)pDl zXK{B8etQ$x@CJGs+X%KQ|JP;YU)Bfpj1F`O<&}`{3`#hno={p%s6DC@*3>xi4%JKQ zfGVp=wO38+`*js1j;mux8A#1Fo-wPe*$%5x2EL!Lmnw)~(vziUr6q9*SX=8PhNDhe zS^+z_A;+|#rX|c*hr=@HyP;+>n#vR;6yqRPVyQ=jK}hV>g(8zoWJ$8&Jdp_22BZ}Y zn82_p5>U_1B_Gdjac-E_ms0vUV+0rpeNO@qRkEaho|T>dfOgJ=LUW2BX$;k9D1O*U z4>j)56U>I%71}6dQAT%?QL#0MX4fvYUFW$O!UKeT08W?bfOsTkKTpjP4iF9!4iOrJ z!vrBY4|4A)AT2Ve2di<8N6OLOMCevjw1HR?Ytv&eLh~@;5dzKFQRvpYVh)e;>|+ED z1d+-rf}@5E6KP;MY1;=$(=FX$kLuUeQgzafNDKTr$t?h*JlKFZ8f=TkN*g=={_Wb% OclEn66bzwXSN{Q$6Auso literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/blueprints.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/blueprints.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55287e1b6139eb34bd2d8e01ca5e910013a340ce GIT binary patch literal 22883 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 X4+QhZ?1@Qd6sNe^59Ug_lKp=G_DX47 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/config.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/config.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..044d98d5e65e2c99b68cb3efc34de2252dd57163 GIT binary patch literal 10123 zcmeHNU31%Jb_PK3)0FJkj$^0p4koQFvtv=Q)9&tYk~Fd`XSGcvuSJh-ZnGpvfD$AS zpkILcS}N07xp&>kPJh8p?|R$)8~X=}+r8=jg|KSK=K zWZnf8W4f>Q^3I&*rNN` zxf-OZkwhWQs#9>xH+si}REkasM@6UXRNiQv5=-V%a(Ru#u^NMc{v>u!?tN|VyOCuF zmYrU+hM_pLg=58GPAZ!N8kauwZD3o&7G1$^s!z49HZ`yZFVKL#*)Wnyw;R|ax7$q? zcHFoN*&et86KoU`Gjjc5V$y9<1%ZFpL>*uMy}S~S#w%lQyxgC7zO($$9eMWapT;Y! zO0}0tYL1U-1TXO7Zub^(LPn?QCH>^)xj8n|$FdpFquC5T#>o_X?^i^93ht-+o;KC? z^jq3#0pAAhRKK7Lt-=MN~k6=g}}l4aZ3VCX<+?xx^3$JU6*ppu6R6 zmju%NOPoYBZ%wc0re4=;_&fRFZSMK$jCm42Z8Py3Da)V2*_8OjWjw;1H44m>AWbF3 z1KXdt7jP62M|bc@M1s*SJ50w3Ax5I|`kNPin4ryRRpv&+R=n_JCcYfV|N2vM3RIojG9@i@YMk>WFMOK7ucc>c5{aRerEVLoRU*!!~cLo zg$~o_5YZ_+H=Vk(fO{2Z(YXw#s5-Zt_nfP^Qgg03*Ky?%yUB-1Nh-nq&yuFS2*rM6 zxkvUO_Kz*!+jlM7a=bxo!GWx?2oF359&~6QBZ!37(DQxEi>;vuM|9%K$PfxE8oL9} z_W51J7h8C4)U>Sjt}8$iTYMNI1dT?BJ!5#ID*~oC4#yLUMC6PdWu)1uc(m@}vapWB zi8X*1^YF7+CfTr6WMh6>Eg8rtMB3xA3Xo0Ww>v&2j_)mjnoy$*hC53Q`No#8Y@gUd zd^~U=jC4@P9eM%tcP@m6V~V7aL)&p3h;<{jJj69W3axP%MPAtEVFD+kHra^garqUN3;@yHQMHg|pMJB*l4)hp9)Y(3!d$ z9C#uOSgi+edC+trCJ-Y!pkaTnQ-TEEytnjf>-n?Qr%%7ySX*sxY;AV8*W2xl%`dl8 z_k;<=yBMC;ri>BzBN*)RQ1jDd-`%wj*eMX$`PFxGtc1=&B(FcTVWzkUCBq1|0_!U; zm>j`Z9cydbddY-R-*S%#^H@=g7)El)JBGUVuBm;tv_ek55{D}?9IX%sODY@%aMQpE z4R}c=Xeo+a+eyLN*cSH45@8s3iBKzzA=crpH`ry-OY0VRNg_UkHr62K^d+&!F<%dH zKzsp*=@N%Ue?2wCO-J9>;(~*#H?%YTH{g5EoED~rQ}``a1EyUDqWKD*3PsO5YwD=h z_ch&nS_27d;jxHP{dz)f79)3^>?OIB!)dDA=q#jTvK|H172+!GW>}jG5BV;L&KSMVP z731XU8kdL?5Xy%$hXfqfh%!6mf8anlq_$UpQyQmwZ0;2u>7M$u&@CPRZCpli#m@NM zk50|F5?80@UhRxZF7ph<)ZQfuFfTNx_zUfs_7X?Irm4mC{hIhUT{}f%;N&6P{LQqu zw-7JvEn>Tj?aHvQUlMPe(zfQ5aqqnw+O*hx?>Bh=6=*rd)8eo8I;ozX>!ySyJ>osx~;UXlv64QTv;E$R_z(bsdHuDc0USz z^aD5}$~XY9KRe@I2xUeI1hT1T1kwY_2ApJPPWOKiEi#6hO$%*?i0UiCtF4yxaq}nH zU2xfxuGRySfCerw-HcN%no+X%sVM_>xryl>xr5CoCwHF*7et#hB(S>g-H96Q#x?OH zxJ6T!EOH+wseR4Wa+_KMXkXBasGQAk>;~d4y;w#8IL6h)Bt$~bP^!f< z<&7;F0g6Z*L70@*H@DU|+xXtte!TH4DdW6N2Ng7qIJc-+A?t-kNwy{`sl{-ZNOUK; zByEOyN%Zr*0r3&IdX0^7fwp)BJ&F=S#iD*!zoLK0eT(bVx0nkXvW^_U&-hcoKFi~u z<0OXr#|RkWYAmz4esnjc5TZZUzWMOfm>PTLnI>+>Mf8@8Gjx`w#;4lr+XxfL_6@`S zUGYK}=AxU@*A8qIScp4!@P^g&m}_MC0e!CWf&yS}Ad!BbS0{ zqcY6A8lC8hieY9FW@t$RT@$g*Y&16`oVONsB<)3}{*#QhiE0cxNVM zmK>v=U8JgB?+f%j&;p2$0iazGE^#&{(^Gu| zj7YtnFfGqWP_Ix;s`d>jSK0v{Ofw)2#C10LnDUl6^-&uxlObC7)D4?|AT32WEuJHi zj-6q-j1=eTyt&Gt25|t`q2w z7xzj)pye|Zj;AIimkfjc+|=RDLd8NZ9Znh z&Aa2wee-5MLJWdsz^D|?ecK*V3~@0A&9N={{(l(CF!aHLOmROPQ8pGCPzo%uYT_R4 z2u_Oov?EBB6gh8;CS9PVEb)ML)GQI7(C+WBOX^%TD$Ob=D1Jh>saWh(X#tV}Ag>aM z7Tq~lJXVxGW#n{T7|6?GvJe@_gN=Fb_2SjDwJVvBBLr)rONr|V1K&_dBLnyn2HwwOW2`8S@fwtptySV6yM z1&^(GBWgANu-6~0Zm)NrKl@6O*p1_HYXt;$nul&57Uu${j^-&bb^Npei(m>9gWVZ- zO?=qzTwreGL2@0@?w|AIbG)$bk*`<_M+kdb@*szPyefI zP+{T)1ApSkB6TK}jH&O5<(uf$QtnG?0LLPZsJIZ1=>qaMCfKOR_DnS+-Kl0G?kvvF zm7BYXzMtp^G9;f%)%<&#jL@GjN<_b|&~BUhRYYO~srsrx9p4J#^U3u!nXu>FGfUc( zezJ&6R2*7h!7@yY)Jjo#XxyM>A!GBT{OO&@x)XigFq3Mx%LNF2{=q+vp*1DyWeImI zy4{8@e~~iJw)h1es$;zL7bvrJq4YKU^5lv7H`?t+T@oj*#0RvyNjv_%$zRdYN3{Df z?H%_d=y42BOZ TIU~*C&!`)9Xs}+ma_xTr#C0}I literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/ctx.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/ctx.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e824c0e6b50e5f94fb48f07726daab89e86efbe GIT binary patch literal 14284 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/debughelpers.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/debughelpers.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36393b4eb921cd05ef19b3686fab1d89b7016a62 GIT binary patch literal 6544 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/globals.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/globals.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..757ddc2554b8aaa5e4fc63b5a6db4b62cbe79c9e GIT binary patch literal 1690 zcmb_c&2Hm15EfdVqR2?xNm}d%PF-d7pLr_xKRk z2)bJ@-g9yY0YqC8k8t%N9q@y5Z*qA1TSRfp1=FkPLdY2t z+F5?s9g#D=gn3qgrc4NGmOvYKDrc9F8jU7qC{sX7C2unHGt#-Gl~Pa`7lNfGy8@cZ z!oZE0HgQigo~EQLbD3H|c?<;(6~Vkd-A; z*TlHz`+qAE!DQG(HD@W%>&z^7drfzfH|GPrsg^nVvh|c+NZg1kh-@jJQVoVyCAGx; z8+8*MUrcc(Z7Cm5kk4}fn>BjKB~nLoiRW;K#c7Hpx#6Si;5@~tDGK9VlJCieaBmf= z_l<8lTk<0@!G>(St&iUbc{SjEh$bnY`<);T%SHb#r4VC;O)8Fr;T?Rv^`Q|^twl> z_Hi3`FyVx}6Vo8U>x|n{o}%YND2HgN`)$kXz6P!FGp)(u)#R}5CkdXoB&i4P4vm mr#VW)&vMBt0iRowwhRSi=nu(o5QIS|?Bf&m+<6$2G5H6KGSw>p literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/helpers.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/helpers.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c96b35d3413a4d2ac1a63ce207fbcd952b9b6431 GIT binary patch literal 34559 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 G^#23K!e!3@ literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/logging.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/logging.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c9c1aeeff619676b348a03ec7898e4503a1498c4 GIT binary patch literal 3099 zcmZuz&u<&Y72aJgf2~N`RvRSgk8}#ekO|1NV*^1z2tp9cPFe_#0l786z#xY^Lvp3% zE;TbWO-Aw|GSK$WV=q1R+8%rArT@rYdujd!pZdMoB`wQcf-|$TZ)V>6-h1Dh`^{$X z-@gq8|751dt@f&r zDT_*6o7Q`E*O66G6}8vSh1&~6T?DV4-j*yKH)MdBrfeR!@ODjXUAPx6RyITv64ymb zTtk0Dl#ZPC_0{8G6mxyjiPP~oO2)yf%TEw=!*sS((RgCI?B3na?y@I5j-}B-H;zJ? zXxU|79Ua`hfBQkq=UN6o!Y-%nX4m*or}5m#el(q>$~?wgaF~WXexlNs%OBlbtg7Vc zTxt{2vi0L(@Bn}PQ#8g=E#n-!!u{Aea*TIOYJ2=I*x*r=2xcadO;c?cpUqS{QxP|k zNu^T7v{8~z*$6|Df&g^pCQ6eI`^|`PRvaEMJdtKRG|>yW%K!y4DH{wHdK`7^UV1Rt zWhr)1i%3fbOYvDRbw?Wkfx(~?*j=#gGM%$9O-9jpt|YxFmM#+34FR+64hoz*M^?FS zcp_q{usJQ8@+DjF#Nc$h8y#aN&}?l&ZjsfVZ0anT);HmAh!9cz=-8*;QiINT>)6bFV=SmR-gyU-K z5^8ND)2X*_~N5yFHvovABItP9uK$g~`t? z+BJ5wWw!mk1{5utV#f*87TS)A2C>7{q?~_h9@i6hds0dz3|q z4Z1>Q7EZXG;f5`uI4;CU#G*Dv;3X7zW2tsD>rSPabO&-Yf`jmh#qx!W+1{%)0*6+z zGnVGzTIP^M_6sk(V>{V>pKSlg+W!3dxeHsIKRPGw?;Y1U^#n4j?NW-C?LloX^E!94 zYGF&;Rp7D0TLDII>U(3E$d@y<-==+YfLEVRxbE8x`o+r5UQ8*k_dA;fPan0**^T!U z&q_R5X0>9S&gzuRe2iqyDl^1+VxUwd2PmtCb461&bk^FDV%d%NRQNS1xQ)i~Yp(BA z+>dPQd4Z=s#O&(x?{41W8Zb{~TR&$vZ&?cxPOs#}o42N^n8$eQ(pYNE$9UNwOi{LB zEQS|~E`u04Da}5?IB$JBE;lUFtA8BGFcOFuVxin9M1)5AQbt})VB#$)*l>v`LckGA zTgEb)5lT{-NFwych%oRVQJs(@K97wqSg8vHL4^51UG@|bYdX3TQ3IR&iJn1?JfGVY z>-?-rt8sKzdHn6uqlZrwVVYGzJVq+5eu6i6;sbPVvszi7Y#|zSKc~b!eAhKJPPO4y z@KZm>c!MQnX$AiW`0H0_i1~q`ci|#azZB&I=lK`so}Hz+k|~{)kf+<|k*^I0BmcN8 zO2-vib><2G&yaJSC(h~iGxAJTO%VGvNK#+NPAHbHW436$USY0bnly9fA}1>R-*E5O zGDnq=eMH5QN{L3A7M?@KZ(IhSf@DW5ky1!e;7@=TvJ_W20}P4VCDSxfaBY_xqq+m^ z-pP5oZ^id=?zKmEXoj-fhQPB4Sfg0=>avuO!})kXj3g62jHTFRy0D^9#76nL&~ybi z{B3PIc=*-tzQ*d2HAb@}HMIO~jf3Jj-zDjW@YXdd-yi5)VXs}rg<#z3{a*CFTMen+ z<#MBW5_SiLX|yvU@c$JbKx!t)r6Jc*NXw_Zh~GE$92bC^mF;l#uN^|T(33DCOax24)zEOr{wFOrRz|)yeqpXr+l$C9yJ29tjk!%A9JhH(9Qp@U_p~cXubIB-sd9e&v+sjMDJ~5j$%C{!e+?v<$ Q8l^_F_CWyi8h)+yKbi4=y#N3J literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/sessions.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/sessions.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4acc2b8854cd7e258aa655e4625a6b0a51b3068e GIT binary patch literal 12184 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/__pycache__/signals.cpython-36.pyc b/env/lib/python3.6/site-packages/flask/__pycache__/signals.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0dab2912f66fc6f4e634e9f8e48c3ea1f1b1633d GIT binary patch literal 2363 zcmZuyL5~|X6t*XmNj978ChgL4K*&OHSgFaD_EN17swfnC*;W(@FbCHeJK5<@W~R2& zZK8?;+aJP#3;zP~Gv>+#{sJf7^US14#YA>K+t2UK``%~I-NB&u_pi^M{njPqFS7OQ z1HKQ<{sEmLoUD!%RY6J@0S_oqE#CT`WcNa%!;7AILJ9s<$Xj0%)mG6Pq9WbCYViQZ z9o2<#*N>wgNf!J-bZ|v@M|Ylg)!r55dmi-w^*q`KwC_VZha(AxHWny&|M5ZZjO~FOFg1zwtb2*bN%kyGV#W;=g zVr7!~xjSWdZhv~4J%LTyRqu3~Cb7<}K4o7#{c?PF{2-M}@cj=|f*jLw?@TVVEo7{} zdl=(f^Rximhh}d;rwOM}w?Ks|P^~wVw-f~?+9rU-vlwmh!GCNIpxGXDj=ZL?gR1~+ z=@~@Z7Z2rye(EVZZk3_c>8uPhc!jd1^7waRIr^_T&<2!nh$QSqA ziKo2oYdR;zs*EapgkkZG2we|1dDRud7YNI)5ExB}vM0nMSIZP}Ux*h=nN}-i4;=XS z*y=#h#3y?lfRE9oejLMi^I-1xq1kVs+i-?#?WvXufw!>IGjCTq=8=v<&@Qwtv^`L4 z1X{(pJ|FxPDP*o^(678k33)VoD;mp|*_Lc#qovbKvKcVUV$h~#mx()PASY%aXD=tz zZIU@{W>9fhl8%8^@=K7I&Qy}kSw4F!)TIL#X$mfrv~ni1jT>!DZcxTDTe)-Gs#B{c zj6KS%(-IUuV=Bk_jR6>Am|HAy8#g|{^QCnRRFNBeDagXim(`(>nF24M_9{eD`JQaH z?}`tL{{Raxgbt)f1bH1m58|yP7??J!lpP^JZbBTlObBB?X(B|ZzpBHMqh69MaYB3u zBa60#Ms$6&rQ=Cs5<`LfgXKc}7@FTxNB4f~kYxxt+A_Mh#Q%50!okSYN4UL_^L9X7 z+zEz8K3E@sBZ^+pU#gUYv-RWZxWQdBXLeZ>xdEzo#KWdK#!JCd-&{&*GBwhy&=klA z(O8GKikiSN?ti$bz77j|3SXh=f}cLJ`iM;JbZ<2W`@Ds8k{ z-83@mw!^}}L1E2oNNXM=Y|ZS8MXz99#wugKvwIrW5S$l(n+q9%toy0=f?_c`Y~kE=WL^R0jW zbz|f6GluaGW9D%{KR}UxLB$N;U?#I-bI0;6lV}^X?K_HgK-c^l=o+iX^__;_P;>*d z>${3}d zJI&7Ey}*{(S-cn7@=K%p(ZO$99-e+2%I%em?~LLwi;{tA{Pl^arCOh34Bz2NCcSKn zdz&I+1MX$1_me0YhPPMrsMTINdM~2ER<`QhzIp4W_acmAo=LUDY8>@=BKfNK=;f2^ zcdkEYZk3Xq2z06$hg4Q+|y()5@|wP;&btpJ|tgHvuEizVPBbgRwoEY zqo9}V2QmwL+ZcK}5PWycWp=D}d6V~3!O@psgP`P@WBjQpUG{O-qZ83%m*p|u@)4@c z7@89!vrwCnF|l%!ncGeANp249++x-}BZsEZaz8hQ4q9w#8P-5Kpe)F~cJT5E?}y_! z^QIeny)?=Ae&&rt+T&8DV#V{GCqv$Yv^Pp_Hm)flZb%G>(qzL66XtCUHda*gdSMQV zMme--l!Ll;(ZHz-J4;8R4obABnxm?Xs%!go%z^a$I>d-~VTrxJ8DasQ|GIS}+Zo*$ zMWgGR<0xj=Z}Xif-2Gv8L&2u3OCA88mC^g+V!$+Sm4KBJD!$HQU3nUn;ndB#>6otB zQl({zQ)sOuPeUw}2PpC!DsK2DGklAgzRe(4VA){~$y1P)4*vc+72DE_qiybmp5TLV z9EuX09zVj8w>i$dtx$S0-N8u4q72duVw$gXrGcu4X(%X#3d?cbI z^WLd#WC|+?GcU@#UYI~{d<0yPWvF$M5Nl%zWhvEE7>nS24g~f%#+HDVUexyzPI?c; zd#%kLu}%-MM&)x9c?}gab8EXHmH;^85P)LlJtH%RR&Mms^9R#3ax*sqn;8&|wO-U? zZBUMXz9)E?@n8_An_(Ob$!r7NTP%?2%@|za20@fWSr8O9aM863NAkEYNPR^k9g)bS z0*S5`(Jq!yeTpJoR0g!#Haq6Q(#*0e(^c2IHQIv2ge_V@u#>WJOmsU4cE@2{_B4Wk zrM)0fYtQUQ@DyrO63%55NzT`G98000hmY#1VDtb@Uk@Wz1DxQ9Sp)Anb6FGbM(Ju@ z?P&cb>p-Rp#qyI#j>4?B1r1qp~0t`HtKO_UYG zM=IDHhf6<=;i=>aL=ZPr9-~OIW~Fb08=TEt@0vj2Rt)AEN zM&CY!CGRf1)+vOuQ=1?q$X)DI&#l}(wDCo&HpTC9IKj-K{eJ@o2^84tqK5M!vRx`= zc;t);pnz=C68oE+^f~kUxsi24er{=dA-y9FNcsv3c#doNm{6M#< zG3HUjB~*nwUDdZUvFF#N=%t%OLGE63s8Vy4?H(EMx6yGQMG|2kA~@EPX+b$IejP-I zC97?9EEhco*FK=GS$tHmsWeBzpkSvo_hS(It1}wA294Ph=Y2bOrW$)`lp4CLHT16i zg|XXygYx>gq+xHiAWJxs8p4sXJdavQDt;rFmBR_{FJiNRL*H96Y$Ws6f1(XY#>Av*~fNuX&)oUFZ0PTf|4d@+>yqY7I(c^Zn0)nM$ zv9+;_n6%=bSXY`anpNis!&H*{C7qVQK>-6H!&*dI;F<@QKg9klSbLNM z(nBgH{*{V{ATk8U2?F5|p|O&{Wu2uBokN4nYyY0=uPGUb1$y}5rrw`e5f)0sG! zSf;eZtSvfmgfw*On54K$oi>t=!l9lL zECq5fiF{C7N*7}ka!!hi!aqlm6le`4CRj)*u#S1!I{5Afgm(NC>)n>1j7oe=)p@GE zMHMZpflQ_-2$~w)wDHVgj%@b=I&PsT1-iClxwcz#&$_PL64Y0jAnAs5r1Y}_g7RoM zG6XMX{+^tf3Ll5&#Lj@kV?8!xY#nreuJU$$`Irh+18Y?PqX7~*#6IPX8f8)q zL{dUR8BD@R)Rg}Va_8t#Fue&{D^Gc;<0e`(%4qY;6$Hujh)tEL zQ5vMK3NXH*MbVI;li@;uuNt5P08(@q;;Kdv3jYKoPdN;$gu&~JbVspPajcU9?_HE_ zsg6Ok#}k!2l+@?-py>EQ96gj)*A-_Qa zOja3g#=JaOxvNKe=)2!HuBOfdJ<7~W6YlYS91>9qi^Va{gRGf!#+l-CRdZIdt9jWA zMMT>Z4v>}0t#lkSni=keQLGLYsnkoYaPlnWQqzQeDh!=?bsPHPM6q8xz>l**uxyilqNUI1bS11$V`JHHF5J%BETl$63l{ zFC1}p9K?Ect?6>7UdpNq)>M`s2JinBe#G~nCWRI8eNg@!89DyEAkpEXRo5IUEC|Ze zPhw&D1QyDvf5cFo+BOLif>Pb}?kVNk{kj6>Z9yr&x*!SscU7i&4SgY$8s_wOf#1-c zR4T`*T&234E1#}UPEb=@%$%-@3x#`6-{y&Llamc3` zYA90sNO?T6W(({XNRVPvpog4_Am}N*1PGdIfS&Rv6ezC+il*qTJuQ0Z=ldQ>NweNX z59JJ>$jA5d`}6btzSmY)8~^^(e*f>UD9XPo3zvcCw{RyvL*Xm7;;X(EsJ=8|J zt*f%muq&uD!s@7I*F;?4tu8f*?Q#{wh)ltiCiRVUmZnS2f zSCzLFf5mUUQ2ZvV4A+MjPIdc&zv{PMDE38sJLj+A+Zr=b|0TSi_t){h&T4pn#n*O~ z_J!%cG%Q?$&`l0IDNE8I+7~q+EnW>#^D&K16YfXXaZ$WQ{qxd1(+w7K@$+JdVUn z9XWN^i^s=2*gr_S)~y>iZ&;5o080}wWH$^v7A34}eS7!b_1CU%g)T;I{059rdTljp zd2y7oXX(g|+6ctVZTw)7d7h+XCF?mS;tGCIZ5hz zhp27rdOR4X528Vgw~9X*jT4V%D=rcSx{`0AUIBHG63`a%8R;f_*K6K zR#m>Q7>Zp5JL*|$TWZjtn|Q5 zt<*haiRH6_I|;$70gp%cz$E#{V^GT_Iv1qHhTW0nj>lc_k6HIg6zH{RXQi9WB7?-}9mxhc(AZ56y4L$U?^*O@?J-D{l~a-VOHKFOggKx&7>6g(=jedtlVAlT zL$ZIu_*3RzvyKh|??B8(Qrqv-6#YK6<1ECko??M<$9gajvbB%*=$f?$TBc&5WzVkf zrf#?YXlMKW_Rh}sJqPP`cDLTy{?0b2*zYHkJwG0~LDcVGJKJe@d*_4g9jA9!v?Y1Y zN4xvz(R&ZJ?mm9-u;=VNeE7J(wApgVuC-f?Zbj~hR!rn(7zj`KSc{V^4MQTDcn8o! zj3a)j7vvpEl%&k{t$1*D#V_6F(x}5Ej=Ds)oMb5}GX6pLzzu^bbkt3(cXuE5EZXoG z!YHcBnfiUAXusdF?uJP`7ruU9C|{I1>G7C>RcXA?XF(9$~<8o)yOHeAD3eW1;%Khb8jAE|Iz3T#`mH+^HvjmYK`+pLXJAvUa-TN`u1-ms1W zSdNXtJZyCAl?8ps>S64;;X$0F_S#vUo7SG+IO#mUd17CDnbc3e{9G!}Nq2MedBjo- zb+Y-K%*Y8}0Yln)R+TNXs{EW8^!2~UA-wsi`eyrlX6(grn6>Ug2RMo3Hs>+Vs?tVg z`aVmu>LBJLH|4}^zDh+4MOF=y6rO_<|Fa4l3qQ^pK|-4AMjp#5d&lssnGU_kDsZoi z^9D6F9Vdu_)N$I)%t%-`;J-~{ieb!xOm@AbsNI-TGc!oMv#JzxyMBNnFHWHTR{##UK4YH1o02*zbe-(SrbnJZ_s+gqDYJ{)1t@(niq|VqS9aMcZGnL;E7mGY<@^he+xwl=B9v7r}zVl z^_enLa|Zuni!)FfEG>-w5{f+wj&c@vI&e;7&VYfK-?eUbZkGP&NzP}^MlsL^q0(EO z8y#yahJJE@)3Rm1|AkZaEkD2vDPdpfl%>O&e!MXPHgiZ}943LDBNU7AtL+VPxbw9M zM_Y*A=Pt?G_@b3;e0CviBQxRfBFJu%8T6E`-^&RCTlPeL5?pC(+yV<;CS=*=&)vu# zvCc%H)C?%US>dppztK11Z5P?#NI&9Qs2Sc$$0g;|a!B;f$T#K2ILr-u6N)@`%spyb)$3hR-puB zyF?TMcR}&f)i!W=O0Tls*K{Sotw0`r}>o6vu z;Iv+leY36ED?8iYdH8tSxqI*4j(zT($B!R5?*r^Oci-ObJ#JU|S1=EMjSBLu(A`{m zvlYk5`9nr}anrenm@98#iG^tv=9tEMfjbe%R9)9Jb$W3@d*;r!*gS!w3%FzI_0K5a zcClRm%ymFiz)C<=WvBr<5#3jCz1k(eGn5tqfNP46DktF*84a*LZ??QQJJl^Y;LuhpVRqe`~`QfUlbT z3{U4U9w6F* z`ZCpo;*($@j7u!H5J>=ugfz%Xxf>;}NN*Hr5~%=E-J!1Vx5408n2)j(g86bJ5>paT zD>qn(_$cG@5U^2nnp+Y;+CviZkPVOv5NJj&B9Q44;0#!#m_z*cV3!u4Pq!;opIXo* zpi8b*`J$YKom_2GP?&${mMfKgF^AmypI>?Eh7)$>FReeZzIAIp!2{Svj&Kf6vWPa3 zD3S>#TH3L-9}9qWz~jk25gj%Vi6ob!0|-&hch=fcfC@+ry5uW>VUK+1`#ucvB=pJ0 z3IkkPjv_r_J#`W8?u9U5Vo8HZBr{Tgdu&W;FQO)e?DOc*ofEY?Vn}`TKaw61Vj%%@I}^yWEj-Wi3j*|z{q=H>k{NnxKM@m1-s#id7Pok zvnKLsX)t0k7+QgIDDp=fsZzyW2_mxB&QY=-@EU3|J&niqMS+FR5GXsJPmZVuLNahY zW;bbBPF|nY@*W7zCdomjkK=LHg3lQPsxcYA*yn=8i6+3Lc_+J>xKCO6wuU%Otj0M& z)&!m|tK~$pn{e73+A2P`R|MXkTT>Z(y-u5I!jUjeIYOidGu7jNOdCUlmH=DPaUIukEytUlMwJfL;;t3 zpPt{Qf>3SyJimjVOb=PaDe&RnqE~~&UB>i=A9$(goEene&Z?6!a%jw6A;HW=FQtF6+6xD6f$Q03md&q_qX)T{X66(Miy*K@8 zo*;@A99J7Y5ZoyHWeIrGV4PeHg>>Ph}W(;*v8YE^PnvZak;9(0|?|!=?mq;d# zcTw2&f`z^i2{aJ#yUCt;A}N~H=}9=rOiTAfr?b04XwIHd0_Z<6qKKgtwOS<`(SkKN z3*BVXc9YZb1OI(0$gJ?|R0skR{^PV)zD)(Oo`08$_o<-d&3pv~dVG~?35h0jw@{d? zhGuBZTJsOgSIw&U=ApX03c?DBT8#5VjHmfJVm!mIi8qS#>I+99X4WdWB~NOmKfhZB z`X2$50J)Gd!L4_;iqo9FgFn{4C>&^wL}JJ%AG%;ULHdczS$1#!(0X5Km+h z=wJ%{ge(4BUyhj_E{=|n>)vH&Vu$PaoaeAVleQuRoe-QC=~9Fau#^-$=mS`|GEJ)X z+J^Kn0{MS{_5%4Apk5^YzK+_0Ez6)DfHqJ3kicJBCSi%{d!CLF=pq);Ef#kV4=~gO z>eqfi&|N(Nw4dpRHQq_Jd0_5WKB0WHb{kG0HGV*ws1T?}&Q}-7nW{^>e*n#;lPK3( zpgRIKWHx|LW1QCj=jDcu^7(?EB@oIvQ1Z4zh5#_FT;^%1bCqk-k^~ExB*)1CWpB$aLwj=Dh$R3ZizI zRuyTIoNp39$`w&yvAAf?(h0`_)I61UM#Fblg0swizLojhJ>G`QdbrDr91aDlBD5tb zhFykIsZyy(Tb4WrS+&f(9lE1E-@S90)CV=n^vW64$w_xxoINCWIz^AR3K%TRhXXPp zU?&C5bP$RY;F9q>X>nGSLqNTS-=Y*Px2Raq=3;5W*8UkjR%t<$JXOviVGh*yiZ*v+ z(lF+N59fm!qGVaN6T6Aibd1EHnA)@*zZ8UHSoI|_k|;*)#3&78x!M_uD=l~F znW1$79TcGfJALR6=u@8xq(J}BzV@a43w`Q$W|vEua@wvi!`+!PXU?4Soy+L@i4%=~ z{-xLZ+gZ!{hjrvx!uu^Wm7wER*WxyJVteRx9h=_W*d2OZ&$dK`d%VJ{yvFN%i8uK2 zc71AhtDjqZg`aq7@e`spb-Q(Zukw@lJ}H*)-N5%6KZWm8!VwKopE?*_=BFQ8tuu#z zZ7@9jI8eLo=aJY`=KK5k(=Y>%29aXJl#gS_8^F3q4S+PaTJO~i4Obi!#kI+ zU%nj&V z@E4go8tbg0We|$2G75A!2*I^{T)f>vQ&-Umt82p;4!655ce);0rEhhs+~wX&t6LLw zGQ~>^23X<_R9VZs@1VcnC(p7rVl8A6=;*m%djV9DG91F_i1o)wXvAtWw!zeR%N&Fa z0!3uea1@K7NVL&<2L~N=dOT7_TE94IkL?YjaKK=akW|MRX~ig<%)kP*0R&1y;81v#I`UoH$008!-uCVNj0R!$sq0) z&;SfT0({UOg~Z?IfVyX36>#p4W$a6Ur)Rk29GTc3!P=3I4?3M38id7MA73AkHrJ_Z zb<84~qo)vuea4IJ(dY;ej(yGWf#?j zCc9{8=Zu5VsD1Pp>&+_zqP}v2c;0MYGPd=}wx8vaw*%#qG1i;I1Nv>YS~-9t1f=_J|#6-mI8`%Roa4 zaOG?rzPKlG0#Zqau4}-)&*Vs14Ng;140TmjFw#Hf< zH{e4NVx#X!1=KC*{kRdy60>K%1zA~*M?%7Xq`^Ohm;cw~3!4)AcDsl|kD!So`zW1K z+(N9PqaK-vBcXK_aM~cAYMRe zm~sKV`^56$&x2= z!hc`7qKBg^qiA$_YaGS=@~2`L1Y6?R`H7l`?bmJk--mNg5Ef=Q%{C_vDB^aifx`D`I3njp|m zMh)^5s9SF4!3|K>>_U`nC0Fyoh9U9I)Jp!I6J#E7Fp!sPpq1y) zJw{U~Rp9k2_Tl>mzD4wJ--uJx73!ub2vOKH=7A`y`#z;S-_IJppBIF_FHeI{R`Y$H zhM1`p(LH;ws3ZJftkWUtq0ldCvQ{N?!&qe=F_Z6NxkO!Tp_a$6;1#`CA=db^CDT=+RmY`5vext;tq={~2OZejIt8#y_C$ zm(-D6jJmUBqs#nAlF=}E@sZBxbOmGYpecH(f9SdRTlSoKP0~PVd%PRl)30Laj@Fs4 ztUkg4cVE`K-Yd(qx)or+%T~WOp^?t<=wKuce~<6H{AGY+=^=Bf9^i*0!%_3fVMHbP z9)0IW$o-!XVX%vGi70ZIh6WIjs)ja;S!#k0ZE3)A>g+fZd*V#osY`d0iMv~q``Vpa zFTDMaCk|rO2QMnxn^X|jtf?#4C*DqFQrW3aZQFXb{@B|8Sl0|yRo4OY>eP{&pjnz! zcN$a6P;DZ@d2)Y(nC4fxMfqpb7^bzHRZJ})KY~Pr#3+e0@a8I1{xy{URE}iT@rWaO zm?hb%fz~6sFQBwF<(bNAD76iti;6C*j7O+0S~dA0cuI1~tU}pWWj4=Qc=VaMyW#-( zW694w5tuh9Ft)#F6a<43gf06Wr*2oB2B5fxzG0uPdiLSDxp~Nl?V0ec>Ku{s0+#1M zB$nBUVzUsX=4?aSwPnj|L}@lBU8HEnnd`3S811|PILbn|h=f3W6mSM?7A`j)v|Py= za~T5*i#Cqk@CslR_YnYV7Klr1<<|gIv{I;1ns5}I24}{JW)N(%djPK34=6!jVo~1| zMCILw1+3SDIeWcg0Z26NI7km$c|}3_h$8R+2>{h{uZN2Os0(RSn;ox5Z>M9*P8$#I zug{OUP$1IX0sETk!on0KilT4^I27)cZK7<3Ia}NSt`-G8QPM-q=r;Ou+zK{NN)}I1 z?EWlo_G@;nOg8xjr9jPZzHI*2yUJWh^85UnGS|oasxqU)U4^zNi$e+v)V?7QJwT^X zglK!m*@5emqrY$`F1L2;@+ysTd)L7mXaKPJ?2@{tJ?;|4S-AQS2p<$oOs4ZTGw+ML z8+Rmab9nCCqyz&Dor8;Al&y+vVqUuFvT8n@RpN9{$ZT~3_fSbU>%7+UOkR{{h@Jv- z<`Mm3*rtT~XEamtTJ~x0w7ue-wGYqFF>Yv`I%!a+TSO}*xd|3U;6oi-t-Wp}6)t$g<#J|sDe>eX zX;~Y`C?W%Shh7!vRe?TBAAq;LY5EAg>h}*1k|nv}VrGZKnScKI58pTQ`RZ!#-+!G< z{=BJa|I*GqO|);LB(G6%&C7Sq znG{JJg^3spi<^Cbi?mp3mJXK~qG6fjme-oqxYe( z`YC?j>8Ww5eFu>cVT_j_e&u++;4F<87jDD_BYjykJrpiX^3Be-Sf~SWd6SE2HkY(c z-kL=+aMFR1n~Csexi0>$$yI#$@Ah^Y#M`kKZ%s4L=UbnNz;m8`k!~wbmUZQtVSJL` zh(enTV*8Q9y>M>NltS-7SkgkJ={V=mT07OP4%$uLQtd9GV@!NbXfxluUt=IltE46V(}BgO-x$mCWraG=W-EPNsA^Uc6{VPix} z(BzA7o-Xc?l9U8m!_=4Wm3A9m9(eWkZeZd|?GQ|I)RmjmI@Ga6l!3AQ4>_)m&XmHh zirI5vgm^okSV642Q84vFC-tI`9ee3Q8J4)Bj2$wRjo?mT5X9P46bYk36x&KtnYoBq zteOBTSR|QKivS|PV@Q`j?ma3(91_F}SHx<$1<_E5&&LZ97HR^qJ}JWZ*z^5b5LTT` z#&G;(Qh1&egah(UCVg81nDS1w>8t%9$!ZT!3d6U1`f{T(d^Ph8a}#8!X!><&Zh4FA zg|UxX@>bD01Ql@O)Zh&jWhPwETz*I{Ab6}oy(A_!^)nGmphm6_C4sS|upJK?@~8Ad z8s;sT#J-nay@|YAi})IY%NW|!m)EMT)Zgp9P*&8L@g-g;D_#OTbuBgIC^Zfna)jN0 z4UdXev#-e!$DaIF(Eb+VUY6q($(iHj^#C~O#f}6Gfw;D~lR9cYVBrst*N(feMd+p{ zv9N`dk+jtW?z!opldqJz-gOd@uPdIiNsO(;5I4#$s=O0;fgl-qa|TXLtiEE*h4AU@ zBHzOpWS~kpYG24Z`7`uAMM;Qzz|+>Vv-Az+iceDngOGZQDF@ zZCiQB>ek6%U6WCk62I2roOb|oP%S-?#B$1=@?C0?D(BQAVwZ{$DaJlPNodv1irF_! zvt=6nR=?M8DbjNBp?(x(;4Rrfb%`AnCt6L>`d*vqiWNIx$oBV|saYKaW?RyH=N||L z3ef80R-R3ebbty#!vCSer;$8LnC~44%6FBV7p2T(6rABX;GIN*jfiFz&T|1uU=I%- zKVp@0!MsXP$-Y2|uQM;D)B#{BM&wcWaav4<5LXHZpB2-U1Wxot$0lHts}7U|4kN_Q z;sWyp&XKSyjVC}muu+OW0Glk66*fRD(z+FmUrEcf|4SBBmU}BFt6h>MuIA+882uxp zJRGv;h=nAWySND_JgVmv8SdxKq{wzC# zU4_eFXbN-^Gbcx4=hVeq-vgzcS%K1*jyR-5X}q`TTPu7=DOg&h;J@g|6L#V)MTzvw zZYo}++lw^t-#DBTbSiu%#2_?2r6agL1_pJYr$UnwAM&OPND}8#kg_k|w5xH1KkC%{ z4f+#8OHE(CU)?%}m&euUN?K4BQ%MMh-aL1tM%n<@8i<#`14hpFc)qx>0!udGh<+ z`}Y2>b^nb6NO8NOz}^?44x!6uFap(D?~4Wn-Pe|{&RicS3;(I5r8r2QNvq0s4Un1*R|8fs7D!FsXK z_1d&Gz9;IgW?ielRM##A)bf22Pm-;EwJCCjb>q_bA>EeL-N)+L^>sGa)LklX&;4lX k_(@@OWxlgY#ck&|#ZBwW9_@i>%GCSC&%l3Uqqn*HKXN&Nl>h($ literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/flask/_compat.py b/env/lib/python3.6/site-packages/flask/_compat.py new file mode 100644 index 0000000..76c442c --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/_compat.py @@ -0,0 +1,145 @@ +# -*- coding: utf-8 -*- +""" + flask._compat + ~~~~~~~~~~~~~ + + Some py2/py3 compatibility support based on a stripped down + version of six so we don't have to depend on a specific version + of it. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import sys + +PY2 = sys.version_info[0] == 2 +_identity = lambda x: x + +try: # Python 2 + text_type = unicode + string_types = (str, unicode) + integer_types = (int, long) +except NameError: # Python 3 + text_type = str + string_types = (str,) + integer_types = (int,) + +if not PY2: + iterkeys = lambda d: iter(d.keys()) + itervalues = lambda d: iter(d.values()) + iteritems = lambda d: iter(d.items()) + + from inspect import getfullargspec as getargspec + from io import StringIO + import collections.abc as collections_abc + + def reraise(tp, value, tb=None): + if value.__traceback__ is not tb: + raise value.with_traceback(tb) + raise value + + implements_to_string = _identity + +else: + iterkeys = lambda d: d.iterkeys() + itervalues = lambda d: d.itervalues() + iteritems = lambda d: d.iteritems() + + from inspect import getargspec + from cStringIO import StringIO + import collections as collections_abc + + exec("def reraise(tp, value, tb=None):\n raise tp, value, tb") + + def implements_to_string(cls): + cls.__unicode__ = cls.__str__ + cls.__str__ = lambda x: x.__unicode__().encode("utf-8") + return cls + + +def with_metaclass(meta, *bases): + """Create a base class with a metaclass.""" + # This requires a bit of explanation: the basic idea is to make a + # dummy metaclass for one level of class instantiation that replaces + # itself with the actual metaclass. + class metaclass(type): + def __new__(metacls, name, this_bases, d): + return meta(name, bases, d) + + return type.__new__(metaclass, "temporary_class", (), {}) + + +# Certain versions of pypy have a bug where clearing the exception stack +# breaks the __exit__ function in a very peculiar way. The second level of +# exception blocks is necessary because pypy seems to forget to check if an +# exception happened until the next bytecode instruction? +# +# Relevant PyPy bugfix commit: +# https://bitbucket.org/pypy/pypy/commits/77ecf91c635a287e88e60d8ddb0f4e9df4003301 +# According to ronan on #pypy IRC, it is released in PyPy2 2.3 and later +# versions. +# +# Ubuntu 14.04 has PyPy 2.2.1, which does exhibit this bug. +BROKEN_PYPY_CTXMGR_EXIT = False +if hasattr(sys, "pypy_version_info"): + + class _Mgr(object): + def __enter__(self): + return self + + def __exit__(self, *args): + if hasattr(sys, "exc_clear"): + # Python 3 (PyPy3) doesn't have exc_clear + sys.exc_clear() + + try: + try: + with _Mgr(): + raise AssertionError() + except: # noqa: B001 + # We intentionally use a bare except here. See the comment above + # regarding a pypy bug as to why. + raise + except TypeError: + BROKEN_PYPY_CTXMGR_EXIT = True + except AssertionError: + pass + + +try: + from os import fspath +except ImportError: + # Backwards compatibility as proposed in PEP 0519: + # https://www.python.org/dev/peps/pep-0519/#backwards-compatibility + def fspath(path): + return path.__fspath__() if hasattr(path, "__fspath__") else path + + +class _DeprecatedBool(object): + def __init__(self, name, version, value): + self.message = "'{}' is deprecated and will be removed in version {}.".format( + name, version + ) + self.value = value + + def _warn(self): + import warnings + + warnings.warn(self.message, DeprecationWarning, stacklevel=2) + + def __eq__(self, other): + self._warn() + return other == self.value + + def __ne__(self, other): + self._warn() + return other != self.value + + def __bool__(self): + self._warn() + return self.value + + __nonzero__ = __bool__ + + +json_available = _DeprecatedBool("flask.json_available", "2.0.0", True) diff --git a/env/lib/python3.6/site-packages/flask/app.py b/env/lib/python3.6/site-packages/flask/app.py new file mode 100644 index 0000000..e385899 --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/app.py @@ -0,0 +1,2467 @@ +# -*- coding: utf-8 -*- +""" + flask.app + ~~~~~~~~~ + + This module implements the central WSGI application object. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import os +import sys +import warnings +from datetime import timedelta +from functools import update_wrapper +from itertools import chain +from threading import Lock + +from werkzeug.datastructures import Headers +from werkzeug.datastructures import ImmutableDict +from werkzeug.exceptions import BadRequest +from werkzeug.exceptions import BadRequestKeyError +from werkzeug.exceptions import default_exceptions +from werkzeug.exceptions import HTTPException +from werkzeug.exceptions import InternalServerError +from werkzeug.exceptions import MethodNotAllowed +from werkzeug.routing import BuildError +from werkzeug.routing import Map +from werkzeug.routing import RequestRedirect +from werkzeug.routing import RoutingException +from werkzeug.routing import Rule +from werkzeug.wrappers import BaseResponse + +from . import cli +from . import json +from ._compat import integer_types +from ._compat import reraise +from ._compat import string_types +from ._compat import text_type +from .config import Config +from .config import ConfigAttribute +from .ctx import _AppCtxGlobals +from .ctx import AppContext +from .ctx import RequestContext +from .globals import _request_ctx_stack +from .globals import g +from .globals import request +from .globals import session +from .helpers import _endpoint_from_view_func +from .helpers import _PackageBoundObject +from .helpers import find_package +from .helpers import get_debug_flag +from .helpers import get_env +from .helpers import get_flashed_messages +from .helpers import get_load_dotenv +from .helpers import locked_cached_property +from .helpers import url_for +from .json import jsonify +from .logging import create_logger +from .sessions import SecureCookieSessionInterface +from .signals import appcontext_tearing_down +from .signals import got_request_exception +from .signals import request_finished +from .signals import request_started +from .signals import request_tearing_down +from .templating import _default_template_ctx_processor +from .templating import DispatchingJinjaLoader +from .templating import Environment +from .wrappers import Request +from .wrappers import Response + +# a singleton sentinel value for parameter defaults +_sentinel = object() + + +def _make_timedelta(value): + if not isinstance(value, timedelta): + return timedelta(seconds=value) + return value + + +def setupmethod(f): + """Wraps a method so that it performs a check in debug mode if the + first request was already handled. + """ + + def wrapper_func(self, *args, **kwargs): + if self.debug and self._got_first_request: + raise AssertionError( + "A setup function was called after the " + "first request was handled. This usually indicates a bug " + "in the application where a module was not imported " + "and decorators or other functionality was called too late.\n" + "To fix this make sure to import all your view modules, " + "database models and everything related at a central place " + "before the application starts serving requests." + ) + return f(self, *args, **kwargs) + + return update_wrapper(wrapper_func, f) + + +class Flask(_PackageBoundObject): + """The flask object implements a WSGI application and acts as the central + object. It is passed the name of the module or package of the + application. Once it is created it will act as a central registry for + the view functions, the URL rules, template configuration and much more. + + The name of the package is used to resolve resources from inside the + package or the folder the module is contained in depending on if the + package parameter resolves to an actual python package (a folder with + an :file:`__init__.py` file inside) or a standard module (just a ``.py`` file). + + For more information about resource loading, see :func:`open_resource`. + + Usually you create a :class:`Flask` instance in your main module or + in the :file:`__init__.py` file of your package like this:: + + from flask import Flask + app = Flask(__name__) + + .. admonition:: About the First Parameter + + The idea of the first parameter is to give Flask an idea of what + belongs to your application. This name is used to find resources + on the filesystem, can be used by extensions to improve debugging + information and a lot more. + + So it's important what you provide there. If you are using a single + module, `__name__` is always the correct value. If you however are + using a package, it's usually recommended to hardcode the name of + your package there. + + For example if your application is defined in :file:`yourapplication/app.py` + you should create it with one of the two versions below:: + + app = Flask('yourapplication') + app = Flask(__name__.split('.')[0]) + + Why is that? The application will work even with `__name__`, thanks + to how resources are looked up. However it will make debugging more + painful. Certain extensions can make assumptions based on the + import name of your application. For example the Flask-SQLAlchemy + extension will look for the code in your application that triggered + an SQL query in debug mode. If the import name is not properly set + up, that debugging information is lost. (For example it would only + pick up SQL queries in `yourapplication.app` and not + `yourapplication.views.frontend`) + + .. versionadded:: 0.7 + The `static_url_path`, `static_folder`, and `template_folder` + parameters were added. + + .. versionadded:: 0.8 + The `instance_path` and `instance_relative_config` parameters were + added. + + .. versionadded:: 0.11 + The `root_path` parameter was added. + + .. versionadded:: 1.0 + The ``host_matching`` and ``static_host`` parameters were added. + + .. versionadded:: 1.0 + The ``subdomain_matching`` parameter was added. Subdomain + matching needs to be enabled manually now. Setting + :data:`SERVER_NAME` does not implicitly enable it. + + :param import_name: the name of the application package + :param static_url_path: can be used to specify a different path for the + static files on the web. Defaults to the name + of the `static_folder` folder. + :param static_folder: The folder with static files that is served at + ``static_url_path``. Relative to the application ``root_path`` + or an absolute path. Defaults to ``'static'``. + :param static_host: the host to use when adding the static route. + Defaults to None. Required when using ``host_matching=True`` + with a ``static_folder`` configured. + :param host_matching: set ``url_map.host_matching`` attribute. + Defaults to False. + :param subdomain_matching: consider the subdomain relative to + :data:`SERVER_NAME` when matching routes. Defaults to False. + :param template_folder: the folder that contains the templates that should + be used by the application. Defaults to + ``'templates'`` folder in the root path of the + application. + :param instance_path: An alternative instance path for the application. + By default the folder ``'instance'`` next to the + package or module is assumed to be the instance + path. + :param instance_relative_config: if set to ``True`` relative filenames + for loading the config are assumed to + be relative to the instance path instead + of the application root. + :param root_path: Flask by default will automatically calculate the path + to the root of the application. In certain situations + this cannot be achieved (for instance if the package + is a Python 3 namespace package) and needs to be + manually defined. + """ + + #: The class that is used for request objects. See :class:`~flask.Request` + #: for more information. + request_class = Request + + #: The class that is used for response objects. See + #: :class:`~flask.Response` for more information. + response_class = Response + + #: The class that is used for the Jinja environment. + #: + #: .. versionadded:: 0.11 + jinja_environment = Environment + + #: The class that is used for the :data:`~flask.g` instance. + #: + #: Example use cases for a custom class: + #: + #: 1. Store arbitrary attributes on flask.g. + #: 2. Add a property for lazy per-request database connectors. + #: 3. Return None instead of AttributeError on unexpected attributes. + #: 4. Raise exception if an unexpected attr is set, a "controlled" flask.g. + #: + #: In Flask 0.9 this property was called `request_globals_class` but it + #: was changed in 0.10 to :attr:`app_ctx_globals_class` because the + #: flask.g object is now application context scoped. + #: + #: .. versionadded:: 0.10 + app_ctx_globals_class = _AppCtxGlobals + + #: The class that is used for the ``config`` attribute of this app. + #: Defaults to :class:`~flask.Config`. + #: + #: Example use cases for a custom class: + #: + #: 1. Default values for certain config options. + #: 2. Access to config values through attributes in addition to keys. + #: + #: .. versionadded:: 0.11 + config_class = Config + + #: The testing flag. Set this to ``True`` to enable the test mode of + #: Flask extensions (and in the future probably also Flask itself). + #: For example this might activate test helpers that have an + #: additional runtime cost which should not be enabled by default. + #: + #: If this is enabled and PROPAGATE_EXCEPTIONS is not changed from the + #: default it's implicitly enabled. + #: + #: This attribute can also be configured from the config with the + #: ``TESTING`` configuration key. Defaults to ``False``. + testing = ConfigAttribute("TESTING") + + #: If a secret key is set, cryptographic components can use this to + #: sign cookies and other things. Set this to a complex random value + #: when you want to use the secure cookie for instance. + #: + #: This attribute can also be configured from the config with the + #: :data:`SECRET_KEY` configuration key. Defaults to ``None``. + secret_key = ConfigAttribute("SECRET_KEY") + + #: The secure cookie uses this for the name of the session cookie. + #: + #: This attribute can also be configured from the config with the + #: ``SESSION_COOKIE_NAME`` configuration key. Defaults to ``'session'`` + session_cookie_name = ConfigAttribute("SESSION_COOKIE_NAME") + + #: A :class:`~datetime.timedelta` which is used to set the expiration + #: date of a permanent session. The default is 31 days which makes a + #: permanent session survive for roughly one month. + #: + #: This attribute can also be configured from the config with the + #: ``PERMANENT_SESSION_LIFETIME`` configuration key. Defaults to + #: ``timedelta(days=31)`` + permanent_session_lifetime = ConfigAttribute( + "PERMANENT_SESSION_LIFETIME", get_converter=_make_timedelta + ) + + #: A :class:`~datetime.timedelta` which is used as default cache_timeout + #: for the :func:`send_file` functions. The default is 12 hours. + #: + #: This attribute can also be configured from the config with the + #: ``SEND_FILE_MAX_AGE_DEFAULT`` configuration key. This configuration + #: variable can also be set with an integer value used as seconds. + #: Defaults to ``timedelta(hours=12)`` + send_file_max_age_default = ConfigAttribute( + "SEND_FILE_MAX_AGE_DEFAULT", get_converter=_make_timedelta + ) + + #: Enable this if you want to use the X-Sendfile feature. Keep in + #: mind that the server has to support this. This only affects files + #: sent with the :func:`send_file` method. + #: + #: .. versionadded:: 0.2 + #: + #: This attribute can also be configured from the config with the + #: ``USE_X_SENDFILE`` configuration key. Defaults to ``False``. + use_x_sendfile = ConfigAttribute("USE_X_SENDFILE") + + #: The JSON encoder class to use. Defaults to :class:`~flask.json.JSONEncoder`. + #: + #: .. versionadded:: 0.10 + json_encoder = json.JSONEncoder + + #: The JSON decoder class to use. Defaults to :class:`~flask.json.JSONDecoder`. + #: + #: .. versionadded:: 0.10 + json_decoder = json.JSONDecoder + + #: Options that are passed to the Jinja environment in + #: :meth:`create_jinja_environment`. Changing these options after + #: the environment is created (accessing :attr:`jinja_env`) will + #: have no effect. + #: + #: .. versionchanged:: 1.1.0 + #: This is a ``dict`` instead of an ``ImmutableDict`` to allow + #: easier configuration. + #: + jinja_options = {"extensions": ["jinja2.ext.autoescape", "jinja2.ext.with_"]} + + #: Default configuration parameters. + default_config = ImmutableDict( + { + "ENV": None, + "DEBUG": None, + "TESTING": False, + "PROPAGATE_EXCEPTIONS": None, + "PRESERVE_CONTEXT_ON_EXCEPTION": None, + "SECRET_KEY": None, + "PERMANENT_SESSION_LIFETIME": timedelta(days=31), + "USE_X_SENDFILE": False, + "SERVER_NAME": None, + "APPLICATION_ROOT": "/", + "SESSION_COOKIE_NAME": "session", + "SESSION_COOKIE_DOMAIN": None, + "SESSION_COOKIE_PATH": None, + "SESSION_COOKIE_HTTPONLY": True, + "SESSION_COOKIE_SECURE": False, + "SESSION_COOKIE_SAMESITE": None, + "SESSION_REFRESH_EACH_REQUEST": True, + "MAX_CONTENT_LENGTH": None, + "SEND_FILE_MAX_AGE_DEFAULT": timedelta(hours=12), + "TRAP_BAD_REQUEST_ERRORS": None, + "TRAP_HTTP_EXCEPTIONS": False, + "EXPLAIN_TEMPLATE_LOADING": False, + "PREFERRED_URL_SCHEME": "http", + "JSON_AS_ASCII": True, + "JSON_SORT_KEYS": True, + "JSONIFY_PRETTYPRINT_REGULAR": False, + "JSONIFY_MIMETYPE": "application/json", + "TEMPLATES_AUTO_RELOAD": None, + "MAX_COOKIE_SIZE": 4093, + } + ) + + #: The rule object to use for URL rules created. This is used by + #: :meth:`add_url_rule`. Defaults to :class:`werkzeug.routing.Rule`. + #: + #: .. versionadded:: 0.7 + url_rule_class = Rule + + #: The map object to use for storing the URL rules and routing + #: configuration parameters. Defaults to :class:`werkzeug.routing.Map`. + #: + #: .. versionadded:: 1.1.0 + url_map_class = Map + + #: the test client that is used with when `test_client` is used. + #: + #: .. versionadded:: 0.7 + test_client_class = None + + #: The :class:`~click.testing.CliRunner` subclass, by default + #: :class:`~flask.testing.FlaskCliRunner` that is used by + #: :meth:`test_cli_runner`. Its ``__init__`` method should take a + #: Flask app object as the first argument. + #: + #: .. versionadded:: 1.0 + test_cli_runner_class = None + + #: the session interface to use. By default an instance of + #: :class:`~flask.sessions.SecureCookieSessionInterface` is used here. + #: + #: .. versionadded:: 0.8 + session_interface = SecureCookieSessionInterface() + + # 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, + import_name, + static_url_path=None, + static_folder="static", + static_host=None, + host_matching=False, + subdomain_matching=False, + template_folder="templates", + instance_path=None, + instance_relative_config=False, + root_path=None, + ): + _PackageBoundObject.__init__( + self, import_name, template_folder=template_folder, root_path=root_path + ) + + self.static_url_path = static_url_path + self.static_folder = static_folder + + if instance_path is None: + instance_path = self.auto_find_instance_path() + elif not os.path.isabs(instance_path): + raise ValueError( + "If an instance path is provided it must be absolute." + " A relative path was given instead." + ) + + #: Holds the path to the instance folder. + #: + #: .. versionadded:: 0.8 + self.instance_path = instance_path + + #: The configuration dictionary as :class:`Config`. This behaves + #: exactly like a regular dictionary but supports additional methods + #: to load a config from files. + self.config = self.make_config(instance_relative_config) + + #: A dictionary of all view functions registered. The keys will + #: be function names which are also used to generate URLs and + #: the values are the function objects themselves. + #: To register a view function, use the :meth:`route` decorator. + self.view_functions = {} + + #: A dictionary of all registered error handlers. The key is ``None`` + #: for error handlers active on the application, otherwise the key is + #: the name of the blueprint. Each key points to another dictionary + #: where the key is the status code of the http exception. The + #: special key ``None`` points to a list of tuples where the first item + #: is the class for the instance check and the second the error handler + #: function. + #: + #: To register an error handler, use the :meth:`errorhandler` + #: decorator. + self.error_handler_spec = {} + + #: A list of functions that are called when :meth:`url_for` raises a + #: :exc:`~werkzeug.routing.BuildError`. Each function registered here + #: is called with `error`, `endpoint` and `values`. If a function + #: returns ``None`` or raises a :exc:`BuildError` the next function is + #: tried. + #: + #: .. versionadded:: 0.9 + self.url_build_error_handlers = [] + + #: A dictionary with lists of functions that will be called at the + #: beginning of each request. The key of the dictionary is the name of + #: the blueprint this function is active for, or ``None`` for all + #: requests. To register a function, use the :meth:`before_request` + #: decorator. + self.before_request_funcs = {} + + #: A list of functions that will be called at the beginning of the + #: first request to this instance. To register a function, use the + #: :meth:`before_first_request` decorator. + #: + #: .. versionadded:: 0.8 + self.before_first_request_funcs = [] + + #: A dictionary with lists of functions that should be called after + #: each request. The key of the dictionary is the name of the blueprint + #: this function is active for, ``None`` for all requests. This can for + #: example be used to close database connections. To register a function + #: here, use the :meth:`after_request` decorator. + self.after_request_funcs = {} + + #: A dictionary with lists of functions that are called after + #: each request, even if an exception has occurred. The key of the + #: dictionary is the name of the blueprint this function is active for, + #: ``None`` for all requests. These functions are not allowed to modify + #: the request, and their return values are ignored. If an exception + #: occurred while processing the request, it gets passed to each + #: teardown_request function. To register a function here, use the + #: :meth:`teardown_request` decorator. + #: + #: .. versionadded:: 0.7 + self.teardown_request_funcs = {} + + #: A list of functions that are called when the application context + #: is destroyed. Since the application context is also torn down + #: if the request ends this is the place to store code that disconnects + #: from databases. + #: + #: .. versionadded:: 0.9 + self.teardown_appcontext_funcs = [] + + #: A dictionary with lists of functions that are called before the + #: :attr:`before_request_funcs` functions. The key of the dictionary is + #: the name of the blueprint this function is active for, or ``None`` + #: for all requests. To register a function, use + #: :meth:`url_value_preprocessor`. + #: + #: .. versionadded:: 0.7 + self.url_value_preprocessors = {} + + #: A dictionary with lists of functions that can be used as URL value + #: preprocessors. The key ``None`` here is used for application wide + #: callbacks, otherwise the key is the name of the blueprint. + #: Each of these functions has the chance to modify the dictionary + #: of URL values before they are used as the keyword arguments of the + #: view function. For each function registered this one should also + #: provide a :meth:`url_defaults` function that adds the parameters + #: automatically again that were removed that way. + #: + #: .. versionadded:: 0.7 + self.url_default_functions = {} + + #: A dictionary with list of functions that are called without argument + #: to populate the template context. The key of the dictionary is the + #: name of the blueprint this function is active for, ``None`` for all + #: requests. Each returns a dictionary that the template context is + #: updated with. To register a function here, use the + #: :meth:`context_processor` decorator. + self.template_context_processors = {None: [_default_template_ctx_processor]} + + #: A list of shell context processor functions that should be run + #: when a shell context is created. + #: + #: .. versionadded:: 0.11 + self.shell_context_processors = [] + + #: all the attached blueprints in a dictionary by name. Blueprints + #: can be attached multiple times so this dictionary does not tell + #: you how often they got attached. + #: + #: .. versionadded:: 0.7 + self.blueprints = {} + self._blueprint_order = [] + + #: a place where extensions can store application specific state. For + #: example this is where an extension could store database engines and + #: similar things. For backwards compatibility extensions should register + #: themselves like this:: + #: + #: if not hasattr(app, 'extensions'): + #: app.extensions = {} + #: app.extensions['extensionname'] = SomeObject() + #: + #: The key must match the name of the extension module. For example in + #: case of a "Flask-Foo" extension in `flask_foo`, the key would be + #: ``'foo'``. + #: + #: .. versionadded:: 0.7 + self.extensions = {} + + #: The :class:`~werkzeug.routing.Map` for this instance. You can use + #: this to change the routing converters after the class was created + #: but before any routes are connected. Example:: + #: + #: from werkzeug.routing import BaseConverter + #: + #: class ListConverter(BaseConverter): + #: def to_python(self, value): + #: return value.split(',') + #: def to_url(self, values): + #: return ','.join(super(ListConverter, self).to_url(value) + #: for value in values) + #: + #: app = Flask(__name__) + #: app.url_map.converters['list'] = ListConverter + self.url_map = self.url_map_class() + + self.url_map.host_matching = host_matching + self.subdomain_matching = subdomain_matching + + # tracks internally if the application already handled at least one + # request. + self._got_first_request = False + self._before_request_lock = Lock() + + # Add a static route using the provided static_url_path, static_host, + # and static_folder if there is a configured static_folder. + # Note we do this without checking if static_folder exists. + # For one, it might be created while the server is running (e.g. during + # development). Also, Google App Engine stores static files somewhere + if self.has_static_folder: + assert ( + bool(static_host) == host_matching + ), "Invalid static_host/host_matching combination" + self.add_url_rule( + self.static_url_path + "/", + endpoint="static", + host=static_host, + view_func=self.send_static_file, + ) + + # Set the name of the Click group in case someone wants to add + # the app's commands to another CLI tool. + self.cli.name = 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): + """A standard Python :class:`~logging.Logger` for the app, with + the same name as :attr:`name`. + + 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 :doc:`/logging` for more information. + + .. versionchanged:: 1.1.0 + The logger takes the same name as :attr:`name` rather than + hard-coding ``"flask.app"``. + + .. versionchanged:: 1.0.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 Jinja environment used to load templates. + + The environment is created the first time this property is + accessed. Changing :attr:`jinja_options` after that will have no + effect. + """ + 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) + + @property + def 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 + + @templates_auto_reload.setter + def templates_auto_reload(self, value): + self.config["TEMPLATES_AUTO_RELOAD"] = value + + def create_jinja_environment(self): + """Create the Jinja environment based on :attr:`jinja_options` + and the various Jinja-related methods of the app. Changing + :attr:`jinja_options` after this will have no effect. Also adds + Flask-related globals and filters to the environment. + + .. versionchanged:: 0.11 + ``Environment.auto_reload`` set in accordance with + ``TEMPLATES_AUTO_RELOAD`` configuration option. + + .. versionadded:: 0.5 + """ + 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") + + @property + def debug(self): + """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. + """ + return self.config["DEBUG"] + + @debug.setter + def debug(self, value): + self.config["DEBUG"] = value + self.jinja_env.auto_reload = self.templates_auto_reload + + 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 + # pick the first value that's not None (0 is allowed) + port = int(next((p for p in (port, sn_port) if p is not None), _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 .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 .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 2.0. 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' + ' 2.0. 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 2.0. 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' + ' 2.0. 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 2.0. Use + ``session_interface.make_null_session`` instead. + + .. versionadded:: 0.7 + """ + + warnings.warn( + DeprecationWarning( + '"make_null_session" is deprecated and will be removed' + ' in 2.0. 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): + """Get the exception class being handled. For HTTP status codes + or ``HTTPException`` subclasses, return both the exception and + status code. + + :param exc_class_or_code: Any exception class, or an HTTP status + code as an integer. + """ + 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. + + .. versionchanged:: 1.0.3 + ``RoutingException``, used internally for actions such as + slash redirects during routing, is not passed to error + handlers. + + .. versionchanged:: 1.0 + Exceptions are looked up by code *and* by MRO, so + ``HTTPExcpetion`` subclasses can be handled with a catch-all + handler for the base ``HTTPException``. + + .. 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 + + # RoutingExceptions are used internally to trigger routing + # actions, such as slash redirects raising RequestRedirect. They + # are not raised or handled in user code. + if isinstance(e, RoutingException): + 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 is :class:`~werkzeug + .exceptions.HTTPException` which is forwarded 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 + 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. + + if isinstance(e, BadRequestKeyError): + if self.debug or self.config["TRAP_BAD_REQUEST_ERRORS"]: + e.show_exception = True + + # Werkzeug < 0.15 doesn't add the KeyError to the 400 + # message, add it in manually. + # TODO: clean up once Werkzeug >= 0.15.5 is required + if e.args[0] not in e.get_description(): + e.description = "KeyError: '{}'".format(*e.args) + elif not hasattr(BadRequestKeyError, "show_exception"): + 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): + """Handle an exception that did not have an error handler + associated with it, or that was raised from an error handler. + This always causes a 500 ``InternalServerError``. + + Always sends the :data:`got_request_exception` signal. + + If :attr:`propagate_exceptions` is ``True``, such as in debug + mode, the error will be re-raised so that the debugger can + display it. Otherwise, the original exception is logged, and + an :exc:`~werkzeug.exceptions.InternalServerError` is returned. + + If an error handler is registered for ``InternalServerError`` or + ``500``, it will be used. For consistency, the handler will + always receive the ``InternalServerError``. The original + unhandled exception is available as ``e.original_exception``. + + .. note:: + Prior to Werkzeug 1.0.0, ``InternalServerError`` will not + always have an ``original_exception`` attribute. Use + ``getattr(e, "original_exception", None)`` to simulate the + behavior for compatibility. + + .. versionchanged:: 1.1.0 + Always passes the ``InternalServerError`` instance to the + handler, setting ``original_exception`` to the unhandled + error. + + .. versionchanged:: 1.1.0 + ``after_request`` functions and other finalization is done + even for the default 500 response when there is no handler. + + .. versionadded:: 0.3 + """ + exc_type, exc_value, tb = sys.exc_info() + got_request_exception.send(self, exception=e) + + 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)) + server_error = InternalServerError() + # TODO: pass as param when Werkzeug>=1.0.0 is required + # TODO: also remove note about this from docstring and docs + server_error.original_exception = e + handler = self._find_error_handler(server_error) + + if handler is not None: + server_error = handler(server_error) + + return self.finalize_request(server_error, 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: + 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. + + ``dict`` + A dictionary that will be jsonify'd before being returned. + + ``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 + elif isinstance(rv, dict): + rv = jsonify(rv) + elif isinstance(rv, BaseResponse) or callable(rv): + # 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, dict, 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]) + else: + raise TypeError( + "The view function did not return a valid" + " response. The return type must be a string, dict, tuple," + " Response instance, or WSGI callable, but it was a" + " {rv.__class__.__name__}.".format(rv=rv) + ) + + # 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 .testing import EnvironBuilder + + builder = EnvironBuilder(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: # noqa: B001 + 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/env/lib/python3.6/site-packages/flask/blueprints.py b/env/lib/python3.6/site-packages/flask/blueprints.py new file mode 100644 index 0000000..8978104 --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/blueprints.py @@ -0,0 +1,569 @@ +# -*- 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 Pallets + :license: BSD-3-Clause +""" +from functools import update_wrapper + +from .helpers import _endpoint_from_view_func +from .helpers import _PackageBoundObject + +# a singleton sentinel value for parameter defaults +_sentinel = object() + + +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 collection of routes and other + app-related functions that can be registered on a real application + later. + + A blueprint is an object that allows defining application functions + without requiring an application object ahead of time. It uses the + same decorators as :class:`~flask.Flask`, but defers the need for an + application by recording them for later registration. + + Decorating a function with a blueprint creates a deferred function + that is called with :class:`~flask.blueprints.BlueprintSetupState` + when the blueprint is registered on an application. + + See :ref:`blueprints` for more information. + + .. versionchanged:: 1.1.0 + Blueprints have a ``cli`` group to register nested CLI commands. + The ``cli_group`` parameter controls the name of the group under + the ``flask`` command. + + .. versionadded:: 0.7 + + :param name: The name of the blueprint. Will be prepended to each + endpoint name. + :param import_name: The name of the blueprint package, usually + ``__name__``. This helps locate the ``root_path`` for the + blueprint. + :param static_folder: A folder with static files that should be + served by the blueprint's static route. The path is relative to + the blueprint's root path. Blueprint static files are disabled + by default. + :param static_url_path: The url to serve static files from. + Defaults to ``static_folder``. If the blueprint does not have + a ``url_prefix``, the app's static route will take precedence, + and the blueprint's static files won't be accessible. + :param template_folder: A folder with templates that should be added + to the app's template search path. The path is relative to the + blueprint's root path. Blueprint templates are disabled by + default. Blueprint templates have a lower precedence than those + in the app's templates folder. + :param url_prefix: A path to prepend to all of the blueprint's URLs, + to make them distinct from the rest of the app's routes. + :param subdomain: A subdomain that blueprint routes will match on by + default. + :param url_defaults: A dict of default values that blueprint routes + will receive by default. + :param root_path: By default, the blueprint will automatically this + based on ``import_name``. In certain situations this automatic + detection can fail, so the path can be specified manually + instead. + """ + + 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, + cli_group=_sentinel, + ): + _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 + self.cli_group = cli_group + + 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) + + cli_resolved_group = options.get("cli_group", self.cli_group) + + if not self.cli.commands: + return + + if cli_resolved_group is None: + app.cli.commands.update(self.cli.commands) + elif cli_resolved_group is _sentinel: + self.cli.name = self.name + app.cli.add_command(self.cli) + else: + self.cli.name = cli_resolved_group + app.cli.add_command(self.cli) + + 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/env/lib/python3.6/site-packages/flask/cli.py b/env/lib/python3.6/site-packages/flask/cli.py new file mode 100644 index 0000000..c09b2cd --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/cli.py @@ -0,0 +1,971 @@ +# -*- coding: utf-8 -*- +""" + flask.cli + ~~~~~~~~~ + + A simple command line application to run flask apps. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +from __future__ import print_function + +import ast +import inspect +import os +import platform +import re +import sys +import traceback +from functools import update_wrapper +from operator import attrgetter +from threading import Lock +from threading import Thread + +import click +from werkzeug.utils import import_string + +from ._compat import getargspec +from ._compat import itervalues +from ._compat import reraise +from ._compat import text_type +from .globals import current_app +from .helpers import get_debug_flag +from .helpers import get_env +from .helpers import get_load_dotenv + +try: + import dotenv +except ImportError: + dotenv = None + +try: + import ssl +except ImportError: + ssl = 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 v in itervalues(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: + # explicitly delete tb as it is circular referenced + # https://docs.python.org/2/library/sys.html#sys.exc_info + 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 . 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) + + fname, ext = os.path.splitext(path) + if ext == ".py": + path = fname + + 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 # noqa: F841 + + 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 + + import werkzeug + from . import __version__ + + message = "Python %(python)s\nFlask %(flask)s\nWerkzeug %(werkzeug)s" + click.echo( + message + % { + "python": platform.python_version(), + "flask": __version__, + "werkzeug": werkzeug.__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 # noqa: F841 + 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 # noqa: F841 + 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 # noqa: F841 + self._app = rv = self.loader() + self._bg_loading_exc_info = None + return rv + + def __call__(self, environ, start_response): + __traceback_hide__ = True # noqa: F841 + 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): + """Helper 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, set_debug_flag=True): + #: 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.set_debug_flag = set_debug_flag + 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 # noqa: F841 + + 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 = ( + re.split(r":(?![\\/])", self.app_import_path, 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.' + ) + + if self.set_debug_flag: + # Update the app's debug flag through the descriptor so that + # other values repopulate as well. + app.debug = get_debug_flag() + + 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 will 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. + :param set_debug_flag: Set the app's debug flag based on the active + environment + + .. 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, + set_debug_flag=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 + self.set_debug_flag = set_debug_flag + + 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, set_debug_flag=self.set_debug_flag + ) + + 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. + + .. versionchanged:: 1.1.0 + Returns ``False`` when python-dotenv is not installed, or when + the given path isn't a file. + + .. versionadded:: 1.0 + """ + if dotenv is None: + if path or os.path.isfile(".env") or os.path.isfile(".flaskenv"): + click.secho( + " * Tip: There are .env or .flaskenv files present." + ' Do "pip install python-dotenv" to use them.', + fg="yellow", + err=True, + ) + + return False + + # if the given path specifies the actual file then return True, + # else False + if path is not None: + if os.path.isfile(path): + return dotenv.load_dotenv(path) + + return False + + 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: This is a development server. " + "Do not use it in a production deployment.", + 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): + if ssl is None: + raise click.BadParameter( + 'Using "--cert" requires Python to be compiled with SSL support.', + ctx, + param, + ) + + try: + return self.path_type(value, param, ctx) + except click.BadParameter: + value = click.STRING(value, param, ctx).lower() + + if value == "adhoc": + try: + import OpenSSL # noqa: F401 + 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, 9): + 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, 9): + 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 + + +class SeparatedPathType(click.Path): + """Click option type that accepts a list of values separated by the + OS's path separator (``:``, ``;`` on Windows). Each value is + validated as a :class:`click.Path` type. + """ + + def convert(self, value, param, ctx): + items = self.split_envvar_value(value) + super_convert = super(SeparatedPathType, self).convert + return [super_convert(item, param, ctx) for item in items] + + +@click.command("run", short_help="Run 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.", +) +@click.option( + "--extra-files", + default=None, + type=SeparatedPathType(), + help=( + "Extra files that trigger a reload on change. Multiple paths" + " are separated by '{}'.".format(os.path.pathsep) + ), +) +@pass_script_info +def run_command( + info, host, port, reload, debugger, eager_loading, with_threads, cert, extra_files +): + """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, + extra_files=extra_files, + ) + + +@click.command("shell", short_help="Run a shell in the app context.") +@with_appcontext +def shell_command(): + """Run 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 .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): + # TODO omit sys.argv once https://github.com/pallets/click/issues/536 is fixed + cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None) + + +if __name__ == "__main__": + main(as_module=True) diff --git a/env/lib/python3.6/site-packages/flask/config.py b/env/lib/python3.6/site-packages/flask/config.py new file mode 100644 index 0000000..809de33 --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/config.py @@ -0,0 +1,269 @@ +# -*- coding: utf-8 -*- +""" + flask.config + ~~~~~~~~~~~~ + + Implements the configuration related objects. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import errno +import os +import types + +from werkzeug.utils import import_string + +from . import json +from ._compat import iteritems +from ._compat import string_types + + +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) + + Nothing is done to the object before loading. If the object is a + class and has ``@property`` attributes, it needs to be + instantiated before being passed to this method. + + 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/env/lib/python3.6/site-packages/flask/ctx.py b/env/lib/python3.6/site-packages/flask/ctx.py new file mode 100644 index 0000000..172f6a0 --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/ctx.py @@ -0,0 +1,475 @@ +# -*- coding: utf-8 -*- +""" + flask.ctx + ~~~~~~~~~ + + Implements the objects required to keep the context. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import sys +from functools import update_wrapper + +from werkzeug.exceptions import HTTPException + +from ._compat import BROKEN_PYPY_CTXMGR_EXIT +from ._compat import reraise +from .globals import _app_ctx_stack +from .globals import _request_ctx_stack +from .signals import appcontext_popped +from .signals import appcontext_pushed + + +# 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. The current session is also + included in the copied request context. + + 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 or + # flask.session 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, session=None): + self.app = app + if request is None: + request = app.request_class(environ) + self.request = request + self.url_adapter = None + try: + self.url_adapter = app.create_url_adapter(self.request) + except HTTPException as e: + self.request.routing_exception = e + self.flashes = None + self.session = session + + # 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 = [] + + @property + def g(self): + return _app_ctx_stack.top.g + + @g.setter + def g(self, value): + _app_ctx_stack.top.g = value + + 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 + + .. versionchanged:: 1.1 + The current session object is used instead of reloading the original + data. This prevents `flask.session` pointing to an out-of-date object. + """ + return self.__class__( + self.app, + environ=self.request.environ, + request=self.request, + session=self.session, + ) + + def match_request(self): + """Can be overridden by a subclass to hook into the matching + of the request. + """ + try: + result = self.url_adapter.match(return_rule=True) + self.request.url_rule, self.request.view_args = result + 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) + + if self.url_adapter is not None: + self.match_request() + + 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/env/lib/python3.6/site-packages/flask/debughelpers.py b/env/lib/python3.6/site-packages/flask/debughelpers.py new file mode 100644 index 0000000..e475bd1 --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/debughelpers.py @@ -0,0 +1,183 @@ +# -*- coding: utf-8 -*- +""" + flask.debughelpers + ~~~~~~~~~~~~~~~~~~ + + Various helpers to make the development experience better. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import os +from warnings import warn + +from ._compat import implements_to_string +from ._compat import 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/env/lib/python3.6/site-packages/flask/globals.py b/env/lib/python3.6/site-packages/flask/globals.py new file mode 100644 index 0000000..6d32dcf --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/globals.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +""" + flask.globals + ~~~~~~~~~~~~~ + + Defines all the global objects that are proxies to the current + active context. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +from functools import partial + +from werkzeug.local import LocalProxy +from werkzeug.local import LocalStack + + +_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/env/lib/python3.6/site-packages/flask/helpers.py b/env/lib/python3.6/site-packages/flask/helpers.py new file mode 100644 index 0000000..df06db8 --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/helpers.py @@ -0,0 +1,1155 @@ +# -*- coding: utf-8 -*- +""" + flask.helpers + ~~~~~~~~~~~~~ + + Implements various helpers. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import io +import mimetypes +import os +import pkgutil +import posixpath +import socket +import sys +import unicodedata +from functools import update_wrapper +from threading import RLock +from time import time +from zlib import adler32 + +from jinja2 import FileSystemLoader +from werkzeug.datastructures import Headers +from werkzeug.exceptions import BadRequest +from werkzeug.exceptions import NotFound +from werkzeug.exceptions import RequestedRangeNotSatisfiable +from werkzeug.routing import BuildError +from werkzeug.urls import url_quote +from werkzeug.wsgi import wrap_file + +from ._compat import fspath +from ._compat import PY2 +from ._compat import string_types +from ._compat import text_type +from .globals import _app_ctx_stack +from .globals import _request_ctx_stack +from .globals import current_app +from .globals import request +from .globals import session +from .signals import message_flashed + +# 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 `. + + Configuration values ``APPLICATION_ROOT`` and ``SERVER_NAME`` are only used when + generating URLs outside of a request context. + + 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 + falls back to the `Host` header, then to the IP and port of the request. + :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 + + .. versionchanged:: 1.0.3 + Filenames are encoded with ASCII instead of Latin-1 for broader + compatibility with WSGI servers. + + .. versionchanged:: 1.1 + Filename may be a :class:`~os.PathLike` object. + + .. versionadded:: 1.1 + Partial content supports :class:`~io.BytesIO`. + + :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 hasattr(filename_or_fp, "__fspath__"): + filename_or_fp = fspath(filename_or_fp) + + 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") + + if not isinstance(attachment_filename, text_type): + attachment_filename = attachment_filename.decode("utf-8") + + try: + attachment_filename = attachment_filename.encode("ascii") + except UnicodeEncodeError: + filenames = { + "filename": unicodedata.normalize("NFKD", attachment_filename).encode( + "ascii", "ignore" + ), + "filename*": "UTF-8''%s" % url_quote(attachment_filename, safe=b""), + } + 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 + elif isinstance(file, io.BytesIO): + try: + fsize = file.getbuffer().nbytes + except AttributeError: + # Python 2 doesn't have getbuffer + fsize = len(file.getvalue()) + 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 = fspath(filename) + directory = fspath(directory) + 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_path(root_mod_name): + """Find the path where the module's root exists in""" + if sys.version_info >= (3, 4): + import importlib.util + + try: + spec = importlib.util.find_spec(root_mod_name) + if spec is None: + raise ValueError("not found") + # ImportError: the machinery told us it does not exist + # ValueError: + # - the module name was invalid + # - the module name is __main__ + # - *we* raised `ValueError` due to `spec` being `None` + except (ImportError, ValueError): + pass # handled below + else: + # namespace package + if spec.origin in {"namespace", None}: + return os.path.dirname(next(iter(spec.submodule_search_locations))) + # a package (with __init__.py) + elif spec.submodule_search_locations: + return os.path.dirname(os.path.dirname(spec.origin)) + # just a normal module + else: + return os.path.dirname(spec.origin) + + # we were unable to find the `package_path` using PEP 451 loaders + loader = pkgutil.get_loader(root_mod_name) + if loader is None or root_mod_name == "__main__": + # import name is not found, or interactive/main module + return 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__(root_mod_name) + filename = sys.modules[root_mod_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) + + return package_path + + +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.partition(".") + package_path = _find_package_path(root_mod_name) + 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 + + # circular import + from .cli import AppGroup + + #: The Click command group for registration of CLI commands + #: on the application and associated blueprints. These commands + #: are accessible via the :command:`flask` command once the + #: application has been discovered and blueprints registered. + self.cli = AppGroup() + + @property + def static_folder(self): + """The absolute path to the configured static folder.""" + if self._static_folder is not None: + return os.path.join(self.root_path, self._static_folder) + + @static_folder.setter + def static_folder(self, value): + if value is not None: + value = value.rstrip("/\\") + self._static_folder = value + + @property + def static_url_path(self): + """The URL prefix that the static route will be accessible from. + + If it was not configured during init, it is derived from + :attr:`static_folder`. + """ + if self._static_url_path is not None: + return self._static_url_path + + if self.static_folder is not None: + basename = os.path.basename(self.static_folder) + return ("/" + basename).rstrip("/") + + @static_url_path.setter + def static_url_path(self, value): + if value is not None: + value = value.rstrip("/") + + self._static_url_path = value + + @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: Open file in this mode. Only reading is supported, + valid values are "r" (or "rt") and "rb". + """ + if mode not in {"r", "rt", "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/env/lib/python3.6/site-packages/flask/json/__init__.py b/env/lib/python3.6/site-packages/flask/json/__init__.py new file mode 100644 index 0000000..a141068 --- /dev/null +++ b/env/lib/python3.6/site-packages/flask/json/__init__.py @@ -0,0 +1,376 @@ +# -*- coding: utf-8 -*- +""" +flask.json +~~~~~~~~~~ + +:copyright: 2010 Pallets +:license: BSD-3-Clause +""" +import codecs +import io +import uuid +from datetime import date +from datetime import datetime + +from itsdangerous import json as _json +from jinja2 import Markup +from werkzeug.http import http_date + +from .._compat import PY2 +from .._compat import text_type +from ..globals import current_app +from ..globals import request + +try: + import dataclasses +except ImportError: + dataclasses = None + +# 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 + encoder by also supporting ``datetime``, ``UUID``, ``dataclasses``, + and ``Markup`` objects. + + ``datetime`` objects are serialized as RFC 822 datetime strings. + This is the 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 dataclasses and dataclasses.is_dataclass(o): + return dataclasses.asdict(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, app=None): + """Inject default arguments for dump functions.""" + if app is None: + app = current_app + + if app: + bp = app.blueprints.get(request.blueprint) if request else None + kwargs.setdefault( + "cls", bp.json_encoder if bp and bp.json_encoder else app.json_encoder + ) + + if not app.config["JSON_AS_ASCII"]: + kwargs.setdefault("ensure_ascii", False) + + kwargs.setdefault("sort_keys", app.config["JSON_SORT_KEYS"]) + else: + kwargs.setdefault("sort_keys", True) + kwargs.setdefault("cls", JSONEncoder) + + +def _load_arg_defaults(kwargs, app=None): + """Inject default arguments for load functions.""" + if app is None: + app = current_app + + if app: + bp = app.blueprints.get(request.blueprint) if request else None + kwargs.setdefault( + "cls", bp.json_decoder if bp and bp.json_decoder else 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, app=None, **kwargs): + """Serialize ``obj`` to a JSON-formatted string. If there is an + app context pushed, use the current app's configured encoder + (:attr:`~flask.Flask.json_encoder`), or fall back to the default + :class:`JSONEncoder`. + + Takes the same arguments as the built-in :func:`json.dumps`, and + does some extra configuration based on the application. If the + simplejson package is installed, it is preferred. + + :param obj: Object to serialize to JSON. + :param app: App instance to use to configure the JSON encoder. + Uses ``current_app`` if not given, and falls back to the default + encoder when not in an app context. + :param kwargs: Extra arguments passed to :func:`json.dumps`. + + .. versionchanged:: 1.0.3 + + ``app`` can be passed directly, rather than requiring an app + context for configuration. + """ + _dump_arg_defaults(kwargs, app=app) + 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, app=None, **kwargs): + """Like :func:`dumps` but writes into a file object.""" + _dump_arg_defaults(kwargs, app=app) + 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, app=None, **kwargs): + """Deserialize an object from a JSON-formatted string ``s``. If + there is an app context pushed, use the current app's configured + decoder (:attr:`~flask.Flask.json_decoder`), or fall back to the + default :class:`JSONDecoder`. + + Takes the same arguments as the built-in :func:`json.loads`, and + does some extra configuration based on the application. If the + simplejson package is installed, it is preferred. + + :param s: JSON string to deserialize. + :param app: App instance to use to configure the JSON decoder. + Uses ``current_app`` if not given, and falls back to the default + encoder when not in an app context. + :param kwargs: Extra arguments passed to :func:`json.dumps`. + + .. versionchanged:: 1.0.3 + + ``app`` can be passed directly, rather than requiring an app + context for configuration. + """ + _load_arg_defaults(kwargs, app=app) + 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, app=None, **kwargs): + """Like :func:`loads` but reads from a file object.""" + _load_arg_defaults(kwargs, app=app) + 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 `` + + + + +

+ +
+
+

Console Locked

+

+ The console is locked and needs to be unlocked by entering the PIN. + You can find the PIN printed out on the standard output of your + shell that runs the server. +

+

PIN: + + +

+
+
+ + +""" + +PAGE_HTML = ( + HEADER + + u"""\ +

%(exception_type)s

+
+

%(exception)s

+
+

Traceback (most recent call last)

+%(summary)s +
+
+ The debugger caught an exception in your WSGI application. You can now + look at the traceback which led to the error. + If you enable JavaScript you can also use additional features such as code + execution (if the evalex feature is enabled), automatic pasting of the + exceptions and much more. +
+""" + + FOOTER + + """ + +""" +) + +CONSOLE_HTML = ( + HEADER + + u"""\ +

Interactive Console

+
+In this console you can execute Python expressions in the context of the +application. The initial namespace was created by the debugger automatically. +
+
The Console requires JavaScript.
+""" + + FOOTER +) + +SUMMARY_HTML = u"""\ +
+ %(title)s +
    %(frames)s
+ %(description)s +
+""" + +FRAME_HTML = u"""\ +
+

File "%(filename)s", + line %(lineno)s, + in %(function_name)s

+
%(lines)s
+
+""" + +SOURCE_LINE_HTML = u"""\ + + %(lineno)s + %(code)s + +""" + + +def render_console_html(secret, evalex_trusted=True): + return CONSOLE_HTML % { + "evalex": "true", + "evalex_trusted": "true" if evalex_trusted else "false", + "console": "true", + "title": "Console", + "secret": secret, + "traceback_id": -1, + } + + +def get_current_traceback( + ignore_system_exceptions=False, show_hidden_frames=False, skip=0 +): + """Get the current exception info as `Traceback` object. Per default + calling this method will reraise system exceptions such as generator exit, + system exit or others. This behavior can be disabled by passing `False` + to the function as first parameter. + """ + exc_type, exc_value, tb = sys.exc_info() + if ignore_system_exceptions and exc_type in system_exceptions: + reraise(exc_type, exc_value, tb) + for _ in range_type(skip): + if tb.tb_next is None: + break + tb = tb.tb_next + tb = Traceback(exc_type, exc_value, tb) + if not show_hidden_frames: + tb.filter_hidden_frames() + return tb + + +class Line(object): + """Helper for the source renderer.""" + + __slots__ = ("lineno", "code", "in_frame", "current") + + def __init__(self, lineno, code): + self.lineno = lineno + self.code = code + self.in_frame = False + self.current = False + + @property + def classes(self): + rv = ["line"] + if self.in_frame: + rv.append("in-frame") + if self.current: + rv.append("current") + return rv + + def render(self): + return SOURCE_LINE_HTML % { + "classes": u" ".join(self.classes), + "lineno": self.lineno, + "code": escape(self.code), + } + + +class Traceback(object): + """Wraps a traceback.""" + + def __init__(self, exc_type, exc_value, tb): + self.exc_type = exc_type + self.exc_value = exc_value + self.tb = tb + + exception_type = exc_type.__name__ + if exc_type.__module__ not in {"builtins", "__builtin__", "exceptions"}: + exception_type = exc_type.__module__ + "." + exception_type + self.exception_type = exception_type + + self.groups = [] + memo = set() + while True: + self.groups.append(Group(exc_type, exc_value, tb)) + memo.add(id(exc_value)) + if PY2: + break + exc_value = exc_value.__cause__ or exc_value.__context__ + if exc_value is None or id(exc_value) in memo: + break + exc_type = type(exc_value) + tb = exc_value.__traceback__ + self.groups.reverse() + self.frames = [frame for group in self.groups for frame in group.frames] + + def filter_hidden_frames(self): + """Remove the frames according to the paste spec.""" + for group in self.groups: + group.filter_hidden_frames() + + self.frames[:] = [frame for group in self.groups for frame in group.frames] + + @property + def is_syntax_error(self): + """Is it a syntax error?""" + return isinstance(self.exc_value, SyntaxError) + + @property + def exception(self): + """String representation of the final exception.""" + return self.groups[-1].exception + + def log(self, logfile=None): + """Log the ASCII traceback into a file object.""" + if logfile is None: + logfile = sys.stderr + tb = self.plaintext.rstrip() + u"\n" + logfile.write(to_native(tb, "utf-8", "replace")) + + def paste(self): + """Create a paste and return the paste id.""" + data = json.dumps( + { + "description": "Werkzeug Internal Server Error", + "public": False, + "files": {"traceback.txt": {"content": self.plaintext}}, + } + ).encode("utf-8") + try: + from urllib2 import urlopen + except ImportError: + from urllib.request import urlopen + rv = urlopen("https://api.github.com/gists", data=data) + resp = json.loads(rv.read().decode("utf-8")) + rv.close() + return {"url": resp["html_url"], "id": resp["id"]} + + def render_summary(self, include_title=True): + """Render the traceback for the interactive console.""" + title = "" + classes = ["traceback"] + if not self.frames: + classes.append("noframe-traceback") + frames = [] + else: + library_frames = sum(frame.is_library for frame in self.frames) + mark_lib = 0 < library_frames < len(self.frames) + frames = [group.render(mark_lib=mark_lib) for group in self.groups] + + if include_title: + if self.is_syntax_error: + title = u"Syntax Error" + else: + title = u"Traceback (most recent call last):" + + if self.is_syntax_error: + description_wrapper = u"
%s
" + else: + description_wrapper = u"
%s
" + + return SUMMARY_HTML % { + "classes": u" ".join(classes), + "title": u"

%s

" % title if title else u"", + "frames": u"\n".join(frames), + "description": description_wrapper % escape(self.exception), + } + + def render_full(self, evalex=False, secret=None, evalex_trusted=True): + """Render the Full HTML page with the traceback info.""" + exc = escape(self.exception) + return PAGE_HTML % { + "evalex": "true" if evalex else "false", + "evalex_trusted": "true" if evalex_trusted else "false", + "console": "false", + "title": exc, + "exception": exc, + "exception_type": escape(self.exception_type), + "summary": self.render_summary(include_title=False), + "plaintext": escape(self.plaintext), + "plaintext_cs": re.sub("-{2,}", "-", self.plaintext), + "traceback_id": self.id, + "secret": secret, + } + + @cached_property + def plaintext(self): + return u"\n".join([group.render_text() for group in self.groups]) + + @property + def id(self): + return id(self) + + +class Group(object): + """A group of frames for an exception in a traceback. On Python 3, + if the exception has a ``__cause__`` or ``__context__``, there are + multiple exception groups. + """ + + def __init__(self, exc_type, exc_value, tb): + self.exc_type = exc_type + self.exc_value = exc_value + self.info = None + if not PY2: + if exc_value.__cause__ is not None: + self.info = ( + u"The above exception was the direct cause of the" + u" following exception" + ) + elif exc_value.__context__ is not None: + self.info = ( + u"During handling of the above exception, another" + u" exception occurred" + ) + + self.frames = [] + while tb is not None: + self.frames.append(Frame(exc_type, exc_value, tb)) + tb = tb.tb_next + + def filter_hidden_frames(self): + new_frames = [] + hidden = False + + for frame in self.frames: + hide = frame.hide + if hide in ("before", "before_and_this"): + new_frames = [] + hidden = False + if hide == "before_and_this": + continue + elif hide in ("reset", "reset_and_this"): + hidden = False + if hide == "reset_and_this": + continue + elif hide in ("after", "after_and_this"): + hidden = True + if hide == "after_and_this": + continue + elif hide or hidden: + continue + new_frames.append(frame) + + # if we only have one frame and that frame is from the codeop + # module, remove it. + if len(new_frames) == 1 and self.frames[0].module == "codeop": + del self.frames[:] + + # if the last frame is missing something went terrible wrong :( + elif self.frames[-1] in new_frames: + self.frames[:] = new_frames + + @property + def exception(self): + """String representation of the exception.""" + buf = traceback.format_exception_only(self.exc_type, self.exc_value) + rv = "".join(buf).strip() + return to_unicode(rv, "utf-8", "replace") + + def render(self, mark_lib=True): + out = [] + if self.info is not None: + out.append(u'
  • %s:
    ' % self.info) + for frame in self.frames: + out.append( + u"%s" + % ( + u' title="%s"' % escape(frame.info) if frame.info else u"", + frame.render(mark_lib=mark_lib), + ) + ) + return u"\n".join(out) + + def render_text(self): + out = [] + if self.info is not None: + out.append(u"\n%s:\n" % self.info) + out.append(u"Traceback (most recent call last):") + for frame in self.frames: + out.append(frame.render_text()) + out.append(self.exception) + return u"\n".join(out) + + +class Frame(object): + """A single frame in a traceback.""" + + def __init__(self, exc_type, exc_value, tb): + self.lineno = tb.tb_lineno + self.function_name = tb.tb_frame.f_code.co_name + self.locals = tb.tb_frame.f_locals + self.globals = tb.tb_frame.f_globals + + fn = inspect.getsourcefile(tb) or inspect.getfile(tb) + if fn[-4:] in (".pyo", ".pyc"): + fn = fn[:-1] + # if it's a file on the file system resolve the real filename. + if os.path.isfile(fn): + fn = os.path.realpath(fn) + self.filename = to_unicode(fn, get_filesystem_encoding()) + self.module = self.globals.get("__name__", self.locals.get("__name__")) + self.loader = self.globals.get("__loader__", self.locals.get("__loader__")) + self.code = tb.tb_frame.f_code + + # support for paste's traceback extensions + self.hide = self.locals.get("__traceback_hide__", False) + info = self.locals.get("__traceback_info__") + if info is not None: + info = to_unicode(info, "utf-8", "replace") + self.info = info + + def render(self, mark_lib=True): + """Render a single frame in a traceback.""" + return FRAME_HTML % { + "id": self.id, + "filename": escape(self.filename), + "lineno": self.lineno, + "function_name": escape(self.function_name), + "lines": self.render_line_context(), + "library": "library" if mark_lib and self.is_library else "", + } + + @cached_property + def is_library(self): + return any( + self.filename.startswith(path) for path in sysconfig.get_paths().values() + ) + + def render_text(self): + return u' File "%s", line %s, in %s\n %s' % ( + self.filename, + self.lineno, + self.function_name, + self.current_line.strip(), + ) + + def render_line_context(self): + before, current, after = self.get_context_lines() + rv = [] + + def render_line(line, cls): + line = line.expandtabs().rstrip() + stripped_line = line.strip() + prefix = len(line) - len(stripped_line) + rv.append( + '
    %s%s
    ' + % (cls, " " * prefix, escape(stripped_line) or " ") + ) + + for line in before: + render_line(line, "before") + render_line(current, "current") + for line in after: + render_line(line, "after") + + return "\n".join(rv) + + def get_annotated_lines(self): + """Helper function that returns lines with extra information.""" + lines = [Line(idx + 1, x) for idx, x in enumerate(self.sourcelines)] + + # find function definition and mark lines + if hasattr(self.code, "co_firstlineno"): + lineno = self.code.co_firstlineno - 1 + while lineno > 0: + if _funcdef_re.match(lines[lineno].code): + break + lineno -= 1 + try: + offset = len(inspect.getblock([x.code + "\n" for x in lines[lineno:]])) + except TokenError: + offset = 0 + for line in lines[lineno : lineno + offset]: + line.in_frame = True + + # mark current line + try: + lines[self.lineno - 1].current = True + except IndexError: + pass + + return lines + + def eval(self, code, mode="single"): + """Evaluate code in the context of the frame.""" + if isinstance(code, string_types): + if PY2 and isinstance(code, text_type): # noqa + code = UTF8_COOKIE + code.encode("utf-8") + code = compile(code, "", mode) + return eval(code, self.globals, self.locals) + + @cached_property + def sourcelines(self): + """The sourcecode of the file as list of unicode strings.""" + # get sourcecode from loader or file + source = None + if self.loader is not None: + try: + if hasattr(self.loader, "get_source"): + source = self.loader.get_source(self.module) + elif hasattr(self.loader, "get_source_by_code"): + source = self.loader.get_source_by_code(self.code) + except Exception: + # we munch the exception so that we don't cause troubles + # if the loader is broken. + pass + + if source is None: + try: + with open( + to_native(self.filename, get_filesystem_encoding()), mode="rb" + ) as f: + source = f.read() + except IOError: + return [] + + # already unicode? return right away + if isinstance(source, text_type): + return source.splitlines() + + # yes. it should be ascii, but we don't want to reject too many + # characters in the debugger if something breaks + charset = "utf-8" + if source.startswith(UTF8_COOKIE): + source = source[3:] + else: + for idx, match in enumerate(_line_re.finditer(source)): + match = _coding_re.search(match.group()) + if match is not None: + charset = match.group(1) + break + if idx > 1: + break + + # on broken cookies we fall back to utf-8 too + charset = to_native(charset) + try: + codecs.lookup(charset) + except LookupError: + charset = "utf-8" + + return source.decode(charset, "replace").splitlines() + + def get_context_lines(self, context=5): + before = self.sourcelines[self.lineno - context - 1 : self.lineno - 1] + past = self.sourcelines[self.lineno : self.lineno + context] + return (before, self.current_line, past) + + @property + def current_line(self): + try: + return self.sourcelines[self.lineno - 1] + except IndexError: + return u"" + + @cached_property + def console(self): + return Console(self.globals, self.locals) + + @property + def id(self): + return id(self) diff --git a/env/lib/python3.6/site-packages/werkzeug/exceptions.py b/env/lib/python3.6/site-packages/werkzeug/exceptions.py new file mode 100644 index 0000000..82e99c2 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/exceptions.py @@ -0,0 +1,829 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.exceptions + ~~~~~~~~~~~~~~~~~~~ + + This module implements a number of Python exceptions you can raise from + within your views to trigger a standard non-200 response. + + + Usage Example + ------------- + + :: + + from werkzeug.wrappers import BaseRequest + from werkzeug.wsgi import responder + from werkzeug.exceptions import HTTPException, NotFound + + def view(request): + raise NotFound() + + @responder + def application(environ, start_response): + request = BaseRequest(environ) + try: + return view(request) + except HTTPException as e: + return e + + + As you can see from this example those exceptions are callable WSGI + applications. Because of Python 2.4 compatibility those do not extend + from the response objects but only from the python exception class. + + As a matter of fact they are not Werkzeug response objects. However you + can get a response object by calling ``get_response()`` on a HTTP + exception. + + Keep in mind that you have to pass an environment to ``get_response()`` + because some errors fetch additional information from the WSGI + environment. + + If you want to hook in a different exception page to say, a 404 status + code, you can add a second except for a specific subclass of an error:: + + @responder + def application(environ, start_response): + request = BaseRequest(environ) + try: + return view(request) + except NotFound, e: + return not_found(request) + except HTTPException, e: + return e + + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import sys +from datetime import datetime + +from ._compat import implements_to_string +from ._compat import integer_types +from ._compat import iteritems +from ._compat import text_type +from ._internal import _get_environ +from .utils import escape + + +@implements_to_string +class HTTPException(Exception): + """Baseclass for all HTTP exceptions. This exception can be called as WSGI + application to render a default error page or you can catch the subclasses + of it independently and render nicer error messages. + """ + + code = None + description = None + + def __init__(self, description=None, response=None): + super(HTTPException, self).__init__() + if description is not None: + self.description = description + self.response = response + + @classmethod + def wrap(cls, exception, name=None): + """Create an exception that is a subclass of the calling HTTP + exception and the ``exception`` argument. + + The first argument to the class will be passed to the + wrapped ``exception``, the rest to the HTTP exception. If + ``e.args`` is not empty and ``e.show_exception`` is ``True``, + the wrapped exception message is added to the HTTP error + description. + + .. versionchanged:: 0.15.5 + The ``show_exception`` attribute controls whether the + description includes the wrapped exception message. + + .. versionchanged:: 0.15.0 + The description includes the wrapped exception message. + """ + + class newcls(cls, exception): + _description = cls.description + show_exception = False + + def __init__(self, arg=None, *args, **kwargs): + super(cls, self).__init__(*args, **kwargs) + + if arg is None: + exception.__init__(self) + else: + exception.__init__(self, arg) + + @property + def description(self): + if self.show_exception: + return "{}\n{}: {}".format( + self._description, exception.__name__, exception.__str__(self) + ) + + return self._description + + @description.setter + def description(self, value): + self._description = value + + newcls.__module__ = sys._getframe(1).f_globals.get("__name__") + name = name or cls.__name__ + exception.__name__ + newcls.__name__ = newcls.__qualname__ = name + return newcls + + @property + def name(self): + """The status name.""" + from .http import HTTP_STATUS_CODES + + return HTTP_STATUS_CODES.get(self.code, "Unknown Error") + + def get_description(self, environ=None): + """Get the description.""" + return u"

    %s

    " % escape(self.description).replace("\n", "
    ") + + def get_body(self, environ=None): + """Get the HTML body.""" + return text_type( + ( + u'\n' + u"%(code)s %(name)s\n" + u"

    %(name)s

    \n" + u"%(description)s\n" + ) + % { + "code": self.code, + "name": escape(self.name), + "description": self.get_description(environ), + } + ) + + def get_headers(self, environ=None): + """Get a list of headers.""" + return [("Content-Type", "text/html; charset=utf-8")] + + def get_response(self, environ=None): + """Get a response object. If one was passed to the exception + it's returned directly. + + :param environ: the optional environ for the request. This + can be used to modify the response depending + on how the request looked like. + :return: a :class:`Response` object or a subclass thereof. + """ + from .wrappers.response import Response + + if self.response is not None: + return self.response + if environ is not None: + environ = _get_environ(environ) + headers = self.get_headers(environ) + return Response(self.get_body(environ), self.code, headers) + + def __call__(self, environ, start_response): + """Call the exception as WSGI application. + + :param environ: the WSGI environment. + :param start_response: the response callable provided by the WSGI + server. + """ + response = self.get_response(environ) + return response(environ, start_response) + + def __str__(self): + code = self.code if self.code is not None else "???" + return "%s %s: %s" % (code, self.name, self.description) + + def __repr__(self): + code = self.code if self.code is not None else "???" + return "<%s '%s: %s'>" % (self.__class__.__name__, code, self.name) + + +class BadRequest(HTTPException): + """*400* `Bad Request` + + Raise if the browser sends something to the application the application + or server cannot handle. + """ + + code = 400 + description = ( + "The browser (or proxy) sent a request that this server could " + "not understand." + ) + + +class ClientDisconnected(BadRequest): + """Internal exception that is raised if Werkzeug detects a disconnected + client. Since the client is already gone at that point attempting to + send the error message to the client might not work and might ultimately + result in another exception in the server. Mainly this is here so that + it is silenced by default as far as Werkzeug is concerned. + + Since disconnections cannot be reliably detected and are unspecified + by WSGI to a large extent this might or might not be raised if a client + is gone. + + .. versionadded:: 0.8 + """ + + +class SecurityError(BadRequest): + """Raised if something triggers a security error. This is otherwise + exactly like a bad request error. + + .. versionadded:: 0.9 + """ + + +class BadHost(BadRequest): + """Raised if the submitted host is badly formatted. + + .. versionadded:: 0.11.2 + """ + + +class Unauthorized(HTTPException): + """*401* ``Unauthorized`` + + Raise if the user is not authorized to access a resource. + + The ``www_authenticate`` argument should be used to set the + ``WWW-Authenticate`` header. This is used for HTTP basic auth and + other schemes. Use :class:`~werkzeug.datastructures.WWWAuthenticate` + to create correctly formatted values. Strictly speaking a 401 + response is invalid if it doesn't provide at least one value for + this header, although real clients typically don't care. + + :param description: Override the default message used for the body + of the response. + :param www-authenticate: A single value, or list of values, for the + WWW-Authenticate header. + + .. versionchanged:: 0.15.3 + If the ``www_authenticate`` argument is not set, the + ``WWW-Authenticate`` header is not set. + + .. versionchanged:: 0.15.3 + The ``response`` argument was restored. + + .. versionchanged:: 0.15.1 + ``description`` was moved back as the first argument, restoring + its previous position. + + .. versionchanged:: 0.15.0 + ``www_authenticate`` was added as the first argument, ahead of + ``description``. + """ + + code = 401 + description = ( + "The server could not verify that you are authorized to access" + " the URL requested. You either supplied the wrong credentials" + " (e.g. a bad password), or your browser doesn't understand" + " how to supply the credentials required." + ) + + def __init__(self, description=None, response=None, www_authenticate=None): + HTTPException.__init__(self, description, response) + + if www_authenticate is not None: + if not isinstance(www_authenticate, (tuple, list)): + www_authenticate = (www_authenticate,) + + self.www_authenticate = www_authenticate + + def get_headers(self, environ=None): + headers = HTTPException.get_headers(self, environ) + if self.www_authenticate: + headers.append( + ("WWW-Authenticate", ", ".join([str(x) for x in self.www_authenticate])) + ) + return headers + + +class Forbidden(HTTPException): + """*403* `Forbidden` + + Raise if the user doesn't have the permission for the requested resource + but was authenticated. + """ + + code = 403 + description = ( + "You don't have the permission to access the requested" + " resource. It is either read-protected or not readable by the" + " server." + ) + + +class NotFound(HTTPException): + """*404* `Not Found` + + Raise if a resource does not exist and never existed. + """ + + code = 404 + description = ( + "The requested URL was not found on the server. If you entered" + " the URL manually please check your spelling and try again." + ) + + +class MethodNotAllowed(HTTPException): + """*405* `Method Not Allowed` + + Raise if the server used a method the resource does not handle. For + example `POST` if the resource is view only. Especially useful for REST. + + The first argument for this exception should be a list of allowed methods. + Strictly speaking the response would be invalid if you don't provide valid + methods in the header which you can do with that list. + """ + + code = 405 + description = "The method is not allowed for the requested URL." + + def __init__(self, valid_methods=None, description=None): + """Takes an optional list of valid http methods + starting with werkzeug 0.3 the list will be mandatory.""" + HTTPException.__init__(self, description) + self.valid_methods = valid_methods + + def get_headers(self, environ=None): + headers = HTTPException.get_headers(self, environ) + if self.valid_methods: + headers.append(("Allow", ", ".join(self.valid_methods))) + return headers + + +class NotAcceptable(HTTPException): + """*406* `Not Acceptable` + + Raise if the server can't return any content conforming to the + `Accept` headers of the client. + """ + + code = 406 + + description = ( + "The resource identified by the request is only capable of" + " generating response entities which have content" + " characteristics not acceptable according to the accept" + " headers sent in the request." + ) + + +class RequestTimeout(HTTPException): + """*408* `Request Timeout` + + Raise to signalize a timeout. + """ + + code = 408 + description = ( + "The server closed the network connection because the browser" + " didn't finish the request within the specified time." + ) + + +class Conflict(HTTPException): + """*409* `Conflict` + + Raise to signal that a request cannot be completed because it conflicts + with the current state on the server. + + .. versionadded:: 0.7 + """ + + code = 409 + description = ( + "A conflict happened while processing the request. The" + " resource might have been modified while the request was being" + " processed." + ) + + +class Gone(HTTPException): + """*410* `Gone` + + Raise if a resource existed previously and went away without new location. + """ + + code = 410 + description = ( + "The requested URL is no longer available on this server and" + " there is no forwarding address. If you followed a link from a" + " foreign page, please contact the author of this page." + ) + + +class LengthRequired(HTTPException): + """*411* `Length Required` + + Raise if the browser submitted data but no ``Content-Length`` header which + is required for the kind of processing the server does. + """ + + code = 411 + description = ( + "A request with this method requires a valid Content-" + "Length header." + ) + + +class PreconditionFailed(HTTPException): + """*412* `Precondition Failed` + + Status code used in combination with ``If-Match``, ``If-None-Match``, or + ``If-Unmodified-Since``. + """ + + code = 412 + description = ( + "The precondition on the request for the URL failed positive evaluation." + ) + + +class RequestEntityTooLarge(HTTPException): + """*413* `Request Entity Too Large` + + The status code one should return if the data submitted exceeded a given + limit. + """ + + code = 413 + description = "The data value transmitted exceeds the capacity limit." + + +class RequestURITooLarge(HTTPException): + """*414* `Request URI Too Large` + + Like *413* but for too long URLs. + """ + + code = 414 + description = ( + "The length of the requested URL exceeds the capacity limit for" + " this server. The request cannot be processed." + ) + + +class UnsupportedMediaType(HTTPException): + """*415* `Unsupported Media Type` + + The status code returned if the server is unable to handle the media type + the client transmitted. + """ + + code = 415 + description = ( + "The server does not support the media type transmitted in the request." + ) + + +class RequestedRangeNotSatisfiable(HTTPException): + """*416* `Requested Range Not Satisfiable` + + The client asked for an invalid part of the file. + + .. versionadded:: 0.7 + """ + + code = 416 + description = "The server cannot provide the requested range." + + def __init__(self, length=None, units="bytes", description=None): + """Takes an optional `Content-Range` header value based on ``length`` + parameter. + """ + HTTPException.__init__(self, description) + self.length = length + self.units = units + + def get_headers(self, environ=None): + headers = HTTPException.get_headers(self, environ) + if self.length is not None: + headers.append(("Content-Range", "%s */%d" % (self.units, self.length))) + return headers + + +class ExpectationFailed(HTTPException): + """*417* `Expectation Failed` + + The server cannot meet the requirements of the Expect request-header. + + .. versionadded:: 0.7 + """ + + code = 417 + description = "The server could not meet the requirements of the Expect header" + + +class ImATeapot(HTTPException): + """*418* `I'm a teapot` + + The server should return this if it is a teapot and someone attempted + to brew coffee with it. + + .. versionadded:: 0.7 + """ + + code = 418 + description = "This server is a teapot, not a coffee machine" + + +class UnprocessableEntity(HTTPException): + """*422* `Unprocessable Entity` + + Used if the request is well formed, but the instructions are otherwise + incorrect. + """ + + code = 422 + description = ( + "The request was well-formed but was unable to be followed due" + " to semantic errors." + ) + + +class Locked(HTTPException): + """*423* `Locked` + + Used if the resource that is being accessed is locked. + """ + + code = 423 + description = "The resource that is being accessed is locked." + + +class FailedDependency(HTTPException): + """*424* `Failed Dependency` + + Used if the method could not be performed on the resource + because the requested action depended on another action and that action failed. + """ + + code = 424 + description = ( + "The method could not be performed on the resource because the" + " requested action depended on another action and that action" + " failed." + ) + + +class PreconditionRequired(HTTPException): + """*428* `Precondition Required` + + The server requires this request to be conditional, typically to prevent + the lost update problem, which is a race condition between two or more + clients attempting to update a resource through PUT or DELETE. By requiring + each client to include a conditional header ("If-Match" or "If-Unmodified- + Since") with the proper value retained from a recent GET request, the + server ensures that each client has at least seen the previous revision of + the resource. + """ + + code = 428 + description = ( + "This request is required to be conditional; try using" + ' "If-Match" or "If-Unmodified-Since".' + ) + + +class _RetryAfter(HTTPException): + """Adds an optional ``retry_after`` parameter which will set the + ``Retry-After`` header. May be an :class:`int` number of seconds or + a :class:`~datetime.datetime`. + """ + + def __init__(self, description=None, response=None, retry_after=None): + super(_RetryAfter, self).__init__(description, response) + self.retry_after = retry_after + + def get_headers(self, environ=None): + headers = super(_RetryAfter, self).get_headers(environ) + + if self.retry_after: + if isinstance(self.retry_after, datetime): + from .http import http_date + + value = http_date(self.retry_after) + else: + value = str(self.retry_after) + + headers.append(("Retry-After", value)) + + return headers + + +class TooManyRequests(_RetryAfter): + """*429* `Too Many Requests` + + The server is limiting the rate at which this user receives + responses, and this request exceeds that rate. (The server may use + any convenient method to identify users and their request rates). + The server may include a "Retry-After" header to indicate how long + the user should wait before retrying. + + :param retry_after: If given, set the ``Retry-After`` header to this + value. May be an :class:`int` number of seconds or a + :class:`~datetime.datetime`. + + .. versionchanged:: 1.0 + Added ``retry_after`` parameter. + """ + + code = 429 + description = "This user has exceeded an allotted request count. Try again later." + + +class RequestHeaderFieldsTooLarge(HTTPException): + """*431* `Request Header Fields Too Large` + + The server refuses to process the request because the header fields are too + large. One or more individual fields may be too large, or the set of all + headers is too large. + """ + + code = 431 + description = "One or more header fields exceeds the maximum size." + + +class UnavailableForLegalReasons(HTTPException): + """*451* `Unavailable For Legal Reasons` + + This status code indicates that the server is denying access to the + resource as a consequence of a legal demand. + """ + + code = 451 + description = "Unavailable for legal reasons." + + +class InternalServerError(HTTPException): + """*500* `Internal Server Error` + + Raise if an internal server error occurred. This is a good fallback if an + unknown error occurred in the dispatcher. + + .. versionchanged:: 1.0.0 + Added the :attr:`original_exception` attribute. + """ + + code = 500 + description = ( + "The server encountered an internal error and was unable to" + " complete your request. Either the server is overloaded or" + " there is an error in the application." + ) + + def __init__(self, description=None, response=None, original_exception=None): + #: The original exception that caused this 500 error. Can be + #: used by frameworks to provide context when handling + #: unexpected errors. + self.original_exception = original_exception + super(InternalServerError, self).__init__( + description=description, response=response + ) + + +class NotImplemented(HTTPException): + """*501* `Not Implemented` + + Raise if the application does not support the action requested by the + browser. + """ + + code = 501 + description = "The server does not support the action requested by the browser." + + +class BadGateway(HTTPException): + """*502* `Bad Gateway` + + If you do proxying in your application you should return this status code + if you received an invalid response from the upstream server it accessed + in attempting to fulfill the request. + """ + + code = 502 + description = ( + "The proxy server received an invalid response from an upstream server." + ) + + +class ServiceUnavailable(_RetryAfter): + """*503* `Service Unavailable` + + Status code you should return if a service is temporarily + unavailable. + + :param retry_after: If given, set the ``Retry-After`` header to this + value. May be an :class:`int` number of seconds or a + :class:`~datetime.datetime`. + + .. versionchanged:: 1.0 + Added ``retry_after`` parameter. + """ + + code = 503 + description = ( + "The server is temporarily unable to service your request due" + " to maintenance downtime or capacity problems. Please try" + " again later." + ) + + +class GatewayTimeout(HTTPException): + """*504* `Gateway Timeout` + + Status code you should return if a connection to an upstream server + times out. + """ + + code = 504 + description = "The connection to an upstream server timed out." + + +class HTTPVersionNotSupported(HTTPException): + """*505* `HTTP Version Not Supported` + + The server does not support the HTTP protocol version used in the request. + """ + + code = 505 + description = ( + "The server does not support the HTTP protocol version used in the request." + ) + + +default_exceptions = {} +__all__ = ["HTTPException"] + + +def _find_exceptions(): + for _name, obj in iteritems(globals()): + try: + is_http_exception = issubclass(obj, HTTPException) + except TypeError: + is_http_exception = False + if not is_http_exception or obj.code is None: + continue + __all__.append(obj.__name__) + old_obj = default_exceptions.get(obj.code, None) + if old_obj is not None and issubclass(obj, old_obj): + continue + default_exceptions[obj.code] = obj + + +_find_exceptions() +del _find_exceptions + + +class Aborter(object): + """When passed a dict of code -> exception items it can be used as + callable that raises exceptions. If the first argument to the + callable is an integer it will be looked up in the mapping, if it's + a WSGI application it will be raised in a proxy exception. + + The rest of the arguments are forwarded to the exception constructor. + """ + + def __init__(self, mapping=None, extra=None): + if mapping is None: + mapping = default_exceptions + self.mapping = dict(mapping) + if extra is not None: + self.mapping.update(extra) + + def __call__(self, code, *args, **kwargs): + if not args and not kwargs and not isinstance(code, integer_types): + raise HTTPException(response=code) + if code not in self.mapping: + raise LookupError("no exception for %r" % code) + raise self.mapping[code](*args, **kwargs) + + +def abort(status, *args, **kwargs): + """Raises an :py:exc:`HTTPException` for the given status code or WSGI + application. + + If a status code is given, it will be looked up in the list of + exceptions and will raise that exception. If passed a WSGI application, + it will wrap it in a proxy WSGI exception and raise that:: + + abort(404) # 404 Not Found + abort(Response('Hello World')) + + """ + return _aborter(status, *args, **kwargs) + + +_aborter = Aborter() + +#: An exception that is used to signal both a :exc:`KeyError` and a +#: :exc:`BadRequest`. Used by many of the datastructures. +BadRequestKeyError = BadRequest.wrap(KeyError) diff --git a/env/lib/python3.6/site-packages/werkzeug/filesystem.py b/env/lib/python3.6/site-packages/werkzeug/filesystem.py new file mode 100644 index 0000000..d016cae --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/filesystem.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.filesystem + ~~~~~~~~~~~~~~~~~~~ + + Various utilities for the local filesystem. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import sys +import warnings + +# We do not trust traditional unixes. +has_likely_buggy_unicode_filesystem = ( + sys.platform.startswith("linux") or "bsd" in sys.platform +) + + +def _is_ascii_encoding(encoding): + """Given an encoding this figures out if the encoding is actually ASCII (which + is something we don't actually want in most cases). This is necessary + because ASCII comes under many names such as ANSI_X3.4-1968. + """ + if encoding is None: + return False + try: + return codecs.lookup(encoding).name == "ascii" + except LookupError: + return False + + +class BrokenFilesystemWarning(RuntimeWarning, UnicodeWarning): + """The warning used by Werkzeug to signal a broken filesystem. Will only be + used once per runtime.""" + + +_warned_about_filesystem_encoding = False + + +def get_filesystem_encoding(): + """Returns the filesystem encoding that should be used. Note that this is + different from the Python understanding of the filesystem encoding which + might be deeply flawed. Do not use this value against Python's unicode APIs + because it might be different. See :ref:`filesystem-encoding` for the exact + behavior. + + The concept of a filesystem encoding in generally is not something you + should rely on. As such if you ever need to use this function except for + writing wrapper code reconsider. + """ + global _warned_about_filesystem_encoding + rv = sys.getfilesystemencoding() + if has_likely_buggy_unicode_filesystem and not rv or _is_ascii_encoding(rv): + if not _warned_about_filesystem_encoding: + warnings.warn( + "Detected a misconfigured UNIX filesystem: Will use" + " UTF-8 as filesystem encoding instead of {0!r}".format(rv), + BrokenFilesystemWarning, + ) + _warned_about_filesystem_encoding = True + return "utf-8" + return rv diff --git a/env/lib/python3.6/site-packages/werkzeug/formparser.py b/env/lib/python3.6/site-packages/werkzeug/formparser.py new file mode 100644 index 0000000..ffdb9b0 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/formparser.py @@ -0,0 +1,584 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.formparser + ~~~~~~~~~~~~~~~~~~~ + + This module implements the form parsing. It supports url-encoded forms + as well as non-nested multipart uploads. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import re +from functools import update_wrapper +from itertools import chain +from itertools import repeat +from itertools import tee + +from . import exceptions +from ._compat import BytesIO +from ._compat import text_type +from ._compat import to_native +from .datastructures import FileStorage +from .datastructures import Headers +from .datastructures import MultiDict +from .http import parse_options_header +from .urls import url_decode_stream +from .wsgi import get_content_length +from .wsgi import get_input_stream +from .wsgi import make_line_iter + +# there are some platforms where SpooledTemporaryFile is not available. +# In that case we need to provide a fallback. +try: + from tempfile import SpooledTemporaryFile +except ImportError: + from tempfile import TemporaryFile + + SpooledTemporaryFile = None + + +#: an iterator that yields empty strings +_empty_string_iter = repeat("") + +#: a regular expression for multipart boundaries +_multipart_boundary_re = re.compile("^[ -~]{0,200}[!-~]$") + +#: supported http encodings that are also available in python we support +#: for multipart messages. +_supported_multipart_encodings = frozenset(["base64", "quoted-printable"]) + + +def default_stream_factory( + total_content_length, filename, content_type, content_length=None +): + """The stream factory that is used per default.""" + max_size = 1024 * 500 + if SpooledTemporaryFile is not None: + return SpooledTemporaryFile(max_size=max_size, mode="wb+") + if total_content_length is None or total_content_length > max_size: + return TemporaryFile("wb+") + return BytesIO() + + +def parse_form_data( + environ, + stream_factory=None, + charset="utf-8", + errors="replace", + max_form_memory_size=None, + max_content_length=None, + cls=None, + silent=True, +): + """Parse the form data in the environ and return it as tuple in the form + ``(stream, form, files)``. You should only call this method if the + transport method is `POST`, `PUT`, or `PATCH`. + + If the mimetype of the data transmitted is `multipart/form-data` the + files multidict will be filled with `FileStorage` objects. If the + mimetype is unknown the input stream is wrapped and returned as first + argument, else the stream is empty. + + This is a shortcut for the common usage of :class:`FormDataParser`. + + Have a look at :ref:`dealing-with-request-data` for more details. + + .. versionadded:: 0.5 + The `max_form_memory_size`, `max_content_length` and + `cls` parameters were added. + + .. versionadded:: 0.5.1 + The optional `silent` flag was added. + + :param environ: the WSGI environment to be used for parsing. + :param stream_factory: An optional callable that returns a new read and + writeable file descriptor. This callable works + the same as :meth:`~BaseResponse._get_file_stream`. + :param charset: The character set for URL and url encoded form data. + :param errors: The encoding error behavior. + :param max_form_memory_size: the maximum number of bytes to be accepted for + in-memory stored form data. If the data + exceeds the value specified an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param max_content_length: If this is provided and the transmitted data + is longer than this value an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + :param silent: If set to False parsing errors will not be caught. + :return: A tuple in the form ``(stream, form, files)``. + """ + return FormDataParser( + stream_factory, + charset, + errors, + max_form_memory_size, + max_content_length, + cls, + silent, + ).parse_from_environ(environ) + + +def exhaust_stream(f): + """Helper decorator for methods that exhausts the stream on return.""" + + def wrapper(self, stream, *args, **kwargs): + try: + return f(self, stream, *args, **kwargs) + finally: + exhaust = getattr(stream, "exhaust", None) + if exhaust is not None: + exhaust() + else: + while 1: + chunk = stream.read(1024 * 64) + if not chunk: + break + + return update_wrapper(wrapper, f) + + +class FormDataParser(object): + """This class implements parsing of form data for Werkzeug. By itself + it can parse multipart and url encoded form data. It can be subclassed + and extended but for most mimetypes it is a better idea to use the + untouched stream and expose it as separate attributes on a request + object. + + .. versionadded:: 0.8 + + :param stream_factory: An optional callable that returns a new read and + writeable file descriptor. This callable works + the same as :meth:`~BaseResponse._get_file_stream`. + :param charset: The character set for URL and url encoded form data. + :param errors: The encoding error behavior. + :param max_form_memory_size: the maximum number of bytes to be accepted for + in-memory stored form data. If the data + exceeds the value specified an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param max_content_length: If this is provided and the transmitted data + is longer than this value an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + :param silent: If set to False parsing errors will not be caught. + """ + + def __init__( + self, + stream_factory=None, + charset="utf-8", + errors="replace", + max_form_memory_size=None, + max_content_length=None, + cls=None, + silent=True, + ): + if stream_factory is None: + stream_factory = default_stream_factory + self.stream_factory = stream_factory + self.charset = charset + self.errors = errors + self.max_form_memory_size = max_form_memory_size + self.max_content_length = max_content_length + if cls is None: + cls = MultiDict + self.cls = cls + self.silent = silent + + def get_parse_func(self, mimetype, options): + return self.parse_functions.get(mimetype) + + def parse_from_environ(self, environ): + """Parses the information from the environment as form data. + + :param environ: the WSGI environment to be used for parsing. + :return: A tuple in the form ``(stream, form, files)``. + """ + content_type = environ.get("CONTENT_TYPE", "") + content_length = get_content_length(environ) + mimetype, options = parse_options_header(content_type) + return self.parse(get_input_stream(environ), mimetype, content_length, options) + + def parse(self, stream, mimetype, content_length, options=None): + """Parses the information from the given stream, mimetype, + content length and mimetype parameters. + + :param stream: an input stream + :param mimetype: the mimetype of the data + :param content_length: the content length of the incoming data + :param options: optional mimetype parameters (used for + the multipart boundary for instance) + :return: A tuple in the form ``(stream, form, files)``. + """ + if ( + self.max_content_length is not None + and content_length is not None + and content_length > self.max_content_length + ): + raise exceptions.RequestEntityTooLarge() + if options is None: + options = {} + + parse_func = self.get_parse_func(mimetype, options) + if parse_func is not None: + try: + return parse_func(self, stream, mimetype, content_length, options) + except ValueError: + if not self.silent: + raise + + return stream, self.cls(), self.cls() + + @exhaust_stream + def _parse_multipart(self, stream, mimetype, content_length, options): + parser = MultiPartParser( + self.stream_factory, + self.charset, + self.errors, + max_form_memory_size=self.max_form_memory_size, + cls=self.cls, + ) + boundary = options.get("boundary") + if boundary is None: + raise ValueError("Missing boundary") + if isinstance(boundary, text_type): + boundary = boundary.encode("ascii") + form, files = parser.parse(stream, boundary, content_length) + return stream, form, files + + @exhaust_stream + def _parse_urlencoded(self, stream, mimetype, content_length, options): + if ( + self.max_form_memory_size is not None + and content_length is not None + and content_length > self.max_form_memory_size + ): + raise exceptions.RequestEntityTooLarge() + form = url_decode_stream(stream, self.charset, errors=self.errors, cls=self.cls) + return stream, form, self.cls() + + #: mapping of mimetypes to parsing functions + parse_functions = { + "multipart/form-data": _parse_multipart, + "application/x-www-form-urlencoded": _parse_urlencoded, + "application/x-url-encoded": _parse_urlencoded, + } + + +def is_valid_multipart_boundary(boundary): + """Checks if the string given is a valid multipart boundary.""" + return _multipart_boundary_re.match(boundary) is not None + + +def _line_parse(line): + """Removes line ending characters and returns a tuple (`stripped_line`, + `is_terminated`). + """ + if line[-2:] in ["\r\n", b"\r\n"]: + return line[:-2], True + elif line[-1:] in ["\r", "\n", b"\r", b"\n"]: + return line[:-1], True + return line, False + + +def parse_multipart_headers(iterable): + """Parses multipart headers from an iterable that yields lines (including + the trailing newline symbol). The iterable has to be newline terminated. + + The iterable will stop at the line where the headers ended so it can be + further consumed. + + :param iterable: iterable of strings that are newline terminated + """ + result = [] + for line in iterable: + line = to_native(line) + line, line_terminated = _line_parse(line) + if not line_terminated: + raise ValueError("unexpected end of line in multipart header") + if not line: + break + elif line[0] in " \t" and result: + key, value = result[-1] + result[-1] = (key, value + "\n " + line[1:]) + else: + parts = line.split(":", 1) + if len(parts) == 2: + result.append((parts[0].strip(), parts[1].strip())) + + # we link the list to the headers, no need to create a copy, the + # list was not shared anyways. + return Headers(result) + + +_begin_form = "begin_form" +_begin_file = "begin_file" +_cont = "cont" +_end = "end" + + +class MultiPartParser(object): + def __init__( + self, + stream_factory=None, + charset="utf-8", + errors="replace", + max_form_memory_size=None, + cls=None, + buffer_size=64 * 1024, + ): + self.charset = charset + self.errors = errors + self.max_form_memory_size = max_form_memory_size + self.stream_factory = ( + default_stream_factory if stream_factory is None else stream_factory + ) + self.cls = MultiDict if cls is None else cls + + # make sure the buffer size is divisible by four so that we can base64 + # decode chunk by chunk + assert buffer_size % 4 == 0, "buffer size has to be divisible by 4" + # also the buffer size has to be at least 1024 bytes long or long headers + # will freak out the system + assert buffer_size >= 1024, "buffer size has to be at least 1KB" + + self.buffer_size = buffer_size + + def _fix_ie_filename(self, filename): + """Internet Explorer 6 transmits the full file name if a file is + uploaded. This function strips the full path if it thinks the + filename is Windows-like absolute. + """ + if filename[1:3] == ":\\" or filename[:2] == "\\\\": + return filename.split("\\")[-1] + return filename + + def _find_terminator(self, iterator): + """The terminator might have some additional newlines before it. + There is at least one application that sends additional newlines + before headers (the python setuptools package). + """ + for line in iterator: + if not line: + break + line = line.strip() + if line: + return line + return b"" + + def fail(self, message): + raise ValueError(message) + + def get_part_encoding(self, headers): + transfer_encoding = headers.get("content-transfer-encoding") + if ( + transfer_encoding is not None + and transfer_encoding in _supported_multipart_encodings + ): + return transfer_encoding + + def get_part_charset(self, headers): + # Figure out input charset for current part + content_type = headers.get("content-type") + if content_type: + mimetype, ct_params = parse_options_header(content_type) + return ct_params.get("charset", self.charset) + return self.charset + + def start_file_streaming(self, filename, headers, total_content_length): + if isinstance(filename, bytes): + filename = filename.decode(self.charset, self.errors) + filename = self._fix_ie_filename(filename) + content_type = headers.get("content-type") + try: + content_length = int(headers["content-length"]) + except (KeyError, ValueError): + content_length = 0 + container = self.stream_factory( + total_content_length=total_content_length, + filename=filename, + content_type=content_type, + content_length=content_length, + ) + return filename, container + + def in_memory_threshold_reached(self, bytes): + raise exceptions.RequestEntityTooLarge() + + def validate_boundary(self, boundary): + if not boundary: + self.fail("Missing boundary") + if not is_valid_multipart_boundary(boundary): + self.fail("Invalid boundary: %s" % boundary) + if len(boundary) > self.buffer_size: # pragma: no cover + # this should never happen because we check for a minimum size + # of 1024 and boundaries may not be longer than 200. The only + # situation when this happens is for non debug builds where + # the assert is skipped. + self.fail("Boundary longer than buffer size") + + def parse_lines(self, file, boundary, content_length, cap_at_buffer=True): + """Generate parts of + ``('begin_form', (headers, name))`` + ``('begin_file', (headers, name, filename))`` + ``('cont', bytestring)`` + ``('end', None)`` + + Always obeys the grammar + parts = ( begin_form cont* end | + begin_file cont* end )* + """ + next_part = b"--" + boundary + last_part = next_part + b"--" + + iterator = chain( + make_line_iter( + file, + limit=content_length, + buffer_size=self.buffer_size, + cap_at_buffer=cap_at_buffer, + ), + _empty_string_iter, + ) + + terminator = self._find_terminator(iterator) + + if terminator == last_part: + return + elif terminator != next_part: + self.fail("Expected boundary at start of multipart data") + + while terminator != last_part: + headers = parse_multipart_headers(iterator) + + disposition = headers.get("content-disposition") + if disposition is None: + self.fail("Missing Content-Disposition header") + disposition, extra = parse_options_header(disposition) + transfer_encoding = self.get_part_encoding(headers) + name = extra.get("name") + filename = extra.get("filename") + + # if no content type is given we stream into memory. A list is + # used as a temporary container. + if filename is None: + yield _begin_form, (headers, name) + + # otherwise we parse the rest of the headers and ask the stream + # factory for something we can write in. + else: + yield _begin_file, (headers, name, filename) + + buf = b"" + for line in iterator: + if not line: + self.fail("unexpected end of stream") + + if line[:2] == b"--": + terminator = line.rstrip() + if terminator in (next_part, last_part): + break + + if transfer_encoding is not None: + if transfer_encoding == "base64": + transfer_encoding = "base64_codec" + try: + line = codecs.decode(line, transfer_encoding) + except Exception: + self.fail("could not decode transfer encoded chunk") + + # we have something in the buffer from the last iteration. + # this is usually a newline delimiter. + if buf: + yield _cont, buf + buf = b"" + + # If the line ends with windows CRLF we write everything except + # the last two bytes. In all other cases however we write + # everything except the last byte. If it was a newline, that's + # fine, otherwise it does not matter because we will write it + # the next iteration. this ensures we do not write the + # final newline into the stream. That way we do not have to + # truncate the stream. However we do have to make sure that + # if something else than a newline is in there we write it + # out. + if line[-2:] == b"\r\n": + buf = b"\r\n" + cutoff = -2 + else: + buf = line[-1:] + cutoff = -1 + yield _cont, line[:cutoff] + + else: # pragma: no cover + raise ValueError("unexpected end of part") + + # if we have a leftover in the buffer that is not a newline + # character we have to flush it, otherwise we will chop of + # certain values. + if buf not in (b"", b"\r", b"\n", b"\r\n"): + yield _cont, buf + + yield _end, None + + def parse_parts(self, file, boundary, content_length): + """Generate ``('file', (name, val))`` and + ``('form', (name, val))`` parts. + """ + in_memory = 0 + + for ellt, ell in self.parse_lines(file, boundary, content_length): + if ellt == _begin_file: + headers, name, filename = ell + is_file = True + guard_memory = False + filename, container = self.start_file_streaming( + filename, headers, content_length + ) + _write = container.write + + elif ellt == _begin_form: + headers, name = ell + is_file = False + container = [] + _write = container.append + guard_memory = self.max_form_memory_size is not None + + elif ellt == _cont: + _write(ell) + # if we write into memory and there is a memory size limit we + # count the number of bytes in memory and raise an exception if + # there is too much data in memory. + if guard_memory: + in_memory += len(ell) + if in_memory > self.max_form_memory_size: + self.in_memory_threshold_reached(in_memory) + + elif ellt == _end: + if is_file: + container.seek(0) + yield ( + "file", + (name, FileStorage(container, filename, name, headers=headers)), + ) + else: + part_charset = self.get_part_charset(headers) + yield ( + "form", + (name, b"".join(container).decode(part_charset, self.errors)), + ) + + def parse(self, file, boundary, content_length): + formstream, filestream = tee( + self.parse_parts(file, boundary, content_length), 2 + ) + form = (p[1] for p in formstream if p[0] == "form") + files = (p[1] for p in filestream if p[0] == "file") + return self.cls(form), self.cls(files) diff --git a/env/lib/python3.6/site-packages/werkzeug/http.py b/env/lib/python3.6/site-packages/werkzeug/http.py new file mode 100644 index 0000000..c33293a --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/http.py @@ -0,0 +1,1307 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.http + ~~~~~~~~~~~~~ + + Werkzeug comes with a bunch of utilities that help Werkzeug to deal with + HTTP data. Most of the classes and functions provided by this module are + used by the wrappers, but they are useful on their own, too, especially if + the response and request objects are not used. + + This covers some of the more HTTP centric features of WSGI, some other + utilities such as cookie handling are documented in the `werkzeug.utils` + module. + + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import base64 +import re +import warnings +from datetime import datetime +from datetime import timedelta +from hashlib import md5 +from time import gmtime +from time import time + +from ._compat import integer_types +from ._compat import iteritems +from ._compat import PY2 +from ._compat import string_types +from ._compat import text_type +from ._compat import to_bytes +from ._compat import to_unicode +from ._compat import try_coerce_native +from ._internal import _cookie_parse_impl +from ._internal import _cookie_quote +from ._internal import _make_cookie_domain + +try: + from email.utils import parsedate_tz +except ImportError: + from email.Utils import parsedate_tz + +try: + from urllib.request import parse_http_list as _parse_list_header + from urllib.parse import unquote_to_bytes as _unquote +except ImportError: + from urllib2 import parse_http_list as _parse_list_header + from urllib2 import unquote as _unquote + +_cookie_charset = "latin1" +_basic_auth_charset = "utf-8" +# for explanation of "media-range", etc. see Sections 5.3.{1,2} of RFC 7231 +_accept_re = re.compile( + r""" + ( # media-range capturing-parenthesis + [^\s;,]+ # type/subtype + (?:[ \t]*;[ \t]* # ";" + (?: # parameter non-capturing-parenthesis + [^\s;,q][^\s;,]* # token that doesn't start with "q" + | # or + q[^\s;,=][^\s;,]* # token that is more than just "q" + ) + )* # zero or more parameters + ) # end of media-range + (?:[ \t]*;[ \t]*q= # weight is a "q" parameter + (\d*(?:\.\d+)?) # qvalue capturing-parentheses + [^,]* # "extension" accept params: who cares? + )? # accept params are optional + """, + re.VERBOSE, +) +_token_chars = frozenset( + "!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~" +) +_etag_re = re.compile(r'([Ww]/)?(?:"(.*?)"|(.*?))(?:\s*,\s*|$)') +_unsafe_header_chars = set('()<>@,;:"/[]?={} \t') +_option_header_piece_re = re.compile( + r""" + ;\s*,?\s* # newlines were replaced with commas + (?P + "[^"\\]*(?:\\.[^"\\]*)*" # quoted string + | + [^\s;,=*]+ # token + ) + (?:\*(?P\d+))? # *1, optional continuation index + \s* + (?: # optionally followed by =value + (?: # equals sign, possibly with encoding + \*\s*=\s* # * indicates extended notation + (?: # optional encoding + (?P[^\s]+?) + '(?P[^\s]*?)' + )? + | + =\s* # basic notation + ) + (?P + "[^"\\]*(?:\\.[^"\\]*)*" # quoted string + | + [^;,]+ # token + )? + )? + \s* + """, + flags=re.VERBOSE, +) +_option_header_start_mime_type = re.compile(r",\s*([^;,\s]+)([;,]\s*.+)?") + +_entity_headers = frozenset( + [ + "allow", + "content-encoding", + "content-language", + "content-length", + "content-location", + "content-md5", + "content-range", + "content-type", + "expires", + "last-modified", + ] +) +_hop_by_hop_headers = frozenset( + [ + "connection", + "keep-alive", + "proxy-authenticate", + "proxy-authorization", + "te", + "trailer", + "transfer-encoding", + "upgrade", + ] +) + + +HTTP_STATUS_CODES = { + 100: "Continue", + 101: "Switching Protocols", + 102: "Processing", + 103: "Early Hints", # see RFC 8297 + 200: "OK", + 201: "Created", + 202: "Accepted", + 203: "Non Authoritative Information", + 204: "No Content", + 205: "Reset Content", + 206: "Partial Content", + 207: "Multi Status", + 208: "Already Reported", # see RFC 5842 + 226: "IM Used", # see RFC 3229 + 300: "Multiple Choices", + 301: "Moved Permanently", + 302: "Found", + 303: "See Other", + 304: "Not Modified", + 305: "Use Proxy", + 306: "Switch Proxy", # unused + 307: "Temporary Redirect", + 308: "Permanent Redirect", + 400: "Bad Request", + 401: "Unauthorized", + 402: "Payment Required", # unused + 403: "Forbidden", + 404: "Not Found", + 405: "Method Not Allowed", + 406: "Not Acceptable", + 407: "Proxy Authentication Required", + 408: "Request Timeout", + 409: "Conflict", + 410: "Gone", + 411: "Length Required", + 412: "Precondition Failed", + 413: "Request Entity Too Large", + 414: "Request URI Too Long", + 415: "Unsupported Media Type", + 416: "Requested Range Not Satisfiable", + 417: "Expectation Failed", + 418: "I'm a teapot", # see RFC 2324 + 421: "Misdirected Request", # see RFC 7540 + 422: "Unprocessable Entity", + 423: "Locked", + 424: "Failed Dependency", + 425: "Too Early", # see RFC 8470 + 426: "Upgrade Required", + 428: "Precondition Required", # see RFC 6585 + 429: "Too Many Requests", + 431: "Request Header Fields Too Large", + 449: "Retry With", # proprietary MS extension + 451: "Unavailable For Legal Reasons", + 500: "Internal Server Error", + 501: "Not Implemented", + 502: "Bad Gateway", + 503: "Service Unavailable", + 504: "Gateway Timeout", + 505: "HTTP Version Not Supported", + 506: "Variant Also Negotiates", # see RFC 2295 + 507: "Insufficient Storage", + 508: "Loop Detected", # see RFC 5842 + 510: "Not Extended", + 511: "Network Authentication Failed", # see RFC 6585 +} + + +def wsgi_to_bytes(data): + """coerce wsgi unicode represented bytes to real ones""" + if isinstance(data, bytes): + return data + return data.encode("latin1") # XXX: utf8 fallback? + + +def bytes_to_wsgi(data): + assert isinstance(data, bytes), "data must be bytes" + if isinstance(data, str): + return data + else: + return data.decode("latin1") + + +def quote_header_value(value, extra_chars="", allow_token=True): + """Quote a header value if necessary. + + .. versionadded:: 0.5 + + :param value: the value to quote. + :param extra_chars: a list of extra characters to skip quoting. + :param allow_token: if this is enabled token values are returned + unchanged. + """ + if isinstance(value, bytes): + value = bytes_to_wsgi(value) + value = str(value) + if allow_token: + token_chars = _token_chars | set(extra_chars) + if set(value).issubset(token_chars): + return value + return '"%s"' % value.replace("\\", "\\\\").replace('"', '\\"') + + +def unquote_header_value(value, is_filename=False): + r"""Unquotes a header value. (Reversal of :func:`quote_header_value`). + This does not use the real unquoting but what browsers are actually + using for quoting. + + .. versionadded:: 0.5 + + :param value: the header value to unquote. + """ + if value and value[0] == value[-1] == '"': + # this is not the real unquoting, but fixing this so that the + # RFC is met will result in bugs with internet explorer and + # probably some other browsers as well. IE for example is + # uploading files with "C:\foo\bar.txt" as filename + value = value[1:-1] + + # if this is a filename and the starting characters look like + # a UNC path, then just return the value without quotes. Using the + # replace sequence below on a UNC path has the effect of turning + # the leading double slash into a single slash and then + # _fix_ie_filename() doesn't work correctly. See #458. + if not is_filename or value[:2] != "\\\\": + return value.replace("\\\\", "\\").replace('\\"', '"') + return value + + +def dump_options_header(header, options): + """The reverse function to :func:`parse_options_header`. + + :param header: the header to dump + :param options: a dict of options to append. + """ + segments = [] + if header is not None: + segments.append(header) + for key, value in iteritems(options): + if value is None: + segments.append(key) + else: + segments.append("%s=%s" % (key, quote_header_value(value))) + return "; ".join(segments) + + +def dump_header(iterable, allow_token=True): + """Dump an HTTP header again. This is the reversal of + :func:`parse_list_header`, :func:`parse_set_header` and + :func:`parse_dict_header`. This also quotes strings that include an + equals sign unless you pass it as dict of key, value pairs. + + >>> dump_header({'foo': 'bar baz'}) + 'foo="bar baz"' + >>> dump_header(('foo', 'bar baz')) + 'foo, "bar baz"' + + :param iterable: the iterable or dict of values to quote. + :param allow_token: if set to `False` tokens as values are disallowed. + See :func:`quote_header_value` for more details. + """ + if isinstance(iterable, dict): + items = [] + for key, value in iteritems(iterable): + if value is None: + items.append(key) + else: + items.append( + "%s=%s" % (key, quote_header_value(value, allow_token=allow_token)) + ) + else: + items = [quote_header_value(x, allow_token=allow_token) for x in iterable] + return ", ".join(items) + + +def dump_csp_header(header): + """Dump a Content Security Policy header. + + These are structured into policies such as "default-src 'self'; + script-src 'self'". + + .. versionadded:: 1.0.0 + Support for Content Security Policy headers was added. + + """ + return "; ".join("%s %s" % (key, value) for key, value in iteritems(header)) + + +def parse_list_header(value): + """Parse lists as described by RFC 2068 Section 2. + + In particular, parse comma-separated lists where the elements of + the list may include quoted-strings. A quoted-string could + contain a comma. A non-quoted string could have quotes in the + middle. Quotes are removed automatically after parsing. + + It basically works like :func:`parse_set_header` just that items + may appear multiple times and case sensitivity is preserved. + + The return value is a standard :class:`list`: + + >>> parse_list_header('token, "quoted value"') + ['token', 'quoted value'] + + To create a header from the :class:`list` again, use the + :func:`dump_header` function. + + :param value: a string with a list header. + :return: :class:`list` + """ + result = [] + for item in _parse_list_header(value): + if item[:1] == item[-1:] == '"': + item = unquote_header_value(item[1:-1]) + result.append(item) + return result + + +def parse_dict_header(value, cls=dict): + """Parse lists of key, value pairs as described by RFC 2068 Section 2 and + convert them into a python dict (or any other mapping object created from + the type with a dict like interface provided by the `cls` argument): + + >>> d = parse_dict_header('foo="is a fish", bar="as well"') + >>> type(d) is dict + True + >>> sorted(d.items()) + [('bar', 'as well'), ('foo', 'is a fish')] + + If there is no value for a key it will be `None`: + + >>> parse_dict_header('key_without_value') + {'key_without_value': None} + + To create a header from the :class:`dict` again, use the + :func:`dump_header` function. + + .. versionchanged:: 0.9 + Added support for `cls` argument. + + :param value: a string with a dict header. + :param cls: callable to use for storage of parsed results. + :return: an instance of `cls` + """ + result = cls() + if not isinstance(value, text_type): + # XXX: validate + value = bytes_to_wsgi(value) + for item in _parse_list_header(value): + if "=" not in item: + result[item] = None + continue + name, value = item.split("=", 1) + if value[:1] == value[-1:] == '"': + value = unquote_header_value(value[1:-1]) + result[name] = value + return result + + +def parse_options_header(value, multiple=False): + """Parse a ``Content-Type`` like header into a tuple with the content + type and the options: + + >>> parse_options_header('text/html; charset=utf8') + ('text/html', {'charset': 'utf8'}) + + This should not be used to parse ``Cache-Control`` like headers that use + a slightly different format. For these headers use the + :func:`parse_dict_header` function. + + .. versionchanged:: 0.15 + :rfc:`2231` parameter continuations are handled. + + .. versionadded:: 0.5 + + :param value: the header to parse. + :param multiple: Whether try to parse and return multiple MIME types + :return: (mimetype, options) or (mimetype, options, mimetype, options, …) + if multiple=True + """ + if not value: + return "", {} + + result = [] + + value = "," + value.replace("\n", ",") + while value: + match = _option_header_start_mime_type.match(value) + if not match: + break + result.append(match.group(1)) # mimetype + options = {} + # Parse options + rest = match.group(2) + continued_encoding = None + while rest: + optmatch = _option_header_piece_re.match(rest) + if not optmatch: + break + option, count, encoding, language, option_value = optmatch.groups() + # Continuations don't have to supply the encoding after the + # first line. If we're in a continuation, track the current + # encoding to use for subsequent lines. Reset it when the + # continuation ends. + if not count: + continued_encoding = None + else: + if not encoding: + encoding = continued_encoding + continued_encoding = encoding + option = unquote_header_value(option) + if option_value is not None: + option_value = unquote_header_value(option_value, option == "filename") + if encoding is not None: + option_value = _unquote(option_value).decode(encoding) + if count: + # Continuations append to the existing value. For + # simplicity, this ignores the possibility of + # out-of-order indices, which shouldn't happen anyway. + options[option] = options.get(option, "") + option_value + else: + options[option] = option_value + rest = rest[optmatch.end() :] + result.append(options) + if multiple is False: + return tuple(result) + value = rest + + return tuple(result) if result else ("", {}) + + +def parse_accept_header(value, cls=None): + """Parses an HTTP Accept-* header. This does not implement a complete + valid algorithm but one that supports at least value and quality + extraction. + + Returns a new :class:`Accept` object (basically a list of ``(value, quality)`` + tuples sorted by the quality with some additional accessor methods). + + The second parameter can be a subclass of :class:`Accept` that is created + with the parsed values and returned. + + :param value: the accept header string to be parsed. + :param cls: the wrapper class for the return value (can be + :class:`Accept` or a subclass thereof) + :return: an instance of `cls`. + """ + if cls is None: + cls = Accept + + if not value: + return cls(None) + + result = [] + for match in _accept_re.finditer(value): + quality = match.group(2) + if not quality: + quality = 1 + else: + quality = max(min(float(quality), 1), 0) + result.append((match.group(1), quality)) + return cls(result) + + +def parse_cache_control_header(value, on_update=None, cls=None): + """Parse a cache control header. The RFC differs between response and + request cache control, this method does not. It's your responsibility + to not use the wrong control statements. + + .. versionadded:: 0.5 + The `cls` was added. If not specified an immutable + :class:`~werkzeug.datastructures.RequestCacheControl` is returned. + + :param value: a cache control header to be parsed. + :param on_update: an optional callable that is called every time a value + on the :class:`~werkzeug.datastructures.CacheControl` + object is changed. + :param cls: the class for the returned object. By default + :class:`~werkzeug.datastructures.RequestCacheControl` is used. + :return: a `cls` object. + """ + if cls is None: + cls = RequestCacheControl + if not value: + return cls(None, on_update) + return cls(parse_dict_header(value), on_update) + + +def parse_csp_header(value, on_update=None, cls=None): + """Parse a Content Security Policy header. + + .. versionadded:: 1.0.0 + Support for Content Security Policy headers was added. + + :param value: a csp header to be parsed. + :param on_update: an optional callable that is called every time a value + on the object is changed. + :param cls: the class for the returned object. By default + :class:`~werkzeug.datastructures.ContentSecurityPolicy` is used. + :return: a `cls` object. + """ + + if cls is None: + cls = ContentSecurityPolicy + if value is None: + return cls(None, on_update) + items = [] + for policy in value.split(";"): + policy = policy.strip() + # Ignore badly formatted policies (no space) + if " " in policy: + directive, value = policy.strip().split(" ", 1) + items.append((directive.strip(), value.strip())) + return cls(items, on_update) + + +def parse_set_header(value, on_update=None): + """Parse a set-like header and return a + :class:`~werkzeug.datastructures.HeaderSet` object: + + >>> hs = parse_set_header('token, "quoted value"') + + The return value is an object that treats the items case-insensitively + and keeps the order of the items: + + >>> 'TOKEN' in hs + True + >>> hs.index('quoted value') + 1 + >>> hs + HeaderSet(['token', 'quoted value']) + + To create a header from the :class:`HeaderSet` again, use the + :func:`dump_header` function. + + :param value: a set header to be parsed. + :param on_update: an optional callable that is called every time a + value on the :class:`~werkzeug.datastructures.HeaderSet` + object is changed. + :return: a :class:`~werkzeug.datastructures.HeaderSet` + """ + if not value: + return HeaderSet(None, on_update) + return HeaderSet(parse_list_header(value), on_update) + + +def parse_authorization_header(value): + """Parse an HTTP basic/digest authorization header transmitted by the web + browser. The return value is either `None` if the header was invalid or + not given, otherwise an :class:`~werkzeug.datastructures.Authorization` + object. + + :param value: the authorization header to parse. + :return: a :class:`~werkzeug.datastructures.Authorization` object or `None`. + """ + if not value: + return + value = wsgi_to_bytes(value) + try: + auth_type, auth_info = value.split(None, 1) + auth_type = auth_type.lower() + except ValueError: + return + if auth_type == b"basic": + try: + username, password = base64.b64decode(auth_info).split(b":", 1) + except Exception: + return + return Authorization( + "basic", + { + "username": to_unicode(username, _basic_auth_charset), + "password": to_unicode(password, _basic_auth_charset), + }, + ) + elif auth_type == b"digest": + auth_map = parse_dict_header(auth_info) + for key in "username", "realm", "nonce", "uri", "response": + if key not in auth_map: + return + if "qop" in auth_map: + if not auth_map.get("nc") or not auth_map.get("cnonce"): + return + return Authorization("digest", auth_map) + + +def parse_www_authenticate_header(value, on_update=None): + """Parse an HTTP WWW-Authenticate header into a + :class:`~werkzeug.datastructures.WWWAuthenticate` object. + + :param value: a WWW-Authenticate header to parse. + :param on_update: an optional callable that is called every time a value + on the :class:`~werkzeug.datastructures.WWWAuthenticate` + object is changed. + :return: a :class:`~werkzeug.datastructures.WWWAuthenticate` object. + """ + if not value: + return WWWAuthenticate(on_update=on_update) + try: + auth_type, auth_info = value.split(None, 1) + auth_type = auth_type.lower() + except (ValueError, AttributeError): + return WWWAuthenticate(value.strip().lower(), on_update=on_update) + return WWWAuthenticate(auth_type, parse_dict_header(auth_info), on_update) + + +def parse_if_range_header(value): + """Parses an if-range header which can be an etag or a date. Returns + a :class:`~werkzeug.datastructures.IfRange` object. + + .. versionadded:: 0.7 + """ + if not value: + return IfRange() + date = parse_date(value) + if date is not None: + return IfRange(date=date) + # drop weakness information + return IfRange(unquote_etag(value)[0]) + + +def parse_range_header(value, make_inclusive=True): + """Parses a range header into a :class:`~werkzeug.datastructures.Range` + object. If the header is missing or malformed `None` is returned. + `ranges` is a list of ``(start, stop)`` tuples where the ranges are + non-inclusive. + + .. versionadded:: 0.7 + """ + if not value or "=" not in value: + return None + + ranges = [] + last_end = 0 + units, rng = value.split("=", 1) + units = units.strip().lower() + + for item in rng.split(","): + item = item.strip() + if "-" not in item: + return None + if item.startswith("-"): + if last_end < 0: + return None + try: + begin = int(item) + except ValueError: + return None + end = None + last_end = -1 + elif "-" in item: + begin, end = item.split("-", 1) + begin = begin.strip() + end = end.strip() + if not begin.isdigit(): + return None + begin = int(begin) + if begin < last_end or last_end < 0: + return None + if end: + if not end.isdigit(): + return None + end = int(end) + 1 + if begin >= end: + return None + else: + end = None + last_end = end + ranges.append((begin, end)) + + return Range(units, ranges) + + +def parse_content_range_header(value, on_update=None): + """Parses a range header into a + :class:`~werkzeug.datastructures.ContentRange` object or `None` if + parsing is not possible. + + .. versionadded:: 0.7 + + :param value: a content range header to be parsed. + :param on_update: an optional callable that is called every time a value + on the :class:`~werkzeug.datastructures.ContentRange` + object is changed. + """ + if value is None: + return None + try: + units, rangedef = (value or "").strip().split(None, 1) + except ValueError: + return None + + if "/" not in rangedef: + return None + rng, length = rangedef.split("/", 1) + if length == "*": + length = None + elif length.isdigit(): + length = int(length) + else: + return None + + if rng == "*": + return ContentRange(units, None, None, length, on_update=on_update) + elif "-" not in rng: + return None + + start, stop = rng.split("-", 1) + try: + start = int(start) + stop = int(stop) + 1 + except ValueError: + return None + + if is_byte_range_valid(start, stop, length): + return ContentRange(units, start, stop, length, on_update=on_update) + + +def quote_etag(etag, weak=False): + """Quote an etag. + + :param etag: the etag to quote. + :param weak: set to `True` to tag it "weak". + """ + if '"' in etag: + raise ValueError("invalid etag") + etag = '"%s"' % etag + if weak: + etag = "W/" + etag + return etag + + +def unquote_etag(etag): + """Unquote a single etag: + + >>> unquote_etag('W/"bar"') + ('bar', True) + >>> unquote_etag('"bar"') + ('bar', False) + + :param etag: the etag identifier to unquote. + :return: a ``(etag, weak)`` tuple. + """ + if not etag: + return None, None + etag = etag.strip() + weak = False + if etag.startswith(("W/", "w/")): + weak = True + etag = etag[2:] + if etag[:1] == etag[-1:] == '"': + etag = etag[1:-1] + return etag, weak + + +def parse_etags(value): + """Parse an etag header. + + :param value: the tag header to parse + :return: an :class:`~werkzeug.datastructures.ETags` object. + """ + if not value: + return ETags() + strong = [] + weak = [] + end = len(value) + pos = 0 + while pos < end: + match = _etag_re.match(value, pos) + if match is None: + break + is_weak, quoted, raw = match.groups() + if raw == "*": + return ETags(star_tag=True) + elif quoted: + raw = quoted + if is_weak: + weak.append(raw) + else: + strong.append(raw) + pos = match.end() + return ETags(strong, weak) + + +def generate_etag(data): + """Generate an etag for some data.""" + return md5(data).hexdigest() + + +def parse_date(value): + """Parse one of the following date formats into a datetime object: + + .. sourcecode:: text + + Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 + Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 + Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format + + If parsing fails the return value is `None`. + + :param value: a string with a supported date format. + :return: a :class:`datetime.datetime` object. + """ + if value: + t = parsedate_tz(value.strip()) + if t is not None: + try: + year = t[0] + # unfortunately that function does not tell us if two digit + # years were part of the string, or if they were prefixed + # with two zeroes. So what we do is to assume that 69-99 + # refer to 1900, and everything below to 2000 + if year >= 0 and year <= 68: + year += 2000 + elif year >= 69 and year <= 99: + year += 1900 + return datetime(*((year,) + t[1:7])) - timedelta(seconds=t[-1] or 0) + except (ValueError, OverflowError): + return None + + +def _dump_date(d, delim): + """Used for `http_date` and `cookie_date`.""" + if d is None: + d = gmtime() + elif isinstance(d, datetime): + d = d.utctimetuple() + elif isinstance(d, (integer_types, float)): + d = gmtime(d) + return "%s, %02d%s%s%s%04d %02d:%02d:%02d GMT" % ( + ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")[d.tm_wday], + d.tm_mday, + delim, + ( + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + )[d.tm_mon - 1], + delim, + d.tm_year, + d.tm_hour, + d.tm_min, + d.tm_sec, + ) + + +def cookie_date(expires=None): + """Formats the time to ensure compatibility with Netscape's cookie + standard. + + Accepts a floating point number expressed in seconds since the epoch in, a + datetime object or a timetuple. All times in UTC. The :func:`parse_date` + function can be used to parse such a date. + + Outputs a string in the format ``Wdy, DD-Mon-YYYY HH:MM:SS GMT``. + + :param expires: If provided that date is used, otherwise the current. + """ + return _dump_date(expires, "-") + + +def http_date(timestamp=None): + """Formats the time to match the RFC1123 date format. + + Accepts a floating point number expressed in seconds since the epoch in, a + datetime object or a timetuple. All times in UTC. The :func:`parse_date` + function can be used to parse such a date. + + Outputs a string in the format ``Wdy, DD Mon YYYY HH:MM:SS GMT``. + + :param timestamp: If provided that date is used, otherwise the current. + """ + return _dump_date(timestamp, " ") + + +def parse_age(value=None): + """Parses a base-10 integer count of seconds into a timedelta. + + If parsing fails, the return value is `None`. + + :param value: a string consisting of an integer represented in base-10 + :return: a :class:`datetime.timedelta` object or `None`. + """ + if not value: + return None + try: + seconds = int(value) + except ValueError: + return None + if seconds < 0: + return None + try: + return timedelta(seconds=seconds) + except OverflowError: + return None + + +def dump_age(age=None): + """Formats the duration as a base-10 integer. + + :param age: should be an integer number of seconds, + a :class:`datetime.timedelta` object, or, + if the age is unknown, `None` (default). + """ + if age is None: + return + if isinstance(age, timedelta): + # do the equivalent of Python 2.7's timedelta.total_seconds(), + # but disregarding fractional seconds + age = age.seconds + (age.days * 24 * 3600) + + age = int(age) + if age < 0: + raise ValueError("age cannot be negative") + + return str(age) + + +def is_resource_modified( + environ, etag=None, data=None, last_modified=None, ignore_if_range=True +): + """Convenience method for conditional requests. + + :param environ: the WSGI environment of the request to be checked. + :param etag: the etag for the response for comparison. + :param data: or alternatively the data of the response to automatically + generate an etag using :func:`generate_etag`. + :param last_modified: an optional date of the last modification. + :param ignore_if_range: If `False`, `If-Range` header will be taken into + account. + :return: `True` if the resource was modified, otherwise `False`. + + .. versionchanged:: 1.0.0 + The check is run for methods other than ``GET`` and ``HEAD``. + """ + if etag is None and data is not None: + etag = generate_etag(data) + elif data is not None: + raise TypeError("both data and etag given") + + unmodified = False + if isinstance(last_modified, string_types): + last_modified = parse_date(last_modified) + + # ensure that microsecond is zero because the HTTP spec does not transmit + # that either and we might have some false positives. See issue #39 + if last_modified is not None: + last_modified = last_modified.replace(microsecond=0) + + if_range = None + if not ignore_if_range and "HTTP_RANGE" in environ: + # https://tools.ietf.org/html/rfc7233#section-3.2 + # A server MUST ignore an If-Range header field received in a request + # that does not contain a Range header field. + if_range = parse_if_range_header(environ.get("HTTP_IF_RANGE")) + + if if_range is not None and if_range.date is not None: + modified_since = if_range.date + else: + modified_since = parse_date(environ.get("HTTP_IF_MODIFIED_SINCE")) + + if modified_since and last_modified and last_modified <= modified_since: + unmodified = True + + if etag: + etag, _ = unquote_etag(etag) + if if_range is not None and if_range.etag is not None: + unmodified = parse_etags(if_range.etag).contains(etag) + else: + if_none_match = parse_etags(environ.get("HTTP_IF_NONE_MATCH")) + if if_none_match: + # https://tools.ietf.org/html/rfc7232#section-3.2 + # "A recipient MUST use the weak comparison function when comparing + # entity-tags for If-None-Match" + unmodified = if_none_match.contains_weak(etag) + + # https://tools.ietf.org/html/rfc7232#section-3.1 + # "Origin server MUST use the strong comparison function when + # comparing entity-tags for If-Match" + if_match = parse_etags(environ.get("HTTP_IF_MATCH")) + if if_match: + unmodified = not if_match.is_strong(etag) + + return not unmodified + + +def remove_entity_headers(headers, allowed=("expires", "content-location")): + """Remove all entity headers from a list or :class:`Headers` object. This + operation works in-place. `Expires` and `Content-Location` headers are + by default not removed. The reason for this is :rfc:`2616` section + 10.3.5 which specifies some entity headers that should be sent. + + .. versionchanged:: 0.5 + added `allowed` parameter. + + :param headers: a list or :class:`Headers` object. + :param allowed: a list of headers that should still be allowed even though + they are entity headers. + """ + allowed = set(x.lower() for x in allowed) + headers[:] = [ + (key, value) + for key, value in headers + if not is_entity_header(key) or key.lower() in allowed + ] + + +def remove_hop_by_hop_headers(headers): + """Remove all HTTP/1.1 "Hop-by-Hop" headers from a list or + :class:`Headers` object. This operation works in-place. + + .. versionadded:: 0.5 + + :param headers: a list or :class:`Headers` object. + """ + headers[:] = [ + (key, value) for key, value in headers if not is_hop_by_hop_header(key) + ] + + +def is_entity_header(header): + """Check if a header is an entity header. + + .. versionadded:: 0.5 + + :param header: the header to test. + :return: `True` if it's an entity header, `False` otherwise. + """ + return header.lower() in _entity_headers + + +def is_hop_by_hop_header(header): + """Check if a header is an HTTP/1.1 "Hop-by-Hop" header. + + .. versionadded:: 0.5 + + :param header: the header to test. + :return: `True` if it's an HTTP/1.1 "Hop-by-Hop" header, `False` otherwise. + """ + return header.lower() in _hop_by_hop_headers + + +def parse_cookie(header, charset="utf-8", errors="replace", cls=None): + """Parse a cookie from a string or WSGI environ. + + The same key can be provided multiple times, the values are stored + in-order. The default :class:`MultiDict` will have the first value + first, and all values can be retrieved with + :meth:`MultiDict.getlist`. + + :param header: The cookie header as a string, or a WSGI environ dict + with a ``HTTP_COOKIE`` key. + :param charset: The charset for the cookie values. + :param errors: The error behavior for the charset decoding. + :param cls: A dict-like class to store the parsed cookies in. + Defaults to :class:`MultiDict`. + + .. versionchanged:: 1.0.0 + Returns a :class:`MultiDict` instead of a + ``TypeConversionDict``. + + .. versionchanged:: 0.5 + Returns a :class:`TypeConversionDict` instead of a regular dict. + The ``cls`` parameter was added. + """ + if isinstance(header, dict): + header = header.get("HTTP_COOKIE", "") + elif header is None: + header = "" + + # On Python 3, PEP 3333 sends headers through the environ as latin1 + # decoded strings. Encode strings back to bytes for parsing. + if isinstance(header, text_type): + header = header.encode("latin1", "replace") + + if cls is None: + cls = MultiDict + + def _parse_pairs(): + for key, val in _cookie_parse_impl(header): + key = to_unicode(key, charset, errors, allow_none_charset=True) + if not key: + continue + val = to_unicode(val, charset, errors, allow_none_charset=True) + yield try_coerce_native(key), val + + return cls(_parse_pairs()) + + +def dump_cookie( + key, + value="", + max_age=None, + expires=None, + path="/", + domain=None, + secure=False, + httponly=False, + charset="utf-8", + sync_expires=True, + max_size=4093, + samesite=None, +): + """Creates a new Set-Cookie header without the ``Set-Cookie`` prefix + The parameters are the same as in the cookie Morsel object in the + Python standard library but it accepts unicode data, too. + + On Python 3 the return value of this function will be a unicode + string, on Python 2 it will be a native string. In both cases the + return value is usually restricted to ascii as the vast majority of + values are properly escaped, but that is no guarantee. If a unicode + string is returned it's tunneled through latin1 as required by + PEP 3333. + + The return value is not ASCII safe if the key contains unicode + characters. This is technically against the specification but + happens in the wild. It's strongly recommended to not use + non-ASCII values for the keys. + + :param max_age: should be a number of seconds, or `None` (default) if + the cookie should last only as long as the client's + browser session. Additionally `timedelta` objects + are accepted, too. + :param expires: should be a `datetime` object or unix timestamp. + :param path: limits the cookie to a given path, per default it will + span the whole domain. + :param domain: Use this if you want to set a cross-domain cookie. For + example, ``domain=".example.com"`` will set a cookie + that is readable by the domain ``www.example.com``, + ``foo.example.com`` etc. Otherwise, a cookie will only + be readable by the domain that set it. + :param secure: The cookie will only be available via HTTPS + :param httponly: disallow JavaScript to access the cookie. This is an + extension to the cookie standard and probably not + supported by all browsers. + :param charset: the encoding for unicode values. + :param sync_expires: automatically set expires if max_age is defined + but expires not. + :param max_size: Warn if the final header value exceeds this size. The + default, 4093, should be safely `supported by most browsers + `_. Set to 0 to disable this check. + :param samesite: Limits the scope of the cookie such that it will + only be attached to requests if those requests are same-site. + + .. _`cookie`: http://browsercookielimits.squawky.net/ + + .. versionchanged:: 1.0.0 + The string ``'None'`` is accepted for ``samesite``. + """ + key = to_bytes(key, charset) + value = to_bytes(value, charset) + + if path is not None: + from .urls import iri_to_uri + + path = iri_to_uri(path, charset) + domain = _make_cookie_domain(domain) + if isinstance(max_age, timedelta): + max_age = (max_age.days * 60 * 60 * 24) + max_age.seconds + if expires is not None: + if not isinstance(expires, string_types): + expires = cookie_date(expires) + elif max_age is not None and sync_expires: + expires = to_bytes(cookie_date(time() + max_age)) + + if samesite is not None: + samesite = samesite.title() + + if samesite not in {"Strict", "Lax", "None"}: + raise ValueError("SameSite must be 'Strict', 'Lax', or 'None'.") + + buf = [key + b"=" + _cookie_quote(value)] + + # XXX: In theory all of these parameters that are not marked with `None` + # should be quoted. Because stdlib did not quote it before I did not + # want to introduce quoting there now. + for k, v, q in ( + (b"Domain", domain, True), + (b"Expires", expires, False), + (b"Max-Age", max_age, False), + (b"Secure", secure, None), + (b"HttpOnly", httponly, None), + (b"Path", path, False), + (b"SameSite", samesite, False), + ): + if q is None: + if v: + buf.append(k) + continue + + if v is None: + continue + + tmp = bytearray(k) + if not isinstance(v, (bytes, bytearray)): + v = to_bytes(text_type(v), charset) + if q: + v = _cookie_quote(v) + tmp += b"=" + v + buf.append(bytes(tmp)) + + # The return value will be an incorrectly encoded latin1 header on + # Python 3 for consistency with the headers object and a bytestring + # on Python 2 because that's how the API makes more sense. + rv = b"; ".join(buf) + if not PY2: + rv = rv.decode("latin1") + + # Warn if the final value of the cookie is larger than the limit. If the + # cookie is too large, then it may be silently ignored by the browser, + # which can be quite hard to debug. + cookie_size = len(rv) + + if max_size and cookie_size > max_size: + value_size = len(value) + warnings.warn( + 'The "{key}" cookie is too large: the value was {value_size} bytes' + " but the header required {extra_size} extra bytes. The final size" + " was {cookie_size} bytes but the limit is {max_size} bytes." + " Browsers may silently ignore cookies larger than this.".format( + key=key, + value_size=value_size, + extra_size=cookie_size - value_size, + cookie_size=cookie_size, + max_size=max_size, + ), + stacklevel=2, + ) + + return rv + + +def is_byte_range_valid(start, stop, length): + """Checks if a given byte content range is valid for the given length. + + .. versionadded:: 0.7 + """ + if (start is None) != (stop is None): + return False + elif start is None: + return length is None or length >= 0 + elif length is None: + return 0 <= start < stop + elif start >= stop: + return False + return 0 <= start < length + + +# circular dependencies +from .datastructures import Accept +from .datastructures import Authorization +from .datastructures import ContentRange +from .datastructures import ContentSecurityPolicy +from .datastructures import ETags +from .datastructures import HeaderSet +from .datastructures import IfRange +from .datastructures import MultiDict +from .datastructures import Range +from .datastructures import RequestCacheControl +from .datastructures import WWWAuthenticate diff --git a/env/lib/python3.6/site-packages/werkzeug/local.py b/env/lib/python3.6/site-packages/werkzeug/local.py new file mode 100644 index 0000000..626b87b --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/local.py @@ -0,0 +1,420 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.local + ~~~~~~~~~~~~~~ + + This module implements context-local objects. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import copy +from functools import update_wrapper + +from ._compat import implements_bool +from ._compat import PY2 +from .wsgi import ClosingIterator + +# since each thread has its own greenlet we can just use those as identifiers +# for the context. If greenlets are not available we fall back to the +# current thread ident depending on where it is. +try: + from greenlet import getcurrent as get_ident +except ImportError: + try: + from thread import get_ident + except ImportError: + from _thread import get_ident + + +def release_local(local): + """Releases the contents of the local for the current context. + This makes it possible to use locals without a manager. + + Example:: + + >>> loc = Local() + >>> loc.foo = 42 + >>> release_local(loc) + >>> hasattr(loc, 'foo') + False + + With this function one can release :class:`Local` objects as well + as :class:`LocalStack` objects. However it is not possible to + release data held by proxies that way, one always has to retain + a reference to the underlying local object in order to be able + to release it. + + .. versionadded:: 0.6.1 + """ + local.__release_local__() + + +class Local(object): + __slots__ = ("__storage__", "__ident_func__") + + def __init__(self): + object.__setattr__(self, "__storage__", {}) + object.__setattr__(self, "__ident_func__", get_ident) + + def __iter__(self): + return iter(self.__storage__.items()) + + def __call__(self, proxy): + """Create a proxy for a name.""" + return LocalProxy(self, proxy) + + def __release_local__(self): + self.__storage__.pop(self.__ident_func__(), None) + + def __getattr__(self, name): + try: + return self.__storage__[self.__ident_func__()][name] + except KeyError: + raise AttributeError(name) + + def __setattr__(self, name, value): + ident = self.__ident_func__() + storage = self.__storage__ + try: + storage[ident][name] = value + except KeyError: + storage[ident] = {name: value} + + def __delattr__(self, name): + try: + del self.__storage__[self.__ident_func__()][name] + except KeyError: + raise AttributeError(name) + + +class LocalStack(object): + """This class works similar to a :class:`Local` but keeps a stack + of objects instead. This is best explained with an example:: + + >>> ls = LocalStack() + >>> ls.push(42) + >>> ls.top + 42 + >>> ls.push(23) + >>> ls.top + 23 + >>> ls.pop() + 23 + >>> ls.top + 42 + + They can be force released by using a :class:`LocalManager` or with + the :func:`release_local` function but the correct way is to pop the + item from the stack after using. When the stack is empty it will + no longer be bound to the current context (and as such released). + + By calling the stack without arguments it returns a proxy that resolves to + the topmost item on the stack. + + .. versionadded:: 0.6.1 + """ + + def __init__(self): + self._local = Local() + + def __release_local__(self): + self._local.__release_local__() + + @property + def __ident_func__(self): + return self._local.__ident_func__ + + @__ident_func__.setter + def __ident_func__(self, value): + object.__setattr__(self._local, "__ident_func__", value) + + def __call__(self): + def _lookup(): + rv = self.top + if rv is None: + raise RuntimeError("object unbound") + return rv + + return LocalProxy(_lookup) + + def push(self, obj): + """Pushes a new item to the stack""" + rv = getattr(self._local, "stack", None) + if rv is None: + self._local.stack = rv = [] + rv.append(obj) + return rv + + def pop(self): + """Removes the topmost item from the stack, will return the + old value or `None` if the stack was already empty. + """ + stack = getattr(self._local, "stack", None) + if stack is None: + return None + elif len(stack) == 1: + release_local(self._local) + return stack[-1] + else: + return stack.pop() + + @property + def top(self): + """The topmost item on the stack. If the stack is empty, + `None` is returned. + """ + try: + return self._local.stack[-1] + except (AttributeError, IndexError): + return None + + +class LocalManager(object): + """Local objects cannot manage themselves. For that you need a local + manager. You can pass a local manager multiple locals or add them later + by appending them to `manager.locals`. Every time the manager cleans up, + it will clean up all the data left in the locals for this context. + + The `ident_func` parameter can be added to override the default ident + function for the wrapped locals. + + .. versionchanged:: 0.6.1 + Instead of a manager the :func:`release_local` function can be used + as well. + + .. versionchanged:: 0.7 + `ident_func` was added. + """ + + def __init__(self, locals=None, ident_func=None): + if locals is None: + self.locals = [] + elif isinstance(locals, Local): + self.locals = [locals] + else: + self.locals = list(locals) + if ident_func is not None: + self.ident_func = ident_func + for local in self.locals: + object.__setattr__(local, "__ident_func__", ident_func) + else: + self.ident_func = get_ident + + def get_ident(self): + """Return the context identifier the local objects use internally for + this context. You cannot override this method to change the behavior + but use it to link other context local objects (such as SQLAlchemy's + scoped sessions) to the Werkzeug locals. + + .. versionchanged:: 0.7 + You can pass a different ident function to the local manager that + will then be propagated to all the locals passed to the + constructor. + """ + return self.ident_func() + + def cleanup(self): + """Manually clean up the data in the locals for this context. Call + this at the end of the request or use `make_middleware()`. + """ + for local in self.locals: + release_local(local) + + def make_middleware(self, app): + """Wrap a WSGI application so that cleaning up happens after + request end. + """ + + def application(environ, start_response): + return ClosingIterator(app(environ, start_response), self.cleanup) + + return application + + def middleware(self, func): + """Like `make_middleware` but for decorating functions. + + Example usage:: + + @manager.middleware + def application(environ, start_response): + ... + + The difference to `make_middleware` is that the function passed + will have all the arguments copied from the inner application + (name, docstring, module). + """ + return update_wrapper(self.make_middleware(func), func) + + def __repr__(self): + return "<%s storages: %d>" % (self.__class__.__name__, len(self.locals)) + + +@implements_bool +class LocalProxy(object): + """Acts as a proxy for a werkzeug local. Forwards all operations to + a proxied object. The only operations not supported for forwarding + are right handed operands and any kind of assignment. + + Example usage:: + + from werkzeug.local import Local + l = Local() + + # these are proxies + request = l('request') + user = l('user') + + + from werkzeug.local import LocalStack + _response_local = LocalStack() + + # this is a proxy + response = _response_local() + + Whenever something is bound to l.user / l.request the proxy objects + will forward all operations. If no object is bound a :exc:`RuntimeError` + will be raised. + + To create proxies to :class:`Local` or :class:`LocalStack` objects, + call the object as shown above. If you want to have a proxy to an + object looked up by a function, you can (as of Werkzeug 0.6.1) pass + a function to the :class:`LocalProxy` constructor:: + + session = LocalProxy(lambda: get_current_request().session) + + .. versionchanged:: 0.6.1 + The class can be instantiated with a callable as well now. + """ + + __slots__ = ("__local", "__dict__", "__name__", "__wrapped__") + + def __init__(self, local, name=None): + object.__setattr__(self, "_LocalProxy__local", local) + object.__setattr__(self, "__name__", name) + if callable(local) and not hasattr(local, "__release_local__"): + # "local" is a callable that is not an instance of Local or + # LocalManager: mark it as a wrapped function. + object.__setattr__(self, "__wrapped__", local) + + def _get_current_object(self): + """Return the current object. This is useful if you want the real + object behind the proxy at a time for performance reasons or because + you want to pass the object into a different context. + """ + if not hasattr(self.__local, "__release_local__"): + return self.__local() + try: + return getattr(self.__local, self.__name__) + except AttributeError: + raise RuntimeError("no object bound to %s" % self.__name__) + + @property + def __dict__(self): + try: + return self._get_current_object().__dict__ + except RuntimeError: + raise AttributeError("__dict__") + + def __repr__(self): + try: + obj = self._get_current_object() + except RuntimeError: + return "<%s unbound>" % self.__class__.__name__ + return repr(obj) + + def __bool__(self): + try: + return bool(self._get_current_object()) + except RuntimeError: + return False + + def __unicode__(self): + try: + return unicode(self._get_current_object()) # noqa + except RuntimeError: + return repr(self) + + def __dir__(self): + try: + return dir(self._get_current_object()) + except RuntimeError: + return [] + + def __getattr__(self, name): + if name == "__members__": + return dir(self._get_current_object()) + return getattr(self._get_current_object(), name) + + def __setitem__(self, key, value): + self._get_current_object()[key] = value + + def __delitem__(self, key): + del self._get_current_object()[key] + + if PY2: + __getslice__ = lambda x, i, j: x._get_current_object()[i:j] + + def __setslice__(self, i, j, seq): + self._get_current_object()[i:j] = seq + + def __delslice__(self, i, j): + del self._get_current_object()[i:j] + + __setattr__ = lambda x, n, v: setattr(x._get_current_object(), n, v) + __delattr__ = lambda x, n: delattr(x._get_current_object(), n) + __str__ = lambda x: str(x._get_current_object()) + __lt__ = lambda x, o: x._get_current_object() < o + __le__ = lambda x, o: x._get_current_object() <= o + __eq__ = lambda x, o: x._get_current_object() == o + __ne__ = lambda x, o: x._get_current_object() != o + __gt__ = lambda x, o: x._get_current_object() > o + __ge__ = lambda x, o: x._get_current_object() >= o + __cmp__ = lambda x, o: cmp(x._get_current_object(), o) # noqa + __hash__ = lambda x: hash(x._get_current_object()) + __call__ = lambda x, *a, **kw: x._get_current_object()(*a, **kw) + __len__ = lambda x: len(x._get_current_object()) + __getitem__ = lambda x, i: x._get_current_object()[i] + __iter__ = lambda x: iter(x._get_current_object()) + __contains__ = lambda x, i: i in x._get_current_object() + __add__ = lambda x, o: x._get_current_object() + o + __sub__ = lambda x, o: x._get_current_object() - o + __mul__ = lambda x, o: x._get_current_object() * o + __floordiv__ = lambda x, o: x._get_current_object() // o + __mod__ = lambda x, o: x._get_current_object() % o + __divmod__ = lambda x, o: x._get_current_object().__divmod__(o) + __pow__ = lambda x, o: x._get_current_object() ** o + __lshift__ = lambda x, o: x._get_current_object() << o + __rshift__ = lambda x, o: x._get_current_object() >> o + __and__ = lambda x, o: x._get_current_object() & o + __xor__ = lambda x, o: x._get_current_object() ^ o + __or__ = lambda x, o: x._get_current_object() | o + __div__ = lambda x, o: x._get_current_object().__div__(o) + __truediv__ = lambda x, o: x._get_current_object().__truediv__(o) + __neg__ = lambda x: -(x._get_current_object()) + __pos__ = lambda x: +(x._get_current_object()) + __abs__ = lambda x: abs(x._get_current_object()) + __invert__ = lambda x: ~(x._get_current_object()) + __complex__ = lambda x: complex(x._get_current_object()) + __int__ = lambda x: int(x._get_current_object()) + __long__ = lambda x: long(x._get_current_object()) # noqa + __float__ = lambda x: float(x._get_current_object()) + __oct__ = lambda x: oct(x._get_current_object()) + __hex__ = lambda x: hex(x._get_current_object()) + __index__ = lambda x: x._get_current_object().__index__() + __coerce__ = lambda x, o: x._get_current_object().__coerce__(x, o) + __enter__ = lambda x: x._get_current_object().__enter__() + __exit__ = lambda x, *a, **kw: x._get_current_object().__exit__(*a, **kw) + __radd__ = lambda x, o: o + x._get_current_object() + __rsub__ = lambda x, o: o - x._get_current_object() + __rmul__ = lambda x, o: o * x._get_current_object() + __rdiv__ = lambda x, o: o / x._get_current_object() + if PY2: + __rtruediv__ = lambda x, o: x._get_current_object().__rtruediv__(o) + else: + __rtruediv__ = __rdiv__ + __rfloordiv__ = lambda x, o: o // x._get_current_object() + __rmod__ = lambda x, o: o % x._get_current_object() + __rdivmod__ = lambda x, o: x._get_current_object().__rdivmod__(o) + __copy__ = lambda x: copy.copy(x._get_current_object()) + __deepcopy__ = lambda x, memo: copy.deepcopy(x._get_current_object(), memo) diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/__init__.py b/env/lib/python3.6/site-packages/werkzeug/middleware/__init__.py new file mode 100644 index 0000000..5e049f5 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/middleware/__init__.py @@ -0,0 +1,25 @@ +""" +Middleware +========== + +A WSGI middleware is a WSGI application that wraps another application +in order to observe or change its behavior. Werkzeug provides some +middleware for common use cases. + +.. toctree:: + :maxdepth: 1 + + proxy_fix + shared_data + dispatcher + http_proxy + lint + profiler + +The :doc:`interactive debugger ` is also a middleware that can +be applied manually, although it is typically used automatically with +the :doc:`development server `. + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..291ca7d8f0fc510e2b70c6aeb0cf876e102a520c GIT binary patch literal 704 zcmYjPy>1jS5Z+5eWGN3ogQlT~#NCFZ0Ifn4ex!&3gmg%eX!d;TxwVD=uxIawr=jJQ z(o*pXRLuH9I7_x>zVVFb`^Fb1C*t>y#p3BvRsE_C)`abA-uajhReh<{WL}*f$tQeK zd@xE`+{lFD)x#3vHQdf`-h+FHg2^EFpp4O)PLc^8NK1lEl98i6kj4ZDVPQOkq!^?C zVVN-a!cS;+>3<@ob-dV zcJ~aVB^`!dvpQos?ILT^?%}Z+Zu1EZD(Mumh B;(P!A literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c4ae2229500b55ee0a69de3e54b9cbafc182ac0 GIT binary patch literal 2393 zcmZ`)+inv_7~WHyunjG0QBP8(Q7S|&B{7AIRu)u*&_WP#Bb*A=ss>|WoDhk zbaMq)eTv@pE&3e3?G>-URlk2WYa3|S^3Lqc{KxP6|G9Pfa`^hsXV3m#ah!jgg(txL zF8=0oyo57w9yr1k-YZ9V(tYUOI}LDI5R3cNF;mOf3U;&g3|JkmrOL84J-379VewKa5yhv>pc+| z$j4bJ1+$W)k<>CP*)LBXGq`tXHp6g>#d(^-WqHO^(gd$gwJPBQTrCfk zG8y6weGYYgY7mfyml$w1V_F`MrLm3))r3;OGef3QD+ieqsW*{aIk%69W=Vaxzx&ww z_o&ZC3gKEe%waxG1RF|b6$m!UHBL=J$`Y2160ow?;e}d5&Mb6IzTN@^LUjg;f{il) z*K475+TbEZctA9qZPCgaZ6aZI>%t!j!-iF7kUYgFIh78&uTbvCe+C0wi>uLb~3Cu!^8yeQ|?)qb(Zeo9FE?+{sv>b1{yI>+6;UsX90; zfv_nh7vMw&S|b)pJwYwm!~OleI=h-B@i8 z!PO+M>ui$&=x|24Ccj{?#Z&T_&|^XtNj`z-sREqff-E?gbx~rq_VtiJAWuz+8jdf# zsuj(NA(WPJnM~Ml@@`ll#^xsD<1&vEZh*^wf)R$@I4>re^3`QGZ`}Bf?EzF-ny`!Z zAu}Vp>|X!=#;uL*gpZ93WAvWc<70Lgf3t>{bOtWEk|*4OFP4Qbf>-V!5KE%<${8#P z54~w+dUf85=9J)%T*ukY)1k^Fn>7(Ipy^=1ZJ}!3ZAF`wCr|2v#5uHrSs5USK+lr7 zQ8ovT@@s2Kfh@*qX*!gx3FMGy*(H2Z;y{-Wey^{QiN+w!)yRTzQ4%u}3v`$4ddX61 z#lXEWMIO{4To|$&rptDDVQT*hEl27MMfWxp>mqDSgQ~TfUQD>qL!*cPHvZ-+UX@!p zkyClas&X&`UO>g|wY{m2@TRTWblaZ>MkXUovYM3q<>)00Z|-%)Z5zqu^mkP16kVS zPFvc5>ZMJ0dqq=9rpq!rQMj`PAEE>3GSbo%Im&U`GWNzATq52eljy?))8G=yyo^*S z)4|mo1+6lkMD^JyQNAx0IExgD#O#Zcf0oB2S#crL4p4-F>%jV literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..183d8162d4a03081a17e9264eaf12bc5f5176463 GIT binary patch literal 6350 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 v?{(b7zLb8%`EDKEmOA#~( z(2J#H%G8OTv2t+Rb5FhYAL$=~YfnDs=2O47042&+WV{J&}v&IJy+sN+t&ALyQ=TCb`5tst`D8IV;Yk+ zyjA0+q1$#%#`S z!*K78MsXAdDoPXfSf;%w7Sg?S&d+ss`%%V*DIdpzjbyqXagnir4I|EDaS%wsR6kHO zL?{^(LD*+fJR6Hlv4cqUF)rK|5L%tET&q(8dQ78-LBjeX9x-4iD(X#GH&rSYi3p!& zEK1lU9ZMFbT)29zVE_rivN%16l0C-LgHj|oHOq5d&tt(@rC}UoS*vwo=Qk&syKXB? zM-v(C^;L^qzjp19>~RpsLS=3X?h#2QTI`FRdz+taei;YjOt^0lJ)>#nt0NgD%I}Sn zkbJm}uIi2oRECFoX=F&U^IsJYcW`AM8ez0eaKPebyCUpCmAgHI+q~MV>WG<$yu+7X z8tpo_5wqody@Zsfx(Ao)hVeuOBgEp#&Vz?+!FCoTd>#<;J`>MHIM%^VdpbZa!>I+>Cp7CV;EZRf6KP>D(yokwT4S zf>6zaS#r8H3S=;(jB06jzL#I1)d5nka6u_uFVQBtY=?xe-;GBqAS6ut}7csxurT87~gyF2mNju3h>Ike=`V!nAK?rT-f zt|C#JC7glMm7Q5?ae%akV<08(zK|JW7xsf>PjIMm&HLRSPB3;f_oxWYORYdjW)W5Dg)p3{sI+4g74HOw zmt;Lt_6jE7nlo1mpDGk^{=PbQsq@^5`K~>u({G$;F`vE2OlVH}zGF?nmE5Kxl2<9l z+4kYqyf%6-bfxoNl$ELFUF#hUGw%h7>lYoS5WA}W(cQxJC9do$nyEQ8d}C^%HK!G{ z*3?E@nO4!-(;C_;H?Uos+s#^T`v_QGNAl6mm^;2s#qK0u@fR)08~#E>@-_b*jyLPM zor$>Dt`JM} zZ9OT8yESL<)+vLxN@VGcCa}eil1TafLvjrrY>lOwIsYGi^0+)to}N{_`HZka()hW! zYPje<`vND@J>z?eUw&o1vU@ldaqH#M_r@#Zm5H88&*l|wzjTf&%9t5PwlW7M?$xP1 zu%?xniNkMoP&u|{=25K}n^r$Gj_Svifz6GlOY*;}is#zQl#1@hCM2EYb9x@sk4;|t z$T&6!4zJJ5!4h}Sx^w`WS)+e(cUtGmmyH6KH(uLEj#?fxupZE-&dfS;pvMZHpa=R^ zX~ln<@}{~lwe|bTYwKufx-?kB+r_`*sIJ!eD!*{KkY0O@4*>LBBuz*MzCME`dZr%3 z%u9H?yf~9zy0S2PTH7x+Q<#Oz)LXn*g#B-V`~7D zDJBXT%gvc3uTG6YWk#P$WWKeH8WE?NXxh@j~$^IJpAoXvbmW315M0VzrFwGzue#1 z^}o5l`}L!H?WM#A(JO8-TwDVeV-pg$&b-}oYsJwuuj~nxS7|dw;gbS;Xee?k&E&5k)pq%KI4aH}a*5!Hqiy%}gd(XX*mkV{>=K3 zB3K|dE$v!KJ51A|a!O|u-_Kp&FTS(!-0=Np;~*|a>b}p@5Z#q*l2NMibgU#Lw!A@& z=HF>UmPq>I`~+7<40Sf_s%={O-&oRP%?t7tMrhUE7{?%JAZf$P>uKf@f#h|($=lQr zgW9#?Xjuf#nSaV_uH?%P^~vVGl&O^DwY-*g2l(XDOP!}*?%XVly-g&_E~ByGO9x(d MaJS4gcyzt;e^E^oWB>pF literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1e781f2d1b2ef944a775f7f4a7352e33604b64f4 GIT binary patch literal 5753 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15b03df1d4485015d5b8393356dac55387da11b9 GIT binary patch literal 8956 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/dispatcher.py b/env/lib/python3.6/site-packages/werkzeug/middleware/dispatcher.py new file mode 100644 index 0000000..2eb173e --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/middleware/dispatcher.py @@ -0,0 +1,66 @@ +""" +Application Dispatcher +====================== + +This middleware creates a single WSGI application that dispatches to +multiple other WSGI applications mounted at different URL paths. + +A common example is writing a Single Page Application, where you have a +backend API and a frontend written in JavaScript that does the routing +in the browser rather than requesting different pages from the server. +The frontend is a single HTML and JS file that should be served for any +path besides "/api". + +This example dispatches to an API app under "/api", an admin app +under "/admin", and an app that serves frontend files for all other +requests:: + + app = DispatcherMiddleware(serve_frontend, { + '/api': api_app, + '/admin': admin_app, + }) + +In production, you might instead handle this at the HTTP server level, +serving files or proxying to application servers based on location. The +API and admin apps would each be deployed with a separate WSGI server, +and the static files would be served directly by the HTTP server. + +.. autoclass:: DispatcherMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" + + +class DispatcherMiddleware(object): + """Combine multiple applications as a single WSGI application. + Requests are dispatched to an application based on the path it is + mounted under. + + :param app: The WSGI application to dispatch to if the request + doesn't match a mounted path. + :param mounts: Maps path prefixes to applications for dispatching. + """ + + def __init__(self, app, mounts=None): + self.app = app + self.mounts = mounts or {} + + def __call__(self, environ, start_response): + script = environ.get("PATH_INFO", "") + path_info = "" + + while "/" in script: + if script in self.mounts: + app = self.mounts[script] + break + + script, last_item = script.rsplit("/", 1) + path_info = "/%s%s" % (last_item, path_info) + else: + app = self.mounts.get(script, self.app) + + original_script_name = environ.get("SCRIPT_NAME", "") + environ["SCRIPT_NAME"] = original_script_name + script + environ["PATH_INFO"] = path_info + return app(environ, start_response) diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/http_proxy.py b/env/lib/python3.6/site-packages/werkzeug/middleware/http_proxy.py new file mode 100644 index 0000000..bfdc071 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/middleware/http_proxy.py @@ -0,0 +1,219 @@ +""" +Basic HTTP Proxy +================ + +.. autoclass:: ProxyMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +import socket + +from ..datastructures import EnvironHeaders +from ..http import is_hop_by_hop_header +from ..urls import url_parse +from ..urls import url_quote +from ..wsgi import get_input_stream + +try: + from http import client +except ImportError: + import httplib as client + + +class ProxyMiddleware(object): + """Proxy requests under a path to an external server, routing other + requests to the app. + + This middleware can only proxy HTTP requests, as that is the only + protocol handled by the WSGI server. Other protocols, such as + websocket requests, cannot be proxied at this layer. This should + only be used for development, in production a real proxying server + should be used. + + The middleware takes a dict that maps a path prefix to a dict + describing the host to be proxied to:: + + app = ProxyMiddleware(app, { + "/static/": { + "target": "http://127.0.0.1:5001/", + } + }) + + Each host has the following options: + + ``target``: + The target URL to dispatch to. This is required. + ``remove_prefix``: + Whether to remove the prefix from the URL before dispatching it + to the target. The default is ``False``. + ``host``: + ``""`` (default): + The host header is automatically rewritten to the URL of the + target. + ``None``: + The host header is unmodified from the client request. + Any other value: + The host header is overwritten with the value. + ``headers``: + A dictionary of headers to be sent with the request to the + target. The default is ``{}``. + ``ssl_context``: + A :class:`ssl.SSLContext` defining how to verify requests if the + target is HTTPS. The default is ``None``. + + In the example above, everything under ``"/static/"`` is proxied to + the server on port 5001. The host header is rewritten to the target, + and the ``"/static/"`` prefix is removed from the URLs. + + :param app: The WSGI application to wrap. + :param targets: Proxy target configurations. See description above. + :param chunk_size: Size of chunks to read from input stream and + write to target. + :param timeout: Seconds before an operation to a target fails. + + .. versionadded:: 0.14 + """ + + def __init__(self, app, targets, chunk_size=2 << 13, timeout=10): + def _set_defaults(opts): + opts.setdefault("remove_prefix", False) + opts.setdefault("host", "") + opts.setdefault("headers", {}) + opts.setdefault("ssl_context", None) + return opts + + self.app = app + self.targets = dict( + ("/%s/" % k.strip("/"), _set_defaults(v)) for k, v in targets.items() + ) + self.chunk_size = chunk_size + self.timeout = timeout + + def proxy_to(self, opts, path, prefix): + target = url_parse(opts["target"]) + + def application(environ, start_response): + headers = list(EnvironHeaders(environ).items()) + headers[:] = [ + (k, v) + for k, v in headers + if not is_hop_by_hop_header(k) + and k.lower() not in ("content-length", "host") + ] + headers.append(("Connection", "close")) + + if opts["host"] == "": + headers.append(("Host", target.ascii_host)) + elif opts["host"] is None: + headers.append(("Host", environ["HTTP_HOST"])) + else: + headers.append(("Host", opts["host"])) + + headers.extend(opts["headers"].items()) + remote_path = path + + if opts["remove_prefix"]: + remote_path = "%s/%s" % ( + target.path.rstrip("/"), + remote_path[len(prefix) :].lstrip("/"), + ) + + content_length = environ.get("CONTENT_LENGTH") + chunked = False + + if content_length not in ("", None): + headers.append(("Content-Length", content_length)) + elif content_length is not None: + headers.append(("Transfer-Encoding", "chunked")) + chunked = True + + try: + if target.scheme == "http": + con = client.HTTPConnection( + target.ascii_host, target.port or 80, timeout=self.timeout + ) + elif target.scheme == "https": + con = client.HTTPSConnection( + target.ascii_host, + target.port or 443, + timeout=self.timeout, + context=opts["ssl_context"], + ) + else: + raise RuntimeError( + "Target scheme must be 'http' or 'https', got '{}'.".format( + target.scheme + ) + ) + + con.connect() + remote_url = url_quote(remote_path) + querystring = environ["QUERY_STRING"] + + if querystring: + remote_url = remote_url + "?" + querystring + + con.putrequest(environ["REQUEST_METHOD"], remote_url, skip_host=True) + + for k, v in headers: + if k.lower() == "connection": + v = "close" + + con.putheader(k, v) + + con.endheaders() + stream = get_input_stream(environ) + + while 1: + data = stream.read(self.chunk_size) + + if not data: + break + + if chunked: + con.send(b"%x\r\n%s\r\n" % (len(data), data)) + else: + con.send(data) + + resp = con.getresponse() + except socket.error: + from ..exceptions import BadGateway + + return BadGateway()(environ, start_response) + + start_response( + "%d %s" % (resp.status, resp.reason), + [ + (k.title(), v) + for k, v in resp.getheaders() + if not is_hop_by_hop_header(k) + ], + ) + + def read(): + while 1: + try: + data = resp.read(self.chunk_size) + except socket.error: + break + + if not data: + break + + yield data + + return read() + + return application + + def __call__(self, environ, start_response): + path = environ["PATH_INFO"] + app = self.app + + for prefix, opts in self.targets.items(): + if path.startswith(prefix): + app = self.proxy_to(opts, path, prefix) + break + + return app(environ, start_response) diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/lint.py b/env/lib/python3.6/site-packages/werkzeug/middleware/lint.py new file mode 100644 index 0000000..98f9581 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/middleware/lint.py @@ -0,0 +1,408 @@ +""" +WSGI Protocol Linter +==================== + +This module provides a middleware that performs sanity checks on the +behavior of the WSGI server and application. It checks that the +:pep:`3333` WSGI spec is properly implemented. It also warns on some +common HTTP errors such as non-empty responses for 304 status codes. + +.. autoclass:: LintMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +from warnings import warn + +from .._compat import implements_iterator +from .._compat import PY2 +from .._compat import string_types +from ..datastructures import Headers +from ..http import is_entity_header +from ..wsgi import FileWrapper + +try: + from urllib.parse import urlparse +except ImportError: + from urlparse import urlparse + + +class WSGIWarning(Warning): + """Warning class for WSGI warnings.""" + + +class HTTPWarning(Warning): + """Warning class for HTTP warnings.""" + + +def check_string(context, obj, stacklevel=3): + if type(obj) is not str: + warn( + "'%s' requires strings, got '%s'" % (context, type(obj).__name__), + WSGIWarning, + ) + + +class InputStream(object): + def __init__(self, stream): + self._stream = stream + + def read(self, *args): + if len(args) == 0: + warn( + "WSGI does not guarantee an EOF marker on the input stream, thus making" + " calls to 'wsgi.input.read()' unsafe. Conforming servers may never" + " return from this call.", + WSGIWarning, + stacklevel=2, + ) + elif len(args) != 1: + warn( + "Too many parameters passed to 'wsgi.input.read()'.", + WSGIWarning, + stacklevel=2, + ) + return self._stream.read(*args) + + def readline(self, *args): + if len(args) == 0: + warn( + "Calls to 'wsgi.input.readline()' without arguments are unsafe. Use" + " 'wsgi.input.read()' instead.", + WSGIWarning, + stacklevel=2, + ) + elif len(args) == 1: + warn( + "'wsgi.input.readline()' was called with a size hint. WSGI does not" + " support this, although it's available on all major servers.", + WSGIWarning, + stacklevel=2, + ) + else: + raise TypeError("Too many arguments passed to 'wsgi.input.readline()'.") + return self._stream.readline(*args) + + def __iter__(self): + try: + return iter(self._stream) + except TypeError: + warn("'wsgi.input' is not iterable.", WSGIWarning, stacklevel=2) + return iter(()) + + def close(self): + warn("The application closed the input stream!", WSGIWarning, stacklevel=2) + self._stream.close() + + +class ErrorStream(object): + def __init__(self, stream): + self._stream = stream + + def write(self, s): + check_string("wsgi.error.write()", s) + self._stream.write(s) + + def flush(self): + self._stream.flush() + + def writelines(self, seq): + for line in seq: + self.write(line) + + def close(self): + warn("The application closed the error stream!", WSGIWarning, stacklevel=2) + self._stream.close() + + +class GuardedWrite(object): + def __init__(self, write, chunks): + self._write = write + self._chunks = chunks + + def __call__(self, s): + check_string("write()", s) + self._write.write(s) + self._chunks.append(len(s)) + + +@implements_iterator +class GuardedIterator(object): + def __init__(self, iterator, headers_set, chunks): + self._iterator = iterator + if PY2: + self._next = iter(iterator).next + else: + self._next = iter(iterator).__next__ + self.closed = False + self.headers_set = headers_set + self.chunks = chunks + + def __iter__(self): + return self + + def __next__(self): + if self.closed: + warn("Iterated over closed 'app_iter'.", WSGIWarning, stacklevel=2) + + rv = self._next() + + if not self.headers_set: + warn( + "The application returned before it started the response.", + WSGIWarning, + stacklevel=2, + ) + + check_string("application iterator items", rv) + self.chunks.append(len(rv)) + return rv + + def close(self): + self.closed = True + + if hasattr(self._iterator, "close"): + self._iterator.close() + + if self.headers_set: + status_code, headers = self.headers_set + bytes_sent = sum(self.chunks) + content_length = headers.get("content-length", type=int) + + if status_code == 304: + for key, _value in headers: + key = key.lower() + if key not in ("expires", "content-location") and is_entity_header( + key + ): + warn( + "Entity header %r found in 304 response." % key, HTTPWarning + ) + if bytes_sent: + warn("304 responses must not have a body.", HTTPWarning) + elif 100 <= status_code < 200 or status_code == 204: + if content_length != 0: + warn( + "%r responses must have an empty content length." % status_code, + HTTPWarning, + ) + if bytes_sent: + warn( + "%r responses must not have a body." % status_code, HTTPWarning + ) + elif content_length is not None and content_length != bytes_sent: + warn( + "Content-Length and the number of bytes sent to the client do not" + " match.", + WSGIWarning, + ) + + def __del__(self): + if not self.closed: + try: + warn( + "Iterator was garbage collected before it was closed.", WSGIWarning + ) + except Exception: + pass + + +class LintMiddleware(object): + """Warns about common errors in the WSGI and HTTP behavior of the + server and wrapped application. Some of the issues it check are: + + - invalid status codes + - non-bytestrings sent to the WSGI server + - strings returned from the WSGI application + - non-empty conditional responses + - unquoted etags + - relative URLs in the Location header + - unsafe calls to wsgi.input + - unclosed iterators + + Error information is emitted using the :mod:`warnings` module. + + :param app: The WSGI application to wrap. + + .. code-block:: python + + from werkzeug.middleware.lint import LintMiddleware + app = LintMiddleware(app) + """ + + def __init__(self, app): + self.app = app + + def check_environ(self, environ): + if type(environ) is not dict: + warn( + "WSGI environment is not a standard Python dict.", + WSGIWarning, + stacklevel=4, + ) + for key in ( + "REQUEST_METHOD", + "SERVER_NAME", + "SERVER_PORT", + "wsgi.version", + "wsgi.input", + "wsgi.errors", + "wsgi.multithread", + "wsgi.multiprocess", + "wsgi.run_once", + ): + if key not in environ: + warn( + "Required environment key %r not found" % key, + WSGIWarning, + stacklevel=3, + ) + if environ["wsgi.version"] != (1, 0): + warn("Environ is not a WSGI 1.0 environ.", WSGIWarning, stacklevel=3) + + script_name = environ.get("SCRIPT_NAME", "") + path_info = environ.get("PATH_INFO", "") + + if script_name and script_name[0] != "/": + warn( + "'SCRIPT_NAME' does not start with a slash: %r" % script_name, + WSGIWarning, + stacklevel=3, + ) + + if path_info and path_info[0] != "/": + warn( + "'PATH_INFO' does not start with a slash: %r" % path_info, + WSGIWarning, + stacklevel=3, + ) + + def check_start_response(self, status, headers, exc_info): + check_string("status", status) + status_code = status.split(None, 1)[0] + + if len(status_code) != 3 or not status_code.isdigit(): + warn(WSGIWarning("Status code must be three digits"), stacklevel=3) + + if len(status) < 4 or status[3] != " ": + warn( + WSGIWarning( + "Invalid value for status %r. Valid " + "status strings are three digits, a space " + "and a status explanation" + ), + stacklevel=3, + ) + + status_code = int(status_code) + + if status_code < 100: + warn(WSGIWarning("status code < 100 detected"), stacklevel=3) + + if type(headers) is not list: + warn(WSGIWarning("header list is not a list"), stacklevel=3) + + for item in headers: + if type(item) is not tuple or len(item) != 2: + warn(WSGIWarning("Headers must tuple 2-item tuples"), stacklevel=3) + name, value = item + if type(name) is not str or type(value) is not str: + warn(WSGIWarning("header items must be strings"), stacklevel=3) + if name.lower() == "status": + warn( + WSGIWarning( + "The status header is not supported due to " + "conflicts with the CGI spec." + ), + stacklevel=3, + ) + + if exc_info is not None and not isinstance(exc_info, tuple): + warn(WSGIWarning("invalid value for exc_info"), stacklevel=3) + + headers = Headers(headers) + self.check_headers(headers) + + return status_code, headers + + def check_headers(self, headers): + etag = headers.get("etag") + + if etag is not None: + if etag.startswith(("W/", "w/")): + if etag.startswith("w/"): + warn( + HTTPWarning("weak etag indicator should be upcase."), + stacklevel=4, + ) + + etag = etag[2:] + + if not (etag[:1] == etag[-1:] == '"'): + warn(HTTPWarning("unquoted etag emitted."), stacklevel=4) + + location = headers.get("location") + + if location is not None: + if not urlparse(location).netloc: + warn( + HTTPWarning("absolute URLs required for location header"), + stacklevel=4, + ) + + def check_iterator(self, app_iter): + if isinstance(app_iter, string_types): + warn( + "The application returned astring. The response will send one character" + " at a time to the client, which will kill performance. Return a list" + " or iterable instead.", + WSGIWarning, + stacklevel=3, + ) + + def __call__(self, *args, **kwargs): + if len(args) != 2: + warn("A WSGI app takes two arguments.", WSGIWarning, stacklevel=2) + + if kwargs: + warn( + "A WSGI app does not take keyword arguments.", WSGIWarning, stacklevel=2 + ) + + environ, start_response = args + + self.check_environ(environ) + environ["wsgi.input"] = InputStream(environ["wsgi.input"]) + environ["wsgi.errors"] = ErrorStream(environ["wsgi.errors"]) + + # Hook our own file wrapper in so that applications will always + # iterate to the end and we can check the content length. + environ["wsgi.file_wrapper"] = FileWrapper + + headers_set = [] + chunks = [] + + def checking_start_response(*args, **kwargs): + if len(args) not in (2, 3): + warn( + "Invalid number of arguments: %s, expected 2 or 3." % len(args), + WSGIWarning, + stacklevel=2, + ) + + if kwargs: + warn("'start_response' does not take keyword arguments.", WSGIWarning) + + status, headers = args[:2] + + if len(args) == 3: + exc_info = args[2] + else: + exc_info = None + + headers_set[:] = self.check_start_response(status, headers, exc_info) + return GuardedWrite(start_response(status, headers, exc_info), chunks) + + app_iter = self.app(environ, checking_start_response) + self.check_iterator(app_iter) + return GuardedIterator(app_iter, headers_set, chunks) diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/profiler.py b/env/lib/python3.6/site-packages/werkzeug/middleware/profiler.py new file mode 100644 index 0000000..32a14d9 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/middleware/profiler.py @@ -0,0 +1,132 @@ +""" +Application Profiler +==================== + +This module provides a middleware that profiles each request with the +:mod:`cProfile` module. This can help identify bottlenecks in your code +that may be slowing down your application. + +.. autoclass:: ProfilerMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +from __future__ import print_function + +import os.path +import sys +import time +from pstats import Stats + +try: + from cProfile import Profile +except ImportError: + from profile import Profile + + +class ProfilerMiddleware(object): + """Wrap a WSGI application and profile the execution of each + request. Responses are buffered so that timings are more exact. + + If ``stream`` is given, :class:`pstats.Stats` are written to it + after each request. If ``profile_dir`` is given, :mod:`cProfile` + data files are saved to that directory, one file per request. + + The filename can be customized by passing ``filename_format``. If + it is a string, it will be formatted using :meth:`str.format` with + the following fields available: + + - ``{method}`` - The request method; GET, POST, etc. + - ``{path}`` - The request path or 'root' should one not exist. + - ``{elapsed}`` - The elapsed time of the request. + - ``{time}`` - The time of the request. + + If it is a callable, it will be called with the WSGI ``environ`` + dict and should return a filename. + + :param app: The WSGI application to wrap. + :param stream: Write stats to this stream. Disable with ``None``. + :param sort_by: A tuple of columns to sort stats by. See + :meth:`pstats.Stats.sort_stats`. + :param restrictions: A tuple of restrictions to filter stats by. See + :meth:`pstats.Stats.print_stats`. + :param profile_dir: Save profile data files to this directory. + :param filename_format: Format string for profile data file names, + or a callable returning a name. See explanation above. + + .. code-block:: python + + from werkzeug.middleware.profiler import ProfilerMiddleware + app = ProfilerMiddleware(app) + + .. versionchanged:: 0.15 + Stats are written even if ``profile_dir`` is given, and can be + disable by passing ``stream=None``. + + .. versionadded:: 0.15 + Added ``filename_format``. + + .. versionadded:: 0.9 + Added ``restrictions`` and ``profile_dir``. + """ + + def __init__( + self, + app, + stream=sys.stdout, + sort_by=("time", "calls"), + restrictions=(), + profile_dir=None, + filename_format="{method}.{path}.{elapsed:.0f}ms.{time:.0f}.prof", + ): + self._app = app + self._stream = stream + self._sort_by = sort_by + self._restrictions = restrictions + self._profile_dir = profile_dir + self._filename_format = filename_format + + def __call__(self, environ, start_response): + response_body = [] + + def catching_start_response(status, headers, exc_info=None): + start_response(status, headers, exc_info) + return response_body.append + + def runapp(): + app_iter = self._app(environ, catching_start_response) + response_body.extend(app_iter) + + if hasattr(app_iter, "close"): + app_iter.close() + + profile = Profile() + start = time.time() + profile.runcall(runapp) + body = b"".join(response_body) + elapsed = time.time() - start + + if self._profile_dir is not None: + if callable(self._filename_format): + filename = self._filename_format(environ) + else: + filename = self._filename_format.format( + method=environ["REQUEST_METHOD"], + path=( + environ.get("PATH_INFO").strip("/").replace("/", ".") or "root" + ), + elapsed=elapsed * 1000.0, + time=time.time(), + ) + filename = os.path.join(self._profile_dir, filename) + profile.dump_stats(filename) + + if self._stream is not None: + stats = Stats(profile, stream=self._stream) + stats.sort_stats(*self._sort_by) + print("-" * 80, file=self._stream) + print("PATH: {!r}".format(environ.get("PATH_INFO", "")), file=self._stream) + stats.print_stats(*self._restrictions) + print("-" * 80 + "\n", file=self._stream) + + return [body] diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/proxy_fix.py b/env/lib/python3.6/site-packages/werkzeug/middleware/proxy_fix.py new file mode 100644 index 0000000..f393f61 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/middleware/proxy_fix.py @@ -0,0 +1,169 @@ +""" +X-Forwarded-For Proxy Fix +========================= + +This module provides a middleware that adjusts the WSGI environ based on +``X-Forwarded-`` headers that proxies in front of an application may +set. + +When an application is running behind a proxy server, WSGI may see the +request as coming from that server rather than the real client. Proxies +set various headers to track where the request actually came from. + +This middleware should only be applied if the application is actually +behind such a proxy, and should be configured with the number of proxies +that are chained in front of it. Not all proxies set all the headers. +Since incoming headers can be faked, you must set how many proxies are +setting each header so the middleware knows what to trust. + +.. autoclass:: ProxyFix + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +from werkzeug.http import parse_list_header + + +class ProxyFix(object): + """Adjust the WSGI environ based on ``X-Forwarded-`` that proxies in + front of the application may set. + + - ``X-Forwarded-For`` sets ``REMOTE_ADDR``. + - ``X-Forwarded-Proto`` sets ``wsgi.url_scheme``. + - ``X-Forwarded-Host`` sets ``HTTP_HOST``, ``SERVER_NAME``, and + ``SERVER_PORT``. + - ``X-Forwarded-Port`` sets ``HTTP_HOST`` and ``SERVER_PORT``. + - ``X-Forwarded-Prefix`` sets ``SCRIPT_NAME``. + + You must tell the middleware how many proxies set each header so it + knows what values to trust. It is a security issue to trust values + that came from the client rather than a proxy. + + The original values of the headers are stored in the WSGI + environ as ``werkzeug.proxy_fix.orig``, a dict. + + :param app: The WSGI application to wrap. + :param x_for: Number of values to trust for ``X-Forwarded-For``. + :param x_proto: Number of values to trust for ``X-Forwarded-Proto``. + :param x_host: Number of values to trust for ``X-Forwarded-Host``. + :param x_port: Number of values to trust for ``X-Forwarded-Port``. + :param x_prefix: Number of values to trust for + ``X-Forwarded-Prefix``. + + .. code-block:: python + + from werkzeug.middleware.proxy_fix import ProxyFix + # App is behind one proxy that sets the -For and -Host headers. + app = ProxyFix(app, x_for=1, x_host=1) + + .. versionchanged:: 1.0 + Deprecated code has been removed: + + * The ``num_proxies`` argument and attribute. + * The ``get_remote_addr`` method. + * The environ keys ``orig_remote_addr``, + ``orig_wsgi_url_scheme``, and ``orig_http_host``. + + .. versionchanged:: 0.15 + All headers support multiple values. The ``num_proxies`` + argument is deprecated. Each header is configured with a + separate number of trusted proxies. + + .. versionchanged:: 0.15 + Original WSGI environ values are stored in the + ``werkzeug.proxy_fix.orig`` dict. ``orig_remote_addr``, + ``orig_wsgi_url_scheme``, and ``orig_http_host`` are deprecated + and will be removed in 1.0. + + .. versionchanged:: 0.15 + Support ``X-Forwarded-Port`` and ``X-Forwarded-Prefix``. + + .. versionchanged:: 0.15 + ``X-Forwarded-Host`` and ``X-Forwarded-Port`` modify + ``SERVER_NAME`` and ``SERVER_PORT``. + """ + + def __init__(self, app, x_for=1, x_proto=1, x_host=0, x_port=0, x_prefix=0): + self.app = app + self.x_for = x_for + self.x_proto = x_proto + self.x_host = x_host + self.x_port = x_port + self.x_prefix = x_prefix + + def _get_real_value(self, trusted, value): + """Get the real value from a list header based on the configured + number of trusted proxies. + + :param trusted: Number of values to trust in the header. + :param value: Comma separated list header value to parse. + :return: The real value, or ``None`` if there are fewer values + than the number of trusted proxies. + + .. versionchanged:: 1.0 + Renamed from ``_get_trusted_comma``. + + .. versionadded:: 0.15 + """ + if not (trusted and value): + return + values = parse_list_header(value) + if len(values) >= trusted: + return values[-trusted] + + def __call__(self, environ, start_response): + """Modify the WSGI environ based on the various ``Forwarded`` + headers before calling the wrapped application. Store the + original environ values in ``werkzeug.proxy_fix.orig_{key}``. + """ + environ_get = environ.get + orig_remote_addr = environ_get("REMOTE_ADDR") + orig_wsgi_url_scheme = environ_get("wsgi.url_scheme") + orig_http_host = environ_get("HTTP_HOST") + environ.update( + { + "werkzeug.proxy_fix.orig": { + "REMOTE_ADDR": orig_remote_addr, + "wsgi.url_scheme": orig_wsgi_url_scheme, + "HTTP_HOST": orig_http_host, + "SERVER_NAME": environ_get("SERVER_NAME"), + "SERVER_PORT": environ_get("SERVER_PORT"), + "SCRIPT_NAME": environ_get("SCRIPT_NAME"), + } + } + ) + + x_for = self._get_real_value(self.x_for, environ_get("HTTP_X_FORWARDED_FOR")) + if x_for: + environ["REMOTE_ADDR"] = x_for + + x_proto = self._get_real_value( + self.x_proto, environ_get("HTTP_X_FORWARDED_PROTO") + ) + if x_proto: + environ["wsgi.url_scheme"] = x_proto + + x_host = self._get_real_value(self.x_host, environ_get("HTTP_X_FORWARDED_HOST")) + if x_host: + environ["HTTP_HOST"] = x_host + parts = x_host.split(":", 1) + environ["SERVER_NAME"] = parts[0] + if len(parts) == 2: + environ["SERVER_PORT"] = parts[1] + + x_port = self._get_real_value(self.x_port, environ_get("HTTP_X_FORWARDED_PORT")) + if x_port: + host = environ.get("HTTP_HOST") + if host: + parts = host.split(":", 1) + host = parts[0] if len(parts) == 2 else host + environ["HTTP_HOST"] = "%s:%s" % (host, x_port) + environ["SERVER_PORT"] = x_port + + x_prefix = self._get_real_value( + self.x_prefix, environ_get("HTTP_X_FORWARDED_PREFIX") + ) + if x_prefix: + environ["SCRIPT_NAME"] = x_prefix + + return self.app(environ, start_response) diff --git a/env/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py b/env/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py new file mode 100644 index 0000000..b6e3764 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py @@ -0,0 +1,293 @@ +""" +Serve Shared Static Files +========================= + +.. autoclass:: SharedDataMiddleware + :members: is_allowed + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +import mimetypes +import os +import pkgutil +import posixpath +from datetime import datetime +from io import BytesIO +from time import mktime +from time import time +from zlib import adler32 + +from .._compat import PY2 +from .._compat import string_types +from ..filesystem import get_filesystem_encoding +from ..http import http_date +from ..http import is_resource_modified +from ..security import safe_join +from ..utils import get_content_type +from ..wsgi import get_path_info +from ..wsgi import wrap_file + + +class SharedDataMiddleware(object): + + """A WSGI middleware that provides static content for development + environments or simple server setups. Usage is quite simple:: + + import os + from werkzeug.middleware.shared_data import SharedDataMiddleware + + app = SharedDataMiddleware(app, { + '/static': os.path.join(os.path.dirname(__file__), 'static') + }) + + The contents of the folder ``./shared`` will now be available on + ``http://example.com/shared/``. This is pretty useful during development + because a standalone media server is not required. One can also mount + files on the root folder and still continue to use the application because + the shared data middleware forwards all unhandled requests to the + application, even if the requests are below one of the shared folders. + + If `pkg_resources` is available you can also tell the middleware to serve + files from package data:: + + app = SharedDataMiddleware(app, { + '/static': ('myapplication', 'static') + }) + + This will then serve the ``static`` folder in the `myapplication` + Python package. + + The optional `disallow` parameter can be a list of :func:`~fnmatch.fnmatch` + rules for files that are not accessible from the web. If `cache` is set to + `False` no caching headers are sent. + + Currently the middleware does not support non ASCII filenames. If the + encoding on the file system happens to be the encoding of the URI it may + work but this could also be by accident. We strongly suggest using ASCII + only file names for static files. + + The middleware will guess the mimetype using the Python `mimetype` + module. If it's unable to figure out the charset it will fall back + to `fallback_mimetype`. + + :param app: the application to wrap. If you don't want to wrap an + application you can pass it :exc:`NotFound`. + :param exports: a list or dict of exported files and folders. + :param disallow: a list of :func:`~fnmatch.fnmatch` rules. + :param cache: enable or disable caching headers. + :param cache_timeout: the cache timeout in seconds for the headers. + :param fallback_mimetype: The fallback mimetype for unknown files. + + .. versionchanged:: 1.0 + The default ``fallback_mimetype`` is + ``application/octet-stream``. If a filename looks like a text + mimetype, the ``utf-8`` charset is added to it. + + .. versionadded:: 0.6 + Added ``fallback_mimetype``. + + .. versionchanged:: 0.5 + Added ``cache_timeout``. + """ + + def __init__( + self, + app, + exports, + disallow=None, + cache=True, + cache_timeout=60 * 60 * 12, + fallback_mimetype="application/octet-stream", + ): + self.app = app + self.exports = [] + self.cache = cache + self.cache_timeout = cache_timeout + + if hasattr(exports, "items"): + exports = exports.items() + + for key, value in exports: + if isinstance(value, tuple): + loader = self.get_package_loader(*value) + elif isinstance(value, string_types): + if os.path.isfile(value): + loader = self.get_file_loader(value) + else: + loader = self.get_directory_loader(value) + else: + raise TypeError("unknown def %r" % value) + + self.exports.append((key, loader)) + + if disallow is not None: + from fnmatch import fnmatch + + self.is_allowed = lambda x: not fnmatch(x, disallow) + + self.fallback_mimetype = fallback_mimetype + + def is_allowed(self, filename): + """Subclasses can override this method to disallow the access to + certain files. However by providing `disallow` in the constructor + this method is overwritten. + """ + return True + + def _opener(self, filename): + return lambda: ( + open(filename, "rb"), + datetime.utcfromtimestamp(os.path.getmtime(filename)), + int(os.path.getsize(filename)), + ) + + def get_file_loader(self, filename): + return lambda x: (os.path.basename(filename), self._opener(filename)) + + def get_package_loader(self, package, package_path): + loadtime = datetime.utcnow() + provider = pkgutil.get_loader(package) + + if hasattr(provider, "get_resource_reader"): + # Python 3 + reader = provider.get_resource_reader(package) + + def loader(path): + if path is None: + return None, None + + path = safe_join(package_path, path) + basename = posixpath.basename(path) + + try: + resource = reader.open_resource(path) + except IOError: + return None, None + + if isinstance(resource, BytesIO): + return ( + basename, + lambda: (resource, loadtime, len(resource.getvalue())), + ) + + return ( + basename, + lambda: ( + resource, + datetime.utcfromtimestamp(os.path.getmtime(resource.name)), + os.path.getsize(resource.name), + ), + ) + + else: + # Python 2 + package_filename = provider.get_filename(package) + is_filesystem = os.path.exists(package_filename) + root = os.path.join(os.path.dirname(package_filename), package_path) + + def loader(path): + if path is None: + return None, None + + path = safe_join(root, path) + basename = posixpath.basename(path) + + if is_filesystem: + if not os.path.isfile(path): + return None, None + + return basename, self._opener(path) + + try: + data = provider.get_data(path) + except IOError: + return None, None + + return basename, lambda: (BytesIO(data), loadtime, len(data)) + + return loader + + def get_directory_loader(self, directory): + def loader(path): + if path is not None: + path = safe_join(directory, path) + else: + path = directory + + if os.path.isfile(path): + return os.path.basename(path), self._opener(path) + + return None, None + + return loader + + def generate_etag(self, mtime, file_size, real_filename): + if not isinstance(real_filename, bytes): + real_filename = real_filename.encode(get_filesystem_encoding()) + + return "wzsdm-%d-%s-%s" % ( + mktime(mtime.timetuple()), + file_size, + adler32(real_filename) & 0xFFFFFFFF, + ) + + def __call__(self, environ, start_response): + path = get_path_info(environ) + + if PY2: + path = path.encode(get_filesystem_encoding()) + + file_loader = None + + for search_path, loader in self.exports: + if search_path == path: + real_filename, file_loader = loader(None) + + if file_loader is not None: + break + + if not search_path.endswith("/"): + search_path += "/" + + if path.startswith(search_path): + real_filename, file_loader = loader(path[len(search_path) :]) + + if file_loader is not None: + break + + if file_loader is None or not self.is_allowed(real_filename): + return self.app(environ, start_response) + + guessed_type = mimetypes.guess_type(real_filename) + mime_type = get_content_type(guessed_type[0] or self.fallback_mimetype, "utf-8") + f, mtime, file_size = file_loader() + + headers = [("Date", http_date())] + + if self.cache: + timeout = self.cache_timeout + etag = self.generate_etag(mtime, file_size, real_filename) + headers += [ + ("Etag", '"%s"' % etag), + ("Cache-Control", "max-age=%d, public" % timeout), + ] + + if not is_resource_modified(environ, etag, last_modified=mtime): + f.close() + start_response("304 Not Modified", headers) + return [] + + headers.append(("Expires", http_date(time() + timeout))) + else: + headers.append(("Cache-Control", "public")) + + headers.extend( + ( + ("Content-Type", mime_type), + ("Content-Length", str(file_size)), + ("Last-Modified", http_date(mtime)), + ) + ) + start_response("200 OK", headers) + return wrap_file(environ, f) diff --git a/env/lib/python3.6/site-packages/werkzeug/posixemulation.py b/env/lib/python3.6/site-packages/werkzeug/posixemulation.py new file mode 100644 index 0000000..696b456 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/posixemulation.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +r""" + werkzeug.posixemulation + ~~~~~~~~~~~~~~~~~~~~~~~ + + Provides a POSIX emulation for some features that are relevant to + web applications. The main purpose is to simplify support for + systems such as Windows NT that are not 100% POSIX compatible. + + Currently this only implements a :func:`rename` function that + follows POSIX semantics. Eg: if the target file already exists it + will be replaced without asking. + + This module was introduced in 0.6.1 and is not a public interface. + It might become one in later versions of Werkzeug. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import errno +import os +import random +import sys +import time + +from ._compat import to_unicode +from .filesystem import get_filesystem_encoding + +can_rename_open_file = False + +if os.name == "nt": + try: + import ctypes + + _MOVEFILE_REPLACE_EXISTING = 0x1 + _MOVEFILE_WRITE_THROUGH = 0x8 + _MoveFileEx = ctypes.windll.kernel32.MoveFileExW + + def _rename(src, dst): + src = to_unicode(src, get_filesystem_encoding()) + dst = to_unicode(dst, get_filesystem_encoding()) + if _rename_atomic(src, dst): + return True + retry = 0 + rv = False + while not rv and retry < 100: + rv = _MoveFileEx( + src, dst, _MOVEFILE_REPLACE_EXISTING | _MOVEFILE_WRITE_THROUGH + ) + if not rv: + time.sleep(0.001) + retry += 1 + return rv + + # new in Vista and Windows Server 2008 + _CreateTransaction = ctypes.windll.ktmw32.CreateTransaction + _CommitTransaction = ctypes.windll.ktmw32.CommitTransaction + _MoveFileTransacted = ctypes.windll.kernel32.MoveFileTransactedW + _CloseHandle = ctypes.windll.kernel32.CloseHandle + can_rename_open_file = True + + def _rename_atomic(src, dst): + ta = _CreateTransaction(None, 0, 0, 0, 0, 1000, "Werkzeug rename") + if ta == -1: + return False + try: + retry = 0 + rv = False + while not rv and retry < 100: + rv = _MoveFileTransacted( + src, + dst, + None, + None, + _MOVEFILE_REPLACE_EXISTING | _MOVEFILE_WRITE_THROUGH, + ta, + ) + if rv: + rv = _CommitTransaction(ta) + break + else: + time.sleep(0.001) + retry += 1 + return rv + finally: + _CloseHandle(ta) + + except Exception: + + def _rename(src, dst): + return False + + def _rename_atomic(src, dst): + return False + + def rename(src, dst): + # Try atomic or pseudo-atomic rename + if _rename(src, dst): + return + # Fall back to "move away and replace" + try: + os.rename(src, dst) + except OSError as e: + if e.errno != errno.EEXIST: + raise + old = "%s-%08x" % (dst, random.randint(0, sys.maxsize)) + os.rename(dst, old) + os.rename(src, dst) + try: + os.unlink(old) + except Exception: + pass + + +else: + rename = os.rename + can_rename_open_file = True diff --git a/env/lib/python3.6/site-packages/werkzeug/routing.py b/env/lib/python3.6/site-packages/werkzeug/routing.py new file mode 100644 index 0000000..e090c66 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/routing.py @@ -0,0 +1,2210 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.routing + ~~~~~~~~~~~~~~~~ + + When it comes to combining multiple controller or view functions (however + you want to call them) you need a dispatcher. A simple way would be + applying regular expression tests on the ``PATH_INFO`` and calling + registered callback functions that return the value then. + + This module implements a much more powerful system than simple regular + expression matching because it can also convert values in the URLs and + build URLs. + + Here a simple example that creates an URL map for an application with + two subdomains (www and kb) and some URL rules: + + >>> m = Map([ + ... # Static URLs + ... Rule('/', endpoint='static/index'), + ... Rule('/about', endpoint='static/about'), + ... Rule('/help', endpoint='static/help'), + ... # Knowledge Base + ... Subdomain('kb', [ + ... Rule('/', endpoint='kb/index'), + ... Rule('/browse/', endpoint='kb/browse'), + ... Rule('/browse//', endpoint='kb/browse'), + ... Rule('/browse//', endpoint='kb/browse') + ... ]) + ... ], default_subdomain='www') + + If the application doesn't use subdomains it's perfectly fine to not set + the default subdomain and not use the `Subdomain` rule factory. The endpoint + in the rules can be anything, for example import paths or unique + identifiers. The WSGI application can use those endpoints to get the + handler for that URL. It doesn't have to be a string at all but it's + recommended. + + Now it's possible to create a URL adapter for one of the subdomains and + build URLs: + + >>> c = m.bind('example.com') + >>> c.build("kb/browse", dict(id=42)) + 'http://kb.example.com/browse/42/' + >>> c.build("kb/browse", dict()) + 'http://kb.example.com/browse/' + >>> c.build("kb/browse", dict(id=42, page=3)) + 'http://kb.example.com/browse/42/3' + >>> c.build("static/about") + '/about' + >>> c.build("static/index", force_external=True) + 'http://www.example.com/' + + >>> c = m.bind('example.com', subdomain='kb') + >>> c.build("static/about") + 'http://www.example.com/about' + + The first argument to bind is the server name *without* the subdomain. + Per default it will assume that the script is mounted on the root, but + often that's not the case so you can provide the real mount point as + second argument: + + >>> c = m.bind('example.com', '/applications/example') + + The third argument can be the subdomain, if not given the default + subdomain is used. For more details about binding have a look at the + documentation of the `MapAdapter`. + + And here is how you can match URLs: + + >>> c = m.bind('example.com') + >>> c.match("/") + ('static/index', {}) + >>> c.match("/about") + ('static/about', {}) + >>> c = m.bind('example.com', '/', 'kb') + >>> c.match("/") + ('kb/index', {}) + >>> c.match("/browse/42/23") + ('kb/browse', {'id': 42, 'page': 23}) + + If matching fails you get a `NotFound` exception, if the rule thinks + it's a good idea to redirect (for example because the URL was defined + to have a slash at the end but the request was missing that slash) it + will raise a `RequestRedirect` exception. Both are subclasses of the + `HTTPException` so you can use those errors as responses in the + application. + + If matching succeeded but the URL rule was incompatible to the given + method (for example there were only rules for `GET` and `HEAD` and + routing system tried to match a `POST` request) a `MethodNotAllowed` + exception is raised. + + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import ast +import difflib +import posixpath +import re +import uuid +import warnings +from pprint import pformat +from threading import Lock + +from ._compat import implements_to_string +from ._compat import iteritems +from ._compat import itervalues +from ._compat import native_string_result +from ._compat import string_types +from ._compat import text_type +from ._compat import to_bytes +from ._compat import to_unicode +from ._compat import wsgi_decoding_dance +from ._internal import _encode_idna +from ._internal import _get_environ +from .datastructures import ImmutableDict +from .datastructures import MultiDict +from .exceptions import BadHost +from .exceptions import BadRequest +from .exceptions import HTTPException +from .exceptions import MethodNotAllowed +from .exceptions import NotFound +from .urls import _fast_url_quote +from .urls import url_encode +from .urls import url_join +from .urls import url_quote +from .utils import cached_property +from .utils import format_string +from .utils import redirect +from .wsgi import get_host + +_rule_re = re.compile( + r""" + (?P[^<]*) # static rule data + < + (?: + (?P[a-zA-Z_][a-zA-Z0-9_]*) # converter name + (?:\((?P.*?)\))? # converter arguments + \: # variable delimiter + )? + (?P[a-zA-Z_][a-zA-Z0-9_]*) # variable name + > + """, + re.VERBOSE, +) +_simple_rule_re = re.compile(r"<([^>]+)>") +_converter_args_re = re.compile( + r""" + ((?P\w+)\s*=\s*)? + (?P + True|False| + \d+.\d+| + \d+.| + \d+| + [\w\d_.]+| + [urUR]?(?P"[^"]*?"|'[^']*') + )\s*, + """, + re.VERBOSE | re.UNICODE, +) + + +_PYTHON_CONSTANTS = {"None": None, "True": True, "False": False} + + +def _pythonize(value): + if value in _PYTHON_CONSTANTS: + return _PYTHON_CONSTANTS[value] + for convert in int, float: + try: + return convert(value) + except ValueError: + pass + if value[:1] == value[-1:] and value[0] in "\"'": + value = value[1:-1] + return text_type(value) + + +def parse_converter_args(argstr): + argstr += "," + args = [] + kwargs = {} + + for item in _converter_args_re.finditer(argstr): + value = item.group("stringval") + if value is None: + value = item.group("value") + value = _pythonize(value) + if not item.group("name"): + args.append(value) + else: + name = item.group("name") + kwargs[name] = value + + return tuple(args), kwargs + + +def parse_rule(rule): + """Parse a rule and return it as generator. Each iteration yields tuples + in the form ``(converter, arguments, variable)``. If the converter is + `None` it's a static url part, otherwise it's a dynamic one. + + :internal: + """ + pos = 0 + end = len(rule) + do_match = _rule_re.match + used_names = set() + while pos < end: + m = do_match(rule, pos) + if m is None: + break + data = m.groupdict() + if data["static"]: + yield None, None, data["static"] + variable = data["variable"] + converter = data["converter"] or "default" + if variable in used_names: + raise ValueError("variable name %r used twice." % variable) + used_names.add(variable) + yield converter, data["args"] or None, variable + pos = m.end() + if pos < end: + remaining = rule[pos:] + if ">" in remaining or "<" in remaining: + raise ValueError("malformed url rule: %r" % rule) + yield None, None, remaining + + +class RoutingException(Exception): + """Special exceptions that require the application to redirect, notifying + about missing urls, etc. + + :internal: + """ + + +class RequestRedirect(HTTPException, RoutingException): + """Raise if the map requests a redirect. This is for example the case if + `strict_slashes` are activated and an url that requires a trailing slash. + + The attribute `new_url` contains the absolute destination url. + """ + + code = 308 + + def __init__(self, new_url): + RoutingException.__init__(self, new_url) + self.new_url = new_url + + def get_response(self, environ=None): + return redirect(self.new_url, self.code) + + +class RequestPath(RoutingException): + """Internal exception.""" + + __slots__ = ("path_info",) + + def __init__(self, path_info): + self.path_info = path_info + + +class RequestAliasRedirect(RoutingException): # noqa: B903 + """This rule is an alias and wants to redirect to the canonical URL.""" + + def __init__(self, matched_values): + self.matched_values = matched_values + + +@implements_to_string +class BuildError(RoutingException, LookupError): + """Raised if the build system cannot find a URL for an endpoint with the + values provided. + """ + + def __init__(self, endpoint, values, method, adapter=None): + LookupError.__init__(self, endpoint, values, method) + self.endpoint = endpoint + self.values = values + self.method = method + self.adapter = adapter + + @cached_property + def suggested(self): + return self.closest_rule(self.adapter) + + def closest_rule(self, adapter): + def _score_rule(rule): + return sum( + [ + 0.98 + * difflib.SequenceMatcher( + None, rule.endpoint, self.endpoint + ).ratio(), + 0.01 * bool(set(self.values or ()).issubset(rule.arguments)), + 0.01 * bool(rule.methods and self.method in rule.methods), + ] + ) + + if adapter and adapter.map._rules: + return max(adapter.map._rules, key=_score_rule) + + def __str__(self): + message = [] + message.append("Could not build url for endpoint %r" % self.endpoint) + if self.method: + message.append(" (%r)" % self.method) + if self.values: + message.append(" with values %r" % sorted(self.values.keys())) + message.append(".") + if self.suggested: + if self.endpoint == self.suggested.endpoint: + if self.method and self.method not in self.suggested.methods: + message.append( + " Did you mean to use methods %r?" + % sorted(self.suggested.methods) + ) + missing_values = self.suggested.arguments.union( + set(self.suggested.defaults or ()) + ) - set(self.values.keys()) + if missing_values: + message.append( + " Did you forget to specify values %r?" % sorted(missing_values) + ) + else: + message.append(" Did you mean %r instead?" % self.suggested.endpoint) + return u"".join(message) + + +class WebsocketMismatch(BadRequest): + """The only matched rule is either a WebSocket and the request is + HTTP, or the rule is HTTP and the request is a WebSocket. + """ + + +class ValidationError(ValueError): + """Validation error. If a rule converter raises this exception the rule + does not match the current URL and the next URL is tried. + """ + + +class RuleFactory(object): + """As soon as you have more complex URL setups it's a good idea to use rule + factories to avoid repetitive tasks. Some of them are builtin, others can + be added by subclassing `RuleFactory` and overriding `get_rules`. + """ + + def get_rules(self, map): + """Subclasses of `RuleFactory` have to override this method and return + an iterable of rules.""" + raise NotImplementedError() + + +class Subdomain(RuleFactory): + """All URLs provided by this factory have the subdomain set to a + specific domain. For example if you want to use the subdomain for + the current language this can be a good setup:: + + url_map = Map([ + Rule('/', endpoint='#select_language'), + Subdomain('', [ + Rule('/', endpoint='index'), + Rule('/about', endpoint='about'), + Rule('/help', endpoint='help') + ]) + ]) + + All the rules except for the ``'#select_language'`` endpoint will now + listen on a two letter long subdomain that holds the language code + for the current request. + """ + + def __init__(self, subdomain, rules): + self.subdomain = subdomain + self.rules = rules + + def get_rules(self, map): + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + rule = rule.empty() + rule.subdomain = self.subdomain + yield rule + + +class Submount(RuleFactory): + """Like `Subdomain` but prefixes the URL rule with a given string:: + + url_map = Map([ + Rule('/', endpoint='index'), + Submount('/blog', [ + Rule('/', endpoint='blog/index'), + Rule('/entry/', endpoint='blog/show') + ]) + ]) + + Now the rule ``'blog/show'`` matches ``/blog/entry/``. + """ + + def __init__(self, path, rules): + self.path = path.rstrip("/") + self.rules = rules + + def get_rules(self, map): + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + rule = rule.empty() + rule.rule = self.path + rule.rule + yield rule + + +class EndpointPrefix(RuleFactory): + """Prefixes all endpoints (which must be strings for this factory) with + another string. This can be useful for sub applications:: + + url_map = Map([ + Rule('/', endpoint='index'), + EndpointPrefix('blog/', [Submount('/blog', [ + Rule('/', endpoint='index'), + Rule('/entry/', endpoint='show') + ])]) + ]) + """ + + def __init__(self, prefix, rules): + self.prefix = prefix + self.rules = rules + + def get_rules(self, map): + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + rule = rule.empty() + rule.endpoint = self.prefix + rule.endpoint + yield rule + + +class RuleTemplate(object): + """Returns copies of the rules wrapped and expands string templates in + the endpoint, rule, defaults or subdomain sections. + + Here a small example for such a rule template:: + + from werkzeug.routing import Map, Rule, RuleTemplate + + resource = RuleTemplate([ + Rule('/$name/', endpoint='$name.list'), + Rule('/$name/', endpoint='$name.show') + ]) + + url_map = Map([resource(name='user'), resource(name='page')]) + + When a rule template is called the keyword arguments are used to + replace the placeholders in all the string parameters. + """ + + def __init__(self, rules): + self.rules = list(rules) + + def __call__(self, *args, **kwargs): + return RuleTemplateFactory(self.rules, dict(*args, **kwargs)) + + +class RuleTemplateFactory(RuleFactory): + """A factory that fills in template variables into rules. Used by + `RuleTemplate` internally. + + :internal: + """ + + def __init__(self, rules, context): + self.rules = rules + self.context = context + + def get_rules(self, map): + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + new_defaults = subdomain = None + if rule.defaults: + new_defaults = {} + for key, value in iteritems(rule.defaults): + if isinstance(value, string_types): + value = format_string(value, self.context) + new_defaults[key] = value + if rule.subdomain is not None: + subdomain = format_string(rule.subdomain, self.context) + new_endpoint = rule.endpoint + if isinstance(new_endpoint, string_types): + new_endpoint = format_string(new_endpoint, self.context) + yield Rule( + format_string(rule.rule, self.context), + new_defaults, + subdomain, + rule.methods, + rule.build_only, + new_endpoint, + rule.strict_slashes, + ) + + +def _prefix_names(src): + """ast parse and prefix names with `.` to avoid collision with user vars""" + tree = ast.parse(src).body[0] + if isinstance(tree, ast.Expr): + tree = tree.value + for node in ast.walk(tree): + if isinstance(node, ast.Name): + node.id = "." + node.id + return tree + + +_CALL_CONVERTER_CODE_FMT = "self._converters[{elem!r}].to_url()" +_IF_KWARGS_URL_ENCODE_CODE = """\ +if kwargs: + q = '?' + params = self._encode_query_vars(kwargs) +else: + q = params = '' +""" +_IF_KWARGS_URL_ENCODE_AST = _prefix_names(_IF_KWARGS_URL_ENCODE_CODE) +_URL_ENCODE_AST_NAMES = (_prefix_names("q"), _prefix_names("params")) + + +@implements_to_string +class Rule(RuleFactory): + """A Rule represents one URL pattern. There are some options for `Rule` + that change the way it behaves and are passed to the `Rule` constructor. + Note that besides the rule-string all arguments *must* be keyword arguments + in order to not break the application on Werkzeug upgrades. + + `string` + Rule strings basically are just normal URL paths with placeholders in + the format ```` where the converter and the + arguments are optional. If no converter is defined the `default` + converter is used which means `string` in the normal configuration. + + URL rules that end with a slash are branch URLs, others are leaves. + If you have `strict_slashes` enabled (which is the default), all + branch URLs that are matched without a trailing slash will trigger a + redirect to the same URL with the missing slash appended. + + The converters are defined on the `Map`. + + `endpoint` + The endpoint for this rule. This can be anything. A reference to a + function, a string, a number etc. The preferred way is using a string + because the endpoint is used for URL generation. + + `defaults` + An optional dict with defaults for other rules with the same endpoint. + This is a bit tricky but useful if you want to have unique URLs:: + + url_map = Map([ + Rule('/all/', defaults={'page': 1}, endpoint='all_entries'), + Rule('/all/page/', endpoint='all_entries') + ]) + + If a user now visits ``http://example.com/all/page/1`` he will be + redirected to ``http://example.com/all/``. If `redirect_defaults` is + disabled on the `Map` instance this will only affect the URL + generation. + + `subdomain` + The subdomain rule string for this rule. If not specified the rule + only matches for the `default_subdomain` of the map. If the map is + not bound to a subdomain this feature is disabled. + + Can be useful if you want to have user profiles on different subdomains + and all subdomains are forwarded to your application:: + + url_map = Map([ + Rule('/', subdomain='', endpoint='user/homepage'), + Rule('/stats', subdomain='', endpoint='user/stats') + ]) + + `methods` + A sequence of http methods this rule applies to. If not specified, all + methods are allowed. For example this can be useful if you want different + endpoints for `POST` and `GET`. If methods are defined and the path + matches but the method matched against is not in this list or in the + list of another rule for that path the error raised is of the type + `MethodNotAllowed` rather than `NotFound`. If `GET` is present in the + list of methods and `HEAD` is not, `HEAD` is added automatically. + + `strict_slashes` + Override the `Map` setting for `strict_slashes` only for this rule. If + not specified the `Map` setting is used. + + `merge_slashes` + Override :attr:`Map.merge_slashes` for this rule. + + `build_only` + Set this to True and the rule will never match but will create a URL + that can be build. This is useful if you have resources on a subdomain + or folder that are not handled by the WSGI application (like static data) + + `redirect_to` + If given this must be either a string or callable. In case of a + callable it's called with the url adapter that triggered the match and + the values of the URL as keyword arguments and has to return the target + for the redirect, otherwise it has to be a string with placeholders in + rule syntax:: + + def foo_with_slug(adapter, id): + # ask the database for the slug for the old id. this of + # course has nothing to do with werkzeug. + return 'foo/' + Foo.get_slug_for_id(id) + + url_map = Map([ + Rule('/foo/', endpoint='foo'), + Rule('/some/old/url/', redirect_to='foo/'), + Rule('/other/old/url/', redirect_to=foo_with_slug) + ]) + + When the rule is matched the routing system will raise a + `RequestRedirect` exception with the target for the redirect. + + Keep in mind that the URL will be joined against the URL root of the + script so don't use a leading slash on the target URL unless you + really mean root of that domain. + + `alias` + If enabled this rule serves as an alias for another rule with the same + endpoint and arguments. + + `host` + If provided and the URL map has host matching enabled this can be + used to provide a match rule for the whole host. This also means + that the subdomain feature is disabled. + + `websocket` + If ``True``, this rule is only matches for WebSocket (``ws://``, + ``wss://``) requests. By default, rules will only match for HTTP + requests. + + .. versionadded:: 1.0 + Added ``websocket``. + + .. versionadded:: 1.0 + Added ``merge_slashes``. + + .. versionadded:: 0.7 + Added ``alias`` and ``host``. + + .. versionchanged:: 0.6.1 + ``HEAD`` is added to ``methods`` if ``GET`` is present. + """ + + def __init__( + self, + string, + defaults=None, + subdomain=None, + methods=None, + build_only=False, + endpoint=None, + strict_slashes=None, + merge_slashes=None, + redirect_to=None, + alias=False, + host=None, + websocket=False, + ): + if not string.startswith("/"): + raise ValueError("urls must start with a leading slash") + self.rule = string + self.is_leaf = not string.endswith("/") + + self.map = None + self.strict_slashes = strict_slashes + self.merge_slashes = merge_slashes + self.subdomain = subdomain + self.host = host + self.defaults = defaults + self.build_only = build_only + self.alias = alias + self.websocket = websocket + + if methods is not None: + if isinstance(methods, str): + raise TypeError("'methods' should be a list of strings.") + + methods = {x.upper() for x in methods} + + if "HEAD" not in methods and "GET" in methods: + methods.add("HEAD") + + if websocket and methods - {"GET", "HEAD", "OPTIONS"}: + raise ValueError( + "WebSocket rules can only use 'GET', 'HEAD', and 'OPTIONS' methods." + ) + + self.methods = methods + self.endpoint = endpoint + self.redirect_to = redirect_to + + if defaults: + self.arguments = set(map(str, defaults)) + else: + self.arguments = set() + self._trace = self._converters = self._regex = self._argument_weights = None + + def empty(self): + """ + Return an unbound copy of this rule. + + This can be useful if want to reuse an already bound URL for another + map. See ``get_empty_kwargs`` to override what keyword arguments are + provided to the new copy. + """ + return type(self)(self.rule, **self.get_empty_kwargs()) + + def get_empty_kwargs(self): + """ + Provides kwargs for instantiating empty copy with empty() + + Use this method to provide custom keyword arguments to the subclass of + ``Rule`` when calling ``some_rule.empty()``. Helpful when the subclass + has custom keyword arguments that are needed at instantiation. + + Must return a ``dict`` that will be provided as kwargs to the new + instance of ``Rule``, following the initial ``self.rule`` value which + is always provided as the first, required positional argument. + """ + defaults = None + if self.defaults: + defaults = dict(self.defaults) + return dict( + defaults=defaults, + subdomain=self.subdomain, + methods=self.methods, + build_only=self.build_only, + endpoint=self.endpoint, + strict_slashes=self.strict_slashes, + redirect_to=self.redirect_to, + alias=self.alias, + host=self.host, + ) + + def get_rules(self, map): + yield self + + def refresh(self): + """Rebinds and refreshes the URL. Call this if you modified the + rule in place. + + :internal: + """ + self.bind(self.map, rebind=True) + + def bind(self, map, rebind=False): + """Bind the url to a map and create a regular expression based on + the information from the rule itself and the defaults from the map. + + :internal: + """ + if self.map is not None and not rebind: + raise RuntimeError("url rule %r already bound to map %r" % (self, self.map)) + self.map = map + if self.strict_slashes is None: + self.strict_slashes = map.strict_slashes + if self.merge_slashes is None: + self.merge_slashes = map.merge_slashes + if self.subdomain is None: + self.subdomain = map.default_subdomain + self.compile() + + def get_converter(self, variable_name, converter_name, args, kwargs): + """Looks up the converter for the given parameter. + + .. versionadded:: 0.9 + """ + if converter_name not in self.map.converters: + raise LookupError("the converter %r does not exist" % converter_name) + return self.map.converters[converter_name](self.map, *args, **kwargs) + + def _encode_query_vars(self, query_vars): + return url_encode( + query_vars, + charset=self.map.charset, + sort=self.map.sort_parameters, + key=self.map.sort_key, + ) + + def compile(self): + """Compiles the regular expression and stores it.""" + assert self.map is not None, "rule not bound" + + if self.map.host_matching: + domain_rule = self.host or "" + else: + domain_rule = self.subdomain or "" + + self._trace = [] + self._converters = {} + self._static_weights = [] + self._argument_weights = [] + regex_parts = [] + + def _build_regex(rule): + index = 0 + for converter, arguments, variable in parse_rule(rule): + if converter is None: + for match in re.finditer(r"/+|[^/]+", variable): + part = match.group(0) + if part.startswith("/"): + if self.merge_slashes: + regex_parts.append(r"/+?") + self._trace.append((False, "/")) + else: + regex_parts.append(part) + self._trace.append((False, part)) + continue + self._trace.append((False, part)) + regex_parts.append(re.escape(part)) + if part: + self._static_weights.append((index, -len(part))) + else: + if arguments: + c_args, c_kwargs = parse_converter_args(arguments) + else: + c_args = () + c_kwargs = {} + convobj = self.get_converter(variable, converter, c_args, c_kwargs) + regex_parts.append("(?P<%s>%s)" % (variable, convobj.regex)) + self._converters[variable] = convobj + self._trace.append((True, variable)) + self._argument_weights.append(convobj.weight) + self.arguments.add(str(variable)) + index = index + 1 + + _build_regex(domain_rule) + regex_parts.append("\\|") + self._trace.append((False, "|")) + _build_regex(self.rule if self.is_leaf else self.rule.rstrip("/")) + if not self.is_leaf: + self._trace.append((False, "/")) + + self._build = self._compile_builder(False).__get__(self, None) + self._build_unknown = self._compile_builder(True).__get__(self, None) + + if self.build_only: + return + + if not (self.is_leaf and self.strict_slashes): + reps = u"*" if self.merge_slashes else u"?" + tail = u"(?/%s)" % reps + else: + tail = u"" + + regex = u"^%s%s$" % (u"".join(regex_parts), tail) + self._regex = re.compile(regex, re.UNICODE) + + def match(self, path, method=None): + """Check if the rule matches a given path. Path is a string in the + form ``"subdomain|/path"`` and is assembled by the map. If + the map is doing host matching the subdomain part will be the host + instead. + + If the rule matches a dict with the converted values is returned, + otherwise the return value is `None`. + + :internal: + """ + if not self.build_only: + require_redirect = False + + m = self._regex.search(path) + if m is not None: + groups = m.groupdict() + # we have a folder like part of the url without a trailing + # slash and strict slashes enabled. raise an exception that + # tells the map to redirect to the same url but with a + # trailing slash + if ( + self.strict_slashes + and not self.is_leaf + and not groups.pop("__suffix__") + and ( + method is None or self.methods is None or method in self.methods + ) + ): + path += "/" + require_redirect = True + # if we are not in strict slashes mode we have to remove + # a __suffix__ + elif not self.strict_slashes: + del groups["__suffix__"] + + result = {} + for name, value in iteritems(groups): + try: + value = self._converters[name].to_python(value) + except ValidationError: + return + result[str(name)] = value + if self.defaults: + result.update(self.defaults) + + if self.merge_slashes: + new_path = "|".join(self.build(result, False)) + if path.endswith("/") and not new_path.endswith("/"): + new_path += "/" + if new_path.count("/") < path.count("/"): + path = new_path + require_redirect = True + + if require_redirect: + path = path.split("|", 1)[1] + raise RequestPath(path) + + if self.alias and self.map.redirect_defaults: + raise RequestAliasRedirect(result) + + return result + + @staticmethod + def _get_func_code(code, name): + globs, locs = {}, {} + exec(code, globs, locs) + return locs[name] + + def _compile_builder(self, append_unknown=True): + defaults = self.defaults or {} + dom_ops = [] + url_ops = [] + + opl = dom_ops + for is_dynamic, data in self._trace: + if data == "|" and opl is dom_ops: + opl = url_ops + continue + # this seems like a silly case to ever come up but: + # if a default is given for a value that appears in the rule, + # resolve it to a constant ahead of time + if is_dynamic and data in defaults: + data = self._converters[data].to_url(defaults[data]) + opl.append((False, data)) + elif not is_dynamic: + opl.append( + (False, url_quote(to_bytes(data, self.map.charset), safe="/:|+")) + ) + else: + opl.append((True, data)) + + def _convert(elem): + ret = _prefix_names(_CALL_CONVERTER_CODE_FMT.format(elem=elem)) + ret.args = [ast.Name(str(elem), ast.Load())] # str for py2 + return ret + + def _parts(ops): + parts = [ + _convert(elem) if is_dynamic else ast.Str(s=elem) + for is_dynamic, elem in ops + ] + parts = parts or [ast.Str("")] + # constant fold + ret = [parts[0]] + for p in parts[1:]: + if isinstance(p, ast.Str) and isinstance(ret[-1], ast.Str): + ret[-1] = ast.Str(ret[-1].s + p.s) + else: + ret.append(p) + return ret + + dom_parts = _parts(dom_ops) + url_parts = _parts(url_ops) + if not append_unknown: + body = [] + else: + body = [_IF_KWARGS_URL_ENCODE_AST] + url_parts.extend(_URL_ENCODE_AST_NAMES) + + def _join(parts): + if len(parts) == 1: # shortcut + return parts[0] + elif hasattr(ast, "JoinedStr"): # py36+ + return ast.JoinedStr(parts) + else: + call = _prefix_names('"".join()') + call.args = [ast.Tuple(parts, ast.Load())] + return call + + body.append( + ast.Return(ast.Tuple([_join(dom_parts), _join(url_parts)], ast.Load())) + ) + + # str is necessary for python2 + pargs = [ + str(elem) + for is_dynamic, elem in dom_ops + url_ops + if is_dynamic and elem not in defaults + ] + kargs = [str(k) for k in defaults] + + func_ast = _prefix_names("def _(): pass") + func_ast.name = "".format(self.rule) + if hasattr(ast, "arg"): # py3 + func_ast.args.args.append(ast.arg(".self", None)) + for arg in pargs + kargs: + func_ast.args.args.append(ast.arg(arg, None)) + func_ast.args.kwarg = ast.arg(".kwargs", None) + else: + func_ast.args.args.append(ast.Name(".self", ast.Param())) + for arg in pargs + kargs: + func_ast.args.args.append(ast.Name(arg, ast.Param())) + func_ast.args.kwarg = ".kwargs" + for _ in kargs: + func_ast.args.defaults.append(ast.Str("")) + func_ast.body = body + + # use `ast.parse` instead of `ast.Module` for better portability + # python3.8 changes the signature of `ast.Module` + module = ast.parse("") + module.body = [func_ast] + + # mark everything as on line 1, offset 0 + # less error-prone than `ast.fix_missing_locations` + # bad line numbers cause an assert to fail in debug builds + for node in ast.walk(module): + if "lineno" in node._attributes: + node.lineno = 1 + if "col_offset" in node._attributes: + node.col_offset = 0 + + code = compile(module, "", "exec") + return self._get_func_code(code, func_ast.name) + + def build(self, values, append_unknown=True): + """Assembles the relative url for that rule and the subdomain. + If building doesn't work for some reasons `None` is returned. + + :internal: + """ + try: + if append_unknown: + return self._build_unknown(**values) + else: + return self._build(**values) + except ValidationError: + return None + + def provides_defaults_for(self, rule): + """Check if this rule has defaults for a given rule. + + :internal: + """ + return ( + not self.build_only + and self.defaults + and self.endpoint == rule.endpoint + and self != rule + and self.arguments == rule.arguments + ) + + def suitable_for(self, values, method=None): + """Check if the dict of values has enough data for url generation. + + :internal: + """ + # if a method was given explicitly and that method is not supported + # by this rule, this rule is not suitable. + if ( + method is not None + and self.methods is not None + and method not in self.methods + ): + return False + + defaults = self.defaults or () + + # all arguments required must be either in the defaults dict or + # the value dictionary otherwise it's not suitable + for key in self.arguments: + if key not in defaults and key not in values: + return False + + # in case defaults are given we ensure that either the value was + # skipped or the value is the same as the default value. + if defaults: + for key, value in iteritems(defaults): + if key in values and value != values[key]: + return False + + return True + + def match_compare_key(self): + """The match compare key for sorting. + + Current implementation: + + 1. rules without any arguments come first for performance + reasons only as we expect them to match faster and some + common ones usually don't have any arguments (index pages etc.) + 2. rules with more static parts come first so the second argument + is the negative length of the number of the static weights. + 3. we order by static weights, which is a combination of index + and length + 4. The more complex rules come first so the next argument is the + negative length of the number of argument weights. + 5. lastly we order by the actual argument weights. + + :internal: + """ + return ( + bool(self.arguments), + -len(self._static_weights), + self._static_weights, + -len(self._argument_weights), + self._argument_weights, + ) + + def build_compare_key(self): + """The build compare key for sorting. + + :internal: + """ + return 1 if self.alias else 0, -len(self.arguments), -len(self.defaults or ()) + + def __eq__(self, other): + return self.__class__ is other.__class__ and self._trace == other._trace + + __hash__ = None + + def __ne__(self, other): + return not self.__eq__(other) + + def __str__(self): + return self.rule + + @native_string_result + def __repr__(self): + if self.map is None: + return u"<%s (unbound)>" % self.__class__.__name__ + tmp = [] + for is_dynamic, data in self._trace: + if is_dynamic: + tmp.append(u"<%s>" % data) + else: + tmp.append(data) + return u"<%s %s%s -> %s>" % ( + self.__class__.__name__, + repr((u"".join(tmp)).lstrip(u"|")).lstrip(u"u"), + self.methods is not None and u" (%s)" % u", ".join(self.methods) or u"", + self.endpoint, + ) + + +class BaseConverter(object): + """Base class for all converters.""" + + regex = "[^/]+" + weight = 100 + + def __init__(self, map): + self.map = map + + def to_python(self, value): + return value + + def to_url(self, value): + if isinstance(value, (bytes, bytearray)): + return _fast_url_quote(value) + return _fast_url_quote(text_type(value).encode(self.map.charset)) + + +class UnicodeConverter(BaseConverter): + """This converter is the default converter and accepts any string but + only one path segment. Thus the string can not include a slash. + + This is the default validator. + + Example:: + + Rule('/pages/'), + Rule('/') + + :param map: the :class:`Map`. + :param minlength: the minimum length of the string. Must be greater + or equal 1. + :param maxlength: the maximum length of the string. + :param length: the exact length of the string. + """ + + def __init__(self, map, minlength=1, maxlength=None, length=None): + BaseConverter.__init__(self, map) + if length is not None: + length = "{%d}" % int(length) + else: + if maxlength is None: + maxlength = "" + else: + maxlength = int(maxlength) + length = "{%s,%s}" % (int(minlength), maxlength) + self.regex = "[^/]" + length + + +class AnyConverter(BaseConverter): + """Matches one of the items provided. Items can either be Python + identifiers or strings:: + + Rule('/') + + :param map: the :class:`Map`. + :param items: this function accepts the possible items as positional + arguments. + """ + + def __init__(self, map, *items): + BaseConverter.__init__(self, map) + self.regex = "(?:%s)" % "|".join([re.escape(x) for x in items]) + + +class PathConverter(BaseConverter): + """Like the default :class:`UnicodeConverter`, but it also matches + slashes. This is useful for wikis and similar applications:: + + Rule('/') + Rule('//edit') + + :param map: the :class:`Map`. + """ + + regex = "[^/].*?" + weight = 200 + + +class NumberConverter(BaseConverter): + """Baseclass for `IntegerConverter` and `FloatConverter`. + + :internal: + """ + + weight = 50 + + def __init__(self, map, fixed_digits=0, min=None, max=None, signed=False): + if signed: + self.regex = self.signed_regex + BaseConverter.__init__(self, map) + self.fixed_digits = fixed_digits + self.min = min + self.max = max + self.signed = signed + + def to_python(self, value): + if self.fixed_digits and len(value) != self.fixed_digits: + raise ValidationError() + value = self.num_convert(value) + if (self.min is not None and value < self.min) or ( + self.max is not None and value > self.max + ): + raise ValidationError() + return value + + def to_url(self, value): + value = self.num_convert(value) + if self.fixed_digits: + value = ("%%0%sd" % self.fixed_digits) % value + return str(value) + + @property + def signed_regex(self): + return r"-?" + self.regex + + +class IntegerConverter(NumberConverter): + """This converter only accepts integer values:: + + Rule("/page/") + + By default it only accepts unsigned, positive values. The ``signed`` + parameter will enable signed, negative values. :: + + Rule("/page/") + + :param map: The :class:`Map`. + :param fixed_digits: The number of fixed digits in the URL. If you + set this to ``4`` for example, the rule will only match if the + URL looks like ``/0001/``. The default is variable length. + :param min: The minimal value. + :param max: The maximal value. + :param signed: Allow signed (negative) values. + + .. versionadded:: 0.15 + The ``signed`` parameter. + """ + + regex = r"\d+" + num_convert = int + + +class FloatConverter(NumberConverter): + """This converter only accepts floating point values:: + + Rule("/probability/") + + By default it only accepts unsigned, positive values. The ``signed`` + parameter will enable signed, negative values. :: + + Rule("/offset/") + + :param map: The :class:`Map`. + :param min: The minimal value. + :param max: The maximal value. + :param signed: Allow signed (negative) values. + + .. versionadded:: 0.15 + The ``signed`` parameter. + """ + + regex = r"\d+\.\d+" + num_convert = float + + def __init__(self, map, min=None, max=None, signed=False): + NumberConverter.__init__(self, map, min=min, max=max, signed=signed) + + +class UUIDConverter(BaseConverter): + """This converter only accepts UUID strings:: + + Rule('/object/') + + .. versionadded:: 0.10 + + :param map: the :class:`Map`. + """ + + regex = ( + r"[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-" + r"[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}" + ) + + def to_python(self, value): + return uuid.UUID(value) + + def to_url(self, value): + return str(value) + + +#: the default converter mapping for the map. +DEFAULT_CONVERTERS = { + "default": UnicodeConverter, + "string": UnicodeConverter, + "any": AnyConverter, + "path": PathConverter, + "int": IntegerConverter, + "float": FloatConverter, + "uuid": UUIDConverter, +} + + +class Map(object): + """The map class stores all the URL rules and some configuration + parameters. Some of the configuration values are only stored on the + `Map` instance since those affect all rules, others are just defaults + and can be overridden for each rule. Note that you have to specify all + arguments besides the `rules` as keyword arguments! + + :param rules: sequence of url rules for this map. + :param default_subdomain: The default subdomain for rules without a + subdomain defined. + :param charset: charset of the url. defaults to ``"utf-8"`` + :param strict_slashes: If a rule ends with a slash but the matched + URL does not, redirect to the URL with a trailing slash. + :param merge_slashes: Merge consecutive slashes when matching or + building URLs. Matches will redirect to the normalized URL. + Slashes in variable parts are not merged. + :param redirect_defaults: This will redirect to the default rule if it + wasn't visited that way. This helps creating + unique URLs. + :param converters: A dict of converters that adds additional converters + to the list of converters. If you redefine one + converter this will override the original one. + :param sort_parameters: If set to `True` the url parameters are sorted. + See `url_encode` for more details. + :param sort_key: The sort key function for `url_encode`. + :param encoding_errors: the error method to use for decoding + :param host_matching: if set to `True` it enables the host matching + feature and disables the subdomain one. If + enabled the `host` parameter to rules is used + instead of the `subdomain` one. + + .. versionchanged:: 1.0 + If ``url_scheme`` is ``ws`` or ``wss``, only WebSocket rules + will match. + + .. versionchanged:: 1.0 + Added ``merge_slashes``. + + .. versionchanged:: 0.7 + Added ``encoding_errors`` and ``host_matching``. + + .. versionchanged:: 0.5 + Added ``sort_parameters`` and ``sort_key``. + """ + + #: A dict of default converters to be used. + default_converters = ImmutableDict(DEFAULT_CONVERTERS) + + #: The type of lock to use when updating. + #: + #: .. versionadded:: 1.0 + lock_class = Lock + + def __init__( + self, + rules=None, + default_subdomain="", + charset="utf-8", + strict_slashes=True, + merge_slashes=True, + redirect_defaults=True, + converters=None, + sort_parameters=False, + sort_key=None, + encoding_errors="replace", + host_matching=False, + ): + self._rules = [] + self._rules_by_endpoint = {} + self._remap = True + self._remap_lock = self.lock_class() + + self.default_subdomain = default_subdomain + self.charset = charset + self.encoding_errors = encoding_errors + self.strict_slashes = strict_slashes + self.merge_slashes = merge_slashes + self.redirect_defaults = redirect_defaults + self.host_matching = host_matching + + self.converters = self.default_converters.copy() + if converters: + self.converters.update(converters) + + self.sort_parameters = sort_parameters + self.sort_key = sort_key + + for rulefactory in rules or (): + self.add(rulefactory) + + def is_endpoint_expecting(self, endpoint, *arguments): + """Iterate over all rules and check if the endpoint expects + the arguments provided. This is for example useful if you have + some URLs that expect a language code and others that do not and + you want to wrap the builder a bit so that the current language + code is automatically added if not provided but endpoints expect + it. + + :param endpoint: the endpoint to check. + :param arguments: this function accepts one or more arguments + as positional arguments. Each one of them is + checked. + """ + self.update() + arguments = set(arguments) + for rule in self._rules_by_endpoint[endpoint]: + if arguments.issubset(rule.arguments): + return True + return False + + def iter_rules(self, endpoint=None): + """Iterate over all rules or the rules of an endpoint. + + :param endpoint: if provided only the rules for that endpoint + are returned. + :return: an iterator + """ + self.update() + if endpoint is not None: + return iter(self._rules_by_endpoint[endpoint]) + return iter(self._rules) + + def add(self, rulefactory): + """Add a new rule or factory to the map and bind it. Requires that the + rule is not bound to another map. + + :param rulefactory: a :class:`Rule` or :class:`RuleFactory` + """ + for rule in rulefactory.get_rules(self): + rule.bind(self) + self._rules.append(rule) + self._rules_by_endpoint.setdefault(rule.endpoint, []).append(rule) + self._remap = True + + def bind( + self, + server_name, + script_name=None, + subdomain=None, + url_scheme="http", + default_method="GET", + path_info=None, + query_args=None, + ): + """Return a new :class:`MapAdapter` with the details specified to the + call. Note that `script_name` will default to ``'/'`` if not further + specified or `None`. The `server_name` at least is a requirement + because the HTTP RFC requires absolute URLs for redirects and so all + redirect exceptions raised by Werkzeug will contain the full canonical + URL. + + If no path_info is passed to :meth:`match` it will use the default path + info passed to bind. While this doesn't really make sense for + manual bind calls, it's useful if you bind a map to a WSGI + environment which already contains the path info. + + `subdomain` will default to the `default_subdomain` for this map if + no defined. If there is no `default_subdomain` you cannot use the + subdomain feature. + + .. versionchanged:: 1.0 + If ``url_scheme`` is ``ws`` or ``wss``, only WebSocket rules + will match. + + .. versionchanged:: 0.15 + ``path_info`` defaults to ``'/'`` if ``None``. + + .. versionchanged:: 0.8 + ``query_args`` can be a string. + + .. versionchanged:: 0.7 + Added ``query_args``. + """ + server_name = server_name.lower() + if self.host_matching: + if subdomain is not None: + raise RuntimeError("host matching enabled and a subdomain was provided") + elif subdomain is None: + subdomain = self.default_subdomain + if script_name is None: + script_name = "/" + if path_info is None: + path_info = "/" + try: + server_name = _encode_idna(server_name) + except UnicodeError: + raise BadHost() + return MapAdapter( + self, + server_name, + script_name, + subdomain, + url_scheme, + path_info, + default_method, + query_args, + ) + + def bind_to_environ(self, environ, server_name=None, subdomain=None): + """Like :meth:`bind` but you can pass it an WSGI environment and it + will fetch the information from that dictionary. Note that because of + limitations in the protocol there is no way to get the current + subdomain and real `server_name` from the environment. If you don't + provide it, Werkzeug will use `SERVER_NAME` and `SERVER_PORT` (or + `HTTP_HOST` if provided) as used `server_name` with disabled subdomain + feature. + + If `subdomain` is `None` but an environment and a server name is + provided it will calculate the current subdomain automatically. + Example: `server_name` is ``'example.com'`` and the `SERVER_NAME` + in the wsgi `environ` is ``'staging.dev.example.com'`` the calculated + subdomain will be ``'staging.dev'``. + + If the object passed as environ has an environ attribute, the value of + this attribute is used instead. This allows you to pass request + objects. Additionally `PATH_INFO` added as a default of the + :class:`MapAdapter` so that you don't have to pass the path info to + the match method. + + .. versionchanged:: 1.0.0 + If the passed server name specifies port 443, it will match + if the incoming scheme is ``https`` without a port. + + .. versionchanged:: 1.0.0 + A warning is shown when the passed server name does not + match the incoming WSGI server name. + + .. versionchanged:: 0.8 + This will no longer raise a ValueError when an unexpected server + name was passed. + + .. versionchanged:: 0.5 + previously this method accepted a bogus `calculate_subdomain` + parameter that did not have any effect. It was removed because + of that. + + :param environ: a WSGI environment. + :param server_name: an optional server name hint (see above). + :param subdomain: optionally the current subdomain (see above). + """ + environ = _get_environ(environ) + wsgi_server_name = get_host(environ).lower() + scheme = environ["wsgi.url_scheme"] + + if server_name is None: + server_name = wsgi_server_name + else: + server_name = server_name.lower() + + # strip standard port to match get_host() + if scheme == "http" and server_name.endswith(":80"): + server_name = server_name[:-3] + elif scheme == "https" and server_name.endswith(":443"): + server_name = server_name[:-4] + + if subdomain is None and not self.host_matching: + cur_server_name = wsgi_server_name.split(".") + real_server_name = server_name.split(".") + offset = -len(real_server_name) + + if cur_server_name[offset:] != real_server_name: + # This can happen even with valid configs if the server was + # accessed directly by IP address under some situations. + # Instead of raising an exception like in Werkzeug 0.7 or + # earlier we go by an invalid subdomain which will result + # in a 404 error on matching. + warnings.warn( + "Current server name '{}' doesn't match configured" + " server name '{}'".format(wsgi_server_name, server_name), + stacklevel=2, + ) + subdomain = "" + else: + subdomain = ".".join(filter(None, cur_server_name[:offset])) + + def _get_wsgi_string(name): + val = environ.get(name) + if val is not None: + return wsgi_decoding_dance(val, self.charset) + + script_name = _get_wsgi_string("SCRIPT_NAME") + path_info = _get_wsgi_string("PATH_INFO") + query_args = _get_wsgi_string("QUERY_STRING") + return Map.bind( + self, + server_name, + script_name, + subdomain, + scheme, + environ["REQUEST_METHOD"], + path_info, + query_args=query_args, + ) + + def update(self): + """Called before matching and building to keep the compiled rules + in the correct order after things changed. + """ + if not self._remap: + return + + with self._remap_lock: + if not self._remap: + return + + self._rules.sort(key=lambda x: x.match_compare_key()) + for rules in itervalues(self._rules_by_endpoint): + rules.sort(key=lambda x: x.build_compare_key()) + self._remap = False + + def __repr__(self): + rules = self.iter_rules() + return "%s(%s)" % (self.__class__.__name__, pformat(list(rules))) + + +class MapAdapter(object): + + """Returned by :meth:`Map.bind` or :meth:`Map.bind_to_environ` and does + the URL matching and building based on runtime information. + """ + + def __init__( + self, + map, + server_name, + script_name, + subdomain, + url_scheme, + path_info, + default_method, + query_args=None, + ): + self.map = map + self.server_name = to_unicode(server_name) + script_name = to_unicode(script_name) + if not script_name.endswith(u"/"): + script_name += u"/" + self.script_name = script_name + self.subdomain = to_unicode(subdomain) + self.url_scheme = to_unicode(url_scheme) + self.path_info = to_unicode(path_info) + self.default_method = to_unicode(default_method) + self.query_args = query_args + self.websocket = self.url_scheme in {"ws", "wss"} + + def dispatch( + self, view_func, path_info=None, method=None, catch_http_exceptions=False + ): + """Does the complete dispatching process. `view_func` is called with + the endpoint and a dict with the values for the view. It should + look up the view function, call it, and return a response object + or WSGI application. http exceptions are not caught by default + so that applications can display nicer error messages by just + catching them by hand. If you want to stick with the default + error messages you can pass it ``catch_http_exceptions=True`` and + it will catch the http exceptions. + + Here a small example for the dispatch usage:: + + from werkzeug.wrappers import Request, Response + from werkzeug.wsgi import responder + from werkzeug.routing import Map, Rule + + def on_index(request): + return Response('Hello from the index') + + url_map = Map([Rule('/', endpoint='index')]) + views = {'index': on_index} + + @responder + def application(environ, start_response): + request = Request(environ) + urls = url_map.bind_to_environ(environ) + return urls.dispatch(lambda e, v: views[e](request, **v), + catch_http_exceptions=True) + + Keep in mind that this method might return exception objects, too, so + use :class:`Response.force_type` to get a response object. + + :param view_func: a function that is called with the endpoint as + first argument and the value dict as second. Has + to dispatch to the actual view function with this + information. (see above) + :param path_info: the path info to use for matching. Overrides the + path info specified on binding. + :param method: the HTTP method used for matching. Overrides the + method specified on binding. + :param catch_http_exceptions: set to `True` to catch any of the + werkzeug :class:`HTTPException`\\s. + """ + try: + try: + endpoint, args = self.match(path_info, method) + except RequestRedirect as e: + return e + return view_func(endpoint, args) + except HTTPException as e: + if catch_http_exceptions: + return e + raise + + def match( + self, + path_info=None, + method=None, + return_rule=False, + query_args=None, + websocket=None, + ): + """The usage is simple: you just pass the match method the current + path info as well as the method (which defaults to `GET`). The + following things can then happen: + + - you receive a `NotFound` exception that indicates that no URL is + matching. A `NotFound` exception is also a WSGI application you + can call to get a default page not found page (happens to be the + same object as `werkzeug.exceptions.NotFound`) + + - you receive a `MethodNotAllowed` exception that indicates that there + is a match for this URL but not for the current request method. + This is useful for RESTful applications. + + - you receive a `RequestRedirect` exception with a `new_url` + attribute. This exception is used to notify you about a request + Werkzeug requests from your WSGI application. This is for example the + case if you request ``/foo`` although the correct URL is ``/foo/`` + You can use the `RequestRedirect` instance as response-like object + similar to all other subclasses of `HTTPException`. + + - you receive a ``WebsocketMismatch`` exception if the only + match is a WebSocket rule but the bind is an HTTP request, or + if the match is an HTTP rule but the bind is a WebSocket + request. + + - you get a tuple in the form ``(endpoint, arguments)`` if there is + a match (unless `return_rule` is True, in which case you get a tuple + in the form ``(rule, arguments)``) + + If the path info is not passed to the match method the default path + info of the map is used (defaults to the root URL if not defined + explicitly). + + All of the exceptions raised are subclasses of `HTTPException` so they + can be used as WSGI responses. They will all render generic error or + redirect pages. + + Here is a small example for matching: + + >>> m = Map([ + ... Rule('/', endpoint='index'), + ... Rule('/downloads/', endpoint='downloads/index'), + ... Rule('/downloads/', endpoint='downloads/show') + ... ]) + >>> urls = m.bind("example.com", "/") + >>> urls.match("/", "GET") + ('index', {}) + >>> urls.match("/downloads/42") + ('downloads/show', {'id': 42}) + + And here is what happens on redirect and missing URLs: + + >>> urls.match("/downloads") + Traceback (most recent call last): + ... + RequestRedirect: http://example.com/downloads/ + >>> urls.match("/missing") + Traceback (most recent call last): + ... + NotFound: 404 Not Found + + :param path_info: the path info to use for matching. Overrides the + path info specified on binding. + :param method: the HTTP method used for matching. Overrides the + method specified on binding. + :param return_rule: return the rule that matched instead of just the + endpoint (defaults to `False`). + :param query_args: optional query arguments that are used for + automatic redirects as string or dictionary. It's + currently not possible to use the query arguments + for URL matching. + :param websocket: Match WebSocket instead of HTTP requests. A + websocket request has a ``ws`` or ``wss`` + :attr:`url_scheme`. This overrides that detection. + + .. versionadded:: 1.0 + Added ``websocket``. + + .. versionchanged:: 0.8 + ``query_args`` can be a string. + + .. versionadded:: 0.7 + Added ``query_args``. + + .. versionadded:: 0.6 + Added ``return_rule``. + """ + self.map.update() + if path_info is None: + path_info = self.path_info + else: + path_info = to_unicode(path_info, self.map.charset) + if query_args is None: + query_args = self.query_args + method = (method or self.default_method).upper() + + if websocket is None: + websocket = self.websocket + + require_redirect = False + + path = u"%s|%s" % ( + self.map.host_matching and self.server_name or self.subdomain, + path_info and "/%s" % path_info.lstrip("/"), + ) + + have_match_for = set() + websocket_mismatch = False + + for rule in self.map._rules: + try: + rv = rule.match(path, method) + except RequestPath as e: + raise RequestRedirect( + self.make_redirect_url( + url_quote(e.path_info, self.map.charset, safe="/:|+"), + query_args, + ) + ) + except RequestAliasRedirect as e: + raise RequestRedirect( + self.make_alias_redirect_url( + path, rule.endpoint, e.matched_values, method, query_args + ) + ) + if rv is None: + continue + if rule.methods is not None and method not in rule.methods: + have_match_for.update(rule.methods) + continue + + if rule.websocket != websocket: + websocket_mismatch = True + continue + + if self.map.redirect_defaults: + redirect_url = self.get_default_redirect(rule, method, rv, query_args) + if redirect_url is not None: + raise RequestRedirect(redirect_url) + + if rule.redirect_to is not None: + if isinstance(rule.redirect_to, string_types): + + def _handle_match(match): + value = rv[match.group(1)] + return rule._converters[match.group(1)].to_url(value) + + redirect_url = _simple_rule_re.sub(_handle_match, rule.redirect_to) + else: + redirect_url = rule.redirect_to(self, **rv) + raise RequestRedirect( + str( + url_join( + "%s://%s%s%s" + % ( + self.url_scheme or "http", + self.subdomain + "." if self.subdomain else "", + self.server_name, + self.script_name, + ), + redirect_url, + ) + ) + ) + + if require_redirect: + raise RequestRedirect( + self.make_redirect_url( + url_quote(path_info, self.map.charset, safe="/:|+"), query_args + ) + ) + + if return_rule: + return rule, rv + else: + return rule.endpoint, rv + + if have_match_for: + raise MethodNotAllowed(valid_methods=list(have_match_for)) + + if websocket_mismatch: + raise WebsocketMismatch() + + raise NotFound() + + def test(self, path_info=None, method=None): + """Test if a rule would match. Works like `match` but returns `True` + if the URL matches, or `False` if it does not exist. + + :param path_info: the path info to use for matching. Overrides the + path info specified on binding. + :param method: the HTTP method used for matching. Overrides the + method specified on binding. + """ + try: + self.match(path_info, method) + except RequestRedirect: + pass + except HTTPException: + return False + return True + + def allowed_methods(self, path_info=None): + """Returns the valid methods that match for a given path. + + .. versionadded:: 0.7 + """ + try: + self.match(path_info, method="--") + except MethodNotAllowed as e: + return e.valid_methods + except HTTPException: + pass + return [] + + def get_host(self, domain_part): + """Figures out the full host name for the given domain part. The + domain part is a subdomain in case host matching is disabled or + a full host name. + """ + if self.map.host_matching: + if domain_part is None: + return self.server_name + return to_unicode(domain_part, "ascii") + subdomain = domain_part + if subdomain is None: + subdomain = self.subdomain + else: + subdomain = to_unicode(subdomain, "ascii") + return (subdomain + u"." if subdomain else u"") + self.server_name + + def get_default_redirect(self, rule, method, values, query_args): + """A helper that returns the URL to redirect to if it finds one. + This is used for default redirecting only. + + :internal: + """ + assert self.map.redirect_defaults + for r in self.map._rules_by_endpoint[rule.endpoint]: + # every rule that comes after this one, including ourself + # has a lower priority for the defaults. We order the ones + # with the highest priority up for building. + if r is rule: + break + if r.provides_defaults_for(rule) and r.suitable_for(values, method): + values.update(r.defaults) + domain_part, path = r.build(values) + return self.make_redirect_url(path, query_args, domain_part=domain_part) + + def encode_query_args(self, query_args): + if not isinstance(query_args, string_types): + query_args = url_encode(query_args, self.map.charset) + return query_args + + def make_redirect_url(self, path_info, query_args=None, domain_part=None): + """Creates a redirect URL. + + :internal: + """ + suffix = "" + if query_args: + suffix = "?" + self.encode_query_args(query_args) + return str( + "%s://%s/%s%s" + % ( + self.url_scheme or "http", + self.get_host(domain_part), + posixpath.join( + self.script_name[:-1].lstrip("/"), path_info.lstrip("/") + ), + suffix, + ) + ) + + def make_alias_redirect_url(self, path, endpoint, values, method, query_args): + """Internally called to make an alias redirect URL.""" + url = self.build( + endpoint, values, method, append_unknown=False, force_external=True + ) + if query_args: + url += "?" + self.encode_query_args(query_args) + assert url != path, "detected invalid alias setting. No canonical URL found" + return url + + def _partial_build(self, endpoint, values, method, append_unknown): + """Helper for :meth:`build`. Returns subdomain and path for the + rule that accepts this endpoint, values and method. + + :internal: + """ + # in case the method is none, try with the default method first + if method is None: + rv = self._partial_build( + endpoint, values, self.default_method, append_unknown + ) + if rv is not None: + return rv + + # Default method did not match or a specific method is passed. + # Check all for first match with matching host. If no matching + # host is found, go with first result. + first_match = None + + for rule in self.map._rules_by_endpoint.get(endpoint, ()): + if rule.suitable_for(values, method): + rv = rule.build(values, append_unknown) + + if rv is not None: + rv = (rv[0], rv[1], rule.websocket) + if self.map.host_matching: + if rv[0] == self.server_name: + return rv + elif first_match is None: + first_match = rv + else: + return rv + + return first_match + + def build( + self, + endpoint, + values=None, + method=None, + force_external=False, + append_unknown=True, + ): + """Building URLs works pretty much the other way round. Instead of + `match` you call `build` and pass it the endpoint and a dict of + arguments for the placeholders. + + The `build` function also accepts an argument called `force_external` + which, if you set it to `True` will force external URLs. Per default + external URLs (include the server name) will only be used if the + target URL is on a different subdomain. + + >>> m = Map([ + ... Rule('/', endpoint='index'), + ... Rule('/downloads/', endpoint='downloads/index'), + ... Rule('/downloads/', endpoint='downloads/show') + ... ]) + >>> urls = m.bind("example.com", "/") + >>> urls.build("index", {}) + '/' + >>> urls.build("downloads/show", {'id': 42}) + '/downloads/42' + >>> urls.build("downloads/show", {'id': 42}, force_external=True) + 'http://example.com/downloads/42' + + Because URLs cannot contain non ASCII data you will always get + bytestrings back. Non ASCII characters are urlencoded with the + charset defined on the map instance. + + Additional values are converted to unicode and appended to the URL as + URL querystring parameters: + + >>> urls.build("index", {'q': 'My Searchstring'}) + '/?q=My+Searchstring' + + When processing those additional values, lists are furthermore + interpreted as multiple values (as per + :py:class:`werkzeug.datastructures.MultiDict`): + + >>> urls.build("index", {'q': ['a', 'b', 'c']}) + '/?q=a&q=b&q=c' + + Passing a ``MultiDict`` will also add multiple values: + + >>> urls.build("index", MultiDict((('p', 'z'), ('q', 'a'), ('q', 'b')))) + '/?p=z&q=a&q=b' + + If a rule does not exist when building a `BuildError` exception is + raised. + + The build method accepts an argument called `method` which allows you + to specify the method you want to have an URL built for if you have + different methods for the same endpoint specified. + + .. versionadded:: 0.6 + the `append_unknown` parameter was added. + + :param endpoint: the endpoint of the URL to build. + :param values: the values for the URL to build. Unhandled values are + appended to the URL as query parameters. + :param method: the HTTP method for the rule if there are different + URLs for different methods on the same endpoint. + :param force_external: enforce full canonical external URLs. If the URL + scheme is not provided, this will generate + a protocol-relative URL. + :param append_unknown: unknown parameters are appended to the generated + URL as query string argument. Disable this + if you want the builder to ignore those. + """ + self.map.update() + + if values: + if isinstance(values, MultiDict): + temp_values = {} + # iteritems(dict, values) is like `values.lists()` + # without the call or `list()` coercion overhead. + for key, value in iteritems(dict, values): + if not value: + continue + if len(value) == 1: # flatten single item lists + value = value[0] + if value is None: # drop None + continue + temp_values[key] = value + values = temp_values + else: + # drop None + values = dict(i for i in iteritems(values) if i[1] is not None) + else: + values = {} + + rv = self._partial_build(endpoint, values, method, append_unknown) + if rv is None: + raise BuildError(endpoint, values, method, self) + + domain_part, path, websocket = rv + host = self.get_host(domain_part) + + # Always build WebSocket routes with the scheme (browsers + # require full URLs). If bound to a WebSocket, ensure that HTTP + # routes are built with an HTTP scheme. + url_scheme = self.url_scheme + secure = url_scheme in {"https", "wss"} + + if websocket: + force_external = True + url_scheme = "wss" if secure else "ws" + elif url_scheme: + url_scheme = "https" if secure else "http" + + # shortcut this. + if not force_external and ( + (self.map.host_matching and host == self.server_name) + or (not self.map.host_matching and domain_part == self.subdomain) + ): + return "%s/%s" % (self.script_name.rstrip("/"), path.lstrip("/")) + return str( + "%s//%s%s/%s" + % ( + url_scheme + ":" if url_scheme else "", + host, + self.script_name[:-1], + path.lstrip("/"), + ) + ) diff --git a/env/lib/python3.6/site-packages/werkzeug/security.py b/env/lib/python3.6/site-packages/werkzeug/security.py new file mode 100644 index 0000000..2308040 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/security.py @@ -0,0 +1,249 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.security + ~~~~~~~~~~~~~~~~~ + + Security related helpers such as secure password hashing tools. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import hashlib +import hmac +import os +import posixpath +from random import SystemRandom +from struct import Struct + +from ._compat import izip +from ._compat import PY2 +from ._compat import range_type +from ._compat import text_type +from ._compat import to_bytes +from ._compat import to_native + +SALT_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +DEFAULT_PBKDF2_ITERATIONS = 150000 + +_pack_int = Struct(">I").pack +_builtin_safe_str_cmp = getattr(hmac, "compare_digest", None) +_sys_rng = SystemRandom() +_os_alt_seps = list( + sep for sep in [os.path.sep, os.path.altsep] if sep not in (None, "/") +) + + +def pbkdf2_hex( + data, salt, iterations=DEFAULT_PBKDF2_ITERATIONS, keylen=None, hashfunc=None +): + """Like :func:`pbkdf2_bin`, but returns a hex-encoded string. + + .. versionadded:: 0.9 + + :param data: the data to derive. + :param salt: the salt for the derivation. + :param iterations: the number of iterations. + :param keylen: the length of the resulting key. If not provided, + the digest size will be used. + :param hashfunc: the hash function to use. This can either be the + string name of a known hash function, or a function + from the hashlib module. Defaults to sha256. + """ + rv = pbkdf2_bin(data, salt, iterations, keylen, hashfunc) + return to_native(codecs.encode(rv, "hex_codec")) + + +def pbkdf2_bin( + data, salt, iterations=DEFAULT_PBKDF2_ITERATIONS, keylen=None, hashfunc=None +): + """Returns a binary digest for the PBKDF2 hash algorithm of `data` + with the given `salt`. It iterates `iterations` times and produces a + key of `keylen` bytes. By default, SHA-256 is used as hash function; + a different hashlib `hashfunc` can be provided. + + .. versionadded:: 0.9 + + :param data: the data to derive. + :param salt: the salt for the derivation. + :param iterations: the number of iterations. + :param keylen: the length of the resulting key. If not provided + the digest size will be used. + :param hashfunc: the hash function to use. This can either be the + string name of a known hash function or a function + from the hashlib module. Defaults to sha256. + """ + if not hashfunc: + hashfunc = "sha256" + + data = to_bytes(data) + salt = to_bytes(salt) + + if callable(hashfunc): + _test_hash = hashfunc() + hash_name = getattr(_test_hash, "name", None) + else: + hash_name = hashfunc + return hashlib.pbkdf2_hmac(hash_name, data, salt, iterations, keylen) + + +def safe_str_cmp(a, b): + """This function compares strings in somewhat constant time. This + requires that the length of at least one string is known in advance. + + Returns `True` if the two strings are equal, or `False` if they are not. + + .. versionadded:: 0.7 + """ + if isinstance(a, text_type): + a = a.encode("utf-8") + if isinstance(b, text_type): + b = b.encode("utf-8") + + if _builtin_safe_str_cmp is not None: + return _builtin_safe_str_cmp(a, b) + + if len(a) != len(b): + return False + + rv = 0 + if PY2: + for x, y in izip(a, b): + rv |= ord(x) ^ ord(y) + else: + for x, y in izip(a, b): + rv |= x ^ y + + return rv == 0 + + +def gen_salt(length): + """Generate a random string of SALT_CHARS with specified ``length``.""" + if length <= 0: + raise ValueError("Salt length must be positive") + return "".join(_sys_rng.choice(SALT_CHARS) for _ in range_type(length)) + + +def _hash_internal(method, salt, password): + """Internal password hash helper. Supports plaintext without salt, + unsalted and salted passwords. In case salted passwords are used + hmac is used. + """ + if method == "plain": + return password, method + + if isinstance(password, text_type): + password = password.encode("utf-8") + + if method.startswith("pbkdf2:"): + args = method[7:].split(":") + if len(args) not in (1, 2): + raise ValueError("Invalid number of arguments for PBKDF2") + method = args.pop(0) + iterations = args and int(args[0] or 0) or DEFAULT_PBKDF2_ITERATIONS + is_pbkdf2 = True + actual_method = "pbkdf2:%s:%d" % (method, iterations) + else: + is_pbkdf2 = False + actual_method = method + + if is_pbkdf2: + if not salt: + raise ValueError("Salt is required for PBKDF2") + rv = pbkdf2_hex(password, salt, iterations, hashfunc=method) + elif salt: + if isinstance(salt, text_type): + salt = salt.encode("utf-8") + mac = _create_mac(salt, password, method) + rv = mac.hexdigest() + else: + rv = hashlib.new(method, password).hexdigest() + return rv, actual_method + + +def _create_mac(key, msg, method): + if callable(method): + return hmac.HMAC(key, msg, method) + + def hashfunc(d=b""): + return hashlib.new(method, d) + + # Python 2.7 used ``hasattr(digestmod, '__call__')`` + # to detect if hashfunc is callable + hashfunc.__call__ = hashfunc + return hmac.HMAC(key, msg, hashfunc) + + +def generate_password_hash(password, method="pbkdf2:sha256", salt_length=8): + """Hash a password with the given method and salt with a string of + the given length. The format of the string returned includes the method + that was used so that :func:`check_password_hash` can check the hash. + + The format for the hashed string looks like this:: + + method$salt$hash + + This method can **not** generate unsalted passwords but it is possible + to set param method='plain' in order to enforce plaintext passwords. + If a salt is used, hmac is used internally to salt the password. + + If PBKDF2 is wanted it can be enabled by setting the method to + ``pbkdf2:method:iterations`` where iterations is optional:: + + pbkdf2:sha256:80000$salt$hash + pbkdf2:sha256$salt$hash + + :param password: the password to hash. + :param method: the hash method to use (one that hashlib supports). Can + optionally be in the format ``pbkdf2:[:iterations]`` + to enable PBKDF2. + :param salt_length: the length of the salt in letters. + """ + salt = gen_salt(salt_length) if method != "plain" else "" + h, actual_method = _hash_internal(method, salt, password) + return "%s$%s$%s" % (actual_method, salt, h) + + +def check_password_hash(pwhash, password): + """check a password against a given salted and hashed password value. + In order to support unsalted legacy passwords this method supports + plain text passwords, md5 and sha1 hashes (both salted and unsalted). + + Returns `True` if the password matched, `False` otherwise. + + :param pwhash: a hashed string like returned by + :func:`generate_password_hash`. + :param password: the plaintext password to compare against the hash. + """ + if pwhash.count("$") < 2: + return False + method, salt, hashval = pwhash.split("$", 2) + return safe_str_cmp(_hash_internal(method, salt, password)[0], hashval) + + +def safe_join(directory, *pathnames): + """Safely join zero or more untrusted path components to a base + directory to avoid escaping the base directory. + + :param directory: The trusted base directory. + :param pathnames: The untrusted path components relative to the + base directory. + :return: A safe path, otherwise ``None``. + """ + 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("../") + ): + return None + + parts.append(filename) + + return posixpath.join(*parts) diff --git a/env/lib/python3.6/site-packages/werkzeug/serving.py b/env/lib/python3.6/site-packages/werkzeug/serving.py new file mode 100644 index 0000000..f2a0dc9 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/serving.py @@ -0,0 +1,1117 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.serving + ~~~~~~~~~~~~~~~~ + + There are many ways to serve a WSGI application. While you're developing + it you usually don't want a full blown webserver like Apache but a simple + standalone one. From Python 2.5 onwards there is the `wsgiref`_ server in + the standard library. If you're using older versions of Python you can + download the package from the cheeseshop. + + However there are some caveats. Sourcecode won't reload itself when + changed and each time you kill the server using ``^C`` you get an + `KeyboardInterrupt` error. While the latter is easy to solve the first + one can be a pain in the ass in some situations. + + The easiest way is creating a small ``start-myproject.py`` that runs the + application:: + + #!/usr/bin/env python + # -*- coding: utf-8 -*- + from myproject import make_app + from werkzeug.serving import run_simple + + app = make_app(...) + run_simple('localhost', 8080, app, use_reloader=True) + + You can also pass it a `extra_files` keyword argument with a list of + additional files (like configuration files) you want to observe. + + For bigger applications you should consider using `click` + (http://click.pocoo.org) instead of a simple start file. + + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import io +import os +import signal +import socket +import sys +from datetime import datetime as dt +from datetime import timedelta + +from ._compat import PY2 +from ._compat import reraise +from ._compat import WIN +from ._compat import wsgi_encoding_dance +from ._internal import _log +from .exceptions import InternalServerError +from .urls import uri_to_iri +from .urls import url_parse +from .urls import url_unquote + +try: + import socketserver + from http.server import BaseHTTPRequestHandler + from http.server import HTTPServer +except ImportError: + import SocketServer as socketserver + from BaseHTTPServer import HTTPServer + from BaseHTTPServer import BaseHTTPRequestHandler + +try: + import ssl +except ImportError: + + class _SslDummy(object): + def __getattr__(self, name): + raise RuntimeError("SSL support unavailable") + + ssl = _SslDummy() + +try: + import click +except ImportError: + click = None + + +ThreadingMixIn = socketserver.ThreadingMixIn +can_fork = hasattr(os, "fork") + +if can_fork: + ForkingMixIn = socketserver.ForkingMixIn +else: + + class ForkingMixIn(object): + pass + + +try: + af_unix = socket.AF_UNIX +except AttributeError: + af_unix = None + + +LISTEN_QUEUE = 128 +can_open_by_fd = not WIN and hasattr(socket, "fromfd") + +# On Python 3, ConnectionError represents the same errnos as +# socket.error from Python 2, while socket.error is an alias for the +# more generic OSError. +if PY2: + _ConnectionError = socket.error +else: + _ConnectionError = ConnectionError + + +class DechunkedInput(io.RawIOBase): + """An input stream that handles Transfer-Encoding 'chunked'""" + + def __init__(self, rfile): + self._rfile = rfile + self._done = False + self._len = 0 + + def readable(self): + return True + + def read_chunk_len(self): + try: + line = self._rfile.readline().decode("latin1") + _len = int(line.strip(), 16) + except ValueError: + raise IOError("Invalid chunk header") + if _len < 0: + raise IOError("Negative chunk length not allowed") + return _len + + def readinto(self, buf): + read = 0 + while not self._done and read < len(buf): + if self._len == 0: + # This is the first chunk or we fully consumed the previous + # one. Read the next length of the next chunk + self._len = self.read_chunk_len() + + if self._len == 0: + # Found the final chunk of size 0. The stream is now exhausted, + # but there is still a final newline that should be consumed + self._done = True + + if self._len > 0: + # There is data (left) in this chunk, so append it to the + # buffer. If this operation fully consumes the chunk, this will + # reset self._len to 0. + n = min(len(buf), self._len) + buf[read : read + n] = self._rfile.read(n) + self._len -= n + read += n + + if self._len == 0: + # Skip the terminating newline of a chunk that has been fully + # consumed. This also applies to the 0-sized final chunk + terminator = self._rfile.readline() + if terminator not in (b"\n", b"\r\n", b"\r"): + raise IOError("Missing chunk terminating newline") + + return read + + +class WSGIRequestHandler(BaseHTTPRequestHandler, object): + + """A request handler that implements WSGI dispatching.""" + + @property + def server_version(self): + from . import __version__ + + return "Werkzeug/" + __version__ + + def make_environ(self): + request_url = url_parse(self.path) + + def shutdown_server(): + self.server.shutdown_signal = True + + url_scheme = "http" if self.server.ssl_context is None else "https" + if not self.client_address: + self.client_address = "" + if isinstance(self.client_address, str): + self.client_address = (self.client_address, 0) + else: + pass + + # If there was no scheme but the path started with two slashes, + # the first segment may have been incorrectly parsed as the + # netloc, prepend it to the path again. + if not request_url.scheme and request_url.netloc: + path_info = "/%s%s" % (request_url.netloc, request_url.path) + else: + path_info = request_url.path + + path_info = url_unquote(path_info) + + environ = { + "wsgi.version": (1, 0), + "wsgi.url_scheme": url_scheme, + "wsgi.input": self.rfile, + "wsgi.errors": sys.stderr, + "wsgi.multithread": self.server.multithread, + "wsgi.multiprocess": self.server.multiprocess, + "wsgi.run_once": False, + "werkzeug.server.shutdown": shutdown_server, + "SERVER_SOFTWARE": self.server_version, + "REQUEST_METHOD": self.command, + "SCRIPT_NAME": "", + "PATH_INFO": wsgi_encoding_dance(path_info), + "QUERY_STRING": wsgi_encoding_dance(request_url.query), + # Non-standard, added by mod_wsgi, uWSGI + "REQUEST_URI": wsgi_encoding_dance(self.path), + # Non-standard, added by gunicorn + "RAW_URI": wsgi_encoding_dance(self.path), + "REMOTE_ADDR": self.address_string(), + "REMOTE_PORT": self.port_integer(), + "SERVER_NAME": self.server.server_address[0], + "SERVER_PORT": str(self.server.server_address[1]), + "SERVER_PROTOCOL": self.request_version, + } + + for key, value in self.get_header_items(): + key = key.upper().replace("-", "_") + value = value.replace("\r\n", "") + if key not in ("CONTENT_TYPE", "CONTENT_LENGTH"): + key = "HTTP_" + key + if key in environ: + value = "{},{}".format(environ[key], value) + environ[key] = value + + if environ.get("HTTP_TRANSFER_ENCODING", "").strip().lower() == "chunked": + environ["wsgi.input_terminated"] = True + environ["wsgi.input"] = DechunkedInput(environ["wsgi.input"]) + + # Per RFC 2616, if the URL is absolute, use that as the host. + # We're using "has a scheme" to indicate an absolute URL. + if request_url.scheme and request_url.netloc: + environ["HTTP_HOST"] = request_url.netloc + + try: + # binary_form=False gives nicer information, but wouldn't be compatible with + # what Nginx or Apache could return. + peer_cert = self.connection.getpeercert(binary_form=True) + if peer_cert is not None: + # Nginx and Apache use PEM format. + environ["SSL_CLIENT_CERT"] = ssl.DER_cert_to_PEM_cert(peer_cert) + except ValueError: + # SSL handshake hasn't finished. + self.server.log("error", "Cannot fetch SSL peer certificate info") + except AttributeError: + # Not using TLS, the socket will not have getpeercert(). + pass + + return environ + + def run_wsgi(self): + if self.headers.get("Expect", "").lower().strip() == "100-continue": + self.wfile.write(b"HTTP/1.1 100 Continue\r\n\r\n") + + self.environ = environ = self.make_environ() + headers_set = [] + headers_sent = [] + + def write(data): + assert headers_set, "write() before start_response" + if not headers_sent: + status, response_headers = headers_sent[:] = headers_set + try: + code, msg = status.split(None, 1) + except ValueError: + code, msg = status, "" + code = int(code) + self.send_response(code, msg) + header_keys = set() + for key, value in response_headers: + self.send_header(key, value) + key = key.lower() + header_keys.add(key) + if not ( + "content-length" in header_keys + or environ["REQUEST_METHOD"] == "HEAD" + or code < 200 + or code in (204, 304) + ): + self.close_connection = True + self.send_header("Connection", "close") + if "server" not in header_keys: + self.send_header("Server", self.version_string()) + if "date" not in header_keys: + self.send_header("Date", self.date_time_string()) + self.end_headers() + + assert isinstance(data, bytes), "applications must write bytes" + if data: + # Only write data if there is any to avoid Python 3.5 SSL bug + self.wfile.write(data) + self.wfile.flush() + + def start_response(status, response_headers, exc_info=None): + if exc_info: + try: + if headers_sent: + reraise(*exc_info) + finally: + exc_info = None + elif headers_set: + raise AssertionError("Headers already set") + headers_set[:] = [status, response_headers] + return write + + def execute(app): + application_iter = app(environ, start_response) + try: + for data in application_iter: + write(data) + if not headers_sent: + write(b"") + finally: + if hasattr(application_iter, "close"): + application_iter.close() + + try: + execute(self.server.app) + except (_ConnectionError, socket.timeout) as e: + self.connection_dropped(e, environ) + except Exception: + if self.server.passthrough_errors: + raise + from .debug.tbtools import get_current_traceback + + traceback = get_current_traceback(ignore_system_exceptions=True) + try: + # if we haven't yet sent the headers but they are set + # we roll back to be able to set them again. + if not headers_sent: + del headers_set[:] + execute(InternalServerError()) + except Exception: + pass + self.server.log("error", "Error on request:\n%s", traceback.plaintext) + + def handle(self): + """Handles a request ignoring dropped connections.""" + try: + BaseHTTPRequestHandler.handle(self) + except (_ConnectionError, socket.timeout) as e: + self.connection_dropped(e) + except Exception as e: + if self.server.ssl_context is None or not is_ssl_error(e): + raise + if self.server.shutdown_signal: + self.initiate_shutdown() + + def initiate_shutdown(self): + """A horrible, horrible way to kill the server for Python 2.6 and + later. It's the best we can do. + """ + # Windows does not provide SIGKILL, go with SIGTERM then. + sig = getattr(signal, "SIGKILL", signal.SIGTERM) + # reloader active + if is_running_from_reloader(): + os.kill(os.getpid(), sig) + # python 2.7 + self.server._BaseServer__shutdown_request = True + # python 2.6 + self.server._BaseServer__serving = False + + def connection_dropped(self, error, environ=None): + """Called if the connection was closed by the client. By default + nothing happens. + """ + + def handle_one_request(self): + """Handle a single HTTP request.""" + self.raw_requestline = self.rfile.readline() + if not self.raw_requestline: + self.close_connection = 1 + elif self.parse_request(): + return self.run_wsgi() + + def send_response(self, code, message=None): + """Send the response header and log the response code.""" + self.log_request(code) + if message is None: + message = code in self.responses and self.responses[code][0] or "" + if self.request_version != "HTTP/0.9": + hdr = "%s %d %s\r\n" % (self.protocol_version, code, message) + self.wfile.write(hdr.encode("ascii")) + + def version_string(self): + return BaseHTTPRequestHandler.version_string(self).strip() + + def address_string(self): + if getattr(self, "environ", None): + return self.environ["REMOTE_ADDR"] + elif not self.client_address: + return "" + elif isinstance(self.client_address, str): + return self.client_address + else: + return self.client_address[0] + + def port_integer(self): + return self.client_address[1] + + def log_request(self, code="-", size="-"): + try: + path = uri_to_iri(self.path) + msg = "%s %s %s" % (self.command, path, self.request_version) + except AttributeError: + # path isn't set if the requestline was bad + msg = self.requestline + + code = str(code) + + if click: + color = click.style + + if code[0] == "1": # 1xx - Informational + msg = color(msg, bold=True) + elif code[0] == "2": # 2xx - Success + msg = color(msg, fg="white") + elif code == "304": # 304 - Resource Not Modified + msg = color(msg, fg="cyan") + elif code[0] == "3": # 3xx - Redirection + msg = color(msg, fg="green") + elif code == "404": # 404 - Resource Not Found + msg = color(msg, fg="yellow") + elif code[0] == "4": # 4xx - Client Error + msg = color(msg, fg="red", bold=True) + else: # 5xx, or any other response + msg = color(msg, fg="magenta", bold=True) + + self.log("info", '"%s" %s %s', msg, code, size) + + def log_error(self, *args): + self.log("error", *args) + + def log_message(self, format, *args): + self.log("info", format, *args) + + def log(self, type, message, *args): + _log( + type, + "%s - - [%s] %s\n" + % (self.address_string(), self.log_date_time_string(), message % args), + ) + + def get_header_items(self): + """ + Get an iterable list of key/value pairs representing headers. + + This function provides Python 2/3 compatibility as related to the + parsing of request headers. Python 2.7 is not compliant with + RFC 3875 Section 4.1.18 which requires multiple values for headers + to be provided or RFC 2616 which allows for folding of multi-line + headers. This function will return a matching list regardless + of Python version. It can be removed once Python 2.7 support + is dropped. + + :return: List of tuples containing header hey/value pairs + """ + if PY2: + # For Python 2, process the headers manually according to + # W3C RFC 2616 Section 4.2. + items = [] + for header in self.headers.headers: + # Remove "\r\n" from the header and split on ":" to get + # the field name and value. + try: + key, value = header[0:-2].split(":", 1) + except ValueError: + # If header could not be slit with : but starts with white + # space and it follows an existing header, it's a folded + # header. + if header[0] in ("\t", " ") and items: + # Pop off the last header + key, value = items.pop() + # Append the current header to the value of the last + # header which will be placed back on the end of the + # list + value = value + header + # Otherwise it's just a bad header and should error + else: + # Re-raise the value error + raise + + # Add the key and the value once stripped of leading + # white space. The specification allows for stripping + # trailing white space but the Python 3 code does not + # strip trailing white space. Therefore, trailing space + # will be left as is to match the Python 3 behavior. + items.append((key, value.lstrip())) + else: + items = self.headers.items() + + return items + + +#: backwards compatible name if someone is subclassing it +BaseRequestHandler = WSGIRequestHandler + + +def generate_adhoc_ssl_pair(cn=None): + try: + from cryptography import x509 + from cryptography.x509.oid import NameOID + from cryptography.hazmat.backends import default_backend + from cryptography.hazmat.primitives import hashes + from cryptography.hazmat.primitives.asymmetric import rsa + except ImportError: + raise TypeError("Using ad-hoc certificates requires the cryptography library.") + pkey = rsa.generate_private_key( + public_exponent=65537, key_size=2048, backend=default_backend() + ) + + # pretty damn sure that this is not actually accepted by anyone + if cn is None: + cn = u"*" + + subject = x509.Name( + [ + x509.NameAttribute(NameOID.ORGANIZATION_NAME, u"Dummy Certificate"), + x509.NameAttribute(NameOID.COMMON_NAME, cn), + ] + ) + + cert = ( + x509.CertificateBuilder() + .subject_name(subject) + .issuer_name(subject) + .public_key(pkey.public_key()) + .serial_number(x509.random_serial_number()) + .not_valid_before(dt.utcnow()) + .not_valid_after(dt.utcnow() + timedelta(days=365)) + .add_extension(x509.ExtendedKeyUsage([x509.OID_SERVER_AUTH]), critical=False) + .add_extension( + x509.SubjectAlternativeName([x509.DNSName(u"*")]), critical=False + ) + .sign(pkey, hashes.SHA256(), default_backend()) + ) + return cert, pkey + + +def make_ssl_devcert(base_path, host=None, cn=None): + """Creates an SSL key for development. This should be used instead of + the ``'adhoc'`` key which generates a new cert on each server start. + It accepts a path for where it should store the key and cert and + either a host or CN. If a host is given it will use the CN + ``*.host/CN=host``. + + For more information see :func:`run_simple`. + + .. versionadded:: 0.9 + + :param base_path: the path to the certificate and key. The extension + ``.crt`` is added for the certificate, ``.key`` is + added for the key. + :param host: the name of the host. This can be used as an alternative + for the `cn`. + :param cn: the `CN` to use. + """ + + if host is not None: + cn = u"*.%s/CN=%s" % (host, host) + cert, pkey = generate_adhoc_ssl_pair(cn=cn) + + from cryptography.hazmat.primitives import serialization + + cert_file = base_path + ".crt" + pkey_file = base_path + ".key" + + with open(cert_file, "wb") as f: + f.write(cert.public_bytes(serialization.Encoding.PEM)) + with open(pkey_file, "wb") as f: + f.write( + pkey.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.TraditionalOpenSSL, + encryption_algorithm=serialization.NoEncryption(), + ) + ) + + return cert_file, pkey_file + + +def generate_adhoc_ssl_context(): + """Generates an adhoc SSL context for the development server.""" + import tempfile + import atexit + + cert, pkey = generate_adhoc_ssl_pair() + + from cryptography.hazmat.primitives import serialization + + cert_handle, cert_file = tempfile.mkstemp() + pkey_handle, pkey_file = tempfile.mkstemp() + atexit.register(os.remove, pkey_file) + atexit.register(os.remove, cert_file) + + os.write(cert_handle, cert.public_bytes(serialization.Encoding.PEM)) + os.write( + pkey_handle, + pkey.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.TraditionalOpenSSL, + encryption_algorithm=serialization.NoEncryption(), + ), + ) + + os.close(cert_handle) + os.close(pkey_handle) + ctx = load_ssl_context(cert_file, pkey_file) + return ctx + + +def load_ssl_context(cert_file, pkey_file=None, protocol=None): + """Loads SSL context from cert/private key files and optional protocol. + Many parameters are directly taken from the API of + :py:class:`ssl.SSLContext`. + + :param cert_file: Path of the certificate to use. + :param pkey_file: Path of the private key to use. If not given, the key + will be obtained from the certificate file. + :param protocol: One of the ``PROTOCOL_*`` constants in the stdlib ``ssl`` + module. Defaults to ``PROTOCOL_SSLv23``. + """ + if protocol is None: + try: + protocol = ssl.PROTOCOL_TLS_SERVER + except AttributeError: + # Python <= 3.5 compat + protocol = ssl.PROTOCOL_SSLv23 + ctx = _SSLContext(protocol) + ctx.load_cert_chain(cert_file, pkey_file) + return ctx + + +class _SSLContext(object): + + """A dummy class with a small subset of Python3's ``ssl.SSLContext``, only + intended to be used with and by Werkzeug.""" + + def __init__(self, protocol): + self._protocol = protocol + self._certfile = None + self._keyfile = None + self._password = None + + def load_cert_chain(self, certfile, keyfile=None, password=None): + self._certfile = certfile + self._keyfile = keyfile or certfile + self._password = password + + def wrap_socket(self, sock, **kwargs): + return ssl.wrap_socket( + sock, + keyfile=self._keyfile, + certfile=self._certfile, + ssl_version=self._protocol, + **kwargs + ) + + +def is_ssl_error(error=None): + """Checks if the given error (or the current one) is an SSL error.""" + if error is None: + error = sys.exc_info()[1] + return isinstance(error, ssl.SSLError) + + +def select_address_family(host, port): + """Return ``AF_INET4``, ``AF_INET6``, or ``AF_UNIX`` depending on + the host and port.""" + # disabled due to problems with current ipv6 implementations + # and various operating systems. Probably this code also is + # not supposed to work, but I can't come up with any other + # ways to implement this. + # try: + # info = socket.getaddrinfo(host, port, socket.AF_UNSPEC, + # socket.SOCK_STREAM, 0, + # socket.AI_PASSIVE) + # if info: + # return info[0][0] + # except socket.gaierror: + # pass + if host.startswith("unix://"): + return socket.AF_UNIX + elif ":" in host and hasattr(socket, "AF_INET6"): + return socket.AF_INET6 + return socket.AF_INET + + +def get_sockaddr(host, port, family): + """Return a fully qualified socket address that can be passed to + :func:`socket.bind`.""" + if family == af_unix: + return host.split("://", 1)[1] + try: + res = socket.getaddrinfo( + host, port, family, socket.SOCK_STREAM, socket.IPPROTO_TCP + ) + except socket.gaierror: + return host, port + return res[0][4] + + +class BaseWSGIServer(HTTPServer, object): + + """Simple single-threaded, single-process WSGI server.""" + + multithread = False + multiprocess = False + request_queue_size = LISTEN_QUEUE + + def __init__( + self, + host, + port, + app, + handler=None, + passthrough_errors=False, + ssl_context=None, + fd=None, + ): + if handler is None: + handler = WSGIRequestHandler + + self.address_family = select_address_family(host, port) + + if fd is not None: + real_sock = socket.fromfd(fd, self.address_family, socket.SOCK_STREAM) + port = 0 + + server_address = get_sockaddr(host, int(port), self.address_family) + + # remove socket file if it already exists + if self.address_family == af_unix and os.path.exists(server_address): + os.unlink(server_address) + HTTPServer.__init__(self, server_address, handler) + + self.app = app + self.passthrough_errors = passthrough_errors + self.shutdown_signal = False + self.host = host + self.port = self.socket.getsockname()[1] + + # Patch in the original socket. + if fd is not None: + self.socket.close() + self.socket = real_sock + self.server_address = self.socket.getsockname() + + if ssl_context is not None: + if isinstance(ssl_context, tuple): + ssl_context = load_ssl_context(*ssl_context) + if ssl_context == "adhoc": + ssl_context = generate_adhoc_ssl_context() + + # If we are on Python 2 the return value from socket.fromfd + # is an internal socket object but what we need for ssl wrap + # is the wrapper around it :( + sock = self.socket + if PY2 and not isinstance(sock, socket.socket): + sock = socket.socket(sock.family, sock.type, sock.proto, sock) + self.socket = ssl_context.wrap_socket(sock, server_side=True) + self.ssl_context = ssl_context + else: + self.ssl_context = None + + def log(self, type, message, *args): + _log(type, message, *args) + + def serve_forever(self): + self.shutdown_signal = False + try: + HTTPServer.serve_forever(self) + except KeyboardInterrupt: + pass + finally: + self.server_close() + + def handle_error(self, request, client_address): + if self.passthrough_errors: + raise + # Python 2 still causes a socket.error after the earlier + # handling, so silence it here. + if isinstance(sys.exc_info()[1], _ConnectionError): + return + return HTTPServer.handle_error(self, request, client_address) + + def get_request(self): + con, info = self.socket.accept() + return con, info + + +class ThreadedWSGIServer(ThreadingMixIn, BaseWSGIServer): + + """A WSGI server that does threading.""" + + multithread = True + daemon_threads = True + + +class ForkingWSGIServer(ForkingMixIn, BaseWSGIServer): + + """A WSGI server that does forking.""" + + multiprocess = True + + def __init__( + self, + host, + port, + app, + processes=40, + handler=None, + passthrough_errors=False, + ssl_context=None, + fd=None, + ): + if not can_fork: + raise ValueError("Your platform does not support forking.") + BaseWSGIServer.__init__( + self, host, port, app, handler, passthrough_errors, ssl_context, fd + ) + self.max_children = processes + + +def make_server( + host=None, + port=None, + app=None, + threaded=False, + processes=1, + request_handler=None, + passthrough_errors=False, + ssl_context=None, + fd=None, +): + """Create a new server instance that is either threaded, or forks + or just processes one request after another. + """ + if threaded and processes > 1: + raise ValueError("cannot have a multithreaded and multi process server.") + elif threaded: + return ThreadedWSGIServer( + host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd + ) + elif processes > 1: + return ForkingWSGIServer( + host, + port, + app, + processes, + request_handler, + passthrough_errors, + ssl_context, + fd=fd, + ) + else: + return BaseWSGIServer( + host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd + ) + + +def is_running_from_reloader(): + """Checks if the application is running from within the Werkzeug + reloader subprocess. + + .. versionadded:: 0.10 + """ + return os.environ.get("WERKZEUG_RUN_MAIN") == "true" + + +def run_simple( + hostname, + port, + application, + use_reloader=False, + use_debugger=False, + use_evalex=True, + extra_files=None, + reloader_interval=1, + reloader_type="auto", + threaded=False, + processes=1, + request_handler=None, + static_files=None, + passthrough_errors=False, + ssl_context=None, +): + """Start a WSGI application. Optional features include a reloader, + multithreading and fork support. + + This function has a command-line interface too:: + + python -m werkzeug.serving --help + + .. versionadded:: 0.5 + `static_files` was added to simplify serving of static files as well + as `passthrough_errors`. + + .. versionadded:: 0.6 + support for SSL was added. + + .. versionadded:: 0.8 + Added support for automatically loading a SSL context from certificate + file and private key. + + .. versionadded:: 0.9 + Added command-line interface. + + .. versionadded:: 0.10 + Improved the reloader and added support for changing the backend + through the `reloader_type` parameter. See :ref:`reloader` + for more information. + + .. versionchanged:: 0.15 + Bind to a Unix socket by passing a path that starts with + ``unix://`` as the ``hostname``. + + :param hostname: The host to bind to, for example ``'localhost'``. + If the value is a path that starts with ``unix://`` it will bind + to a Unix socket instead of a TCP socket.. + :param port: The port for the server. eg: ``8080`` + :param application: the WSGI application to execute + :param use_reloader: should the server automatically restart the python + process if modules were changed? + :param use_debugger: should the werkzeug debugging system be used? + :param use_evalex: should the exception evaluation feature be enabled? + :param extra_files: a list of files the reloader should watch + additionally to the modules. For example configuration + files. + :param reloader_interval: the interval for the reloader in seconds. + :param reloader_type: the type of reloader to use. The default is + auto detection. Valid values are ``'stat'`` and + ``'watchdog'``. See :ref:`reloader` for more + information. + :param threaded: should the process handle each request in a separate + thread? + :param processes: if greater than 1 then handle each request in a new process + up to this maximum number of concurrent processes. + :param request_handler: optional parameter that can be used to replace + the default one. You can use this to replace it + with a different + :class:`~BaseHTTPServer.BaseHTTPRequestHandler` + subclass. + :param static_files: a list or dict of paths for static files. This works + exactly like :class:`SharedDataMiddleware`, it's actually + just wrapping the application in that middleware before + serving. + :param passthrough_errors: set this to `True` to disable the error catching. + This means that the server will die on errors but + it can be useful to hook debuggers in (pdb etc.) + :param ssl_context: an SSL context for the connection. Either an + :class:`ssl.SSLContext`, a tuple in the form + ``(cert_file, pkey_file)``, the string ``'adhoc'`` if + the server should automatically create one, or ``None`` + to disable SSL (which is the default). + """ + if not isinstance(port, int): + raise TypeError("port must be an integer") + if use_debugger: + from .debug import DebuggedApplication + + application = DebuggedApplication(application, use_evalex) + if static_files: + from .middleware.shared_data import SharedDataMiddleware + + application = SharedDataMiddleware(application, static_files) + + def log_startup(sock): + display_hostname = hostname if hostname not in ("", "*") else "localhost" + quit_msg = "(Press CTRL+C to quit)" + if sock.family == af_unix: + _log("info", " * Running on %s %s", display_hostname, quit_msg) + else: + if ":" in display_hostname: + display_hostname = "[%s]" % display_hostname + port = sock.getsockname()[1] + _log( + "info", + " * Running on %s://%s:%d/ %s", + "http" if ssl_context is None else "https", + display_hostname, + port, + quit_msg, + ) + + def inner(): + try: + fd = int(os.environ["WERKZEUG_SERVER_FD"]) + except (LookupError, ValueError): + fd = None + srv = make_server( + hostname, + port, + application, + threaded, + processes, + request_handler, + passthrough_errors, + ssl_context, + fd=fd, + ) + if fd is None: + log_startup(srv.socket) + srv.serve_forever() + + if use_reloader: + # If we're not running already in the subprocess that is the + # reloader we want to open up a socket early to make sure the + # port is actually available. + if not is_running_from_reloader(): + if port == 0 and not can_open_by_fd: + raise ValueError( + "Cannot bind to a random port with enabled " + "reloader if the Python interpreter does " + "not support socket opening by fd." + ) + + # Create and destroy a socket so that any exceptions are + # raised before we spawn a separate Python interpreter and + # lose this ability. + address_family = select_address_family(hostname, port) + server_address = get_sockaddr(hostname, port, address_family) + s = socket.socket(address_family, socket.SOCK_STREAM) + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + s.bind(server_address) + if hasattr(s, "set_inheritable"): + s.set_inheritable(True) + + # If we can open the socket by file descriptor, then we can just + # reuse this one and our socket will survive the restarts. + if can_open_by_fd: + os.environ["WERKZEUG_SERVER_FD"] = str(s.fileno()) + s.listen(LISTEN_QUEUE) + log_startup(s) + else: + s.close() + if address_family == af_unix: + _log("info", "Unlinking %s" % server_address) + os.unlink(server_address) + + # Do not use relative imports, otherwise "python -m werkzeug.serving" + # breaks. + from ._reloader import run_with_reloader + + run_with_reloader(inner, extra_files, reloader_interval, reloader_type) + else: + inner() + + +def run_with_reloader(*args, **kwargs): + # People keep using undocumented APIs. Do not use this function + # please, we do not guarantee that it continues working. + from ._reloader import run_with_reloader + + return run_with_reloader(*args, **kwargs) + + +def main(): + """A simple command-line interface for :py:func:`run_simple`.""" + + # in contrast to argparse, this works at least under Python < 2.7 + import optparse + from .utils import import_string + + parser = optparse.OptionParser(usage="Usage: %prog [options] app_module:app_object") + parser.add_option( + "-b", + "--bind", + dest="address", + help="The hostname:port the app should listen on.", + ) + parser.add_option( + "-d", + "--debug", + dest="use_debugger", + action="store_true", + default=False, + help="Use Werkzeug's debugger.", + ) + parser.add_option( + "-r", + "--reload", + dest="use_reloader", + action="store_true", + default=False, + help="Reload Python process if modules change.", + ) + options, args = parser.parse_args() + + hostname, port = None, None + if options.address: + address = options.address.split(":") + hostname = address[0] + if len(address) > 1: + port = address[1] + + if len(args) != 1: + sys.stdout.write("No application supplied, or too much. See --help\n") + sys.exit(1) + app = import_string(args[0]) + + run_simple( + hostname=(hostname or "127.0.0.1"), + port=int(port or 5000), + application=app, + use_reloader=options.use_reloader, + use_debugger=options.use_debugger, + ) + + +if __name__ == "__main__": + main() diff --git a/env/lib/python3.6/site-packages/werkzeug/test.py b/env/lib/python3.6/site-packages/werkzeug/test.py new file mode 100644 index 0000000..c5ce50a --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/test.py @@ -0,0 +1,1123 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.test + ~~~~~~~~~~~~~ + + This module implements a client to WSGI applications for testing. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import mimetypes +import sys +from io import BytesIO +from itertools import chain +from random import random +from tempfile import TemporaryFile +from time import time + +from ._compat import iteritems +from ._compat import iterlists +from ._compat import itervalues +from ._compat import make_literal_wrapper +from ._compat import reraise +from ._compat import string_types +from ._compat import text_type +from ._compat import to_bytes +from ._compat import wsgi_encoding_dance +from ._internal import _get_environ +from .datastructures import CallbackDict +from .datastructures import CombinedMultiDict +from .datastructures import EnvironHeaders +from .datastructures import FileMultiDict +from .datastructures import Headers +from .datastructures import MultiDict +from .http import dump_cookie +from .http import dump_options_header +from .http import parse_options_header +from .urls import iri_to_uri +from .urls import url_encode +from .urls import url_fix +from .urls import url_parse +from .urls import url_unparse +from .urls import url_unquote +from .utils import get_content_type +from .wrappers import BaseRequest +from .wsgi import ClosingIterator +from .wsgi import get_current_url + +try: + from urllib.request import Request as U2Request +except ImportError: + from urllib2 import Request as U2Request + +try: + from http.cookiejar import CookieJar +except ImportError: + from cookielib import CookieJar + + +def stream_encode_multipart( + values, use_tempfile=True, threshold=1024 * 500, boundary=None, charset="utf-8" +): + """Encode a dict of values (either strings or file descriptors or + :class:`FileStorage` objects.) into a multipart encoded string stored + in a file descriptor. + """ + if boundary is None: + boundary = "---------------WerkzeugFormPart_%s%s" % (time(), random()) + _closure = [BytesIO(), 0, False] + + if use_tempfile: + + def write_binary(string): + stream, total_length, on_disk = _closure + if on_disk: + stream.write(string) + else: + length = len(string) + if length + _closure[1] <= threshold: + stream.write(string) + else: + new_stream = TemporaryFile("wb+") + new_stream.write(stream.getvalue()) + new_stream.write(string) + _closure[0] = new_stream + _closure[2] = True + _closure[1] = total_length + length + + else: + write_binary = _closure[0].write + + def write(string): + write_binary(string.encode(charset)) + + if not isinstance(values, MultiDict): + values = MultiDict(values) + + for key, values in iterlists(values): + for value in values: + write('--%s\r\nContent-Disposition: form-data; name="%s"' % (boundary, key)) + reader = getattr(value, "read", None) + if reader is not None: + filename = getattr(value, "filename", getattr(value, "name", None)) + content_type = getattr(value, "content_type", None) + if content_type is None: + content_type = ( + filename + and mimetypes.guess_type(filename)[0] + or "application/octet-stream" + ) + if filename is not None: + write('; filename="%s"\r\n' % filename) + else: + write("\r\n") + write("Content-Type: %s\r\n\r\n" % content_type) + while 1: + chunk = reader(16384) + if not chunk: + break + write_binary(chunk) + else: + if not isinstance(value, string_types): + value = str(value) + + value = to_bytes(value, charset) + write("\r\n\r\n") + write_binary(value) + write("\r\n") + write("--%s--\r\n" % boundary) + + length = int(_closure[0].tell()) + _closure[0].seek(0) + return _closure[0], length, boundary + + +def encode_multipart(values, boundary=None, charset="utf-8"): + """Like `stream_encode_multipart` but returns a tuple in the form + (``boundary``, ``data``) where data is a bytestring. + """ + stream, length, boundary = stream_encode_multipart( + values, use_tempfile=False, boundary=boundary, charset=charset + ) + return boundary, stream.read() + + +class _TestCookieHeaders(object): + + """A headers adapter for cookielib + """ + + def __init__(self, headers): + self.headers = headers + + def getheaders(self, name): + headers = [] + name = name.lower() + for k, v in self.headers: + if k.lower() == name: + headers.append(v) + return headers + + def get_all(self, name, default=None): + rv = [] + for k, v in self.headers: + if k.lower() == name.lower(): + rv.append(v) + return rv or default or [] + + +class _TestCookieResponse(object): + + """Something that looks like a httplib.HTTPResponse, but is actually just an + adapter for our test responses to make them available for cookielib. + """ + + def __init__(self, headers): + self.headers = _TestCookieHeaders(headers) + + def info(self): + return self.headers + + +class _TestCookieJar(CookieJar): + + """A cookielib.CookieJar modified to inject and read cookie headers from + and to wsgi environments, and wsgi application responses. + """ + + def inject_wsgi(self, environ): + """Inject the cookies as client headers into the server's wsgi + environment. + """ + cvals = ["%s=%s" % (c.name, c.value) for c in self] + + if cvals: + environ["HTTP_COOKIE"] = "; ".join(cvals) + else: + environ.pop("HTTP_COOKIE", None) + + def extract_wsgi(self, environ, headers): + """Extract the server's set-cookie headers as cookies into the + cookie jar. + """ + self.extract_cookies( + _TestCookieResponse(headers), U2Request(get_current_url(environ)) + ) + + +def _iter_data(data): + """Iterates over a `dict` or :class:`MultiDict` yielding all keys and + values. + This is used to iterate over the data passed to the + :class:`EnvironBuilder`. + """ + if isinstance(data, MultiDict): + for key, values in iterlists(data): + for value in values: + yield key, value + else: + for key, values in iteritems(data): + if isinstance(values, list): + for value in values: + yield key, value + else: + yield key, values + + +class EnvironBuilder(object): + """This class can be used to conveniently create a WSGI environment + for testing purposes. It can be used to quickly create WSGI environments + or request objects from arbitrary data. + + The signature of this class is also used in some other places as of + Werkzeug 0.5 (:func:`create_environ`, :meth:`BaseResponse.from_values`, + :meth:`Client.open`). Because of this most of the functionality is + available through the constructor alone. + + Files and regular form data can be manipulated independently of each + other with the :attr:`form` and :attr:`files` attributes, but are + passed with the same argument to the constructor: `data`. + + `data` can be any of these values: + + - a `str` or `bytes` object: The object is converted into an + :attr:`input_stream`, the :attr:`content_length` is set and you have to + provide a :attr:`content_type`. + - a `dict` or :class:`MultiDict`: The keys have to be strings. The values + have to be either any of the following objects, or a list of any of the + following objects: + + - a :class:`file`-like object: These are converted into + :class:`FileStorage` objects automatically. + - a `tuple`: The :meth:`~FileMultiDict.add_file` method is called + with the key and the unpacked `tuple` items as positional + arguments. + - a `str`: The string is set as form data for the associated key. + - a file-like object: The object content is loaded in memory and then + handled like a regular `str` or a `bytes`. + + :param path: the path of the request. In the WSGI environment this will + end up as `PATH_INFO`. If the `query_string` is not defined + and there is a question mark in the `path` everything after + it is used as query string. + :param base_url: the base URL is a URL that is used to extract the WSGI + URL scheme, host (server name + server port) and the + script root (`SCRIPT_NAME`). + :param query_string: an optional string or dict with URL parameters. + :param method: the HTTP method to use, defaults to `GET`. + :param input_stream: an optional input stream. Do not specify this and + `data`. As soon as an input stream is set you can't + modify :attr:`args` and :attr:`files` unless you + set the :attr:`input_stream` to `None` again. + :param content_type: The content type for the request. As of 0.5 you + don't have to provide this when specifying files + and form data via `data`. + :param content_length: The content length for the request. You don't + have to specify this when providing data via + `data`. + :param errors_stream: an optional error stream that is used for + `wsgi.errors`. Defaults to :data:`stderr`. + :param multithread: controls `wsgi.multithread`. Defaults to `False`. + :param multiprocess: controls `wsgi.multiprocess`. Defaults to `False`. + :param run_once: controls `wsgi.run_once`. Defaults to `False`. + :param headers: an optional list or :class:`Headers` object of headers. + :param data: a string or dict of form data or a file-object. + See explanation above. + :param json: An object to be serialized and assigned to ``data``. + Defaults the content type to ``"application/json"``. + Serialized with the function assigned to :attr:`json_dumps`. + :param environ_base: an optional dict of environment defaults. + :param environ_overrides: an optional dict of environment overrides. + :param charset: the charset used to encode unicode data. + + .. versionadded:: 0.15 + The ``json`` param and :meth:`json_dumps` method. + + .. versionadded:: 0.15 + The environ has keys ``REQUEST_URI`` and ``RAW_URI`` containing + the path before perecent-decoding. This is not part of the WSGI + PEP, but many WSGI servers include it. + + .. versionchanged:: 0.6 + ``path`` and ``base_url`` can now be unicode strings that are + encoded with :func:`iri_to_uri`. + """ + + #: the server protocol to use. defaults to HTTP/1.1 + server_protocol = "HTTP/1.1" + + #: the wsgi version to use. defaults to (1, 0) + wsgi_version = (1, 0) + + #: the default request class for :meth:`get_request` + request_class = BaseRequest + + import json + + #: The serialization function used when ``json`` is passed. + json_dumps = staticmethod(json.dumps) + del json + + def __init__( + self, + path="/", + base_url=None, + query_string=None, + method="GET", + input_stream=None, + content_type=None, + content_length=None, + errors_stream=None, + multithread=False, + multiprocess=False, + run_once=False, + headers=None, + data=None, + environ_base=None, + environ_overrides=None, + charset="utf-8", + mimetype=None, + json=None, + ): + path_s = make_literal_wrapper(path) + if query_string is not None and path_s("?") in path: + raise ValueError("Query string is defined in the path and as an argument") + if query_string is None and path_s("?") in path: + path, query_string = path.split(path_s("?"), 1) + self.charset = charset + self.path = iri_to_uri(path) + if base_url is not None: + base_url = url_fix(iri_to_uri(base_url, charset), charset) + self.base_url = base_url + if isinstance(query_string, (bytes, text_type)): + self.query_string = query_string + else: + if query_string is None: + query_string = MultiDict() + elif not isinstance(query_string, MultiDict): + query_string = MultiDict(query_string) + self.args = query_string + self.method = method + if headers is None: + headers = Headers() + elif not isinstance(headers, Headers): + headers = Headers(headers) + self.headers = headers + if content_type is not None: + self.content_type = content_type + if errors_stream is None: + errors_stream = sys.stderr + self.errors_stream = errors_stream + self.multithread = multithread + self.multiprocess = multiprocess + self.run_once = run_once + self.environ_base = environ_base + self.environ_overrides = environ_overrides + self.input_stream = input_stream + self.content_length = content_length + self.closed = False + + if json is not None: + if data is not None: + raise TypeError("can't provide both json and data") + + data = self.json_dumps(json) + + if self.content_type is None: + self.content_type = "application/json" + + if data: + if input_stream is not None: + raise TypeError("can't provide input stream and data") + if hasattr(data, "read"): + data = data.read() + if isinstance(data, text_type): + data = data.encode(self.charset) + if isinstance(data, bytes): + self.input_stream = BytesIO(data) + if self.content_length is None: + self.content_length = len(data) + else: + for key, value in _iter_data(data): + if isinstance(value, (tuple, dict)) or hasattr(value, "read"): + self._add_file_from_data(key, value) + else: + self.form.setlistdefault(key).append(value) + + if mimetype is not None: + self.mimetype = mimetype + + @classmethod + def from_environ(cls, environ, **kwargs): + """Turn an environ dict back into a builder. Any extra kwargs + override the args extracted from the environ. + + .. versionadded:: 0.15 + """ + headers = Headers(EnvironHeaders(environ)) + out = { + "path": environ["PATH_INFO"], + "base_url": cls._make_base_url( + environ["wsgi.url_scheme"], headers.pop("Host"), environ["SCRIPT_NAME"] + ), + "query_string": environ["QUERY_STRING"], + "method": environ["REQUEST_METHOD"], + "input_stream": environ["wsgi.input"], + "content_type": headers.pop("Content-Type", None), + "content_length": headers.pop("Content-Length", None), + "errors_stream": environ["wsgi.errors"], + "multithread": environ["wsgi.multithread"], + "multiprocess": environ["wsgi.multiprocess"], + "run_once": environ["wsgi.run_once"], + "headers": headers, + } + out.update(kwargs) + return cls(**out) + + def _add_file_from_data(self, key, value): + """Called in the EnvironBuilder to add files from the data dict.""" + if isinstance(value, tuple): + self.files.add_file(key, *value) + else: + self.files.add_file(key, value) + + @staticmethod + def _make_base_url(scheme, host, script_root): + return url_unparse((scheme, host, script_root, "", "")).rstrip("/") + "/" + + @property + def base_url(self): + """The base URL is used to extract the URL scheme, host name, + port, and root path. + """ + return self._make_base_url(self.url_scheme, self.host, self.script_root) + + @base_url.setter + def base_url(self, value): + if value is None: + scheme = "http" + netloc = "localhost" + script_root = "" + else: + scheme, netloc, script_root, qs, anchor = url_parse(value) + if qs or anchor: + raise ValueError("base url must not contain a query string or fragment") + self.script_root = script_root.rstrip("/") + self.host = netloc + self.url_scheme = scheme + + @property + def content_type(self): + """The content type for the request. Reflected from and to + the :attr:`headers`. Do not set if you set :attr:`files` or + :attr:`form` for auto detection. + """ + ct = self.headers.get("Content-Type") + if ct is None and not self._input_stream: + if self._files: + return "multipart/form-data" + if self._form: + return "application/x-www-form-urlencoded" + return None + return ct + + @content_type.setter + def content_type(self, value): + if value is None: + self.headers.pop("Content-Type", None) + else: + self.headers["Content-Type"] = value + + @property + def mimetype(self): + """The mimetype (content type without charset etc.) + + .. versionadded:: 0.14 + """ + ct = self.content_type + return ct.split(";")[0].strip() if ct else None + + @mimetype.setter + def mimetype(self, value): + self.content_type = get_content_type(value, self.charset) + + @property + def mimetype_params(self): + """ The mimetype parameters as dict. For example if the + content type is ``text/html; charset=utf-8`` the params would be + ``{'charset': 'utf-8'}``. + + .. versionadded:: 0.14 + """ + + def on_update(d): + self.headers["Content-Type"] = dump_options_header(self.mimetype, d) + + d = parse_options_header(self.headers.get("content-type", ""))[1] + return CallbackDict(d, on_update) + + @property + def content_length(self): + """The content length as integer. Reflected from and to the + :attr:`headers`. Do not set if you set :attr:`files` or + :attr:`form` for auto detection. + """ + return self.headers.get("Content-Length", type=int) + + @content_length.setter + def content_length(self, value): + if value is None: + self.headers.pop("Content-Length", None) + else: + self.headers["Content-Length"] = str(value) + + def _get_form(self, name, storage): + """Common behavior for getting the :attr:`form` and + :attr:`files` properties. + + :param name: Name of the internal cached attribute. + :param storage: Storage class used for the data. + """ + if self.input_stream is not None: + raise AttributeError("an input stream is defined") + + rv = getattr(self, name) + + if rv is None: + rv = storage() + setattr(self, name, rv) + + return rv + + def _set_form(self, name, value): + """Common behavior for setting the :attr:`form` and + :attr:`files` properties. + + :param name: Name of the internal cached attribute. + :param value: Value to assign to the attribute. + """ + self._input_stream = None + setattr(self, name, value) + + @property + def form(self): + """A :class:`MultiDict` of form values.""" + return self._get_form("_form", MultiDict) + + @form.setter + def form(self, value): + self._set_form("_form", value) + + @property + def files(self): + """A :class:`FileMultiDict` of uploaded files. Use + :meth:`~FileMultiDict.add_file` to add new files. + """ + return self._get_form("_files", FileMultiDict) + + @files.setter + def files(self, value): + self._set_form("_files", value) + + @property + def input_stream(self): + """An optional input stream. If you set this it will clear + :attr:`form` and :attr:`files`. + """ + return self._input_stream + + @input_stream.setter + def input_stream(self, value): + self._input_stream = value + self._form = None + self._files = None + + @property + def query_string(self): + """The query string. If you set this to a string + :attr:`args` will no longer be available. + """ + if self._query_string is None: + if self._args is not None: + return url_encode(self._args, charset=self.charset) + return "" + return self._query_string + + @query_string.setter + def query_string(self, value): + self._query_string = value + self._args = None + + @property + def args(self): + """The URL arguments as :class:`MultiDict`.""" + if self._query_string is not None: + raise AttributeError("a query string is defined") + if self._args is None: + self._args = MultiDict() + return self._args + + @args.setter + def args(self, value): + self._query_string = None + self._args = value + + @property + def server_name(self): + """The server name (read-only, use :attr:`host` to set)""" + return self.host.split(":", 1)[0] + + @property + def server_port(self): + """The server port as integer (read-only, use :attr:`host` to set)""" + pieces = self.host.split(":", 1) + if len(pieces) == 2 and pieces[1].isdigit(): + return int(pieces[1]) + if self.url_scheme == "https": + return 443 + return 80 + + def __del__(self): + try: + self.close() + except Exception: + pass + + def close(self): + """Closes all files. If you put real :class:`file` objects into the + :attr:`files` dict you can call this method to automatically close + them all in one go. + """ + if self.closed: + return + try: + files = itervalues(self.files) + except AttributeError: + files = () + for f in files: + try: + f.close() + except Exception: + pass + self.closed = True + + def get_environ(self): + """Return the built environ. + + .. versionchanged:: 0.15 + The content type and length headers are set based on + input stream detection. Previously this only set the WSGI + keys. + """ + input_stream = self.input_stream + content_length = self.content_length + + mimetype = self.mimetype + content_type = self.content_type + + if input_stream is not None: + start_pos = input_stream.tell() + input_stream.seek(0, 2) + end_pos = input_stream.tell() + input_stream.seek(start_pos) + content_length = end_pos - start_pos + elif mimetype == "multipart/form-data": + values = CombinedMultiDict([self.form, self.files]) + input_stream, content_length, boundary = stream_encode_multipart( + values, charset=self.charset + ) + content_type = mimetype + '; boundary="%s"' % boundary + elif mimetype == "application/x-www-form-urlencoded": + # XXX: py2v3 review + values = url_encode(self.form, charset=self.charset) + values = values.encode("ascii") + content_length = len(values) + input_stream = BytesIO(values) + else: + input_stream = BytesIO() + + result = {} + if self.environ_base: + result.update(self.environ_base) + + def _path_encode(x): + return wsgi_encoding_dance(url_unquote(x, self.charset), self.charset) + + qs = wsgi_encoding_dance(self.query_string) + + result.update( + { + "REQUEST_METHOD": self.method, + "SCRIPT_NAME": _path_encode(self.script_root), + "PATH_INFO": _path_encode(self.path), + "QUERY_STRING": qs, + # Non-standard, added by mod_wsgi, uWSGI + "REQUEST_URI": wsgi_encoding_dance(self.path), + # Non-standard, added by gunicorn + "RAW_URI": wsgi_encoding_dance(self.path), + "SERVER_NAME": self.server_name, + "SERVER_PORT": str(self.server_port), + "HTTP_HOST": self.host, + "SERVER_PROTOCOL": self.server_protocol, + "wsgi.version": self.wsgi_version, + "wsgi.url_scheme": self.url_scheme, + "wsgi.input": input_stream, + "wsgi.errors": self.errors_stream, + "wsgi.multithread": self.multithread, + "wsgi.multiprocess": self.multiprocess, + "wsgi.run_once": self.run_once, + } + ) + + headers = self.headers.copy() + + if content_type is not None: + result["CONTENT_TYPE"] = content_type + headers.set("Content-Type", content_type) + + if content_length is not None: + result["CONTENT_LENGTH"] = str(content_length) + headers.set("Content-Length", content_length) + + for key, value in headers.to_wsgi_list(): + result["HTTP_%s" % key.upper().replace("-", "_")] = value + + if self.environ_overrides: + result.update(self.environ_overrides) + + return result + + def get_request(self, cls=None): + """Returns a request with the data. If the request class is not + specified :attr:`request_class` is used. + + :param cls: The request wrapper to use. + """ + if cls is None: + cls = self.request_class + return cls(self.get_environ()) + + +class ClientRedirectError(Exception): + """If a redirect loop is detected when using follow_redirects=True with + the :cls:`Client`, then this exception is raised. + """ + + +class Client(object): + """This class allows you to send requests to a wrapped application. + + The response wrapper can be a class or factory function that takes + three arguments: app_iter, status and headers. The default response + wrapper just returns a tuple. + + Example:: + + class ClientResponse(BaseResponse): + ... + + client = Client(MyApplication(), response_wrapper=ClientResponse) + + The use_cookies parameter indicates whether cookies should be stored and + sent for subsequent requests. This is True by default, but passing False + will disable this behaviour. + + If you want to request some subdomain of your application you may set + `allow_subdomain_redirects` to `True` as if not no external redirects + are allowed. + + .. versionadded:: 0.5 + `use_cookies` is new in this version. Older versions did not provide + builtin cookie support. + + .. versionadded:: 0.14 + The `mimetype` parameter was added. + + .. versionadded:: 0.15 + The ``json`` parameter. + """ + + def __init__( + self, + application, + response_wrapper=None, + use_cookies=True, + allow_subdomain_redirects=False, + ): + self.application = application + self.response_wrapper = response_wrapper + if use_cookies: + self.cookie_jar = _TestCookieJar() + else: + self.cookie_jar = None + self.allow_subdomain_redirects = allow_subdomain_redirects + + def set_cookie( + self, + server_name, + key, + value="", + max_age=None, + expires=None, + path="/", + domain=None, + secure=None, + httponly=False, + samesite=None, + charset="utf-8", + ): + """Sets a cookie in the client's cookie jar. The server name + is required and has to match the one that is also passed to + the open call. + """ + assert self.cookie_jar is not None, "cookies disabled" + header = dump_cookie( + key, + value, + max_age, + expires, + path, + domain, + secure, + httponly, + charset, + samesite=samesite, + ) + environ = create_environ(path, base_url="http://" + server_name) + headers = [("Set-Cookie", header)] + self.cookie_jar.extract_wsgi(environ, headers) + + def delete_cookie(self, server_name, key, path="/", domain=None): + """Deletes a cookie in the test client.""" + self.set_cookie( + server_name, key, expires=0, max_age=0, path=path, domain=domain + ) + + def run_wsgi_app(self, environ, buffered=False): + """Runs the wrapped WSGI app with the given environment.""" + if self.cookie_jar is not None: + self.cookie_jar.inject_wsgi(environ) + rv = run_wsgi_app(self.application, environ, buffered=buffered) + if self.cookie_jar is not None: + self.cookie_jar.extract_wsgi(environ, rv[2]) + return rv + + def resolve_redirect(self, response, new_location, environ, buffered=False): + """Perform a new request to the location given by the redirect + response to the previous request. + """ + scheme, netloc, path, qs, anchor = url_parse(new_location) + builder = EnvironBuilder.from_environ(environ, query_string=qs) + + to_name_parts = netloc.split(":", 1)[0].split(".") + from_name_parts = builder.server_name.split(".") + + if to_name_parts != [""]: + # The new location has a host, use it for the base URL. + builder.url_scheme = scheme + builder.host = netloc + else: + # A local redirect with autocorrect_location_header=False + # doesn't have a host, so use the request's host. + to_name_parts = from_name_parts + + # Explain why a redirect to a different server name won't be followed. + if to_name_parts != from_name_parts: + if to_name_parts[-len(from_name_parts) :] == from_name_parts: + if not self.allow_subdomain_redirects: + raise RuntimeError("Following subdomain redirects is not enabled.") + else: + raise RuntimeError("Following external redirects is not supported.") + + path_parts = path.split("/") + root_parts = builder.script_root.split("/") + + if path_parts[: len(root_parts)] == root_parts: + # Strip the script root from the path. + builder.path = path[len(builder.script_root) :] + else: + # The new location is not under the script root, so use the + # whole path and clear the previous root. + builder.path = path + builder.script_root = "" + + status_code = int(response[1].split(None, 1)[0]) + + # Only 307 and 308 preserve all of the original request. + if status_code not in {307, 308}: + # HEAD is preserved, everything else becomes GET. + if builder.method != "HEAD": + builder.method = "GET" + + # Clear the body and the headers that describe it. + builder.input_stream = None + builder.content_type = None + builder.content_length = None + builder.headers.pop("Transfer-Encoding", None) + + # Disable the response wrapper while handling redirects. Not + # thread safe, but the client should not be shared anyway. + old_response_wrapper = self.response_wrapper + self.response_wrapper = None + + try: + return self.open(builder, as_tuple=True, buffered=buffered) + finally: + self.response_wrapper = old_response_wrapper + + def open(self, *args, **kwargs): + """Takes the same arguments as the :class:`EnvironBuilder` class with + some additions: You can provide a :class:`EnvironBuilder` or a WSGI + environment as only argument instead of the :class:`EnvironBuilder` + arguments and two optional keyword arguments (`as_tuple`, `buffered`) + that change the type of the return value or the way the application is + executed. + + .. versionchanged:: 0.5 + If a dict is provided as file in the dict for the `data` parameter + the content type has to be called `content_type` now instead of + `mimetype`. This change was made for consistency with + :class:`werkzeug.FileWrapper`. + + The `follow_redirects` parameter was added to :func:`open`. + + Additional parameters: + + :param as_tuple: Returns a tuple in the form ``(environ, result)`` + :param buffered: Set this to True to buffer the application run. + This will automatically close the application for + you as well. + :param follow_redirects: Set this to True if the `Client` should + follow HTTP redirects. + """ + as_tuple = kwargs.pop("as_tuple", False) + buffered = kwargs.pop("buffered", False) + follow_redirects = kwargs.pop("follow_redirects", False) + environ = None + if not kwargs and len(args) == 1: + if isinstance(args[0], EnvironBuilder): + environ = args[0].get_environ() + elif isinstance(args[0], dict): + environ = args[0] + if environ is None: + builder = EnvironBuilder(*args, **kwargs) + try: + environ = builder.get_environ() + finally: + builder.close() + + response = self.run_wsgi_app(environ.copy(), buffered=buffered) + + # handle redirects + redirect_chain = [] + while 1: + status_code = int(response[1].split(None, 1)[0]) + if ( + status_code not in {301, 302, 303, 305, 307, 308} + or not follow_redirects + ): + break + + # Exhaust intermediate response bodies to ensure middleware + # that returns an iterator runs any cleanup code. + if not buffered: + for _ in response[0]: + pass + + new_location = response[2]["location"] + new_redirect_entry = (new_location, status_code) + if new_redirect_entry in redirect_chain: + raise ClientRedirectError("loop detected") + redirect_chain.append(new_redirect_entry) + environ, response = self.resolve_redirect( + response, new_location, environ, buffered=buffered + ) + + if self.response_wrapper is not None: + response = self.response_wrapper(*response) + if as_tuple: + return environ, response + return response + + def get(self, *args, **kw): + """Like open but method is enforced to GET.""" + kw["method"] = "GET" + return self.open(*args, **kw) + + def patch(self, *args, **kw): + """Like open but method is enforced to PATCH.""" + kw["method"] = "PATCH" + return self.open(*args, **kw) + + def post(self, *args, **kw): + """Like open but method is enforced to POST.""" + kw["method"] = "POST" + return self.open(*args, **kw) + + def head(self, *args, **kw): + """Like open but method is enforced to HEAD.""" + kw["method"] = "HEAD" + return self.open(*args, **kw) + + def put(self, *args, **kw): + """Like open but method is enforced to PUT.""" + kw["method"] = "PUT" + return self.open(*args, **kw) + + def delete(self, *args, **kw): + """Like open but method is enforced to DELETE.""" + kw["method"] = "DELETE" + return self.open(*args, **kw) + + def options(self, *args, **kw): + """Like open but method is enforced to OPTIONS.""" + kw["method"] = "OPTIONS" + return self.open(*args, **kw) + + def trace(self, *args, **kw): + """Like open but method is enforced to TRACE.""" + kw["method"] = "TRACE" + return self.open(*args, **kw) + + def __repr__(self): + return "<%s %r>" % (self.__class__.__name__, self.application) + + +def create_environ(*args, **kwargs): + """Create a new WSGI environ dict based on the values passed. The first + parameter should be the path of the request which defaults to '/'. The + second one can either be an absolute path (in that case the host is + localhost:80) or a full path to the request with scheme, netloc port and + the path to the script. + + This accepts the same arguments as the :class:`EnvironBuilder` + constructor. + + .. versionchanged:: 0.5 + This function is now a thin wrapper over :class:`EnvironBuilder` which + was added in 0.5. The `headers`, `environ_base`, `environ_overrides` + and `charset` parameters were added. + """ + builder = EnvironBuilder(*args, **kwargs) + try: + return builder.get_environ() + finally: + builder.close() + + +def run_wsgi_app(app, environ, buffered=False): + """Return a tuple in the form (app_iter, status, headers) of the + application output. This works best if you pass it an application that + returns an iterator all the time. + + Sometimes applications may use the `write()` callable returned + by the `start_response` function. This tries to resolve such edge + cases automatically. But if you don't get the expected output you + should set `buffered` to `True` which enforces buffering. + + If passed an invalid WSGI application the behavior of this function is + undefined. Never pass non-conforming WSGI applications to this function. + + :param app: the application to execute. + :param buffered: set to `True` to enforce buffering. + :return: tuple in the form ``(app_iter, status, headers)`` + """ + environ = _get_environ(environ) + response = [] + buffer = [] + + def start_response(status, headers, exc_info=None): + if exc_info is not None: + reraise(*exc_info) + response[:] = [status, headers] + return buffer.append + + app_rv = app(environ, start_response) + close_func = getattr(app_rv, "close", None) + app_iter = iter(app_rv) + + # when buffering we emit the close call early and convert the + # application iterator into a regular list + if buffered: + try: + app_iter = list(app_iter) + finally: + if close_func is not None: + close_func() + + # otherwise we iterate the application iter until we have a response, chain + # the already received data with the already collected data and wrap it in + # a new `ClosingIterator` if we need to restore a `close` callable from the + # original return value. + else: + for item in app_iter: + buffer.append(item) + if response: + break + if buffer: + app_iter = chain(buffer, app_iter) + if close_func is not None and app_iter is not app_rv: + app_iter = ClosingIterator(app_iter, close_func) + + return app_iter, response[0], Headers(response[1]) diff --git a/env/lib/python3.6/site-packages/werkzeug/testapp.py b/env/lib/python3.6/site-packages/werkzeug/testapp.py new file mode 100644 index 0000000..5ea8549 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/testapp.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.testapp + ~~~~~~~~~~~~~~~~ + + Provide a small test application that can be used to test a WSGI server + and check it for WSGI compliance. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import base64 +import os +import sys +from textwrap import wrap + +from . import __version__ as _werkzeug_version +from .utils import escape +from .wrappers import BaseRequest as Request +from .wrappers import BaseResponse as Response + +logo = Response( + base64.b64decode( + """ +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 +=""" + ), + mimetype="image/png", +) + + +TEMPLATE = u"""\ + +WSGI Information + +

    +""" + + +def iter_sys_path(): + if os.name == "posix": + + def strip(x): + prefix = os.path.expanduser("~") + if x.startswith(prefix): + x = "~" + x[len(prefix) :] + return x + + else: + + def strip(x): + return x + + cwd = os.path.abspath(os.getcwd()) + for item in sys.path: + path = os.path.join(cwd, item or os.path.curdir) + yield strip(os.path.normpath(path)), not os.path.isdir(path), path != item + + +def render_testapp(req): + try: + import pkg_resources + except ImportError: + eggs = () + else: + eggs = sorted(pkg_resources.working_set, key=lambda x: x.project_name.lower()) + python_eggs = [] + for egg in eggs: + try: + version = egg.version + except (ValueError, AttributeError): + version = "unknown" + python_eggs.append( + "
  • %s [%s]" % (escape(egg.project_name), escape(version)) + ) + + wsgi_env = [] + sorted_environ = sorted(req.environ.items(), key=lambda x: repr(x[0]).lower()) + for key, value in sorted_environ: + wsgi_env.append( + "%s%s" + % (escape(str(key)), " ".join(wrap(escape(repr(value))))) + ) + + sys_path = [] + for item, virtual, expanded in iter_sys_path(): + class_ = [] + if virtual: + class_.append("virtual") + if expanded: + class_.append("exp") + sys_path.append( + "%s" + % (' class="%s"' % " ".join(class_) if class_ else "", escape(item)) + ) + + return ( + TEMPLATE + % { + "python_version": "
    ".join(escape(sys.version).splitlines()), + "platform": escape(sys.platform), + "os": escape(os.name), + "api_version": sys.api_version, + "byteorder": sys.byteorder, + "werkzeug_version": _werkzeug_version, + "python_eggs": "\n".join(python_eggs), + "wsgi_env": "\n".join(wsgi_env), + "sys_path": "\n".join(sys_path), + } + ).encode("utf-8") + + +def test_app(environ, start_response): + """Simple test application that dumps the environment. You can use + it to check if Werkzeug is working properly: + + .. sourcecode:: pycon + + >>> from werkzeug.serving import run_simple + >>> from werkzeug.testapp import test_app + >>> run_simple('localhost', 3000, test_app) + * Running on http://localhost:3000/ + + The application displays important information from the WSGI environment, + the Python interpreter and the installed libraries. + """ + req = Request(environ, populate_request=False) + if req.args.get("resource") == "logo": + response = logo + else: + response = Response(render_testapp(req), mimetype="text/html") + return response(environ, start_response) + + +if __name__ == "__main__": + from .serving import run_simple + + run_simple("localhost", 5000, test_app, use_reloader=True) diff --git a/env/lib/python3.6/site-packages/werkzeug/urls.py b/env/lib/python3.6/site-packages/werkzeug/urls.py new file mode 100644 index 0000000..d5e487b --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/urls.py @@ -0,0 +1,1138 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.urls + ~~~~~~~~~~~~~ + + ``werkzeug.urls`` used to provide several wrapper functions for Python 2 + urlparse, whose main purpose were to work around the behavior of the Py2 + stdlib and its lack of unicode support. While this was already a somewhat + inconvenient situation, it got even more complicated because Python 3's + ``urllib.parse`` actually does handle unicode properly. In other words, + this module would wrap two libraries with completely different behavior. So + now this module contains a 2-and-3-compatible backport of Python 3's + ``urllib.parse``, which is mostly API-compatible. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import os +import re +from collections import namedtuple + +from ._compat import fix_tuple_repr +from ._compat import implements_to_string +from ._compat import make_literal_wrapper +from ._compat import normalize_string_tuple +from ._compat import PY2 +from ._compat import text_type +from ._compat import to_native +from ._compat import to_unicode +from ._compat import try_coerce_native +from ._internal import _decode_idna +from ._internal import _encode_idna + +# A regular expression for what a valid schema looks like +_scheme_re = re.compile(r"^[a-zA-Z0-9+-.]+$") + +# Characters that are safe in any part of an URL. +_always_safe = frozenset( + bytearray( + b"abcdefghijklmnopqrstuvwxyz" + b"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + b"0123456789" + b"-._~" + ) +) + +_hexdigits = "0123456789ABCDEFabcdef" +_hextobyte = dict( + ((a + b).encode(), int(a + b, 16)) for a in _hexdigits for b in _hexdigits +) +_bytetohex = [("%%%02X" % char).encode("ascii") for char in range(256)] + + +_URLTuple = fix_tuple_repr( + namedtuple("_URLTuple", ["scheme", "netloc", "path", "query", "fragment"]) +) + + +class BaseURL(_URLTuple): + """Superclass of :py:class:`URL` and :py:class:`BytesURL`.""" + + __slots__ = () + + def replace(self, **kwargs): + """Return an URL with the same values, except for those parameters + given new values by whichever keyword arguments are specified.""" + return self._replace(**kwargs) + + @property + def host(self): + """The host part of the URL if available, otherwise `None`. The + host is either the hostname or the IP address mentioned in the + URL. It will not contain the port. + """ + return self._split_host()[0] + + @property + def ascii_host(self): + """Works exactly like :attr:`host` but will return a result that + is restricted to ASCII. If it finds a netloc that is not ASCII + it will attempt to idna decode it. This is useful for socket + operations when the URL might include internationalized characters. + """ + rv = self.host + if rv is not None and isinstance(rv, text_type): + try: + rv = _encode_idna(rv) + except UnicodeError: + rv = rv.encode("ascii", "ignore") + return to_native(rv, "ascii", "ignore") + + @property + def port(self): + """The port in the URL as an integer if it was present, `None` + otherwise. This does not fill in default ports. + """ + try: + rv = int(to_native(self._split_host()[1])) + if 0 <= rv <= 65535: + return rv + except (ValueError, TypeError): + pass + + @property + def auth(self): + """The authentication part in the URL if available, `None` + otherwise. + """ + return self._split_netloc()[0] + + @property + def username(self): + """The username if it was part of the URL, `None` otherwise. + This undergoes URL decoding and will always be a unicode string. + """ + rv = self._split_auth()[0] + if rv is not None: + return _url_unquote_legacy(rv) + + @property + def raw_username(self): + """The username if it was part of the URL, `None` otherwise. + Unlike :attr:`username` this one is not being decoded. + """ + return self._split_auth()[0] + + @property + def password(self): + """The password if it was part of the URL, `None` otherwise. + This undergoes URL decoding and will always be a unicode string. + """ + rv = self._split_auth()[1] + if rv is not None: + return _url_unquote_legacy(rv) + + @property + def raw_password(self): + """The password if it was part of the URL, `None` otherwise. + Unlike :attr:`password` this one is not being decoded. + """ + return self._split_auth()[1] + + def decode_query(self, *args, **kwargs): + """Decodes the query part of the URL. Ths is a shortcut for + calling :func:`url_decode` on the query argument. The arguments and + keyword arguments are forwarded to :func:`url_decode` unchanged. + """ + return url_decode(self.query, *args, **kwargs) + + def join(self, *args, **kwargs): + """Joins this URL with another one. This is just a convenience + function for calling into :meth:`url_join` and then parsing the + return value again. + """ + return url_parse(url_join(self, *args, **kwargs)) + + def to_url(self): + """Returns a URL string or bytes depending on the type of the + information stored. This is just a convenience function + for calling :meth:`url_unparse` for this URL. + """ + return url_unparse(self) + + def decode_netloc(self): + """Decodes the netloc part into a string.""" + rv = _decode_idna(self.host or "") + + if ":" in rv: + rv = "[%s]" % rv + port = self.port + if port is not None: + rv = "%s:%d" % (rv, port) + auth = ":".join( + filter( + None, + [ + _url_unquote_legacy(self.raw_username or "", "/:%@"), + _url_unquote_legacy(self.raw_password or "", "/:%@"), + ], + ) + ) + if auth: + rv = "%s@%s" % (auth, rv) + return rv + + def to_uri_tuple(self): + """Returns a :class:`BytesURL` tuple that holds a URI. This will + encode all the information in the URL properly to ASCII using the + rules a web browser would follow. + + It's usually more interesting to directly call :meth:`iri_to_uri` which + will return a string. + """ + return url_parse(iri_to_uri(self).encode("ascii")) + + def to_iri_tuple(self): + """Returns a :class:`URL` tuple that holds a IRI. This will try + to decode as much information as possible in the URL without + losing information similar to how a web browser does it for the + URL bar. + + It's usually more interesting to directly call :meth:`uri_to_iri` which + will return a string. + """ + return url_parse(uri_to_iri(self)) + + def get_file_location(self, pathformat=None): + """Returns a tuple with the location of the file in the form + ``(server, location)``. If the netloc is empty in the URL or + points to localhost, it's represented as ``None``. + + The `pathformat` by default is autodetection but needs to be set + when working with URLs of a specific system. The supported values + are ``'windows'`` when working with Windows or DOS paths and + ``'posix'`` when working with posix paths. + + If the URL does not point to a local file, the server and location + are both represented as ``None``. + + :param pathformat: The expected format of the path component. + Currently ``'windows'`` and ``'posix'`` are + supported. Defaults to ``None`` which is + autodetect. + """ + if self.scheme != "file": + return None, None + + path = url_unquote(self.path) + host = self.netloc or None + + if pathformat is None: + if os.name == "nt": + pathformat = "windows" + else: + pathformat = "posix" + + if pathformat == "windows": + if path[:1] == "/" and path[1:2].isalpha() and path[2:3] in "|:": + path = path[1:2] + ":" + path[3:] + windows_share = path[:3] in ("\\" * 3, "/" * 3) + import ntpath + + path = ntpath.normpath(path) + # Windows shared drives are represented as ``\\host\\directory``. + # That results in a URL like ``file://///host/directory``, and a + # path like ``///host/directory``. We need to special-case this + # because the path contains the hostname. + if windows_share and host is None: + parts = path.lstrip("\\").split("\\", 1) + if len(parts) == 2: + host, path = parts + else: + host = parts[0] + path = "" + elif pathformat == "posix": + import posixpath + + path = posixpath.normpath(path) + else: + raise TypeError("Invalid path format %s" % repr(pathformat)) + + if host in ("127.0.0.1", "::1", "localhost"): + host = None + + return host, path + + def _split_netloc(self): + if self._at in self.netloc: + return self.netloc.split(self._at, 1) + return None, self.netloc + + def _split_auth(self): + auth = self._split_netloc()[0] + if not auth: + return None, None + if self._colon not in auth: + return auth, None + return auth.split(self._colon, 1) + + def _split_host(self): + rv = self._split_netloc()[1] + if not rv: + return None, None + + if not rv.startswith(self._lbracket): + if self._colon in rv: + return rv.split(self._colon, 1) + return rv, None + + idx = rv.find(self._rbracket) + if idx < 0: + return rv, None + + host = rv[1:idx] + rest = rv[idx + 1 :] + if rest.startswith(self._colon): + return host, rest[1:] + return host, None + + +@implements_to_string +class URL(BaseURL): + """Represents a parsed URL. This behaves like a regular tuple but + also has some extra attributes that give further insight into the + URL. + """ + + __slots__ = () + _at = "@" + _colon = ":" + _lbracket = "[" + _rbracket = "]" + + def __str__(self): + return self.to_url() + + def encode_netloc(self): + """Encodes the netloc part to an ASCII safe URL as bytes.""" + rv = self.ascii_host or "" + if ":" in rv: + rv = "[%s]" % rv + port = self.port + if port is not None: + rv = "%s:%d" % (rv, port) + auth = ":".join( + filter( + None, + [ + url_quote(self.raw_username or "", "utf-8", "strict", "/:%"), + url_quote(self.raw_password or "", "utf-8", "strict", "/:%"), + ], + ) + ) + if auth: + rv = "%s@%s" % (auth, rv) + return to_native(rv) + + def encode(self, charset="utf-8", errors="replace"): + """Encodes the URL to a tuple made out of bytes. The charset is + only being used for the path, query and fragment. + """ + return BytesURL( + self.scheme.encode("ascii"), + self.encode_netloc(), + self.path.encode(charset, errors), + self.query.encode(charset, errors), + self.fragment.encode(charset, errors), + ) + + +class BytesURL(BaseURL): + """Represents a parsed URL in bytes.""" + + __slots__ = () + _at = b"@" + _colon = b":" + _lbracket = b"[" + _rbracket = b"]" + + def __str__(self): + return self.to_url().decode("utf-8", "replace") + + def encode_netloc(self): + """Returns the netloc unchanged as bytes.""" + return self.netloc + + def decode(self, charset="utf-8", errors="replace"): + """Decodes the URL to a tuple made out of strings. The charset is + only being used for the path, query and fragment. + """ + return URL( + self.scheme.decode("ascii"), + self.decode_netloc(), + self.path.decode(charset, errors), + self.query.decode(charset, errors), + self.fragment.decode(charset, errors), + ) + + +_unquote_maps = {frozenset(): _hextobyte} + + +def _unquote_to_bytes(string, unsafe=""): + if isinstance(string, text_type): + string = string.encode("utf-8") + + if isinstance(unsafe, text_type): + unsafe = unsafe.encode("utf-8") + + unsafe = frozenset(bytearray(unsafe)) + groups = iter(string.split(b"%")) + result = bytearray(next(groups, b"")) + + try: + hex_to_byte = _unquote_maps[unsafe] + except KeyError: + hex_to_byte = _unquote_maps[unsafe] = { + h: b for h, b in _hextobyte.items() if b not in unsafe + } + + for group in groups: + code = group[:2] + + if code in hex_to_byte: + result.append(hex_to_byte[code]) + result.extend(group[2:]) + else: + result.append(37) # % + result.extend(group) + + return bytes(result) + + +def _url_encode_impl(obj, charset, encode_keys, sort, key): + from .datastructures import iter_multi_items + + iterable = iter_multi_items(obj) + if sort: + iterable = sorted(iterable, key=key) + for key, value in iterable: + if value is None: + continue + if not isinstance(key, bytes): + key = text_type(key).encode(charset) + if not isinstance(value, bytes): + value = text_type(value).encode(charset) + yield _fast_url_quote_plus(key) + "=" + _fast_url_quote_plus(value) + + +def _url_unquote_legacy(value, unsafe=""): + try: + return url_unquote(value, charset="utf-8", errors="strict", unsafe=unsafe) + except UnicodeError: + return url_unquote(value, charset="latin1", unsafe=unsafe) + + +def url_parse(url, scheme=None, allow_fragments=True): + """Parses a URL from a string into a :class:`URL` tuple. If the URL + is lacking a scheme it can be provided as second argument. Otherwise, + it is ignored. Optionally fragments can be stripped from the URL + by setting `allow_fragments` to `False`. + + The inverse of this function is :func:`url_unparse`. + + :param url: the URL to parse. + :param scheme: the default schema to use if the URL is schemaless. + :param allow_fragments: if set to `False` a fragment will be removed + from the URL. + """ + s = make_literal_wrapper(url) + is_text_based = isinstance(url, text_type) + + if scheme is None: + scheme = s("") + netloc = query = fragment = s("") + i = url.find(s(":")) + if i > 0 and _scheme_re.match(to_native(url[:i], errors="replace")): + # make sure "iri" is not actually a port number (in which case + # "scheme" is really part of the path) + rest = url[i + 1 :] + if not rest or any(c not in s("0123456789") for c in rest): + # not a port number + scheme, url = url[:i].lower(), rest + + if url[:2] == s("//"): + delim = len(url) + for c in s("/?#"): + wdelim = url.find(c, 2) + if wdelim >= 0: + delim = min(delim, wdelim) + netloc, url = url[2:delim], url[delim:] + if (s("[") in netloc and s("]") not in netloc) or ( + s("]") in netloc and s("[") not in netloc + ): + raise ValueError("Invalid IPv6 URL") + + if allow_fragments and s("#") in url: + url, fragment = url.split(s("#"), 1) + if s("?") in url: + url, query = url.split(s("?"), 1) + + result_type = URL if is_text_based else BytesURL + return result_type(scheme, netloc, url, query, fragment) + + +def _make_fast_url_quote(charset="utf-8", errors="strict", safe="/:", unsafe=""): + """Precompile the translation table for a URL encoding function. + + Unlike :func:`url_quote`, the generated function only takes the + string to quote. + + :param charset: The charset to encode the result with. + :param errors: How to handle encoding errors. + :param safe: An optional sequence of safe characters to never encode. + :param unsafe: An optional sequence of unsafe characters to always encode. + """ + if isinstance(safe, text_type): + safe = safe.encode(charset, errors) + + if isinstance(unsafe, text_type): + unsafe = unsafe.encode(charset, errors) + + safe = (frozenset(bytearray(safe)) | _always_safe) - frozenset(bytearray(unsafe)) + table = [chr(c) if c in safe else "%%%02X" % c for c in range(256)] + + if not PY2: + + def quote(string): + return "".join([table[c] for c in string]) + + else: + + def quote(string): + return "".join([table[c] for c in bytearray(string)]) + + return quote + + +_fast_url_quote = _make_fast_url_quote() +_fast_quote_plus = _make_fast_url_quote(safe=" ", unsafe="+") + + +def _fast_url_quote_plus(string): + return _fast_quote_plus(string).replace(" ", "+") + + +def url_quote(string, charset="utf-8", errors="strict", safe="/:", unsafe=""): + """URL encode a single string with a given encoding. + + :param s: the string to quote. + :param charset: the charset to be used. + :param safe: an optional sequence of safe characters. + :param unsafe: an optional sequence of unsafe characters. + + .. versionadded:: 0.9.2 + The `unsafe` parameter was added. + """ + if not isinstance(string, (text_type, bytes, bytearray)): + string = text_type(string) + if isinstance(string, text_type): + string = string.encode(charset, errors) + if isinstance(safe, text_type): + safe = safe.encode(charset, errors) + if isinstance(unsafe, text_type): + unsafe = unsafe.encode(charset, errors) + safe = (frozenset(bytearray(safe)) | _always_safe) - frozenset(bytearray(unsafe)) + rv = bytearray() + for char in bytearray(string): + if char in safe: + rv.append(char) + else: + rv.extend(_bytetohex[char]) + return to_native(bytes(rv)) + + +def url_quote_plus(string, charset="utf-8", errors="strict", safe=""): + """URL encode a single string with the given encoding and convert + whitespace to "+". + + :param s: The string to quote. + :param charset: The charset to be used. + :param safe: An optional sequence of safe characters. + """ + return url_quote(string, charset, errors, safe + " ", "+").replace(" ", "+") + + +def url_unparse(components): + """The reverse operation to :meth:`url_parse`. This accepts arbitrary + as well as :class:`URL` tuples and returns a URL as a string. + + :param components: the parsed URL as tuple which should be converted + into a URL string. + """ + scheme, netloc, path, query, fragment = normalize_string_tuple(components) + s = make_literal_wrapper(scheme) + url = s("") + + # We generally treat file:///x and file:/x the same which is also + # what browsers seem to do. This also allows us to ignore a schema + # register for netloc utilization or having to differentiate between + # empty and missing netloc. + if netloc or (scheme and path.startswith(s("/"))): + if path and path[:1] != s("/"): + path = s("/") + path + url = s("//") + (netloc or s("")) + path + elif path: + url += path + if scheme: + url = scheme + s(":") + url + if query: + url = url + s("?") + query + if fragment: + url = url + s("#") + fragment + return url + + +def url_unquote(string, charset="utf-8", errors="replace", unsafe=""): + """URL decode a single string with a given encoding. If the charset + is set to `None` no unicode decoding is performed and raw bytes + are returned. + + :param s: the string to unquote. + :param charset: the charset of the query string. If set to `None` + no unicode decoding will take place. + :param errors: the error handling for the charset decoding. + """ + rv = _unquote_to_bytes(string, unsafe) + if charset is not None: + rv = rv.decode(charset, errors) + return rv + + +def url_unquote_plus(s, charset="utf-8", errors="replace"): + """URL decode a single string with the given `charset` and decode "+" to + whitespace. + + Per default encoding errors are ignored. If you want a different behavior + you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a + :exc:`HTTPUnicodeError` is raised. + + :param s: The string to unquote. + :param charset: the charset of the query string. If set to `None` + no unicode decoding will take place. + :param errors: The error handling for the `charset` decoding. + """ + if isinstance(s, text_type): + s = s.replace(u"+", u" ") + else: + s = s.replace(b"+", b" ") + return url_unquote(s, charset, errors) + + +def url_fix(s, charset="utf-8"): + r"""Sometimes you get an URL by a user that just isn't a real URL because + it contains unsafe characters like ' ' and so on. This function can fix + some of the problems in a similar way browsers handle data entered by the + user: + + >>> url_fix(u'http://de.wikipedia.org/wiki/Elf (Begriffskl\xe4rung)') + 'http://de.wikipedia.org/wiki/Elf%20(Begriffskl%C3%A4rung)' + + :param s: the string with the URL to fix. + :param charset: The target charset for the URL if the url was given as + unicode string. + """ + # First step is to switch to unicode processing and to convert + # backslashes (which are invalid in URLs anyways) to slashes. This is + # consistent with what Chrome does. + s = to_unicode(s, charset, "replace").replace("\\", "/") + + # For the specific case that we look like a malformed windows URL + # we want to fix this up manually: + if s.startswith("file://") and s[7:8].isalpha() and s[8:10] in (":/", "|/"): + s = "file:///" + s[7:] + + url = url_parse(s) + path = url_quote(url.path, charset, safe="/%+$!*'(),") + qs = url_quote_plus(url.query, charset, safe=":&%=+$!*'(),") + anchor = url_quote_plus(url.fragment, charset, safe=":&%=+$!*'(),") + return to_native(url_unparse((url.scheme, url.encode_netloc(), path, qs, anchor))) + + +# not-unreserved characters remain quoted when unquoting to IRI +_to_iri_unsafe = "".join([chr(c) for c in range(128) if c not in _always_safe]) + + +def _codec_error_url_quote(e): + """Used in :func:`uri_to_iri` after unquoting to re-quote any + invalid bytes. + """ + out = _fast_url_quote(e.object[e.start : e.end]) + + if PY2: + out = out.decode("utf-8") + + return out, e.end + + +codecs.register_error("werkzeug.url_quote", _codec_error_url_quote) + + +def uri_to_iri(uri, charset="utf-8", errors="werkzeug.url_quote"): + """Convert a URI to an IRI. All valid UTF-8 characters are unquoted, + leaving all reserved and invalid characters quoted. If the URL has + a domain, it is decoded from Punycode. + + >>> uri_to_iri("http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF") + 'http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF' + + :param uri: The URI to convert. + :param charset: The encoding to encode unquoted bytes with. + :param errors: Error handler to use during ``bytes.encode``. By + default, invalid bytes are left quoted. + + .. versionchanged:: 0.15 + All reserved and invalid characters remain quoted. Previously, + only some reserved characters were preserved, and invalid bytes + were replaced instead of left quoted. + + .. versionadded:: 0.6 + """ + if isinstance(uri, tuple): + uri = url_unparse(uri) + + uri = url_parse(to_unicode(uri, charset)) + path = url_unquote(uri.path, charset, errors, _to_iri_unsafe) + query = url_unquote(uri.query, charset, errors, _to_iri_unsafe) + fragment = url_unquote(uri.fragment, charset, errors, _to_iri_unsafe) + return url_unparse((uri.scheme, uri.decode_netloc(), path, query, fragment)) + + +# reserved characters remain unquoted when quoting to URI +_to_uri_safe = ":/?#[]@!$&'()*+,;=%" + + +def iri_to_uri(iri, charset="utf-8", errors="strict", safe_conversion=False): + """Convert an IRI to a URI. All non-ASCII and unsafe characters are + quoted. If the URL has a domain, it is encoded to Punycode. + + >>> iri_to_uri('http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF') + 'http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF' + + :param iri: The IRI to convert. + :param charset: The encoding of the IRI. + :param errors: Error handler to use during ``bytes.encode``. + :param safe_conversion: Return the URL unchanged if it only contains + ASCII characters and no whitespace. See the explanation below. + + There is a general problem with IRI conversion with some protocols + that are in violation of the URI specification. Consider the + following two IRIs:: + + magnet:?xt=uri:whatever + itms-services://?action=download-manifest + + After parsing, we don't know if the scheme requires the ``//``, + which is dropped if empty, but conveys different meanings in the + final URL if it's present or not. In this case, you can use + ``safe_conversion``, which will return the URL unchanged if it only + contains ASCII characters and no whitespace. This can result in a + URI with unquoted characters if it was not already quoted correctly, + but preserves the URL's semantics. Werkzeug uses this for the + ``Location`` header for redirects. + + .. versionchanged:: 0.15 + All reserved characters remain unquoted. Previously, only some + reserved characters were left unquoted. + + .. versionchanged:: 0.9.6 + The ``safe_conversion`` parameter was added. + + .. versionadded:: 0.6 + """ + if isinstance(iri, tuple): + iri = url_unparse(iri) + + if safe_conversion: + # If we're not sure if it's safe to convert the URL, and it only + # contains ASCII characters, return it unconverted. + try: + native_iri = to_native(iri) + ascii_iri = native_iri.encode("ascii") + + # Only return if it doesn't have whitespace. (Why?) + if len(ascii_iri.split()) == 1: + return native_iri + except UnicodeError: + pass + + iri = url_parse(to_unicode(iri, charset, errors)) + path = url_quote(iri.path, charset, errors, _to_uri_safe) + query = url_quote(iri.query, charset, errors, _to_uri_safe) + fragment = url_quote(iri.fragment, charset, errors, _to_uri_safe) + return to_native( + url_unparse((iri.scheme, iri.encode_netloc(), path, query, fragment)) + ) + + +def url_decode( + s, + charset="utf-8", + decode_keys=False, + include_empty=True, + errors="replace", + separator="&", + cls=None, +): + """ + Parse a querystring and return it as :class:`MultiDict`. There is a + difference in key decoding on different Python versions. On Python 3 + keys will always be fully decoded whereas on Python 2, keys will + remain bytestrings if they fit into ASCII. On 2.x keys can be forced + to be unicode by setting `decode_keys` to `True`. + + If the charset is set to `None` no unicode decoding will happen and + raw bytes will be returned. + + Per default a missing value for a key will default to an empty key. If + you don't want that behavior you can set `include_empty` to `False`. + + Per default encoding errors are ignored. If you want a different behavior + you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a + `HTTPUnicodeError` is raised. + + .. versionchanged:: 0.5 + In previous versions ";" and "&" could be used for url decoding. + This changed in 0.5 where only "&" is supported. If you want to + use ";" instead a different `separator` can be provided. + + The `cls` parameter was added. + + :param s: a string with the query string to decode. + :param charset: the charset of the query string. If set to `None` + no unicode decoding will take place. + :param decode_keys: Used on Python 2.x to control whether keys should + be forced to be unicode objects. If set to `True` + then keys will be unicode in all cases. Otherwise, + they remain `str` if they fit into ASCII. + :param include_empty: Set to `False` if you don't want empty values to + appear in the dict. + :param errors: the decoding error behavior. + :param separator: the pair separator to be used, defaults to ``&`` + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + """ + if cls is None: + from .datastructures import MultiDict + + cls = MultiDict + if isinstance(s, text_type) and not isinstance(separator, text_type): + separator = separator.decode(charset or "ascii") + elif isinstance(s, bytes) and not isinstance(separator, bytes): + separator = separator.encode(charset or "ascii") + return cls( + _url_decode_impl( + s.split(separator), charset, decode_keys, include_empty, errors + ) + ) + + +def url_decode_stream( + stream, + charset="utf-8", + decode_keys=False, + include_empty=True, + errors="replace", + separator="&", + cls=None, + limit=None, + return_iterator=False, +): + """Works like :func:`url_decode` but decodes a stream. The behavior + of stream and limit follows functions like + :func:`~werkzeug.wsgi.make_line_iter`. The generator of pairs is + directly fed to the `cls` so you can consume the data while it's + parsed. + + .. versionadded:: 0.8 + + :param stream: a stream with the encoded querystring + :param charset: the charset of the query string. If set to `None` + no unicode decoding will take place. + :param decode_keys: Used on Python 2.x to control whether keys should + be forced to be unicode objects. If set to `True`, + keys will be unicode in all cases. Otherwise, they + remain `str` if they fit into ASCII. + :param include_empty: Set to `False` if you don't want empty values to + appear in the dict. + :param errors: the decoding error behavior. + :param separator: the pair separator to be used, defaults to ``&`` + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + :param limit: the content length of the URL data. Not necessary if + a limited stream is provided. + :param return_iterator: if set to `True` the `cls` argument is ignored + and an iterator over all decoded pairs is + returned + """ + from .wsgi import make_chunk_iter + + pair_iter = make_chunk_iter(stream, separator, limit) + decoder = _url_decode_impl(pair_iter, charset, decode_keys, include_empty, errors) + + if return_iterator: + return decoder + + if cls is None: + from .datastructures import MultiDict + + cls = MultiDict + + return cls(decoder) + + +def _url_decode_impl(pair_iter, charset, decode_keys, include_empty, errors): + for pair in pair_iter: + if not pair: + continue + s = make_literal_wrapper(pair) + equal = s("=") + if equal in pair: + key, value = pair.split(equal, 1) + else: + if not include_empty: + continue + key = pair + value = s("") + key = url_unquote_plus(key, charset, errors) + if charset is not None and PY2 and not decode_keys: + key = try_coerce_native(key) + yield key, url_unquote_plus(value, charset, errors) + + +def url_encode( + obj, charset="utf-8", encode_keys=False, sort=False, key=None, separator=b"&" +): + """URL encode a dict/`MultiDict`. If a value is `None` it will not appear + in the result string. Per default only values are encoded into the target + charset strings. If `encode_keys` is set to ``True`` unicode keys are + supported too. + + If `sort` is set to `True` the items are sorted by `key` or the default + sorting algorithm. + + .. versionadded:: 0.5 + `sort`, `key`, and `separator` were added. + + :param obj: the object to encode into a query string. + :param charset: the charset of the query string. + :param encode_keys: set to `True` if you have unicode keys. (Ignored on + Python 3.x) + :param sort: set to `True` if you want parameters to be sorted by `key`. + :param separator: the separator to be used for the pairs. + :param key: an optional function to be used for sorting. For more details + check out the :func:`sorted` documentation. + """ + separator = to_native(separator, "ascii") + return separator.join(_url_encode_impl(obj, charset, encode_keys, sort, key)) + + +def url_encode_stream( + obj, + stream=None, + charset="utf-8", + encode_keys=False, + sort=False, + key=None, + separator=b"&", +): + """Like :meth:`url_encode` but writes the results to a stream + object. If the stream is `None` a generator over all encoded + pairs is returned. + + .. versionadded:: 0.8 + + :param obj: the object to encode into a query string. + :param stream: a stream to write the encoded object into or `None` if + an iterator over the encoded pairs should be returned. In + that case the separator argument is ignored. + :param charset: the charset of the query string. + :param encode_keys: set to `True` if you have unicode keys. (Ignored on + Python 3.x) + :param sort: set to `True` if you want parameters to be sorted by `key`. + :param separator: the separator to be used for the pairs. + :param key: an optional function to be used for sorting. For more details + check out the :func:`sorted` documentation. + """ + separator = to_native(separator, "ascii") + gen = _url_encode_impl(obj, charset, encode_keys, sort, key) + if stream is None: + return gen + for idx, chunk in enumerate(gen): + if idx: + stream.write(separator) + stream.write(chunk) + + +def url_join(base, url, allow_fragments=True): + """Join a base URL and a possibly relative URL to form an absolute + interpretation of the latter. + + :param base: the base URL for the join operation. + :param url: the URL to join. + :param allow_fragments: indicates whether fragments should be allowed. + """ + if isinstance(base, tuple): + base = url_unparse(base) + if isinstance(url, tuple): + url = url_unparse(url) + + base, url = normalize_string_tuple((base, url)) + s = make_literal_wrapper(base) + + if not base: + return url + if not url: + return base + + bscheme, bnetloc, bpath, bquery, bfragment = url_parse( + base, allow_fragments=allow_fragments + ) + scheme, netloc, path, query, fragment = url_parse(url, bscheme, allow_fragments) + if scheme != bscheme: + return url + if netloc: + return url_unparse((scheme, netloc, path, query, fragment)) + netloc = bnetloc + + if path[:1] == s("/"): + segments = path.split(s("/")) + elif not path: + segments = bpath.split(s("/")) + if not query: + query = bquery + else: + segments = bpath.split(s("/"))[:-1] + path.split(s("/")) + + # If the rightmost part is "./" we want to keep the slash but + # remove the dot. + if segments[-1] == s("."): + segments[-1] = s("") + + # Resolve ".." and "." + segments = [segment for segment in segments if segment != s(".")] + while 1: + i = 1 + n = len(segments) - 1 + while i < n: + if segments[i] == s("..") and segments[i - 1] not in (s(""), s("..")): + del segments[i - 1 : i + 1] + break + i += 1 + else: + break + + # Remove trailing ".." if the URL is absolute + unwanted_marker = [s(""), s("..")] + while segments[:2] == unwanted_marker: + del segments[1] + + path = s("/").join(segments) + return url_unparse((scheme, netloc, path, query, fragment)) + + +class Href(object): + """Implements a callable that constructs URLs with the given base. The + function can be called with any number of positional and keyword + arguments which than are used to assemble the URL. Works with URLs + and posix paths. + + Positional arguments are appended as individual segments to + the path of the URL: + + >>> href = Href('/foo') + >>> href('bar', 23) + '/foo/bar/23' + >>> href('foo', bar=23) + '/foo/foo?bar=23' + + If any of the arguments (positional or keyword) evaluates to `None` it + will be skipped. If no keyword arguments are given the last argument + can be a :class:`dict` or :class:`MultiDict` (or any other dict subclass), + otherwise the keyword arguments are used for the query parameters, cutting + off the first trailing underscore of the parameter name: + + >>> href(is_=42) + '/foo?is=42' + >>> href({'foo': 'bar'}) + '/foo?foo=bar' + + Combining of both methods is not allowed: + + >>> href({'foo': 'bar'}, bar=42) + Traceback (most recent call last): + ... + TypeError: keyword arguments and query-dicts can't be combined + + Accessing attributes on the href object creates a new href object with + the attribute name as prefix: + + >>> bar_href = href.bar + >>> bar_href("blub") + '/foo/bar/blub' + + If `sort` is set to `True` the items are sorted by `key` or the default + sorting algorithm: + + >>> href = Href("/", sort=True) + >>> href(a=1, b=2, c=3) + '/?a=1&b=2&c=3' + + .. versionadded:: 0.5 + `sort` and `key` were added. + """ + + def __init__(self, base="./", charset="utf-8", sort=False, key=None): + if not base: + base = "./" + self.base = base + self.charset = charset + self.sort = sort + self.key = key + + def __getattr__(self, name): + if name[:2] == "__": + raise AttributeError(name) + base = self.base + if base[-1:] != "/": + base += "/" + return Href(url_join(base, name), self.charset, self.sort, self.key) + + def __call__(self, *path, **query): + if path and isinstance(path[-1], dict): + if query: + raise TypeError("keyword arguments and query-dicts can't be combined") + query, path = path[-1], path[:-1] + elif query: + query = dict( + [(k.endswith("_") and k[:-1] or k, v) for k, v in query.items()] + ) + path = "/".join( + [ + to_unicode(url_quote(x, self.charset), "ascii") + for x in path + if x is not None + ] + ).lstrip("/") + rv = self.base + if path: + if not rv.endswith("/"): + rv += "/" + rv = url_join(rv, "./" + path) + if query: + rv += "?" + to_unicode( + url_encode(query, self.charset, sort=self.sort, key=self.key), "ascii" + ) + return to_native(rv) diff --git a/env/lib/python3.6/site-packages/werkzeug/useragents.py b/env/lib/python3.6/site-packages/werkzeug/useragents.py new file mode 100644 index 0000000..6ef6e2b --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/useragents.py @@ -0,0 +1,202 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.useragents + ~~~~~~~~~~~~~~~~~~~ + + This module provides a helper to inspect user agent strings. This module + is far from complete but should work for most of the currently available + browsers. + + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import re + + +class UserAgentParser(object): + """A simple user agent parser. Used by the `UserAgent`.""" + + platforms = ( + (" cros ", "chromeos"), + ("iphone|ios", "iphone"), + ("ipad", "ipad"), + (r"darwin|mac|os\s*x", "macos"), + ("win", "windows"), + (r"android", "android"), + ("netbsd", "netbsd"), + ("openbsd", "openbsd"), + ("freebsd", "freebsd"), + ("dragonfly", "dragonflybsd"), + ("(sun|i86)os", "solaris"), + (r"x11|lin(\b|ux)?", "linux"), + (r"nintendo\s+wii", "wii"), + ("irix", "irix"), + ("hp-?ux", "hpux"), + ("aix", "aix"), + ("sco|unix_sv", "sco"), + ("bsd", "bsd"), + ("amiga", "amiga"), + ("blackberry|playbook", "blackberry"), + ("symbian", "symbian"), + ) + browsers = ( + ("googlebot", "google"), + ("msnbot", "msn"), + ("yahoo", "yahoo"), + ("ask jeeves", "ask"), + (r"aol|america\s+online\s+browser", "aol"), + (r"opera|opr", "opera"), + ("edge", "edge"), + ("chrome|crios", "chrome"), + ("seamonkey", "seamonkey"), + ("firefox|firebird|phoenix|iceweasel", "firefox"), + ("galeon", "galeon"), + ("safari|version", "safari"), + ("webkit", "webkit"), + ("camino", "camino"), + ("konqueror", "konqueror"), + ("k-meleon", "kmeleon"), + ("netscape", "netscape"), + (r"msie|microsoft\s+internet\s+explorer|trident/.+? rv:", "msie"), + ("lynx", "lynx"), + ("links", "links"), + ("Baiduspider", "baidu"), + ("bingbot", "bing"), + ("mozilla", "mozilla"), + ) + + _browser_version_re = r"(?:%s)[/\sa-z(]*(\d+[.\da-z]+)?" + _language_re = re.compile( + r"(?:;\s*|\s+)(\b\w{2}\b(?:-\b\w{2}\b)?)\s*;|" + r"(?:\(|\[|;)\s*(\b\w{2}\b(?:-\b\w{2}\b)?)\s*(?:\]|\)|;)" + ) + + def __init__(self): + self.platforms = [(b, re.compile(a, re.I)) for a, b in self.platforms] + self.browsers = [ + (b, re.compile(self._browser_version_re % a, re.I)) + for a, b in self.browsers + ] + + def __call__(self, user_agent): + for platform, regex in self.platforms: # noqa: B007 + match = regex.search(user_agent) + if match is not None: + break + else: + platform = None + for browser, regex in self.browsers: # noqa: B007 + match = regex.search(user_agent) + if match is not None: + version = match.group(1) + break + else: + browser = version = None + match = self._language_re.search(user_agent) + if match is not None: + language = match.group(1) or match.group(2) + else: + language = None + return platform, browser, version, language + + +class UserAgent(object): + """Represents a user agent. Pass it a WSGI environment or a user agent + string and you can inspect some of the details from the user agent + string via the attributes. The following attributes exist: + + .. attribute:: string + + the raw user agent string + + .. attribute:: platform + + the browser platform. ``None`` if not recognized. + The following platforms are currently recognized: + + - `aix` + - `amiga` + - `android` + - `blackberry` + - `bsd` + - `chromeos` + - `dragonflybsd` + - `freebsd` + - `hpux` + - `ipad` + - `iphone` + - `irix` + - `linux` + - `macos` + - `netbsd` + - `openbsd` + - `sco` + - `solaris` + - `symbian` + - `wii` + - `windows` + + .. attribute:: browser + + the name of the browser. ``None`` if not recognized. + The following browsers are currently recognized: + + - `aol` * + - `ask` * + - `baidu` * + - `bing` * + - `camino` + - `chrome` + - `edge` + - `firefox` + - `galeon` + - `google` * + - `kmeleon` + - `konqueror` + - `links` + - `lynx` + - `mozilla` + - `msie` + - `msn` + - `netscape` + - `opera` + - `safari` + - `seamonkey` + - `webkit` + - `yahoo` * + + (Browsers marked with a star (``*``) are crawlers.) + + .. attribute:: version + + the version of the browser. ``None`` if not recognized. + + .. attribute:: language + + the language of the browser. ``None`` if not recognized. + """ + + _parser = UserAgentParser() + + def __init__(self, environ_or_string): + if isinstance(environ_or_string, dict): + environ_or_string = environ_or_string.get("HTTP_USER_AGENT", "") + self.string = environ_or_string + self.platform, self.browser, self.version, self.language = self._parser( + environ_or_string + ) + + def to_header(self): + return self.string + + def __str__(self): + return self.string + + def __nonzero__(self): + return bool(self.browser) + + __bool__ = __nonzero__ + + def __repr__(self): + return "<%s %r/%s>" % (self.__class__.__name__, self.browser, self.version) diff --git a/env/lib/python3.6/site-packages/werkzeug/utils.py b/env/lib/python3.6/site-packages/werkzeug/utils.py new file mode 100644 index 0000000..59c6f27 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/utils.py @@ -0,0 +1,778 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.utils + ~~~~~~~~~~~~~~ + + This module implements various utilities for WSGI applications. Most of + them are used by the request and response wrappers but especially for + middleware development it makes sense to use them without the wrappers. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import os +import pkgutil +import re +import sys + +from ._compat import iteritems +from ._compat import PY2 +from ._compat import reraise +from ._compat import string_types +from ._compat import text_type +from ._compat import unichr +from ._internal import _DictAccessorProperty +from ._internal import _missing +from ._internal import _parse_signature + +try: + from html.entities import name2codepoint +except ImportError: + from htmlentitydefs import name2codepoint + + +_format_re = re.compile(r"\$(?:(%s)|\{(%s)\})" % (("[a-zA-Z_][a-zA-Z0-9_]*",) * 2)) +_entity_re = re.compile(r"&([^;]+);") +_filename_ascii_strip_re = re.compile(r"[^A-Za-z0-9_.-]") +_windows_device_files = ( + "CON", + "AUX", + "COM1", + "COM2", + "COM3", + "COM4", + "LPT1", + "LPT2", + "LPT3", + "PRN", + "NUL", +) + + +class cached_property(property): + """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:: + + class Foo(object): + + @cached_property + def foo(self): + # calculate something important here + return 42 + + The class has to have a `__dict__` in order for this property to + work. + """ + + # implementation detail: A subclass of python's builtin property + # decorator, we override __get__ to check for a cached value. If one + # chooses to invoke __get__ by hand the property will still work as + # expected because the lookup logic is replicated in __get__ for + # manual invocation. + + 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 + + def __set__(self, obj, value): + obj.__dict__[self.__name__] = value + + def __get__(self, obj, type=None): + if obj is None: + return self + value = obj.__dict__.get(self.__name__, _missing) + if value is _missing: + value = self.func(obj) + obj.__dict__[self.__name__] = value + return value + + +def invalidate_cached_property(obj, name): + """Invalidates the cache for a :class:`cached_property`: + + >>> class Test(object): + ... @cached_property + ... def magic_number(self): + ... print("recalculating...") + ... return 42 + ... + >>> var = Test() + >>> var.magic_number + recalculating... + 42 + >>> var.magic_number + 42 + >>> invalidate_cached_property(var, "magic_number") + >>> var.magic_number + recalculating... + 42 + + You must pass the name of the cached property as the second argument. + """ + if not isinstance(getattr(obj.__class__, name, None), cached_property): + raise TypeError( + "Attribute {} of object {} is not a cached_property, " + "cannot be invalidated".format(name, obj) + ) + obj.__dict__[name] = _missing + + +class environ_property(_DictAccessorProperty): + """Maps request attributes to environment variables. This works not only + for the Werzeug request object, but also any other class with an + environ attribute: + + >>> class Test(object): + ... environ = {'key': 'value'} + ... test = environ_property('key') + >>> var = Test() + >>> var.test + 'value' + + If you pass it a second value it's used as default if the key does not + exist, the third one can be a converter that takes a value and converts + it. If it raises :exc:`ValueError` or :exc:`TypeError` the default value + is used. If no default value is provided `None` is used. + + Per default the property is read only. You have to explicitly enable it + by passing ``read_only=False`` to the constructor. + """ + + read_only = True + + def lookup(self, obj): + return obj.environ + + +class header_property(_DictAccessorProperty): + """Like `environ_property` but for headers.""" + + def lookup(self, obj): + return obj.headers + + +class HTMLBuilder(object): + """Helper object for HTML generation. + + Per default there are two instances of that class. The `html` one, and + the `xhtml` one for those two dialects. The class uses keyword parameters + and positional parameters to generate small snippets of HTML. + + Keyword parameters are converted to XML/SGML attributes, positional + arguments are used as children. Because Python accepts positional + arguments before keyword arguments it's a good idea to use a list with the + star-syntax for some children: + + >>> html.p(class_='foo', *[html.a('foo', href='foo.html'), ' ', + ... html.a('bar', href='bar.html')]) + u'

    foo bar

    ' + + This class works around some browser limitations and can not be used for + arbitrary SGML/XML generation. For that purpose lxml and similar + libraries exist. + + Calling the builder escapes the string passed: + + >>> html.p(html("")) + u'

    <foo>

    ' + """ + + _entity_re = re.compile(r"&([^;]+);") + _entities = name2codepoint.copy() + _entities["apos"] = 39 + _empty_elements = { + "area", + "base", + "basefont", + "br", + "col", + "command", + "embed", + "frame", + "hr", + "img", + "input", + "keygen", + "isindex", + "link", + "meta", + "param", + "source", + "wbr", + } + _boolean_attributes = { + "selected", + "checked", + "compact", + "declare", + "defer", + "disabled", + "ismap", + "multiple", + "nohref", + "noresize", + "noshade", + "nowrap", + } + _plaintext_elements = {"textarea"} + _c_like_cdata = {"script", "style"} + + def __init__(self, dialect): + self._dialect = dialect + + def __call__(self, s): + return escape(s) + + def __getattr__(self, tag): + if tag[:2] == "__": + raise AttributeError(tag) + + def proxy(*children, **arguments): + buffer = "<" + tag + for key, value in iteritems(arguments): + if value is None: + continue + if key[-1] == "_": + key = key[:-1] + if key in self._boolean_attributes: + if not value: + continue + if self._dialect == "xhtml": + value = '="' + key + '"' + else: + value = "" + else: + value = '="' + escape(value) + '"' + buffer += " " + key + value + if not children and tag in self._empty_elements: + if self._dialect == "xhtml": + buffer += " />" + else: + buffer += ">" + return buffer + buffer += ">" + + children_as_string = "".join( + [text_type(x) for x in children if x is not None] + ) + + if children_as_string: + if tag in self._plaintext_elements: + children_as_string = escape(children_as_string) + elif tag in self._c_like_cdata and self._dialect == "xhtml": + children_as_string = ( + "/**/" + ) + buffer += children_as_string + "" + return buffer + + return proxy + + def __repr__(self): + return "<%s for %r>" % (self.__class__.__name__, self._dialect) + + +html = HTMLBuilder("html") +xhtml = HTMLBuilder("xhtml") + +# https://cgit.freedesktop.org/xdg/shared-mime-info/tree/freedesktop.org.xml.in +# https://www.iana.org/assignments/media-types/media-types.xhtml +# Types listed in the XDG mime info that have a charset in the IANA registration. +_charset_mimetypes = { + "application/ecmascript", + "application/javascript", + "application/sql", + "application/xml", + "application/xml-dtd", + "application/xml-external-parsed-entity", +} + + +def get_content_type(mimetype, charset): + """Returns the full content type string with charset for a mimetype. + + If the mimetype represents text, the charset parameter will be + appended, otherwise the mimetype is returned unchanged. + + :param mimetype: The mimetype to be used as content type. + :param charset: The charset to be appended for text mimetypes. + :return: The content type. + + .. versionchanged:: 0.15 + Any type that ends with ``+xml`` gets a charset, not just those + that start with ``application/``. Known text types such as + ``application/javascript`` are also given charsets. + """ + if ( + mimetype.startswith("text/") + or mimetype in _charset_mimetypes + or mimetype.endswith("+xml") + ): + mimetype += "; charset=" + charset + + return mimetype + + +def detect_utf_encoding(data): + """Detect which UTF encoding 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. + + :internal: + + :param data: Bytes in unknown UTF encoding. + :return: UTF encoding name + + .. versionadded:: 0.15 + """ + 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 format_string(string, context): + """String-template format a string: + + >>> format_string('$foo and ${foo}s', dict(foo=42)) + '42 and 42s' + + This does not do any attribute lookup etc. For more advanced string + formattings have a look at the `werkzeug.template` module. + + :param string: the format string. + :param context: a dict with the variables to insert. + """ + + def lookup_arg(match): + x = context[match.group(1) or match.group(2)] + if not isinstance(x, string_types): + x = type(string)(x) + return x + + return _format_re.sub(lookup_arg, string) + + +def secure_filename(filename): + r"""Pass it a filename and it will return a secure version of it. This + filename can then safely be stored on a regular file system and passed + to :func:`os.path.join`. The filename returned is an ASCII only string + for maximum portability. + + On windows systems the function also makes sure that the file is not + named after one of the special device files. + + >>> secure_filename("My cool movie.mov") + 'My_cool_movie.mov' + >>> secure_filename("../../../etc/passwd") + 'etc_passwd' + >>> secure_filename(u'i contain cool \xfcml\xe4uts.txt') + 'i_contain_cool_umlauts.txt' + + The function might return an empty filename. It's your responsibility + to ensure that the filename is unique and that you abort or + generate a random filename if the function returned an empty one. + + .. versionadded:: 0.5 + + :param filename: the filename to secure + """ + if isinstance(filename, text_type): + from unicodedata import normalize + + filename = normalize("NFKD", filename).encode("ascii", "ignore") + if not PY2: + filename = filename.decode("ascii") + for sep in os.path.sep, os.path.altsep: + if sep: + filename = filename.replace(sep, " ") + filename = str(_filename_ascii_strip_re.sub("", "_".join(filename.split()))).strip( + "._" + ) + + # on nt a couple of special files are present in each folder. We + # have to ensure that the target file is not such a filename. In + # this case we prepend an underline + if ( + os.name == "nt" + and filename + and filename.split(".")[0].upper() in _windows_device_files + ): + filename = "_" + filename + + return filename + + +def escape(s): + """Replace special characters "&", "<", ">" and (") to HTML-safe sequences. + + There is a special handling for `None` which escapes to an empty string. + + .. versionchanged:: 0.9 + `quote` is now implicitly on. + + :param s: the string to escape. + :param quote: ignored. + """ + if s is None: + return "" + elif hasattr(s, "__html__"): + return text_type(s.__html__()) + + if not isinstance(s, string_types): + s = text_type(s) + + return ( + s.replace("&", "&") + .replace("<", "<") + .replace(">", ">") + .replace('"', """) + ) + + +def unescape(s): + """The reverse function of `escape`. This unescapes all the HTML + entities, not only the XML entities inserted by `escape`. + + :param s: the string to unescape. + """ + + def handle_match(m): + name = m.group(1) + if name in HTMLBuilder._entities: + return unichr(HTMLBuilder._entities[name]) + try: + if name[:2] in ("#x", "#X"): + return unichr(int(name[2:], 16)) + elif name.startswith("#"): + return unichr(int(name[1:])) + except ValueError: + pass + return u"" + + return _entity_re.sub(handle_match, s) + + +def redirect(location, code=302, Response=None): + """Returns a response object (a WSGI application) that, if called, + redirects the client to the target location. Supported codes are + 301, 302, 303, 305, 307, and 308. 300 is not supported because + it's not a real redirect and 304 because it's the answer for a + request with a request with defined If-Modified-Since headers. + + .. versionadded:: 0.6 + The location can now be a unicode string that is encoded using + the :func:`iri_to_uri` function. + + .. versionadded:: 0.10 + The class used for the Response object can now be passed in. + + :param location: the location the response should redirect to. + :param code: the redirect status code. defaults to 302. + :param class Response: a Response class to use when instantiating a + response. The default is :class:`werkzeug.wrappers.Response` if + unspecified. + """ + if Response is None: + from .wrappers import Response + + display_location = escape(location) + if isinstance(location, text_type): + # Safe conversion is necessary here as we might redirect + # to a broken URI scheme (for instance itms-services). + from .urls import iri_to_uri + + location = iri_to_uri(location, safe_conversion=True) + response = Response( + '\n' + "Redirecting...\n" + "

    Redirecting...

    \n" + "

    You should be redirected automatically to target URL: " + '%s. If not click the link.' + % (escape(location), display_location), + code, + mimetype="text/html", + ) + response.headers["Location"] = location + return response + + +def append_slash_redirect(environ, code=301): + """Redirects to the same URL but with a slash appended. The behavior + of this function is undefined if the path ends with a slash already. + + :param environ: the WSGI environment for the request that triggers + the redirect. + :param code: the status code for the redirect. + """ + new_path = environ["PATH_INFO"].strip("/") + "/" + query_string = environ.get("QUERY_STRING") + if query_string: + new_path += "?" + query_string + return redirect(new_path, code) + + +def import_string(import_name, silent=False): + """Imports an object based on a string. This is useful if you want to + use import paths as endpoints or something similar. An import path can + be specified either in dotted notation (``xml.sax.saxutils.escape``) + or with a colon as object delimiter (``xml.sax.saxutils:escape``). + + If `silent` is True the return value will be `None` if the import fails. + + :param import_name: the dotted name for the object to import. + :param silent: if set to `True` import errors are ignored and + `None` is returned instead. + :return: imported object + """ + # force the import name to automatically convert to strings + # __import__ is not able to handle unicode strings in the fromlist + # if the module is a package + import_name = str(import_name).replace(":", ".") + try: + try: + __import__(import_name) + except ImportError: + if "." not in import_name: + raise + else: + return sys.modules[import_name] + + module_name, obj_name = import_name.rsplit(".", 1) + module = __import__(module_name, globals(), locals(), [obj_name]) + try: + return getattr(module, obj_name) + except AttributeError as e: + raise ImportError(e) + + except ImportError as e: + if not silent: + reraise( + ImportStringError, ImportStringError(import_name, e), sys.exc_info()[2] + ) + + +def find_modules(import_path, include_packages=False, recursive=False): + """Finds all the modules below a package. This can be useful to + automatically import all views / controllers so that their metaclasses / + function decorators have a chance to register themselves on the + application. + + Packages are not returned unless `include_packages` is `True`. This can + also recursively list modules but in that case it will import all the + packages to get the correct load path of that module. + + :param import_path: the dotted name for the package to find child modules. + :param include_packages: set to `True` if packages should be returned, too. + :param recursive: set to `True` if recursion should happen. + :return: generator + """ + module = import_string(import_path) + path = getattr(module, "__path__", None) + if path is None: + raise ValueError("%r is not a package" % import_path) + basename = module.__name__ + "." + for _importer, modname, ispkg in pkgutil.iter_modules(path): + modname = basename + modname + if ispkg: + if include_packages: + yield modname + if recursive: + for item in find_modules(modname, include_packages, True): + yield item + else: + yield modname + + +def validate_arguments(func, args, kwargs, drop_extra=True): + """Checks if the function accepts the arguments and keyword arguments. + Returns a new ``(args, kwargs)`` tuple that can safely be passed to + the function without causing a `TypeError` because the function signature + is incompatible. If `drop_extra` is set to `True` (which is the default) + any extra positional or keyword arguments are dropped automatically. + + The exception raised provides three attributes: + + `missing` + A set of argument names that the function expected but where + missing. + + `extra` + A dict of keyword arguments that the function can not handle but + where provided. + + `extra_positional` + A list of values that where given by positional argument but the + function cannot accept. + + This can be useful for decorators that forward user submitted data to + a view function:: + + from werkzeug.utils import ArgumentValidationError, validate_arguments + + def sanitize(f): + def proxy(request): + data = request.values.to_dict() + try: + args, kwargs = validate_arguments(f, (request,), data) + except ArgumentValidationError: + raise BadRequest('The browser failed to transmit all ' + 'the data expected.') + return f(*args, **kwargs) + return proxy + + :param func: the function the validation is performed against. + :param args: a tuple of positional arguments. + :param kwargs: a dict of keyword arguments. + :param drop_extra: set to `False` if you don't want extra arguments + to be silently dropped. + :return: tuple in the form ``(args, kwargs)``. + """ + parser = _parse_signature(func) + args, kwargs, missing, extra, extra_positional = parser(args, kwargs)[:5] + if missing: + raise ArgumentValidationError(tuple(missing)) + elif (extra or extra_positional) and not drop_extra: + raise ArgumentValidationError(None, extra, extra_positional) + return tuple(args), kwargs + + +def bind_arguments(func, args, kwargs): + """Bind the arguments provided into a dict. When passed a function, + a tuple of arguments and a dict of keyword arguments `bind_arguments` + returns a dict of names as the function would see it. This can be useful + to implement a cache decorator that uses the function arguments to build + the cache key based on the values of the arguments. + + :param func: the function the arguments should be bound for. + :param args: tuple of positional arguments. + :param kwargs: a dict of keyword arguments. + :return: a :class:`dict` of bound keyword arguments. + """ + ( + args, + kwargs, + missing, + extra, + extra_positional, + arg_spec, + vararg_var, + kwarg_var, + ) = _parse_signature(func)(args, kwargs) + values = {} + for (name, _has_default, _default), value in zip(arg_spec, args): + values[name] = value + if vararg_var is not None: + values[vararg_var] = tuple(extra_positional) + elif extra_positional: + raise TypeError("too many positional arguments") + if kwarg_var is not None: + multikw = set(extra) & set([x[0] for x in arg_spec]) + if multikw: + raise TypeError( + "got multiple values for keyword argument " + repr(next(iter(multikw))) + ) + values[kwarg_var] = extra + elif extra: + raise TypeError("got unexpected keyword argument " + repr(next(iter(extra)))) + return values + + +class ArgumentValidationError(ValueError): + + """Raised if :func:`validate_arguments` fails to validate""" + + def __init__(self, missing=None, extra=None, extra_positional=None): + self.missing = set(missing or ()) + self.extra = extra or {} + self.extra_positional = extra_positional or [] + ValueError.__init__( + self, + "function arguments invalid. (%d missing, %d additional)" + % (len(self.missing), len(self.extra) + len(self.extra_positional)), + ) + + +class ImportStringError(ImportError): + """Provides information about a failed :func:`import_string` attempt.""" + + #: String in dotted notation that failed to be imported. + import_name = None + #: Wrapped exception. + exception = None + + def __init__(self, import_name, exception): + self.import_name = import_name + self.exception = exception + + msg = ( + "import_string() failed for %r. Possible reasons are:\n\n" + "- missing __init__.py in a package;\n" + "- package or module path not included in sys.path;\n" + "- duplicated package or module name taking precedence in " + "sys.path;\n" + "- missing module, class, function or variable;\n\n" + "Debugged import:\n\n%s\n\n" + "Original exception:\n\n%s: %s" + ) + + name = "" + tracked = [] + for part in import_name.replace(":", ".").split("."): + name += (name and ".") + part + imported = import_string(name, silent=True) + if imported: + tracked.append((name, getattr(imported, "__file__", None))) + else: + track = ["- %r found in %r." % (n, i) for n, i in tracked] + track.append("- %r not found." % name) + msg = msg % ( + import_name, + "\n".join(track), + exception.__class__.__name__, + str(exception), + ) + break + + ImportError.__init__(self, msg) + + def __repr__(self): + return "<%s(%r, %r)>" % ( + self.__class__.__name__, + self.import_name, + self.exception, + ) diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/__init__.py b/env/lib/python3.6/site-packages/werkzeug/wrappers/__init__.py new file mode 100644 index 0000000..56c764a --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wrappers/__init__.py @@ -0,0 +1,36 @@ +""" +werkzeug.wrappers +~~~~~~~~~~~~~~~~~ + +The wrappers are simple request and response objects which you can +subclass to do whatever you want them to do. The request object contains +the information transmitted by the client (webbrowser) and the response +object contains all the information sent back to the browser. + +An important detail is that the request object is created with the WSGI +environ and will act as high-level proxy whereas the response object is an +actual WSGI application. + +Like everything else in Werkzeug these objects will work correctly with +unicode data. Incoming form data parsed by the response object will be +decoded into an unicode object if possible and if it makes sense. + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +from .accept import AcceptMixin +from .auth import AuthorizationMixin +from .auth import WWWAuthenticateMixin +from .base_request import BaseRequest +from .base_response import BaseResponse +from .common_descriptors import CommonRequestDescriptorsMixin +from .common_descriptors import CommonResponseDescriptorsMixin +from .etag import ETagRequestMixin +from .etag import ETagResponseMixin +from .request import PlainRequest +from .request import Request +from .request import StreamOnlyMixin +from .response import Response +from .response import ResponseStream +from .response import ResponseStreamMixin +from .user_agent import UserAgentMixin diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d1a63cfd33bfefaa392da1b8be58cc15e0528c10 GIT binary patch literal 1632 zcmaJ>%WfMt6qRh*l1DE~c9Ob4i@U5BvVvsMzzBjmNl^soBZyN7n9YPU!)RFXF(Emb zD2skexBZiTgSK6zpU_n=IU?j5MMn^Ecpqo(J(rw^!(sI4w>NK!gI4R$){SQm@i+K4 zf8dh0;#S_y_jp_E#d~ds_xZl)#2t@2h!5fej}Q2v=*C@-4|z`<#YY}@c_jLA-{T(Q zK|JvIh!4dm9(f!g9>-&k`}|l;;)%xt#M5}{@euJzeB$wlpNc#29goL|@5XmMK1O^m zzUT3Te>ie48Kf***cV3;U51x?>o z)L0-gM{G(Z4F#3{LNjZiE?8E;T2+t{8JQ~0I57sSf?T1KSo)r7@2`opU<)c5=LLX! zVIXh#AXCy3CQXEaz~oz{1+h#?u$o9Cn6)&AbnSQ`hq zULc(NxyoGjmhK{ot|XucN?TWaPO&x)4BNxTeB`b2(Uob6P3KTETlkR0 z^>;5KD&I4WZ8!~UhBc531vOBxWijKZ5r$oQqXir$ zXPH+Bi~XLhC^)^>wqSAzl;fb7gvECHj`Zf}TphL2D^y);oF>QDW7Sb5S*CIdIk5!C z^g?DzI6gNGZ-kO)vl~PZJJjhLOlg!;N0Va-s4I~Wc(*fQZ=qDiuoTaj(*^g;f*>nu z07qgdwse`Pa;;G$dkGKj-~Sq3;sB{N(IxinVlLt7_4C=o*)vWmL!(b^yuIh`P5&y( zXlZ|7ADG1L^s2Ij((I#`Dp*e!i-mLG_??I}*!xe3p|6@#kI92(+Z=q{fALHSq2xB; zIW?JPrB&L5{4Ya5lky)C$KSpt%Pm33nl!d1Cm07WIbMfdE!`a)Ut2sW;wQ=1A-eZ! zdp)trQNT?YT2B6L2}z@$@#b7DQ3P-K@%-~mH%W4pCCTQHcp0_(IBq%wwbJ_tbqAMt zkfKb9ZgkT4J#EFqt*L23A3ECvzuE%lMxM{eH@e0^scxMk?< zy>Q6%$l1njId+Z+$F39N>emxA{NB=M&gquFpUkZ&=Ors=X~lRxdq4#v?;hECxDxa5 kWt@jE-#kf}WHw1I%JruASg5?>^vNl*8Nj8}9{lg`AMj`gG5`Po literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/accept.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/accept.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f4aa338d96479fc3538e872a616bb6947b69b155 GIT binary patch literal 2161 zcmb_d-EJc_6rSHqlBVry7jXj;zJpxs1c8uN)e3D0pc#$Ki5aJ290W8IFmP~+lSPgfv>EB2ot#aZwv6bBcTg43H z4%l7NQ{!FIhuHUuy)v4!@TV|Y{V_(dG|*MbP!M6xDMxpqSR$ODBP;|vn*Z_*=JXZi zS(>E$&I1V^7iXgt5HqAPb>QbyCOp{w2k9gvYt{!6$f@bJgb z3GHX?TE7Ok*19m)1^{5J($kO&lwLvRF%|b2WGt2;hx9|52-qsiQU?20@yhHTjCoV# zI_@$w`LVYr(eTHU$@KhUXfYcCE1U|)!UWiug&%z|kGU84!n$O2pmlzIarcev{)N_~eqen!WnCgji9){rAH6 zMDwObGbpw2KY+QTsunz-Y~kroUXEYAp4PasE+oi$vMV*p`qGwwmfZlX;;_oO4*5eE zupQg~k};NQuK|v#W49IH_Y(5% z0lpz$gP!Z6TaX%50dP(hl%UVuubNq?)k%V&PPbv2^Lk|!)*aLdBSsf_gxU5d4<0Wi zBRA1VPRQo%l=j+#PjF0q zzv%mZoRU0}_Q3aVavW7Nj_;E+@O=jNw8r*jcOW}?CNU|VErBYjN|iDPIw@x^CET?w zW8e&WgRUB%4g21~?!BP|uQFA~X<;pe$jZak&P5n;wR_PiuNCE`ZQG*zyv*Wjd7G%c J2YU50{{e>_NVfn0 literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/auth.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/auth.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de3c6aa86f149268186ff82a174865581f7e4b44 GIT binary patch literal 1650 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 g#{n#@U01k*9aw;{{%JUK9m$&6rCc4uXl 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 Ybk+JJ=(rJ)G&bR~@OS!u)dl~*0q6~VVgLXD literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/cors.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/cors.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de757114c840fa6bdfa2068fa1e5d0b99f074cda GIT binary patch literal 3244 zcmc&$O>Y}T7~U`2Yv;S5UfQA&NE9R4fr6lls;b7dnj#WY+o;lBHj|x6yvcrbW*jH0 zic5P!>ObJXl?(h0egNXIS5Ey4oOow;?IyNETZDwI9lzt*_ha69-{+anR#s{+f7;vo zVMWva)Xse@knh362QUzg=z$jMj;>4D0NHR1C7Xd6T8^b;3*?eh(zOQ~DUtGXjg)Em zndwwuULiKjZ8f(^wXfA{FAXqV*Rv%u3KMroF`*2m>j`F@x}1u0|Iz5gXK~~vEKVpB zXYk%yt}*?~18dVy38Z`Q@GoGXnxhlVF^KM%)FK8kiS@#8N+6eLnUqQ81q2B*2u!Wm zqy_;lW$W#3uiv9jMwE*k|J0AtUs@=X0y>Bp+VTR-`PSa|W6F+GIy!8Q8BQQR-uw!4 zS}5)zKH67rQeH#w5ko8xCWIqGxySrO#EdJ0Z5DHmy39WW4?W7`5%VbO4>9wjL-di1 zrmjrnTj$N1nl+o~1f2SD1Xd~8+CrZ;KT#{r()M8Rt=sKAeDH8L{c$j)Xc%*mhah0a z^39=G`NV<}bim@UiTYHaEi43s?d4hENgQ#i($K`7M>%)BI1(%lTpR@P*v)P1p*RBj z(sZtYM2!51_#RkCB`qzNZ#lGt-TP!YGuRt;iI+=Ef%u?m!~^Zq}jW2ZCN?%q#-f7@(?R19M>O~#1JV~2wN zPjitw;ct?Q;?)cFuv@QYw(CYXq^_IQTsMr#D3J29>pmIbpjfH6E|iVyGKpAOIX^^Z z%G|v-Q>I0+7qG&e8<(u-;ry(zRj{IlzqU3-m~19~(%2vQ0cqT#p^u;37MqWY*5909 zz~%%4Ha%$TW^%^LU`3uKzY2q0whTiz47&`Y{H@4Qy>kJ;q|!a9bOOUXfIZiq=>TA* zqcX9GS922vfH?&GpAhKjkU;s7zmjp<@bDT8M1QIsX~$*QsgeHncnD2F8DIe= z01iG5IP!3$zybgmI%NM$HOM}T#~fZ1v4U8M=wIU#+*e4ByqM4?YHjnW(%Bkh zCPOowkpuj>)JR(8GMidCy){=Pi}~T4x~Eh@TmH&kRfqB+2v2pQAKUC*V#vcG<{d3s zmC}(8tgSs$mku~EYj==Yf{o}KY}a5LU^p|AIH?=#ij+$yI2h5HU9)#!=`K86HlJqL z`m&K;Uzp8pby?x*?Z=AGCRjeHm)Da^-DEcSaH{I=Gllz0-0dj5=INKYy9rzt?p_by z>9vKs=ql1rI|HD=g8YC4Zhm}IkpYg*CjY7%ONh@sVuB?taigq7Zyan(6ZVon>A zjNM(Fu}eB^uCvmsGv;^jX`^*W(}!{sAwKoPQHby%h4uoHhYJc^vm~uy)fCX4>c#>~ zLcpDB+TtGehB*l~ck3Ih3TMM4MzAG0EW?o5le?#?ldLRFP{!maFYQdTJfX5K%do={Auv=#-F*>`f9 RzbnyNq4ct@zUKPPzX2W3-i`nO literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/etag.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/etag.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5611e8fd9992d18cee05e290d354f4662a280f3c GIT binary patch literal 11532 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 R+=xU|1Lk~#zufYV{~Js-O+o+w literal 0 HcmV?d00001 diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/json.cpython-36.pyc b/env/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/json.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6bfd8d28c88751988da19b320e8edca9ded8b473 GIT binary patch literal 4273 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 for more + details about customizing the behavior. + + Per default the request object will be added to the WSGI + environment as `werkzeug.request` to support the debugging system. + If you don't want that, set `populate_request` to `False`. + + If `shallow` is `True` the environment is initialized as shallow + object around the environ. Every operation that would modify the + environ in any way (such as consuming form data) raises an exception + unless the `shallow` attribute is explicitly set to `False`. This + is useful for middlewares where you don't want to consume the form + data by accident. A shallow request is not populated to the WSGI + environment. + + .. versionchanged:: 0.5 + read-only mode was enforced by using immutables classes for all + data. + """ + + #: the charset for the request, defaults to utf-8 + charset = "utf-8" + + #: the error handling procedure for errors, defaults to 'replace' + encoding_errors = "replace" + + #: the maximum content length. This is forwarded to the form data + #: parsing function (:func:`parse_form_data`). When set and the + #: :attr:`form` or :attr:`files` attribute is accessed and the + #: parsing fails because more than the specified value is transmitted + #: a :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. + #: + #: Have a look at :ref:`dealing-with-request-data` for more details. + #: + #: .. versionadded:: 0.5 + max_content_length = None + + #: the maximum form field size. This is forwarded to the form data + #: parsing function (:func:`parse_form_data`). When set and the + #: :attr:`form` or :attr:`files` attribute is accessed and the + #: data in memory for post data is longer than the specified value a + #: :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. + #: + #: Have a look at :ref:`dealing-with-request-data` for more details. + #: + #: .. versionadded:: 0.5 + max_form_memory_size = None + + #: the class to use for `args` and `form`. The default is an + #: :class:`~werkzeug.datastructures.ImmutableMultiDict` which supports + #: multiple values per key. alternatively it makes sense to use an + #: :class:`~werkzeug.datastructures.ImmutableOrderedMultiDict` which + #: preserves order or a :class:`~werkzeug.datastructures.ImmutableDict` + #: which is the fastest but only remembers the last key. It is also + #: possible to use mutable structures, but this is not recommended. + #: + #: .. versionadded:: 0.6 + parameter_storage_class = ImmutableMultiDict + + #: the type to be used for list values from the incoming WSGI environment. + #: By default an :class:`~werkzeug.datastructures.ImmutableList` is used + #: (for example for :attr:`access_list`). + #: + #: .. versionadded:: 0.6 + list_storage_class = ImmutableList + + #: The type to be used for dict values from the incoming WSGI + #: environment. (For example for :attr:`cookies`.) By default an + #: :class:`~werkzeug.datastructures.ImmutableMultiDict` is used. + #: + #: .. versionchanged:: 1.0.0 + #: Changed to ``ImmutableMultiDict`` to support multiple values. + #: + #: .. versionadded:: 0.6 + dict_storage_class = ImmutableMultiDict + + #: The form data parser that shoud be used. Can be replaced to customize + #: the form date parsing. + form_data_parser_class = FormDataParser + + #: Optionally a list of hosts that is trusted by this request. By default + #: all hosts are trusted which means that whatever the client sends the + #: host is will be accepted. + #: + #: Because `Host` and `X-Forwarded-Host` headers can be set to any value by + #: a malicious client, it is recommended to either set this property or + #: implement similar validation in the proxy (if application is being run + #: behind one). + #: + #: .. versionadded:: 0.9 + trusted_hosts = None + + #: Indicates whether the data descriptor should be allowed to read and + #: buffer up the input stream. By default it's enabled. + #: + #: .. versionadded:: 0.9 + disable_data_descriptor = False + + def __init__(self, environ, populate_request=True, shallow=False): + self.environ = environ + if populate_request and not shallow: + self.environ["werkzeug.request"] = self + self.shallow = shallow + + def __repr__(self): + # make sure the __repr__ even works if the request was created + # from an invalid WSGI environment. If we display the request + # in a debug session we don't want the repr to blow up. + args = [] + try: + args.append("'%s'" % to_native(self.url, self.url_charset)) + args.append("[%s]" % self.method) + except Exception: + args.append("(invalid WSGI environ)") + + return "<%s %s>" % (self.__class__.__name__, " ".join(args)) + + @property + def url_charset(self): + """The charset that is assumed for URLs. Defaults to the value + of :attr:`charset`. + + .. versionadded:: 0.6 + """ + return self.charset + + @classmethod + def from_values(cls, *args, **kwargs): + """Create a new request object based on the values provided. If + environ is given missing values are filled from there. This method is + useful for small scripts when you need to simulate a request from an URL. + Do not use this method for unittesting, there is a full featured client + object (:class:`Client`) that allows to create multipart requests, + support for cookies etc. + + This accepts the same options as the + :class:`~werkzeug.test.EnvironBuilder`. + + .. versionchanged:: 0.5 + This method now accepts the same arguments as + :class:`~werkzeug.test.EnvironBuilder`. Because of this the + `environ` parameter is now called `environ_overrides`. + + :return: request object + """ + from ..test import EnvironBuilder + + charset = kwargs.pop("charset", cls.charset) + kwargs["charset"] = charset + builder = EnvironBuilder(*args, **kwargs) + try: + return builder.get_request(cls) + finally: + builder.close() + + @classmethod + def application(cls, f): + """Decorate a function as responder that accepts the request as + the last argument. This works like the :func:`responder` + decorator but the function is passed the request object as the + last argument and the request object will be closed + automatically:: + + @Request.application + def my_wsgi_app(request): + return Response('Hello World!') + + As of Werkzeug 0.14 HTTP exceptions are automatically caught and + converted to responses instead of failing. + + :param f: the WSGI callable to decorate + :return: a new WSGI callable + """ + #: return a callable that wraps the -2nd argument with the request + #: and calls the function with all the arguments up to that one and + #: the request. The return value is then called with the latest + #: two arguments. This makes it possible to use this decorator for + #: both standalone WSGI functions as well as bound methods and + #: partially applied functions. + from ..exceptions import HTTPException + + def application(*args): + request = cls(args[-2]) + with request: + try: + resp = f(*args[:-2] + (request,)) + except HTTPException as e: + resp = e.get_response(args[-2]) + return resp(*args[-2:]) + + return update_wrapper(application, f) + + def _get_file_stream( + self, total_content_length, content_type, filename=None, content_length=None + ): + """Called to get a stream for the file upload. + + This must provide a file-like class with `read()`, `readline()` + and `seek()` methods that is both writeable and readable. + + The default implementation returns a temporary file if the total + content length is higher than 500KB. Because many browsers do not + provide a content length for the files only the total content + length matters. + + :param total_content_length: the total content length of all the + data in the request combined. This value + is guaranteed to be there. + :param content_type: the mimetype of the uploaded file. + :param filename: the filename of the uploaded file. May be `None`. + :param content_length: the length of this file. This value is usually + not provided because webbrowsers do not provide + this value. + """ + return default_stream_factory( + total_content_length=total_content_length, + filename=filename, + content_type=content_type, + content_length=content_length, + ) + + @property + def want_form_data_parsed(self): + """Returns True if the request method carries content. As of + Werkzeug 0.9 this will be the case if a content type is transmitted. + + .. versionadded:: 0.8 + """ + return bool(self.environ.get("CONTENT_TYPE")) + + def make_form_data_parser(self): + """Creates the form data parser. Instantiates the + :attr:`form_data_parser_class` with some parameters. + + .. versionadded:: 0.8 + """ + return self.form_data_parser_class( + self._get_file_stream, + self.charset, + self.encoding_errors, + self.max_form_memory_size, + self.max_content_length, + self.parameter_storage_class, + ) + + def _load_form_data(self): + """Method used internally to retrieve submitted data. After calling + this sets `form` and `files` on the request object to multi dicts + filled with the incoming form data. As a matter of fact the input + stream will be empty afterwards. You can also call this method to + force the parsing of the form data. + + .. versionadded:: 0.8 + """ + # abort early if we have already consumed the stream + if "form" in self.__dict__: + return + + _assert_not_shallow(self) + + if self.want_form_data_parsed: + content_type = self.environ.get("CONTENT_TYPE", "") + content_length = get_content_length(self.environ) + mimetype, options = parse_options_header(content_type) + parser = self.make_form_data_parser() + data = parser.parse( + self._get_stream_for_parsing(), mimetype, content_length, options + ) + else: + data = ( + self.stream, + self.parameter_storage_class(), + self.parameter_storage_class(), + ) + + # inject the values into the instance dict so that we bypass + # our cached_property non-data descriptor. + d = self.__dict__ + d["stream"], d["form"], d["files"] = data + + def _get_stream_for_parsing(self): + """This is the same as accessing :attr:`stream` with the difference + that if it finds cached data from calling :meth:`get_data` first it + will create a new stream out of the cached data. + + .. versionadded:: 0.9.3 + """ + cached_data = getattr(self, "_cached_data", None) + if cached_data is not None: + return BytesIO(cached_data) + return self.stream + + def close(self): + """Closes associated resources of this request object. This + closes all file handles explicitly. You can also use the request + object in a with statement which will automatically close it. + + .. versionadded:: 0.9 + """ + files = self.__dict__.get("files") + for _key, value in iter_multi_items(files or ()): + value.close() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, tb): + self.close() + + @cached_property + def stream(self): + """ + If the incoming form data was not encoded with a known mimetype + the data is stored unmodified in this stream for consumption. Most + of the time it is a better idea to use :attr:`data` which will give + you that data as a string. The stream only returns the data once. + + Unlike :attr:`input_stream` this stream is properly guarded that you + can't accidentally read past the length of the input. Werkzeug will + internally always refer to this stream to read data which makes it + possible to wrap this object with a stream that does filtering. + + .. versionchanged:: 0.9 + This stream is now always available but might be consumed by the + form parser later on. Previously the stream was only set if no + parsing happened. + """ + _assert_not_shallow(self) + return get_input_stream(self.environ) + + input_stream = environ_property( + "wsgi.input", + """The WSGI input stream. + + In general it's a bad idea to use this one because you can + easily read past the boundary. Use the :attr:`stream` + instead.""", + ) + + @cached_property + def args(self): + """The parsed URL parameters (the part in the URL after the question + mark). + + By default an + :class:`~werkzeug.datastructures.ImmutableMultiDict` + is returned from this function. This can be changed by setting + :attr:`parameter_storage_class` to a different type. This might + be necessary if the order of the form data is important. + """ + return url_decode( + wsgi_get_bytes(self.environ.get("QUERY_STRING", "")), + self.url_charset, + errors=self.encoding_errors, + cls=self.parameter_storage_class, + ) + + @cached_property + def data(self): + """ + Contains the incoming request data as string in case it came with + a mimetype Werkzeug does not handle. + """ + + if self.disable_data_descriptor: + raise AttributeError("data descriptor is disabled") + # XXX: this should eventually be deprecated. + + # We trigger form data parsing first which means that the descriptor + # will not cache the data that would otherwise be .form or .files + # data. This restores the behavior that was there in Werkzeug + # before 0.9. New code should use :meth:`get_data` explicitly as + # this will make behavior explicit. + return self.get_data(parse_form_data=True) + + def get_data(self, cache=True, as_text=False, parse_form_data=False): + """This reads the buffered incoming data from the client into one + bytestring. By default this is cached but that behavior can be + changed by setting `cache` to `False`. + + Usually it's a bad idea to call this method without checking the + content length first as a client could send dozens of megabytes or more + to cause memory problems on the server. + + Note that if the form data was already parsed this method will not + return anything as form data parsing does not cache the data like + this method does. To implicitly invoke form data parsing function + set `parse_form_data` to `True`. When this is done the return value + of this method will be an empty string if the form parser handles + the data. This generally is not necessary as if the whole data is + cached (which is the default) the form parser will used the cached + data to parse the form data. Please be generally aware of checking + the content length first in any case before calling this method + to avoid exhausting server memory. + + If `as_text` is set to `True` the return value will be a decoded + unicode string. + + .. versionadded:: 0.9 + """ + rv = getattr(self, "_cached_data", None) + if rv is None: + if parse_form_data: + self._load_form_data() + rv = self.stream.read() + if cache: + self._cached_data = rv + if as_text: + rv = rv.decode(self.charset, self.encoding_errors) + return rv + + @cached_property + def form(self): + """The form parameters. By default an + :class:`~werkzeug.datastructures.ImmutableMultiDict` + is returned from this function. This can be changed by setting + :attr:`parameter_storage_class` to a different type. This might + be necessary if the order of the form data is important. + + Please keep in mind that file uploads will not end up here, but instead + in the :attr:`files` attribute. + + .. versionchanged:: 0.9 + + Previous to Werkzeug 0.9 this would only contain form data for POST + and PUT requests. + """ + self._load_form_data() + return self.form + + @cached_property + def values(self): + """A :class:`werkzeug.datastructures.CombinedMultiDict` that combines + :attr:`args` and :attr:`form`.""" + args = [] + for d in self.args, self.form: + if not isinstance(d, MultiDict): + d = MultiDict(d) + args.append(d) + return CombinedMultiDict(args) + + @cached_property + def files(self): + """:class:`~werkzeug.datastructures.MultiDict` object containing + all uploaded files. Each key in :attr:`files` is the name from the + ````. Each value in :attr:`files` is a + Werkzeug :class:`~werkzeug.datastructures.FileStorage` object. + + It basically behaves like a standard file object you know from Python, + with the difference that it also has a + :meth:`~werkzeug.datastructures.FileStorage.save` function that can + store the file on the filesystem. + + Note that :attr:`files` will only contain data if the request method was + POST, PUT or PATCH and the ``

    `` that posted to the request had + ``enctype="multipart/form-data"``. It will be empty otherwise. + + See the :class:`~werkzeug.datastructures.MultiDict` / + :class:`~werkzeug.datastructures.FileStorage` documentation for + more details about the used data structure. + """ + self._load_form_data() + return self.files + + @cached_property + def cookies(self): + """A :class:`dict` with the contents of all cookies transmitted with + the request.""" + return parse_cookie( + self.environ, + self.charset, + self.encoding_errors, + cls=self.dict_storage_class, + ) + + @cached_property + def headers(self): + """The headers from the WSGI environ as immutable + :class:`~werkzeug.datastructures.EnvironHeaders`. + """ + return EnvironHeaders(self.environ) + + @cached_property + def path(self): + """Requested path as unicode. This works a bit like the regular path + info in the WSGI environment but will always include a leading slash, + even if the URL root is accessed. + """ + raw_path = wsgi_decoding_dance( + self.environ.get("PATH_INFO") or "", self.charset, self.encoding_errors + ) + return "/" + raw_path.lstrip("/") + + @cached_property + def full_path(self): + """Requested path as unicode, including the query string.""" + return self.path + u"?" + to_unicode(self.query_string, self.url_charset) + + @cached_property + def script_root(self): + """The root path of the script without the trailing slash.""" + raw_path = wsgi_decoding_dance( + self.environ.get("SCRIPT_NAME") or "", self.charset, self.encoding_errors + ) + return raw_path.rstrip("/") + + @cached_property + def url(self): + """The reconstructed current URL as IRI. + See also: :attr:`trusted_hosts`. + """ + return get_current_url(self.environ, trusted_hosts=self.trusted_hosts) + + @cached_property + def base_url(self): + """Like :attr:`url` but without the querystring + See also: :attr:`trusted_hosts`. + """ + return get_current_url( + self.environ, strip_querystring=True, trusted_hosts=self.trusted_hosts + ) + + @cached_property + def url_root(self): + """The full URL root (with hostname), this is the application + root as IRI. + See also: :attr:`trusted_hosts`. + """ + return get_current_url(self.environ, True, trusted_hosts=self.trusted_hosts) + + @cached_property + def host_url(self): + """Just the host with scheme as IRI. + See also: :attr:`trusted_hosts`. + """ + return get_current_url( + self.environ, host_only=True, trusted_hosts=self.trusted_hosts + ) + + @cached_property + def host(self): + """Just the host including the port if available. + See also: :attr:`trusted_hosts`. + """ + return get_host(self.environ, trusted_hosts=self.trusted_hosts) + + query_string = environ_property( + "QUERY_STRING", + "", + read_only=True, + load_func=wsgi_get_bytes, + doc="The URL parameters as raw bytestring.", + ) + method = environ_property( + "REQUEST_METHOD", + "GET", + read_only=True, + load_func=lambda x: x.upper(), + doc="The request method. (For example ``'GET'`` or ``'POST'``).", + ) + + @cached_property + def access_route(self): + """If a forwarded header exists this is a list of all ip addresses + from the client ip to the last proxy server. + """ + if "HTTP_X_FORWARDED_FOR" in self.environ: + return self.list_storage_class( + parse_list_header(self.environ["HTTP_X_FORWARDED_FOR"]) + ) + elif "REMOTE_ADDR" in self.environ: + return self.list_storage_class([self.environ["REMOTE_ADDR"]]) + return self.list_storage_class() + + @property + def remote_addr(self): + """The remote address of the client.""" + return self.environ.get("REMOTE_ADDR") + + remote_user = environ_property( + "REMOTE_USER", + doc="""If the server supports user authentication, and the + script is protected, this attribute contains the username the + user has authenticated as.""", + ) + scheme = environ_property( + "wsgi.url_scheme", + doc=""" + URL scheme (http or https). + + .. versionadded:: 0.7""", + ) + is_secure = property( + lambda self: self.environ["wsgi.url_scheme"] == "https", + doc="`True` if the request is secure.", + ) + is_multithread = environ_property( + "wsgi.multithread", + doc="""boolean that is `True` if the application is served by a + multithreaded WSGI server.""", + ) + is_multiprocess = environ_property( + "wsgi.multiprocess", + doc="""boolean that is `True` if the application is served by a + WSGI server that spawns multiple processes.""", + ) + is_run_once = environ_property( + "wsgi.run_once", + doc="""boolean that is `True` if the application will be + executed only once in a process lifetime. This is the case for + CGI for example, but it's not guaranteed that the execution only + happens one time.""", + ) + + +def _assert_not_shallow(request): + if request.shallow: + raise RuntimeError( + "A shallow request tried to consume form data. If you really" + " want to do that, set `shallow` to False." + ) diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py b/env/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py new file mode 100644 index 0000000..00b9640 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py @@ -0,0 +1,700 @@ +import warnings + +from .._compat import integer_types +from .._compat import string_types +from .._compat import text_type +from .._compat import to_bytes +from .._compat import to_native +from ..datastructures import Headers +from ..http import dump_cookie +from ..http import HTTP_STATUS_CODES +from ..http import remove_entity_headers +from ..urls import iri_to_uri +from ..urls import url_join +from ..utils import get_content_type +from ..wsgi import ClosingIterator +from ..wsgi import get_current_url + + +def _run_wsgi_app(*args): + """This function replaces itself to ensure that the test module is not + imported unless required. DO NOT USE! + """ + global _run_wsgi_app + from ..test import run_wsgi_app as _run_wsgi_app + + return _run_wsgi_app(*args) + + +def _warn_if_string(iterable): + """Helper for the response objects to check if the iterable returned + to the WSGI server is not a string. + """ + if isinstance(iterable, string_types): + warnings.warn( + "Response iterable was set to a string. This will appear to" + " work but means that the server will send the data to the" + " client one character at a time. This is almost never" + " intended behavior, use 'response.data' to assign strings" + " to the response object.", + stacklevel=2, + ) + + +def _iter_encoded(iterable, charset): + for item in iterable: + if isinstance(item, text_type): + yield item.encode(charset) + else: + yield item + + +def _clean_accept_ranges(accept_ranges): + if accept_ranges is True: + return "bytes" + elif accept_ranges is False: + return "none" + elif isinstance(accept_ranges, text_type): + return to_native(accept_ranges) + raise ValueError("Invalid accept_ranges value") + + +class BaseResponse(object): + """Base response class. The most important fact about a response object + is that it's a regular WSGI application. It's initialized with a couple + of response parameters (headers, body, status code etc.) and will start a + valid WSGI response when called with the environ and start response + callable. + + Because it's a WSGI application itself processing usually ends before the + actual response is sent to the server. This helps debugging systems + because they can catch all the exceptions before responses are started. + + Here a small example WSGI application that takes advantage of the + response objects:: + + from werkzeug.wrappers import BaseResponse as Response + + def index(): + return Response('Index page') + + def application(environ, start_response): + path = environ.get('PATH_INFO') or '/' + if path == '/': + response = index() + else: + response = Response('Not Found', status=404) + return response(environ, start_response) + + Like :class:`BaseRequest` which object is lacking a lot of functionality + implemented in mixins. This gives you a better control about the actual + API of your response objects, so you can create subclasses and add custom + functionality. A full featured response object is available as + :class:`Response` which implements a couple of useful mixins. + + To enforce a new type of already existing responses you can use the + :meth:`force_type` method. This is useful if you're working with different + subclasses of response objects and you want to post process them with a + known interface. + + Per default the response object will assume all the text data is `utf-8` + encoded. Please refer to :doc:`the unicode chapter ` for more + details about customizing the behavior. + + Response can be any kind of iterable or string. If it's a string it's + considered being an iterable with one item which is the string passed. + Headers can be a list of tuples or a + :class:`~werkzeug.datastructures.Headers` object. + + Special note for `mimetype` and `content_type`: For most mime types + `mimetype` and `content_type` work the same, the difference affects + only 'text' mimetypes. If the mimetype passed with `mimetype` is a + mimetype starting with `text/`, the charset parameter of the response + object is appended to it. In contrast the `content_type` parameter is + always added as header unmodified. + + .. versionchanged:: 0.5 + the `direct_passthrough` parameter was added. + + :param response: a string or response iterable. + :param status: a string with a status or an integer with the status code. + :param headers: a list of headers or a + :class:`~werkzeug.datastructures.Headers` object. + :param mimetype: the mimetype for the response. See notice above. + :param content_type: the content type for the response. See notice above. + :param direct_passthrough: if set to `True` :meth:`iter_encoded` is not + called before iteration which makes it + possible to pass special iterators through + unchanged (see :func:`wrap_file` for more + details.) + """ + + #: the charset of the response. + charset = "utf-8" + + #: the default status if none is provided. + default_status = 200 + + #: the default mimetype if none is provided. + default_mimetype = "text/plain" + + #: if set to `False` accessing properties on the response object will + #: not try to consume the response iterator and convert it into a list. + #: + #: .. versionadded:: 0.6.2 + #: + #: That attribute was previously called `implicit_seqence_conversion`. + #: (Notice the typo). If you did use this feature, you have to adapt + #: your code to the name change. + implicit_sequence_conversion = True + + #: Should this response object correct the location header to be RFC + #: conformant? This is true by default. + #: + #: .. versionadded:: 0.8 + autocorrect_location_header = True + + #: Should this response object automatically set the content-length + #: header if possible? This is true by default. + #: + #: .. versionadded:: 0.8 + automatically_set_content_length = True + + #: Warn if a cookie header exceeds this size. The default, 4093, should be + #: safely `supported by most browsers `_. A cookie larger than + #: this size will still be sent, but it may be ignored or handled + #: incorrectly by some browsers. Set to 0 to disable this check. + #: + #: .. versionadded:: 0.13 + #: + #: .. _`cookie`: http://browsercookielimits.squawky.net/ + max_cookie_size = 4093 + + def __init__( + self, + response=None, + status=None, + headers=None, + mimetype=None, + content_type=None, + direct_passthrough=False, + ): + if isinstance(headers, Headers): + self.headers = headers + elif not headers: + self.headers = Headers() + else: + self.headers = Headers(headers) + + if content_type is None: + if mimetype is None and "content-type" not in self.headers: + mimetype = self.default_mimetype + if mimetype is not None: + mimetype = get_content_type(mimetype, self.charset) + content_type = mimetype + if content_type is not None: + self.headers["Content-Type"] = content_type + if status is None: + status = self.default_status + if isinstance(status, integer_types): + self.status_code = status + else: + self.status = status + + self.direct_passthrough = direct_passthrough + self._on_close = [] + + # we set the response after the headers so that if a class changes + # the charset attribute, the data is set in the correct charset. + if response is None: + self.response = [] + elif isinstance(response, (text_type, bytes, bytearray)): + self.set_data(response) + else: + self.response = response + + def call_on_close(self, func): + """Adds a function to the internal list of functions that should + be called as part of closing down the response. Since 0.7 this + function also returns the function that was passed so that this + can be used as a decorator. + + .. versionadded:: 0.6 + """ + self._on_close.append(func) + return func + + def __repr__(self): + if self.is_sequence: + body_info = "%d bytes" % sum(map(len, self.iter_encoded())) + else: + body_info = "streamed" if self.is_streamed else "likely-streamed" + return "<%s %s [%s]>" % (self.__class__.__name__, body_info, self.status) + + @classmethod + def force_type(cls, response, environ=None): + """Enforce that the WSGI response is a response object of the current + type. Werkzeug will use the :class:`BaseResponse` internally in many + situations like the exceptions. If you call :meth:`get_response` on an + exception you will get back a regular :class:`BaseResponse` object, even + if you are using a custom subclass. + + This method can enforce a given response type, and it will also + convert arbitrary WSGI callables into response objects if an environ + is provided:: + + # convert a Werkzeug response object into an instance of the + # MyResponseClass subclass. + response = MyResponseClass.force_type(response) + + # convert any WSGI application into a response object + response = MyResponseClass.force_type(response, environ) + + This is especially useful if you want to post-process responses in + the main dispatcher and use functionality provided by your subclass. + + Keep in mind that this will modify response objects in place if + possible! + + :param response: a response object or wsgi application. + :param environ: a WSGI environment object. + :return: a response object. + """ + if not isinstance(response, BaseResponse): + if environ is None: + raise TypeError( + "cannot convert WSGI application into response" + " objects without an environ" + ) + response = BaseResponse(*_run_wsgi_app(response, environ)) + response.__class__ = cls + return response + + @classmethod + def from_app(cls, app, environ, buffered=False): + """Create a new response object from an application output. This + works best if you pass it an application that returns a generator all + the time. Sometimes applications may use the `write()` callable + returned by the `start_response` function. This tries to resolve such + edge cases automatically. But if you don't get the expected output + you should set `buffered` to `True` which enforces buffering. + + :param app: the WSGI application to execute. + :param environ: the WSGI environment to execute against. + :param buffered: set to `True` to enforce buffering. + :return: a response object. + """ + return cls(*_run_wsgi_app(app, environ, buffered)) + + @property + def status_code(self): + """The HTTP status code as a number.""" + return self._status_code + + @status_code.setter + def status_code(self, code): + self._status_code = code + try: + self._status = "%d %s" % (code, HTTP_STATUS_CODES[code].upper()) + except KeyError: + self._status = "%d UNKNOWN" % code + + @property + def status(self): + """The HTTP status code as a string.""" + return self._status + + @status.setter + def status(self, value): + try: + self._status = to_native(value) + except AttributeError: + raise TypeError("Invalid status argument") + + try: + self._status_code = int(self._status.split(None, 1)[0]) + except ValueError: + self._status_code = 0 + self._status = "0 %s" % self._status + except IndexError: + raise ValueError("Empty status argument") + + def get_data(self, as_text=False): + """The string representation of the request body. Whenever you call + this property the request iterable is encoded and flattened. This + can lead to unwanted behavior if you stream big data. + + This behavior can be disabled by setting + :attr:`implicit_sequence_conversion` to `False`. + + If `as_text` is set to `True` the return value will be a decoded + unicode string. + + .. versionadded:: 0.9 + """ + self._ensure_sequence() + rv = b"".join(self.iter_encoded()) + if as_text: + rv = rv.decode(self.charset) + return rv + + def set_data(self, value): + """Sets a new string as response. The value set must be either a + unicode or bytestring. If a unicode string is set it's encoded + automatically to the charset of the response (utf-8 by default). + + .. versionadded:: 0.9 + """ + # if an unicode string is set, it's encoded directly so that we + # can set the content length + if isinstance(value, text_type): + value = value.encode(self.charset) + else: + value = bytes(value) + self.response = [value] + if self.automatically_set_content_length: + self.headers["Content-Length"] = str(len(value)) + + data = property( + get_data, + set_data, + doc="A descriptor that calls :meth:`get_data` and :meth:`set_data`.", + ) + + def calculate_content_length(self): + """Returns the content length if available or `None` otherwise.""" + try: + self._ensure_sequence() + except RuntimeError: + return None + return sum(len(x) for x in self.iter_encoded()) + + def _ensure_sequence(self, mutable=False): + """This method can be called by methods that need a sequence. If + `mutable` is true, it will also ensure that the response sequence + is a standard Python list. + + .. versionadded:: 0.6 + """ + if self.is_sequence: + # if we need a mutable object, we ensure it's a list. + if mutable and not isinstance(self.response, list): + self.response = list(self.response) + return + if self.direct_passthrough: + raise RuntimeError( + "Attempted implicit sequence conversion but the" + " response object is in direct passthrough mode." + ) + if not self.implicit_sequence_conversion: + raise RuntimeError( + "The response object required the iterable to be a" + " sequence, but the implicit conversion was disabled." + " Call make_sequence() yourself." + ) + self.make_sequence() + + def make_sequence(self): + """Converts the response iterator in a list. By default this happens + automatically if required. If `implicit_sequence_conversion` is + disabled, this method is not automatically called and some properties + might raise exceptions. This also encodes all the items. + + .. versionadded:: 0.6 + """ + if not self.is_sequence: + # if we consume an iterable we have to ensure that the close + # method of the iterable is called if available when we tear + # down the response + close = getattr(self.response, "close", None) + self.response = list(self.iter_encoded()) + if close is not None: + self.call_on_close(close) + + def iter_encoded(self): + """Iter the response encoded with the encoding of the response. + If the response object is invoked as WSGI application the return + value of this method is used as application iterator unless + :attr:`direct_passthrough` was activated. + """ + if __debug__: + _warn_if_string(self.response) + # Encode in a separate function so that self.response is fetched + # early. This allows us to wrap the response with the return + # value from get_app_iter or iter_encoded. + return _iter_encoded(self.response, self.charset) + + def set_cookie( + self, + key, + value="", + max_age=None, + expires=None, + path="/", + domain=None, + secure=False, + httponly=False, + samesite=None, + ): + """Sets a cookie. The parameters are the same as in the cookie `Morsel` + object in the Python standard library but it accepts unicode data, too. + + A warning is raised if the size of the cookie header exceeds + :attr:`max_cookie_size`, but the header will still be set. + + :param key: the key (name) of the cookie to be set. + :param value: the value of the cookie. + :param max_age: should be a number of seconds, or `None` (default) if + the cookie should last only as long as the client's + browser session. + :param expires: should be a `datetime` object or UNIX timestamp. + :param path: limits the cookie to a given path, per default it will + span the whole domain. + :param domain: if you want to set a cross-domain cookie. For example, + ``domain=".example.com"`` will set a cookie that is + readable by the domain ``www.example.com``, + ``foo.example.com`` etc. Otherwise, a cookie will only + be readable by the domain that set it. + :param secure: If `True`, the cookie will only be available via HTTPS + :param httponly: disallow JavaScript to access the cookie. This is an + extension to the cookie standard and probably not + supported by all browsers. + :param samesite: Limits the scope of the cookie such that it will only + be attached to requests if those requests are + "same-site". + """ + self.headers.add( + "Set-Cookie", + dump_cookie( + key, + value=value, + max_age=max_age, + expires=expires, + path=path, + domain=domain, + secure=secure, + httponly=httponly, + charset=self.charset, + max_size=self.max_cookie_size, + samesite=samesite, + ), + ) + + def delete_cookie(self, key, path="/", domain=None): + """Delete a cookie. Fails silently if key doesn't exist. + + :param key: the key (name) of the cookie to be deleted. + :param path: if the cookie that should be deleted was limited to a + path, the path has to be defined here. + :param domain: if the cookie that should be deleted was limited to a + domain, that domain has to be defined here. + """ + self.set_cookie(key, expires=0, max_age=0, path=path, domain=domain) + + @property + def is_streamed(self): + """If the response is streamed (the response is not an iterable with + a length information) this property is `True`. In this case streamed + means that there is no information about the number of iterations. + This is usually `True` if a generator is passed to the response object. + + This is useful for checking before applying some sort of post + filtering that should not take place for streamed responses. + """ + try: + len(self.response) + except (TypeError, AttributeError): + return True + return False + + @property + def is_sequence(self): + """If the iterator is buffered, this property will be `True`. A + response object will consider an iterator to be buffered if the + response attribute is a list or tuple. + + .. versionadded:: 0.6 + """ + return isinstance(self.response, (tuple, list)) + + def close(self): + """Close the wrapped response if possible. You can also use the object + in a with statement which will automatically close it. + + .. versionadded:: 0.9 + Can now be used in a with statement. + """ + if hasattr(self.response, "close"): + self.response.close() + for func in self._on_close: + func() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, tb): + self.close() + + def freeze(self): + """Call this method if you want to make your response object ready for + being pickled. This buffers the generator if there is one. It will + also set the `Content-Length` header to the length of the body. + + .. versionchanged:: 0.6 + The `Content-Length` header is now set. + """ + # we explicitly set the length to a list of the *encoded* response + # iterator. Even if the implicit sequence conversion is disabled. + self.response = list(self.iter_encoded()) + self.headers["Content-Length"] = str(sum(map(len, self.response))) + + def get_wsgi_headers(self, environ): + """This is automatically called right before the response is started + and returns headers modified for the given environment. It returns a + copy of the headers from the response with some modifications applied + if necessary. + + For example the location header (if present) is joined with the root + URL of the environment. Also the content length is automatically set + to zero here for certain status codes. + + .. versionchanged:: 0.6 + Previously that function was called `fix_headers` and modified + the response object in place. Also since 0.6, IRIs in location + and content-location headers are handled properly. + + Also starting with 0.6, Werkzeug will attempt to set the content + length if it is able to figure it out on its own. This is the + case if all the strings in the response iterable are already + encoded and the iterable is buffered. + + :param environ: the WSGI environment of the request. + :return: returns a new :class:`~werkzeug.datastructures.Headers` + object. + """ + headers = Headers(self.headers) + location = None + content_location = None + content_length = None + status = self.status_code + + # iterate over the headers to find all values in one go. Because + # get_wsgi_headers is used each response that gives us a tiny + # speedup. + for key, value in headers: + ikey = key.lower() + if ikey == u"location": + location = value + elif ikey == u"content-location": + content_location = value + elif ikey == u"content-length": + content_length = value + + # make sure the location header is an absolute URL + if location is not None: + old_location = location + if isinstance(location, text_type): + # Safe conversion is necessary here as we might redirect + # to a broken URI scheme (for instance itms-services). + location = iri_to_uri(location, safe_conversion=True) + + if self.autocorrect_location_header: + current_url = get_current_url(environ, strip_querystring=True) + if isinstance(current_url, text_type): + current_url = iri_to_uri(current_url) + location = url_join(current_url, location) + if location != old_location: + headers["Location"] = location + + # make sure the content location is a URL + if content_location is not None and isinstance(content_location, text_type): + headers["Content-Location"] = iri_to_uri(content_location) + + if 100 <= status < 200 or status == 204: + # Per section 3.3.2 of RFC 7230, "a server MUST NOT send a + # Content-Length header field in any response with a status + # code of 1xx (Informational) or 204 (No Content)." + headers.remove("Content-Length") + elif status == 304: + remove_entity_headers(headers) + + # if we can determine the content length automatically, we + # should try to do that. But only if this does not involve + # flattening the iterator or encoding of unicode strings in + # the response. We however should not do that if we have a 304 + # response. + if ( + self.automatically_set_content_length + and self.is_sequence + and content_length is None + and status not in (204, 304) + and not (100 <= status < 200) + ): + try: + content_length = sum(len(to_bytes(x, "ascii")) for x in self.response) + except UnicodeError: + # aha, something non-bytestringy in there, too bad, we + # can't safely figure out the length of the response. + pass + else: + headers["Content-Length"] = str(content_length) + + return headers + + def get_app_iter(self, environ): + """Returns the application iterator for the given environ. Depending + on the request method and the current status code the return value + might be an empty response rather than the one from the response. + + If the request method is `HEAD` or the status code is in a range + where the HTTP specification requires an empty response, an empty + iterable is returned. + + .. versionadded:: 0.6 + + :param environ: the WSGI environment of the request. + :return: a response iterable. + """ + status = self.status_code + if ( + environ["REQUEST_METHOD"] == "HEAD" + or 100 <= status < 200 + or status in (204, 304) + ): + iterable = () + elif self.direct_passthrough: + if __debug__: + _warn_if_string(self.response) + return self.response + else: + iterable = self.iter_encoded() + return ClosingIterator(iterable, self.close) + + def get_wsgi_response(self, environ): + """Returns the final WSGI response as tuple. The first item in + the tuple is the application iterator, the second the status and + the third the list of headers. The response returned is created + specially for the given environment. For example if the request + method in the WSGI environment is ``'HEAD'`` the response will + be empty and only the headers and status code will be present. + + .. versionadded:: 0.6 + + :param environ: the WSGI environment of the request. + :return: an ``(app_iter, status, headers)`` tuple. + """ + headers = self.get_wsgi_headers(environ) + app_iter = self.get_app_iter(environ) + return app_iter, self.status, headers.to_wsgi_list() + + def __call__(self, environ, start_response): + """Process this response as WSGI application. + + :param environ: the WSGI environment. + :param start_response: the response callable provided by the WSGI + server. + :return: an application iterator + """ + app_iter, status, headers = self.get_wsgi_response(environ) + start_response(status, headers) + return app_iter diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/common_descriptors.py b/env/lib/python3.6/site-packages/werkzeug/wrappers/common_descriptors.py new file mode 100644 index 0000000..f169959 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wrappers/common_descriptors.py @@ -0,0 +1,341 @@ +from datetime import datetime +from datetime import timedelta + +from .._compat import string_types +from ..datastructures import CallbackDict +from ..http import dump_age +from ..http import dump_csp_header +from ..http import dump_header +from ..http import dump_options_header +from ..http import http_date +from ..http import parse_age +from ..http import parse_csp_header +from ..http import parse_date +from ..http import parse_options_header +from ..http import parse_set_header +from ..utils import cached_property +from ..utils import environ_property +from ..utils import get_content_type +from ..utils import header_property +from ..wsgi import get_content_length + + +class CommonRequestDescriptorsMixin(object): + """A mixin for :class:`BaseRequest` subclasses. Request objects that + mix this class in will automatically get descriptors for a couple of + HTTP headers with automatic type conversion. + + .. versionadded:: 0.5 + """ + + content_type = environ_property( + "CONTENT_TYPE", + doc="""The Content-Type entity-header field indicates the media + type of the entity-body sent to the recipient or, in the case of + the HEAD method, the media type that would have been sent had + the request been a GET.""", + ) + + @cached_property + def content_length(self): + """The Content-Length entity-header field indicates the size of the + entity-body in bytes or, in the case of the HEAD method, the size of + the entity-body that would have been sent had the request been a + GET. + """ + return get_content_length(self.environ) + + content_encoding = environ_property( + "HTTP_CONTENT_ENCODING", + doc="""The Content-Encoding entity-header field is used as a + modifier to the media-type. When present, its value indicates + what additional content codings have been applied to the + entity-body, and thus what decoding mechanisms must be applied + in order to obtain the media-type referenced by the Content-Type + header field. + + .. versionadded:: 0.9""", + ) + content_md5 = environ_property( + "HTTP_CONTENT_MD5", + doc="""The Content-MD5 entity-header field, as defined in + RFC 1864, is an MD5 digest of the entity-body for the purpose of + providing an end-to-end message integrity check (MIC) of the + entity-body. (Note: a MIC is good for detecting accidental + modification of the entity-body in transit, but is not proof + against malicious attacks.) + + .. versionadded:: 0.9""", + ) + referrer = environ_property( + "HTTP_REFERER", + doc="""The Referer[sic] request-header field allows the client + to specify, for the server's benefit, the address (URI) of the + resource from which the Request-URI was obtained (the + "referrer", although the header field is misspelled).""", + ) + date = environ_property( + "HTTP_DATE", + None, + parse_date, + doc="""The Date general-header field represents the date and + time at which the message was originated, having the same + semantics as orig-date in RFC 822.""", + ) + max_forwards = environ_property( + "HTTP_MAX_FORWARDS", + None, + int, + doc="""The Max-Forwards request-header field provides a + mechanism with the TRACE and OPTIONS methods to limit the number + of proxies or gateways that can forward the request to the next + inbound server.""", + ) + + def _parse_content_type(self): + if not hasattr(self, "_parsed_content_type"): + self._parsed_content_type = parse_options_header( + self.environ.get("CONTENT_TYPE", "") + ) + + @property + def mimetype(self): + """Like :attr:`content_type`, but without parameters (eg, without + charset, type etc.) and always lowercase. For example if the content + type is ``text/HTML; charset=utf-8`` the mimetype would be + ``'text/html'``. + """ + self._parse_content_type() + return self._parsed_content_type[0].lower() + + @property + def mimetype_params(self): + """The mimetype parameters as dict. For example if the content + type is ``text/html; charset=utf-8`` the params would be + ``{'charset': 'utf-8'}``. + """ + self._parse_content_type() + return self._parsed_content_type[1] + + @cached_property + def pragma(self): + """The Pragma general-header field is used to include + implementation-specific directives that might apply to any recipient + along the request/response chain. All pragma directives specify + optional behavior from the viewpoint of the protocol; however, some + systems MAY require that behavior be consistent with the directives. + """ + return parse_set_header(self.environ.get("HTTP_PRAGMA", "")) + + +class CommonResponseDescriptorsMixin(object): + """A mixin for :class:`BaseResponse` subclasses. Response objects that + mix this class in will automatically get descriptors for a couple of + HTTP headers with automatic type conversion. + """ + + @property + def mimetype(self): + """The mimetype (content type without charset etc.)""" + ct = self.headers.get("content-type") + if ct: + return ct.split(";")[0].strip() + + @mimetype.setter + def mimetype(self, value): + self.headers["Content-Type"] = get_content_type(value, self.charset) + + @property + def mimetype_params(self): + """The mimetype parameters as dict. For example if the + content type is ``text/html; charset=utf-8`` the params would be + ``{'charset': 'utf-8'}``. + + .. versionadded:: 0.5 + """ + + def on_update(d): + self.headers["Content-Type"] = dump_options_header(self.mimetype, d) + + d = parse_options_header(self.headers.get("content-type", ""))[1] + return CallbackDict(d, on_update) + + location = header_property( + "Location", + doc="""The Location response-header field is used to redirect + the recipient to a location other than the Request-URI for + completion of the request or identification of a new + resource.""", + ) + age = header_property( + "Age", + None, + parse_age, + dump_age, + doc="""The Age response-header field conveys the sender's + estimate of the amount of time since the response (or its + revalidation) was generated at the origin server. + + Age values are non-negative decimal integers, representing time + in seconds.""", + ) + content_type = header_property( + "Content-Type", + doc="""The Content-Type entity-header field indicates the media + type of the entity-body sent to the recipient or, in the case of + the HEAD method, the media type that would have been sent had + the request been a GET.""", + ) + content_length = header_property( + "Content-Length", + None, + int, + str, + doc="""The Content-Length entity-header field indicates the size + of the entity-body, in decimal number of OCTETs, sent to the + recipient or, in the case of the HEAD method, the size of the + entity-body that would have been sent had the request been a + GET.""", + ) + content_location = header_property( + "Content-Location", + doc="""The Content-Location entity-header field MAY be used to + supply the resource location for the entity enclosed in the + message when that entity is accessible from a location separate + from the requested resource's URI.""", + ) + content_encoding = header_property( + "Content-Encoding", + doc="""The Content-Encoding entity-header field is used as a + modifier to the media-type. When present, its value indicates + what additional content codings have been applied to the + entity-body, and thus what decoding mechanisms must be applied + in order to obtain the media-type referenced by the Content-Type + header field.""", + ) + content_md5 = header_property( + "Content-MD5", + doc="""The Content-MD5 entity-header field, as defined in + RFC 1864, is an MD5 digest of the entity-body for the purpose of + providing an end-to-end message integrity check (MIC) of the + entity-body. (Note: a MIC is good for detecting accidental + modification of the entity-body in transit, but is not proof + against malicious attacks.)""", + ) + content_security_policy = header_property( + "Content-Security-Policy", + None, + parse_csp_header, + dump_csp_header, + doc="""The Content-Security-Policy header adds an additional layer of + security to help detect and mitigate certain types of attacks.""", + ) + content_security_policy_report_only = header_property( + "Content-Security-Policy-Report-Only", + None, + parse_csp_header, + dump_csp_header, + doc="""The Content-Security-Policy-Report-Only header adds a csp policy + that is not enforced but is reported thereby helping detect + certain types of attacks.""", + ) + date = header_property( + "Date", + None, + parse_date, + http_date, + doc="""The Date general-header field represents the date and + time at which the message was originated, having the same + semantics as orig-date in RFC 822.""", + ) + expires = header_property( + "Expires", + None, + parse_date, + http_date, + doc="""The Expires entity-header field gives the date/time after + which the response is considered stale. A stale cache entry may + not normally be returned by a cache.""", + ) + last_modified = header_property( + "Last-Modified", + None, + parse_date, + http_date, + doc="""The Last-Modified entity-header field indicates the date + and time at which the origin server believes the variant was + last modified.""", + ) + + @property + def retry_after(self): + """The Retry-After response-header field can be used with a + 503 (Service Unavailable) response to indicate how long the + service is expected to be unavailable to the requesting client. + + Time in seconds until expiration or date. + """ + value = self.headers.get("retry-after") + if value is None: + return + elif value.isdigit(): + return datetime.utcnow() + timedelta(seconds=int(value)) + return parse_date(value) + + @retry_after.setter + def retry_after(self, value): + if value is None: + if "retry-after" in self.headers: + del self.headers["retry-after"] + return + elif isinstance(value, datetime): + value = http_date(value) + else: + value = str(value) + self.headers["Retry-After"] = value + + def _set_property(name, doc=None): # noqa: B902 + def fget(self): + def on_update(header_set): + if not header_set and name in self.headers: + del self.headers[name] + elif header_set: + self.headers[name] = header_set.to_header() + + return parse_set_header(self.headers.get(name), on_update) + + def fset(self, value): + if not value: + del self.headers[name] + elif isinstance(value, string_types): + self.headers[name] = value + else: + self.headers[name] = dump_header(value) + + return property(fget, fset, doc=doc) + + vary = _set_property( + "Vary", + doc="""The Vary field value indicates the set of request-header + fields that fully determines, while the response is fresh, + whether a cache is permitted to use the response to reply to a + subsequent request without revalidation.""", + ) + content_language = _set_property( + "Content-Language", + doc="""The Content-Language entity-header field describes the + natural language(s) of the intended audience for the enclosed + entity. Note that this might not be equivalent to all the + languages used within the entity-body.""", + ) + allow = _set_property( + "Allow", + doc="""The Allow entity-header field lists the set of methods + supported by the resource identified by the Request-URI. The + purpose of this field is strictly to inform the recipient of + valid methods associated with the resource. An Allow header + field MUST be present in a 405 (Method Not Allowed) + response.""", + ) + + del _set_property diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/cors.py b/env/lib/python3.6/site-packages/werkzeug/wrappers/cors.py new file mode 100644 index 0000000..502fcf1 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wrappers/cors.py @@ -0,0 +1,100 @@ +from ..http import dump_header +from ..http import parse_set_header +from ..utils import environ_property +from ..utils import header_property + + +class CORSRequestMixin(object): + """A mixin for :class:`~werkzeug.wrappers.BaseRequest` subclasses + that adds descriptors for Cross Origin Resource Sharing (CORS) + headers. + + .. versionadded:: 1.0 + """ + + origin = environ_property( + "HTTP_ORIGIN", + doc=( + "The host that the request originated from. Set" + " :attr:`~CORSResponseMixin.access_control_allow_origin` on" + " the response to indicate which origins are allowed." + ), + ) + + access_control_request_headers = environ_property( + "HTTP_ACCESS_CONTROL_REQUEST_HEADERS", + load_func=parse_set_header, + doc=( + "Sent with a preflight request to indicate which headers" + " will be sent with the cross origin request. Set" + " :attr:`~CORSResponseMixin.access_control_allow_headers`" + " on the response to indicate which headers are allowed." + ), + ) + + access_control_request_method = environ_property( + "HTTP_ACCESS_CONTROL_REQUEST_METHOD", + doc=( + "Sent with a preflight request to indicate which method" + " will be used for the cross origin request. Set" + " :attr:`~CORSResponseMixin.access_control_allow_methods`" + " on the response to indicate which methods are allowed." + ), + ) + + +class CORSResponseMixin(object): + """A mixin for :class:`~werkzeug.wrappers.BaseResponse` subclasses + that adds descriptors for Cross Origin Resource Sharing (CORS) + headers. + + .. versionadded:: 1.0 + """ + + @property + def access_control_allow_credentials(self): + """Whether credentials can be shared by the browser to + JavaScript code. As part of the preflight request it indicates + whether credentials can be used on the cross origin request. + """ + return "Access-Control-Allow-Credentials" in self.headers + + @access_control_allow_credentials.setter + def access_control_allow_credentials(self, value): + if value is True: + self.headers["Access-Control-Allow-Credentials"] = "true" + else: + self.headers.pop("Access-Control-Allow-Credentials", None) + + access_control_allow_headers = header_property( + "Access-Control-Allow-Headers", + load_func=parse_set_header, + dump_func=dump_header, + doc="Which headers can be sent with the cross origin request.", + ) + + access_control_allow_methods = header_property( + "Access-Control-Allow-Methods", + load_func=parse_set_header, + dump_func=dump_header, + doc="Which methods can be used for the cross origin request.", + ) + + access_control_allow_origin = header_property( + "Access-Control-Allow-Origin", + doc="The origin or '*' for any origin that may make cross origin requests.", + ) + + access_control_expose_headers = header_property( + "Access-Control-Expose-Headers", + load_func=parse_set_header, + dump_func=dump_header, + doc="Which headers can be shared by the browser to JavaScript code.", + ) + + access_control_max_age = header_property( + "Access-Control-Max-Age", + load_func=int, + dump_func=str, + doc="The maximum age in seconds the access control settings can be cached for.", + ) diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/etag.py b/env/lib/python3.6/site-packages/werkzeug/wrappers/etag.py new file mode 100644 index 0000000..460629b --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wrappers/etag.py @@ -0,0 +1,304 @@ +from .._compat import string_types +from .._internal import _get_environ +from ..datastructures import ContentRange +from ..datastructures import RequestCacheControl +from ..datastructures import ResponseCacheControl +from ..http import generate_etag +from ..http import http_date +from ..http import is_resource_modified +from ..http import parse_cache_control_header +from ..http import parse_content_range_header +from ..http import parse_date +from ..http import parse_etags +from ..http import parse_if_range_header +from ..http import parse_range_header +from ..http import quote_etag +from ..http import unquote_etag +from ..utils import cached_property +from ..utils import header_property +from ..wrappers.base_response import _clean_accept_ranges +from ..wsgi import _RangeWrapper + + +class ETagRequestMixin(object): + """Add entity tag and cache descriptors to a request object or object with + a WSGI environment available as :attr:`~BaseRequest.environ`. This not + only provides access to etags but also to the cache control header. + """ + + @cached_property + def cache_control(self): + """A :class:`~werkzeug.datastructures.RequestCacheControl` object + for the incoming cache control headers. + """ + cache_control = self.environ.get("HTTP_CACHE_CONTROL") + return parse_cache_control_header(cache_control, None, RequestCacheControl) + + @cached_property + def if_match(self): + """An object containing all the etags in the `If-Match` header. + + :rtype: :class:`~werkzeug.datastructures.ETags` + """ + return parse_etags(self.environ.get("HTTP_IF_MATCH")) + + @cached_property + def if_none_match(self): + """An object containing all the etags in the `If-None-Match` header. + + :rtype: :class:`~werkzeug.datastructures.ETags` + """ + return parse_etags(self.environ.get("HTTP_IF_NONE_MATCH")) + + @cached_property + def if_modified_since(self): + """The parsed `If-Modified-Since` header as datetime object.""" + return parse_date(self.environ.get("HTTP_IF_MODIFIED_SINCE")) + + @cached_property + def if_unmodified_since(self): + """The parsed `If-Unmodified-Since` header as datetime object.""" + return parse_date(self.environ.get("HTTP_IF_UNMODIFIED_SINCE")) + + @cached_property + def if_range(self): + """The parsed `If-Range` header. + + .. versionadded:: 0.7 + + :rtype: :class:`~werkzeug.datastructures.IfRange` + """ + return parse_if_range_header(self.environ.get("HTTP_IF_RANGE")) + + @cached_property + def range(self): + """The parsed `Range` header. + + .. versionadded:: 0.7 + + :rtype: :class:`~werkzeug.datastructures.Range` + """ + return parse_range_header(self.environ.get("HTTP_RANGE")) + + +class ETagResponseMixin(object): + """Adds extra functionality to a response object for etag and cache + handling. This mixin requires an object with at least a `headers` + object that implements a dict like interface similar to + :class:`~werkzeug.datastructures.Headers`. + + If you want the :meth:`freeze` method to automatically add an etag, you + have to mixin this method before the response base class. The default + response class does not do that. + """ + + @property + def cache_control(self): + """The Cache-Control general-header field is used to specify + directives that MUST be obeyed by all caching mechanisms along the + request/response chain. + """ + + def on_update(cache_control): + if not cache_control and "cache-control" in self.headers: + del self.headers["cache-control"] + elif cache_control: + self.headers["Cache-Control"] = cache_control.to_header() + + return parse_cache_control_header( + self.headers.get("cache-control"), on_update, ResponseCacheControl + ) + + def _wrap_response(self, start, length): + """Wrap existing Response in case of Range Request context.""" + if self.status_code == 206: + self.response = _RangeWrapper(self.response, start, length) + + def _is_range_request_processable(self, environ): + """Return ``True`` if `Range` header is present and if underlying + resource is considered unchanged when compared with `If-Range` header. + """ + return ( + "HTTP_IF_RANGE" not in environ + or not is_resource_modified( + environ, + self.headers.get("etag"), + None, + self.headers.get("last-modified"), + ignore_if_range=False, + ) + ) and "HTTP_RANGE" in environ + + def _process_range_request(self, environ, complete_length=None, accept_ranges=None): + """Handle Range Request related headers (RFC7233). If `Accept-Ranges` + header is valid, and Range Request is processable, we set the headers + as described by the RFC, and wrap the underlying response in a + RangeWrapper. + + Returns ``True`` if Range Request can be fulfilled, ``False`` otherwise. + + :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` + if `Range` header could not be parsed or satisfied. + """ + from ..exceptions import RequestedRangeNotSatisfiable + + if ( + accept_ranges is None + or complete_length is None + or not self._is_range_request_processable(environ) + ): + return False + + parsed_range = parse_range_header(environ.get("HTTP_RANGE")) + + if parsed_range is None: + raise RequestedRangeNotSatisfiable(complete_length) + + range_tuple = parsed_range.range_for_length(complete_length) + content_range_header = parsed_range.to_content_range_header(complete_length) + + if range_tuple is None or content_range_header is None: + raise RequestedRangeNotSatisfiable(complete_length) + + content_length = range_tuple[1] - range_tuple[0] + self.headers["Content-Length"] = content_length + self.headers["Accept-Ranges"] = accept_ranges + self.content_range = content_range_header + self.status_code = 206 + self._wrap_response(range_tuple[0], content_length) + return True + + def make_conditional( + self, request_or_environ, accept_ranges=False, complete_length=None + ): + """Make the response conditional to the request. This method works + best if an etag was defined for the response already. The `add_etag` + method can be used to do that. If called without etag just the date + header is set. + + This does nothing if the request method in the request or environ is + anything but GET or HEAD. + + For optimal performance when handling range requests, it's recommended + that your response data object implements `seekable`, `seek` and `tell` + methods as described by :py:class:`io.IOBase`. Objects returned by + :meth:`~werkzeug.wsgi.wrap_file` automatically implement those methods. + + It does not remove the body of the response because that's something + the :meth:`__call__` function does for us automatically. + + Returns self so that you can do ``return resp.make_conditional(req)`` + but modifies the object in-place. + + :param request_or_environ: a request object or WSGI environment to be + used to make the response conditional + against. + :param accept_ranges: This parameter dictates the value of + `Accept-Ranges` header. If ``False`` (default), + the header is not set. If ``True``, it will be set + to ``"bytes"``. If ``None``, it will be set to + ``"none"``. If it's a string, it will use this + value. + :param complete_length: Will be used only in valid Range Requests. + It will set `Content-Range` complete length + value and compute `Content-Length` real value. + This parameter is mandatory for successful + Range Requests completion. + :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` + if `Range` header could not be parsed or satisfied. + """ + environ = _get_environ(request_or_environ) + if environ["REQUEST_METHOD"] in ("GET", "HEAD"): + # if the date is not in the headers, add it now. We however + # will not override an already existing header. Unfortunately + # this header will be overriden by many WSGI servers including + # wsgiref. + if "date" not in self.headers: + self.headers["Date"] = http_date() + accept_ranges = _clean_accept_ranges(accept_ranges) + is206 = self._process_range_request(environ, complete_length, accept_ranges) + if not is206 and not is_resource_modified( + environ, + self.headers.get("etag"), + None, + self.headers.get("last-modified"), + ): + if parse_etags(environ.get("HTTP_IF_MATCH")): + self.status_code = 412 + else: + self.status_code = 304 + if ( + self.automatically_set_content_length + and "content-length" not in self.headers + ): + length = self.calculate_content_length() + if length is not None: + self.headers["Content-Length"] = length + return self + + def add_etag(self, overwrite=False, weak=False): + """Add an etag for the current response if there is none yet.""" + if overwrite or "etag" not in self.headers: + self.set_etag(generate_etag(self.get_data()), weak) + + def set_etag(self, etag, weak=False): + """Set the etag, and override the old one if there was one.""" + self.headers["ETag"] = quote_etag(etag, weak) + + def get_etag(self): + """Return a tuple in the form ``(etag, is_weak)``. If there is no + ETag the return value is ``(None, None)``. + """ + return unquote_etag(self.headers.get("ETag")) + + def freeze(self, no_etag=False): + """Call this method if you want to make your response object ready for + pickeling. This buffers the generator if there is one. This also + sets the etag unless `no_etag` is set to `True`. + """ + if not no_etag: + self.add_etag() + super(ETagResponseMixin, self).freeze() + + accept_ranges = header_property( + "Accept-Ranges", + doc="""The `Accept-Ranges` header. Even though the name would + indicate that multiple values are supported, it must be one + string token only. + + The values ``'bytes'`` and ``'none'`` are common. + + .. versionadded:: 0.7""", + ) + + @property + def content_range(self): + """The ``Content-Range`` header as a + :class:`~werkzeug.datastructures.ContentRange` object. Available + even if the header is not set. + + .. versionadded:: 0.7 + """ + + def on_update(rng): + if not rng: + del self.headers["content-range"] + else: + self.headers["Content-Range"] = rng.to_header() + + rv = parse_content_range_header(self.headers.get("content-range"), on_update) + # always provide a content range object to make the descriptor + # more user friendly. It provides an unset() method that can be + # used to remove the header quickly. + if rv is None: + rv = ContentRange(None, None, None, on_update=on_update) + return rv + + @content_range.setter + def content_range(self, value): + if not value: + del self.headers["content-range"] + elif isinstance(value, string_types): + self.headers["Content-Range"] = value + else: + self.headers["Content-Range"] = value.to_header() diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/json.py b/env/lib/python3.6/site-packages/werkzeug/wrappers/json.py new file mode 100644 index 0000000..6d5dc33 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wrappers/json.py @@ -0,0 +1,145 @@ +from __future__ import absolute_import + +import datetime +import uuid + +from .._compat import text_type +from ..exceptions import BadRequest +from ..utils import detect_utf_encoding + +try: + import simplejson as _json +except ImportError: + import json as _json + + +class _JSONModule(object): + @staticmethod + def _default(o): + if isinstance(o, datetime.date): + return o.isoformat() + + if isinstance(o, uuid.UUID): + return str(o) + + if hasattr(o, "__html__"): + return text_type(o.__html__()) + + raise TypeError() + + @classmethod + def dumps(cls, obj, **kw): + kw.setdefault("separators", (",", ":")) + kw.setdefault("default", cls._default) + kw.setdefault("sort_keys", True) + return _json.dumps(obj, **kw) + + @staticmethod + def loads(s, **kw): + if isinstance(s, bytes): + # Needed for Python < 3.6 + encoding = detect_utf_encoding(s) + s = s.decode(encoding) + + return _json.loads(s, **kw) + + +class JSONMixin(object): + """Mixin to parse :attr:`data` as JSON. Can be mixed in for both + :class:`~werkzeug.wrappers.Request` and + :class:`~werkzeug.wrappers.Response` classes. + + If `simplejson`_ is installed it is preferred over Python's built-in + :mod:`json` module. + + .. _simplejson: https://simplejson.readthedocs.io/en/latest/ + """ + + #: A module or other object that has ``dumps`` and ``loads`` + #: functions that match the API of the built-in :mod:`json` module. + json_module = _JSONModule + + @property + def json(self): + """The parsed JSON data if :attr:`mimetype` indicates JSON + (:mimetype:`application/json`, see :meth:`is_json`). + + Calls :meth:`get_json` with default arguments. + """ + return self.get_json() + + @property + def is_json(self): + """Check if the mimetype indicates JSON data, either + :mimetype:`application/json` or :mimetype:`application/*+json`. + """ + mt = self.mimetype + return ( + mt == "application/json" + or mt.startswith("application/") + and mt.endswith("+json") + ) + + def _get_data_for_json(self, cache): + try: + return self.get_data(cache=cache) + except TypeError: + # Response doesn't have cache param. + return self.get_data() + + # Cached values for ``(silent=False, silent=True)``. Initialized + # with sentinel values. + _cached_json = (Ellipsis, Ellipsis) + + def get_json(self, force=False, silent=False, cache=True): + """Parse :attr:`data` as JSON. + + If the mimetype does not indicate JSON + (:mimetype:`application/json`, see :meth:`is_json`), this + returns ``None``. + + If parsing fails, :meth:`on_json_loading_failed` is called and + its return value is used as the return value. + + :param force: Ignore the mimetype and always try to parse JSON. + :param silent: Silence parsing errors and return ``None`` + instead. + :param cache: Store the parsed JSON to return for subsequent + calls. + """ + if cache and self._cached_json[silent] is not Ellipsis: + return self._cached_json[silent] + + if not (force or self.is_json): + return None + + data = self._get_data_for_json(cache=cache) + + try: + rv = self.json_module.loads(data) + except ValueError as e: + if silent: + rv = None + + if cache: + normal_rv, _ = self._cached_json + self._cached_json = (normal_rv, rv) + else: + rv = self.on_json_loading_failed(e) + + if cache: + _, silent_rv = self._cached_json + self._cached_json = (rv, silent_rv) + else: + if cache: + self._cached_json = (rv, rv) + + return rv + + def on_json_loading_failed(self, e): + """Called if :meth:`get_json` parsing fails and isn't silenced. + If this method returns a value, it is used as the return value + for :meth:`get_json`. The default implementation raises + :exc:`~werkzeug.exceptions.BadRequest`. + """ + raise BadRequest("Failed to decode JSON object: {0}".format(e)) diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/request.py b/env/lib/python3.6/site-packages/werkzeug/wrappers/request.py new file mode 100644 index 0000000..5c2fe10 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wrappers/request.py @@ -0,0 +1,49 @@ +from .accept import AcceptMixin +from .auth import AuthorizationMixin +from .base_request import BaseRequest +from .common_descriptors import CommonRequestDescriptorsMixin +from .cors import CORSRequestMixin +from .etag import ETagRequestMixin +from .user_agent import UserAgentMixin + + +class Request( + BaseRequest, + AcceptMixin, + ETagRequestMixin, + UserAgentMixin, + AuthorizationMixin, + CORSRequestMixin, + CommonRequestDescriptorsMixin, +): + """Full featured request object implementing the following mixins: + + - :class:`AcceptMixin` for accept header parsing + - :class:`ETagRequestMixin` for etag and cache control handling + - :class:`UserAgentMixin` for user agent introspection + - :class:`AuthorizationMixin` for http auth handling + - :class:`~werkzeug.wrappers.cors.CORSRequestMixin` for Cross + Origin Resource Sharing headers + - :class:`CommonRequestDescriptorsMixin` for common headers + + """ + + +class StreamOnlyMixin(object): + """If mixed in before the request object this will change the behavior + of it to disable handling of form parsing. This disables the + :attr:`files`, :attr:`form` attributes and will just provide a + :attr:`stream` attribute that however is always available. + + .. versionadded:: 0.9 + """ + + disable_data_descriptor = True + want_form_data_parsed = False + + +class PlainRequest(StreamOnlyMixin, Request): + """A request object without special form parsing capabilities. + + .. versionadded:: 0.9 + """ diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/response.py b/env/lib/python3.6/site-packages/werkzeug/wrappers/response.py new file mode 100644 index 0000000..8f190f7 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wrappers/response.py @@ -0,0 +1,84 @@ +from ..utils import cached_property +from .auth import WWWAuthenticateMixin +from .base_response import BaseResponse +from .common_descriptors import CommonResponseDescriptorsMixin +from .cors import CORSResponseMixin +from .etag import ETagResponseMixin + + +class ResponseStream(object): + """A file descriptor like object used by the :class:`ResponseStreamMixin` to + represent the body of the stream. It directly pushes into the response + iterable of the response object. + """ + + mode = "wb+" + + def __init__(self, response): + self.response = response + self.closed = False + + def write(self, value): + if self.closed: + raise ValueError("I/O operation on closed file") + self.response._ensure_sequence(mutable=True) + self.response.response.append(value) + self.response.headers.pop("Content-Length", None) + return len(value) + + def writelines(self, seq): + for item in seq: + self.write(item) + + def close(self): + self.closed = True + + def flush(self): + if self.closed: + raise ValueError("I/O operation on closed file") + + def isatty(self): + if self.closed: + raise ValueError("I/O operation on closed file") + return False + + def tell(self): + self.response._ensure_sequence() + return sum(map(len, self.response.response)) + + @property + def encoding(self): + return self.response.charset + + +class ResponseStreamMixin(object): + """Mixin for :class:`BaseResponse` subclasses. Classes that inherit from + this mixin will automatically get a :attr:`stream` property that provides + a write-only interface to the response iterable. + """ + + @cached_property + def stream(self): + """The response iterable as write-only stream.""" + return ResponseStream(self) + + +class Response( + BaseResponse, + ETagResponseMixin, + WWWAuthenticateMixin, + CORSResponseMixin, + ResponseStreamMixin, + CommonResponseDescriptorsMixin, +): + """Full featured response object implementing the following mixins: + + - :class:`ETagResponseMixin` for etag and cache control handling + - :class:`WWWAuthenticateMixin` for HTTP authentication support + - :class:`~werkzeug.wrappers.cors.CORSResponseMixin` for Cross + Origin Resource Sharing headers + - :class:`ResponseStreamMixin` to add support for the ``stream`` + property + - :class:`CommonResponseDescriptorsMixin` for various HTTP + descriptors + """ diff --git a/env/lib/python3.6/site-packages/werkzeug/wrappers/user_agent.py b/env/lib/python3.6/site-packages/werkzeug/wrappers/user_agent.py new file mode 100644 index 0000000..a32d8ac --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wrappers/user_agent.py @@ -0,0 +1,14 @@ +from ..useragents import UserAgent +from ..utils import cached_property + + +class UserAgentMixin(object): + """Adds a `user_agent` attribute to the request object which + contains the parsed user agent of the browser that triggered the + request as a :class:`~werkzeug.useragents.UserAgent` object. + """ + + @cached_property + def user_agent(self): + """The current user agent.""" + return UserAgent(self.environ) diff --git a/env/lib/python3.6/site-packages/werkzeug/wsgi.py b/env/lib/python3.6/site-packages/werkzeug/wsgi.py new file mode 100644 index 0000000..aa4e713 --- /dev/null +++ b/env/lib/python3.6/site-packages/werkzeug/wsgi.py @@ -0,0 +1,1000 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.wsgi + ~~~~~~~~~~~~~ + + This module implements WSGI related helpers. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import io +import re +from functools import partial +from functools import update_wrapper +from itertools import chain + +from ._compat import BytesIO +from ._compat import implements_iterator +from ._compat import make_literal_wrapper +from ._compat import string_types +from ._compat import text_type +from ._compat import to_bytes +from ._compat import to_unicode +from ._compat import try_coerce_native +from ._compat import wsgi_get_bytes +from ._internal import _encode_idna +from .urls import uri_to_iri +from .urls import url_join +from .urls import url_parse +from .urls import url_quote + + +def responder(f): + """Marks a function as responder. Decorate a function with it and it + will automatically call the return value as WSGI application. + + Example:: + + @responder + def application(environ, start_response): + return Response('Hello World!') + """ + return update_wrapper(lambda *a: f(*a)(*a[-2:]), f) + + +def get_current_url( + environ, + root_only=False, + strip_querystring=False, + host_only=False, + trusted_hosts=None, +): + """A handy helper function that recreates the full URL as IRI for the + current request or parts of it. Here's an example: + + >>> from werkzeug.test import create_environ + >>> env = create_environ("/?param=foo", "http://localhost/script") + >>> get_current_url(env) + 'http://localhost/script/?param=foo' + >>> get_current_url(env, root_only=True) + 'http://localhost/script/' + >>> get_current_url(env, host_only=True) + 'http://localhost/' + >>> get_current_url(env, strip_querystring=True) + 'http://localhost/script/' + + This optionally it verifies that the host is in a list of trusted hosts. + If the host is not in there it will raise a + :exc:`~werkzeug.exceptions.SecurityError`. + + Note that the string returned might contain unicode characters as the + representation is an IRI not an URI. If you need an ASCII only + representation you can use the :func:`~werkzeug.urls.iri_to_uri` + function: + + >>> from werkzeug.urls import iri_to_uri + >>> iri_to_uri(get_current_url(env)) + 'http://localhost/script/?param=foo' + + :param environ: the WSGI environment to get the current URL from. + :param root_only: set `True` if you only want the root URL. + :param strip_querystring: set to `True` if you don't want the querystring. + :param host_only: set to `True` if the host URL should be returned. + :param trusted_hosts: a list of trusted hosts, see :func:`host_is_trusted` + for more information. + """ + tmp = [environ["wsgi.url_scheme"], "://", get_host(environ, trusted_hosts)] + cat = tmp.append + if host_only: + return uri_to_iri("".join(tmp) + "/") + cat(url_quote(wsgi_get_bytes(environ.get("SCRIPT_NAME", ""))).rstrip("/")) + cat("/") + if not root_only: + cat(url_quote(wsgi_get_bytes(environ.get("PATH_INFO", "")).lstrip(b"/"))) + if not strip_querystring: + qs = get_query_string(environ) + if qs: + cat("?" + qs) + return uri_to_iri("".join(tmp)) + + +def host_is_trusted(hostname, trusted_list): + """Checks if a host is trusted against a list. This also takes care + of port normalization. + + .. versionadded:: 0.9 + + :param hostname: the hostname to check + :param trusted_list: a list of hostnames to check against. If a + hostname starts with a dot it will match against + all subdomains as well. + """ + if not hostname: + return False + + if isinstance(trusted_list, string_types): + trusted_list = [trusted_list] + + def _normalize(hostname): + if ":" in hostname: + hostname = hostname.rsplit(":", 1)[0] + return _encode_idna(hostname) + + try: + hostname = _normalize(hostname) + except UnicodeError: + return False + for ref in trusted_list: + if ref.startswith("."): + ref = ref[1:] + suffix_match = True + else: + suffix_match = False + try: + ref = _normalize(ref) + except UnicodeError: + return False + if ref == hostname: + return True + if suffix_match and hostname.endswith(b"." + ref): + return True + return False + + +def get_host(environ, trusted_hosts=None): + """Return the host for the given WSGI environment. This first checks + the ``Host`` header. If it's not present, then ``SERVER_NAME`` and + ``SERVER_PORT`` are used. The host will only contain the port if it + is different than the standard port for the protocol. + + Optionally, verify that the host is trusted using + :func:`host_is_trusted` and raise a + :exc:`~werkzeug.exceptions.SecurityError` if it is not. + + :param environ: The WSGI environment to get the host from. + :param trusted_hosts: A list of trusted hosts. + :return: Host, with port if necessary. + :raise ~werkzeug.exceptions.SecurityError: If the host is not + trusted. + """ + if "HTTP_HOST" in environ: + rv = environ["HTTP_HOST"] + if environ["wsgi.url_scheme"] == "http" and rv.endswith(":80"): + rv = rv[:-3] + elif environ["wsgi.url_scheme"] == "https" and rv.endswith(":443"): + rv = rv[:-4] + else: + rv = environ["SERVER_NAME"] + if (environ["wsgi.url_scheme"], environ["SERVER_PORT"]) not in ( + ("https", "443"), + ("http", "80"), + ): + rv += ":" + environ["SERVER_PORT"] + if trusted_hosts is not None: + if not host_is_trusted(rv, trusted_hosts): + from .exceptions import SecurityError + + raise SecurityError('Host "%s" is not trusted' % rv) + return rv + + +def get_content_length(environ): + """Returns the content length from the WSGI environment as + integer. If it's not available or chunked transfer encoding is used, + ``None`` is returned. + + .. versionadded:: 0.9 + + :param environ: the WSGI environ to fetch the content length from. + """ + if environ.get("HTTP_TRANSFER_ENCODING", "") == "chunked": + return None + + content_length = environ.get("CONTENT_LENGTH") + if content_length is not None: + try: + return max(0, int(content_length)) + except (ValueError, TypeError): + pass + + +def get_input_stream(environ, safe_fallback=True): + """Returns the input stream from the WSGI environment and wraps it + in the most sensible way possible. The stream returned is not the + raw WSGI stream in most cases but one that is safe to read from + without taking into account the content length. + + If content length is not set, the stream will be empty for safety reasons. + If the WSGI server supports chunked or infinite streams, it should set + the ``wsgi.input_terminated`` value in the WSGI environ to indicate that. + + .. versionadded:: 0.9 + + :param environ: the WSGI environ to fetch the stream from. + :param safe_fallback: use an empty stream as a safe fallback when the + content length is not set. Disabling this allows infinite streams, + which can be a denial-of-service risk. + """ + stream = environ["wsgi.input"] + content_length = get_content_length(environ) + + # A wsgi extension that tells us if the input is terminated. In + # that case we return the stream unchanged as we know we can safely + # read it until the end. + if environ.get("wsgi.input_terminated"): + return stream + + # If the request doesn't specify a content length, returning the stream is + # potentially dangerous because it could be infinite, malicious or not. If + # safe_fallback is true, return an empty stream instead for safety. + if content_length is None: + return BytesIO() if safe_fallback else stream + + # Otherwise limit the stream to the content length + return LimitedStream(stream, content_length) + + +def get_query_string(environ): + """Returns the `QUERY_STRING` from the WSGI environment. This also takes + care about the WSGI decoding dance on Python 3 environments as a + native string. The string returned will be restricted to ASCII + characters. + + .. versionadded:: 0.9 + + :param environ: the WSGI environment object to get the query string from. + """ + qs = wsgi_get_bytes(environ.get("QUERY_STRING", "")) + # QUERY_STRING really should be ascii safe but some browsers + # will send us some unicode stuff (I am looking at you IE). + # In that case we want to urllib quote it badly. + return try_coerce_native(url_quote(qs, safe=":&%=+$!*'(),")) + + +def get_path_info(environ, charset="utf-8", errors="replace"): + """Returns the `PATH_INFO` from the WSGI environment and properly + decodes it. This also takes care about the WSGI decoding dance + on Python 3 environments. if the `charset` is set to `None` a + bytestring is returned. + + .. versionadded:: 0.9 + + :param environ: the WSGI environment object to get the path from. + :param charset: the charset for the path info, or `None` if no + decoding should be performed. + :param errors: the decoding error handling. + """ + path = wsgi_get_bytes(environ.get("PATH_INFO", "")) + return to_unicode(path, charset, errors, allow_none_charset=True) + + +def get_script_name(environ, charset="utf-8", errors="replace"): + """Returns the `SCRIPT_NAME` from the WSGI environment and properly + decodes it. This also takes care about the WSGI decoding dance + on Python 3 environments. if the `charset` is set to `None` a + bytestring is returned. + + .. versionadded:: 0.9 + + :param environ: the WSGI environment object to get the path from. + :param charset: the charset for the path, or `None` if no + decoding should be performed. + :param errors: the decoding error handling. + """ + path = wsgi_get_bytes(environ.get("SCRIPT_NAME", "")) + return to_unicode(path, charset, errors, allow_none_charset=True) + + +def pop_path_info(environ, charset="utf-8", errors="replace"): + """Removes and returns the next segment of `PATH_INFO`, pushing it onto + `SCRIPT_NAME`. Returns `None` if there is nothing left on `PATH_INFO`. + + If the `charset` is set to `None` a bytestring is returned. + + If there are empty segments (``'/foo//bar``) these are ignored but + properly pushed to the `SCRIPT_NAME`: + + >>> env = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/a/b'} + >>> pop_path_info(env) + 'a' + >>> env['SCRIPT_NAME'] + '/foo/a' + >>> pop_path_info(env) + 'b' + >>> env['SCRIPT_NAME'] + '/foo/a/b' + + .. versionadded:: 0.5 + + .. versionchanged:: 0.9 + The path is now decoded and a charset and encoding + parameter can be provided. + + :param environ: the WSGI environment that is modified. + """ + path = environ.get("PATH_INFO") + if not path: + return None + + script_name = environ.get("SCRIPT_NAME", "") + + # shift multiple leading slashes over + old_path = path + path = path.lstrip("/") + if path != old_path: + script_name += "/" * (len(old_path) - len(path)) + + if "/" not in path: + environ["PATH_INFO"] = "" + environ["SCRIPT_NAME"] = script_name + path + rv = wsgi_get_bytes(path) + else: + segment, path = path.split("/", 1) + environ["PATH_INFO"] = "/" + path + environ["SCRIPT_NAME"] = script_name + segment + rv = wsgi_get_bytes(segment) + + return to_unicode(rv, charset, errors, allow_none_charset=True) + + +def peek_path_info(environ, charset="utf-8", errors="replace"): + """Returns the next segment on the `PATH_INFO` or `None` if there + is none. Works like :func:`pop_path_info` without modifying the + environment: + + >>> env = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/a/b'} + >>> peek_path_info(env) + 'a' + >>> peek_path_info(env) + 'a' + + If the `charset` is set to `None` a bytestring is returned. + + .. versionadded:: 0.5 + + .. versionchanged:: 0.9 + The path is now decoded and a charset and encoding + parameter can be provided. + + :param environ: the WSGI environment that is checked. + """ + segments = environ.get("PATH_INFO", "").lstrip("/").split("/", 1) + if segments: + return to_unicode( + wsgi_get_bytes(segments[0]), charset, errors, allow_none_charset=True + ) + + +def extract_path_info( + environ_or_baseurl, + path_or_url, + charset="utf-8", + errors="werkzeug.url_quote", + collapse_http_schemes=True, +): + """Extracts the path info from the given URL (or WSGI environment) and + path. The path info returned is a unicode string, not a bytestring + suitable for a WSGI environment. The URLs might also be IRIs. + + If the path info could not be determined, `None` is returned. + + Some examples: + + >>> extract_path_info('http://example.com/app', '/app/hello') + u'/hello' + >>> extract_path_info('http://example.com/app', + ... 'https://example.com/app/hello') + u'/hello' + >>> extract_path_info('http://example.com/app', + ... 'https://example.com/app/hello', + ... collapse_http_schemes=False) is None + True + + Instead of providing a base URL you can also pass a WSGI environment. + + :param environ_or_baseurl: a WSGI environment dict, a base URL or + base IRI. This is the root of the + application. + :param path_or_url: an absolute path from the server root, a + relative path (in which case it's the path info) + or a full URL. Also accepts IRIs and unicode + parameters. + :param charset: the charset for byte data in URLs + :param errors: the error handling on decode + :param collapse_http_schemes: if set to `False` the algorithm does + not assume that http and https on the + same server point to the same + resource. + + .. versionchanged:: 0.15 + The ``errors`` parameter defaults to leaving invalid bytes + quoted instead of replacing them. + + .. versionadded:: 0.6 + """ + + def _normalize_netloc(scheme, netloc): + parts = netloc.split(u"@", 1)[-1].split(u":", 1) + if len(parts) == 2: + netloc, port = parts + if (scheme == u"http" and port == u"80") or ( + scheme == u"https" and port == u"443" + ): + port = None + else: + netloc = parts[0] + port = None + if port is not None: + netloc += u":" + port + return netloc + + # make sure whatever we are working on is a IRI and parse it + path = uri_to_iri(path_or_url, charset, errors) + if isinstance(environ_or_baseurl, dict): + environ_or_baseurl = get_current_url(environ_or_baseurl, root_only=True) + base_iri = uri_to_iri(environ_or_baseurl, charset, errors) + base_scheme, base_netloc, base_path = url_parse(base_iri)[:3] + cur_scheme, cur_netloc, cur_path, = url_parse(url_join(base_iri, path))[:3] + + # normalize the network location + base_netloc = _normalize_netloc(base_scheme, base_netloc) + cur_netloc = _normalize_netloc(cur_scheme, cur_netloc) + + # is that IRI even on a known HTTP scheme? + if collapse_http_schemes: + for scheme in base_scheme, cur_scheme: + if scheme not in (u"http", u"https"): + return None + else: + if not (base_scheme in (u"http", u"https") and base_scheme == cur_scheme): + return None + + # are the netlocs compatible? + if base_netloc != cur_netloc: + return None + + # are we below the application path? + base_path = base_path.rstrip(u"/") + if not cur_path.startswith(base_path): + return None + + return u"/" + cur_path[len(base_path) :].lstrip(u"/") + + +@implements_iterator +class ClosingIterator(object): + """The WSGI specification requires that all middlewares and gateways + respect the `close` callback of the iterable returned by the application. + Because it is useful to add another close action to a returned iterable + and adding a custom iterable is a boring task this class can be used for + that:: + + return ClosingIterator(app(environ, start_response), [cleanup_session, + cleanup_locals]) + + If there is just one close function it can be passed instead of the list. + + A closing iterator is not needed if the application uses response objects + and finishes the processing if the response is started:: + + try: + return response(environ, start_response) + finally: + cleanup_session() + cleanup_locals() + """ + + def __init__(self, iterable, callbacks=None): + iterator = iter(iterable) + self._next = partial(next, iterator) + if callbacks is None: + callbacks = [] + elif callable(callbacks): + callbacks = [callbacks] + else: + callbacks = list(callbacks) + iterable_close = getattr(iterable, "close", None) + if iterable_close: + callbacks.insert(0, iterable_close) + self._callbacks = callbacks + + def __iter__(self): + return self + + def __next__(self): + return self._next() + + def close(self): + for callback in self._callbacks: + callback() + + +def wrap_file(environ, file, buffer_size=8192): + """Wraps a file. This uses the WSGI server's file wrapper if available + or otherwise the generic :class:`FileWrapper`. + + .. versionadded:: 0.5 + + If the file wrapper from the WSGI server is used it's important to not + iterate over it from inside the application but to pass it through + unchanged. If you want to pass out a file wrapper inside a response + object you have to set :attr:`~BaseResponse.direct_passthrough` to `True`. + + More information about file wrappers are available in :pep:`333`. + + :param file: a :class:`file`-like object with a :meth:`~file.read` method. + :param buffer_size: number of bytes for one iteration. + """ + return environ.get("wsgi.file_wrapper", FileWrapper)(file, buffer_size) + + +@implements_iterator +class FileWrapper(object): + """This class can be used to convert a :class:`file`-like object into + an iterable. It yields `buffer_size` blocks until the file is fully + read. + + You should not use this class directly but rather use the + :func:`wrap_file` function that uses the WSGI server's file wrapper + support if it's available. + + .. versionadded:: 0.5 + + If you're using this object together with a :class:`BaseResponse` you have + to use the `direct_passthrough` mode. + + :param file: a :class:`file`-like object with a :meth:`~file.read` method. + :param buffer_size: number of bytes for one iteration. + """ + + def __init__(self, file, buffer_size=8192): + self.file = file + self.buffer_size = buffer_size + + def close(self): + if hasattr(self.file, "close"): + self.file.close() + + def seekable(self): + if hasattr(self.file, "seekable"): + return self.file.seekable() + if hasattr(self.file, "seek"): + return True + return False + + def seek(self, *args): + if hasattr(self.file, "seek"): + self.file.seek(*args) + + def tell(self): + if hasattr(self.file, "tell"): + return self.file.tell() + return None + + def __iter__(self): + return self + + def __next__(self): + data = self.file.read(self.buffer_size) + if data: + return data + raise StopIteration() + + +@implements_iterator +class _RangeWrapper(object): + # private for now, but should we make it public in the future ? + + """This class can be used to convert an iterable object into + an iterable that will only yield a piece of the underlying content. + It yields blocks until the underlying stream range is fully read. + The yielded blocks will have a size that can't exceed the original + iterator defined block size, but that can be smaller. + + If you're using this object together with a :class:`BaseResponse` you have + to use the `direct_passthrough` mode. + + :param iterable: an iterable object with a :meth:`__next__` method. + :param start_byte: byte from which read will start. + :param byte_range: how many bytes to read. + """ + + def __init__(self, iterable, start_byte=0, byte_range=None): + self.iterable = iter(iterable) + self.byte_range = byte_range + self.start_byte = start_byte + self.end_byte = None + if byte_range is not None: + self.end_byte = self.start_byte + self.byte_range + self.read_length = 0 + self.seekable = hasattr(iterable, "seekable") and iterable.seekable() + self.end_reached = False + + def __iter__(self): + return self + + def _next_chunk(self): + try: + chunk = next(self.iterable) + self.read_length += len(chunk) + return chunk + except StopIteration: + self.end_reached = True + raise + + def _first_iteration(self): + chunk = None + if self.seekable: + self.iterable.seek(self.start_byte) + self.read_length = self.iterable.tell() + contextual_read_length = self.read_length + else: + while self.read_length <= self.start_byte: + chunk = self._next_chunk() + if chunk is not None: + chunk = chunk[self.start_byte - self.read_length :] + contextual_read_length = self.start_byte + return chunk, contextual_read_length + + def _next(self): + if self.end_reached: + raise StopIteration() + chunk = None + contextual_read_length = self.read_length + if self.read_length == 0: + chunk, contextual_read_length = self._first_iteration() + if chunk is None: + chunk = self._next_chunk() + if self.end_byte is not None and self.read_length >= self.end_byte: + self.end_reached = True + return chunk[: self.end_byte - contextual_read_length] + return chunk + + def __next__(self): + chunk = self._next() + if chunk: + return chunk + self.end_reached = True + raise StopIteration() + + def close(self): + if hasattr(self.iterable, "close"): + self.iterable.close() + + +def _make_chunk_iter(stream, limit, buffer_size): + """Helper for the line and chunk iter functions.""" + if isinstance(stream, (bytes, bytearray, text_type)): + raise TypeError( + "Passed a string or byte object instead of true iterator or stream." + ) + if not hasattr(stream, "read"): + for item in stream: + if item: + yield item + return + if not isinstance(stream, LimitedStream) and limit is not None: + stream = LimitedStream(stream, limit) + _read = stream.read + while 1: + item = _read(buffer_size) + if not item: + break + yield item + + +def make_line_iter(stream, limit=None, buffer_size=10 * 1024, cap_at_buffer=False): + """Safely iterates line-based over an input stream. If the input stream + is not a :class:`LimitedStream` the `limit` parameter is mandatory. + + This uses the stream's :meth:`~file.read` method internally as opposite + to the :meth:`~file.readline` method that is unsafe and can only be used + in violation of the WSGI specification. The same problem applies to the + `__iter__` function of the input stream which calls :meth:`~file.readline` + without arguments. + + If you need line-by-line processing it's strongly recommended to iterate + over the input stream using this helper function. + + .. versionchanged:: 0.8 + This function now ensures that the limit was reached. + + .. versionadded:: 0.9 + added support for iterators as input stream. + + .. versionadded:: 0.11.10 + added support for the `cap_at_buffer` parameter. + + :param stream: the stream or iterate to iterate over. + :param limit: the limit in bytes for the stream. (Usually + content length. Not necessary if the `stream` + is a :class:`LimitedStream`. + :param buffer_size: The optional buffer size. + :param cap_at_buffer: if this is set chunks are split if they are longer + than the buffer size. Internally this is implemented + that the buffer size might be exhausted by a factor + of two however. + """ + _iter = _make_chunk_iter(stream, limit, buffer_size) + + first_item = next(_iter, "") + if not first_item: + return + + s = make_literal_wrapper(first_item) + empty = s("") + cr = s("\r") + lf = s("\n") + crlf = s("\r\n") + + _iter = chain((first_item,), _iter) + + def _iter_basic_lines(): + _join = empty.join + buffer = [] + while 1: + new_data = next(_iter, "") + if not new_data: + break + new_buf = [] + buf_size = 0 + for item in chain(buffer, new_data.splitlines(True)): + new_buf.append(item) + buf_size += len(item) + if item and item[-1:] in crlf: + yield _join(new_buf) + new_buf = [] + elif cap_at_buffer and buf_size >= buffer_size: + rv = _join(new_buf) + while len(rv) >= buffer_size: + yield rv[:buffer_size] + rv = rv[buffer_size:] + new_buf = [rv] + buffer = new_buf + if buffer: + yield _join(buffer) + + # This hackery is necessary to merge 'foo\r' and '\n' into one item + # of 'foo\r\n' if we were unlucky and we hit a chunk boundary. + previous = empty + for item in _iter_basic_lines(): + if item == lf and previous[-1:] == cr: + previous += item + item = empty + if previous: + yield previous + previous = item + if previous: + yield previous + + +def make_chunk_iter( + stream, separator, limit=None, buffer_size=10 * 1024, cap_at_buffer=False +): + """Works like :func:`make_line_iter` but accepts a separator + which divides chunks. If you want newline based processing + you should use :func:`make_line_iter` instead as it + supports arbitrary newline markers. + + .. versionadded:: 0.8 + + .. versionadded:: 0.9 + added support for iterators as input stream. + + .. versionadded:: 0.11.10 + added support for the `cap_at_buffer` parameter. + + :param stream: the stream or iterate to iterate over. + :param separator: the separator that divides chunks. + :param limit: the limit in bytes for the stream. (Usually + content length. Not necessary if the `stream` + is otherwise already limited). + :param buffer_size: The optional buffer size. + :param cap_at_buffer: if this is set chunks are split if they are longer + than the buffer size. Internally this is implemented + that the buffer size might be exhausted by a factor + of two however. + """ + _iter = _make_chunk_iter(stream, limit, buffer_size) + + first_item = next(_iter, "") + if not first_item: + return + + _iter = chain((first_item,), _iter) + if isinstance(first_item, text_type): + separator = to_unicode(separator) + _split = re.compile(r"(%s)" % re.escape(separator)).split + _join = u"".join + else: + separator = to_bytes(separator) + _split = re.compile(b"(" + re.escape(separator) + b")").split + _join = b"".join + + buffer = [] + while 1: + new_data = next(_iter, "") + if not new_data: + break + chunks = _split(new_data) + new_buf = [] + buf_size = 0 + for item in chain(buffer, chunks): + if item == separator: + yield _join(new_buf) + new_buf = [] + buf_size = 0 + else: + buf_size += len(item) + new_buf.append(item) + + if cap_at_buffer and buf_size >= buffer_size: + rv = _join(new_buf) + while len(rv) >= buffer_size: + yield rv[:buffer_size] + rv = rv[buffer_size:] + new_buf = [rv] + buf_size = len(rv) + + buffer = new_buf + if buffer: + yield _join(buffer) + + +@implements_iterator +class LimitedStream(io.IOBase): + """Wraps a stream so that it doesn't read more than n bytes. If the + stream is exhausted and the caller tries to get more bytes from it + :func:`on_exhausted` is called which by default returns an empty + string. The return value of that function is forwarded + to the reader function. So if it returns an empty string + :meth:`read` will return an empty string as well. + + The limit however must never be higher than what the stream can + output. Otherwise :meth:`readlines` will try to read past the + limit. + + .. admonition:: Note on WSGI compliance + + calls to :meth:`readline` and :meth:`readlines` are not + WSGI compliant because it passes a size argument to the + readline methods. Unfortunately the WSGI PEP is not safely + implementable without a size argument to :meth:`readline` + because there is no EOF marker in the stream. As a result + of that the use of :meth:`readline` is discouraged. + + For the same reason iterating over the :class:`LimitedStream` + is not portable. It internally calls :meth:`readline`. + + We strongly suggest using :meth:`read` only or using the + :func:`make_line_iter` which safely iterates line-based + over a WSGI input stream. + + :param stream: the stream to wrap. + :param limit: the limit for the stream, must not be longer than + what the string can provide if the stream does not + end with `EOF` (like `wsgi.input`) + """ + + def __init__(self, stream, limit): + self._read = stream.read + self._readline = stream.readline + self._pos = 0 + self.limit = limit + + def __iter__(self): + return self + + @property + def is_exhausted(self): + """If the stream is exhausted this attribute is `True`.""" + return self._pos >= self.limit + + def on_exhausted(self): + """This is called when the stream tries to read past the limit. + The return value of this function is returned from the reading + function. + """ + # Read null bytes from the stream so that we get the + # correct end of stream marker. + return self._read(0) + + def on_disconnect(self): + """What should happen if a disconnect is detected? The return + value of this function is returned from read functions in case + the client went away. By default a + :exc:`~werkzeug.exceptions.ClientDisconnected` exception is raised. + """ + from .exceptions import ClientDisconnected + + raise ClientDisconnected() + + def exhaust(self, chunk_size=1024 * 64): + """Exhaust the stream. This consumes all the data left until the + limit is reached. + + :param chunk_size: the size for a chunk. It will read the chunk + until the stream is exhausted and throw away + the results. + """ + to_read = self.limit - self._pos + chunk = chunk_size + while to_read > 0: + chunk = min(to_read, chunk) + self.read(chunk) + to_read -= chunk + + def read(self, size=None): + """Read `size` bytes or if size is not provided everything is read. + + :param size: the number of bytes read. + """ + if self._pos >= self.limit: + return self.on_exhausted() + if size is None or size == -1: # -1 is for consistence with file + size = self.limit + to_read = min(self.limit - self._pos, size) + try: + read = self._read(to_read) + except (IOError, ValueError): + return self.on_disconnect() + if to_read and len(read) != to_read: + return self.on_disconnect() + self._pos += len(read) + return read + + def readline(self, size=None): + """Reads one line from the stream.""" + if self._pos >= self.limit: + return self.on_exhausted() + if size is None: + size = self.limit - self._pos + else: + size = min(size, self.limit - self._pos) + try: + line = self._readline(size) + except (ValueError, IOError): + return self.on_disconnect() + if size and not line: + return self.on_disconnect() + self._pos += len(line) + return line + + def readlines(self, size=None): + """Reads a file into a list of strings. It calls :meth:`readline` + until the file is read to the end. It does support the optional + `size` argument if the underlying stream supports it for + `readline`. + """ + last_pos = self._pos + result = [] + if size is not None: + end = min(self.limit, last_pos + size) + else: + end = self.limit + while 1: + if size is not None: + size -= last_pos - self._pos + if self._pos >= end: + break + result.append(self.readline(size)) + if size is not None: + last_pos = self._pos + return result + + def tell(self): + """Returns the position of the stream. + + .. versionadded:: 0.9 + """ + return self._pos + + def __next__(self): + line = self.readline() + if not line: + raise StopIteration() + return line + + def readable(self): + return True diff --git a/env/lib64 b/env/lib64 new file mode 120000 index 0000000..7951405 --- /dev/null +++ b/env/lib64 @@ -0,0 +1 @@ +lib \ No newline at end of file diff --git a/env/pyvenv.cfg b/env/pyvenv.cfg new file mode 100644 index 0000000..d411f1c --- /dev/null +++ b/env/pyvenv.cfg @@ -0,0 +1,3 @@ +home = /usr/bin +include-system-site-packages = false +version = 3.6.9 diff --git a/env/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl b/env/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..1ef139139f54b7b1bc261b58e760500d9665e6c9 GIT binary patch literal 18720 zcmagFb8v0#vn?FkPIheD+_7!jwrx8*wr$(CjUC%gzMS7zb?<%Ob8nrhHEUI^KW43` z=jhShWAv1h1O`C?004jhz;srTZ;gxGKmY;&;0FN!p!xY#P~XtZSkTtS$-&l&hMtyz zftHQd$lTG1#@xolmQF}mQBXl#PDxx=hStH+DOj;DVuK!`>zwMSS$%bM*0A@XR!(hI zQgXvG&RBg}Bt>hAoxpbo(=*F?T)-P@-qSXFJ7e+jN%6+Y>N?voKcS%fnl5=60qkIF z4}fPbEVLXdaAg%7U2~B@^}rcssjWWW039{jw8pOoIBg%t+YYpHgzAywRO>@vTLC>i zeA1oeZ`^JR6^6sxA{444Tx*LynxWFzlasBn)R(2ARJ}J32C?cQS@Ty-!6GXu1O(Wy z7K8)%A{T;{7_QVq8^{@WP@KspMmnA7iGx2Rj@F9|>a*#7$sXct9ygrB{Smc!kq!hc z*j_)@UnJ&fth_1#_)$?WMSv3fY`Xq)JC|gx;xYoc8*E+ZDO4Z=Aw${7rG2T$Vn?T? zo5bh>%uIwbDH((cw&ohQY5at9fTxmf*}m*JVB*J_?A6V7Z)6S*8?#e2`&Io^@9K7k z#boYY)-6=0mWY5PuiWnVM^Bv&(e4b;^#d*=$*r-qf}6+z1~RzX?S7U&J)Ut=ZJs#| zu`(On-1LXWW%nzwstC5E#5SDTwuo$C981}Pf1AAat=i@=(CzgdTG)jX?qKoxs5s36 zNm#ANlYu{my;xv@iFa~kf#hctZvyu-IH=A0_sOPqEo;ysr}rwwafQERLe~E z+bQujF5QodMRe4<)O9nh%&Jv3r8I!Mr8AfQAU(G{7-Oy6q09XPS}D?R5yrp(04?AE z0HpsTw4{ZV_=WhD_>+})Y&TdDe2#VPZDst@B^vUFm|L||OiJbH#?GAFnaNM78xX~l z3ol-KcCw5pR1oxPabeP)y_;-OS1E_%&=-m;oVA)Wrg0_4 z30~io1eK-Y5o)v8A9z8r=^WR}@v?ieXXMMbO8}1Dz57#T(G3Y4n*k5K_`E+pUEQj9 z4Si0(5*7-QTE7sC;F#=pE5tjn%v7FB1m~_`QM{RM8XQ^#vi38UuY!mvx`8Xc1QP$^ zx4lsDG}R>6$7SH+#o~t#XS}fC2(4&;vWW!!?kQIXQEPYJq=@Bl66&d#s~E+r-3$#Y zz6W;H)Qf(&CtUAxEm9q(*Uz(Blfy}M=pkdF>Cqm4CS&5w9DO-d>g?oBv-gN{B^nN_ zC|et)Z$a!Ds*a0|9s3g+>dF7r+}=yy^~&av+^?a!+Fbb}vQ@;R&U=oaSXxT324RY4 zihj3pzXOm4*nlYoHZK&mc7k{y?x~NW5WvdKKSNX~O)(&1s0>o3t#ECbWhJUeJkX5t zTNW#sj)B(^lloi*GCM1V8>=^^m~x+5sc_AI;G!oT%6nTS)Vx~Lv<9}Z()yL+e*7pS zO@6Uir!!&s`yFv#jdT_eWpP^6&N7Ud%#5I*oT18<8PZ7z4L+}Iy z@@WpHvgW)pLUdjJ+?jlLYA0L@^Y&V?UcNG&;kk$*xq0D$;^OjHG7L0JW%;Ki}}d^H5HU2oyV48Nf$(>Z8TRDNN(Vpu>% zM-Zcs65EOn+fd`Js}902{O(C^UtEyy6cGVs7imy=tKb7F7gQ7LP!nUVPXrRdS>sE> zoS2H@%Q)6Y$n;m>!B!8um9!D3vrM$YDE;jI;5mQk##-x2+<*eQh*(D-VLL0>ZeQfD zmP!70J3`kzUata7jo4ksI*epz*xj{uG)it;%d2jaUX)GSM8<1=PaGT&aO%(G8p(cf zbi}_E*OghsWq8sk`kq3k3)zl`R<1$~$VDY~(&P>Pp!ukZJbbtT`zIq)Sbg>vRPVUX zJ}0hUl(rRj1tH!ciAS0|2S7kJdoJwj+-St1<1Ag?Nf}?;c@x2sR>$hV1Krq-6&CO! zf*`6}54IWu%XKN7VWUanP(AczsZ$`qsba<|qi1rdPB?SG`~?KTyMLc;TXINjeE+=c zxvQr+XSb9e!(W$A{c6?A%arxrShypR>{Z^p5FE%`nn*pQfRT)fJU)zw!?=apzS@Hp zX`6`G?k`kzO4_as45wq27{QsD^|wIT+k-x8jJRx7N=!YS~G zl3%%@Wm;B-hoK?Os2x8T>lI+hwH_}6_KcQe*4ysw(a~uw3oH#^hLwwgOC1nd1jU`4 zl1U61K|mq*?gf{j-SVSFK-0U{aIX2h3a+@{PuZdjNnhC}0Sj+S_3_-SM_8CHVVrVN zA{=)+aw7!)Xq2x;yE0- zckMrj88tjybFQl-tG*L;Wy2?w(0R~^)^h9&d>*kj=wbsl&V#4qnF7iaj~GCD%f=l2 zcGQ-C}zP$mZ^yr}*! zlWilSVUeK1x^J_#@ND1s9V<^G#gLl8Xxi*a5CnIUjyWg)m zuBXY&C2#_^G_7ne60Mna9S~$2Z84N)lA26>jk}>Yg>S{lB2hxk$^&WKXWh+axE|K+I>@N@ z)?p5bVSrt~V0o`;pNEXfH*2vy7w?tXvX{^$3DTRLixo!sq|=o2%nwm!eJf$)TTw(V z@3Ez}n%f~fU%W?jV4TxqMnnB_l`f8|5eaOL-|N~V6$`Q2Xtu?2?rGB06bL=pB=5bY zj2GLVbojM@R0~W#q?~_+l&s~*b#2G(Hu>%q#0LxFa9oVuXM0pIcXJD%E~*uu*B0Z^ zP_koeW>=ZuxKLbazJ-BN;05;Q`k!&*WNW8uW$a>XMeF3| zBq<{`EharZLq#z@vj_CA`vRy`a#sJ`llBLb7(d^J|1}92{{NE@ovyCAjk%MqF0Gxr zbu2$z06l{6GtW@rFPG?Qtu(VRXk;GXv_(Ly+y$w~!3|9iBy_89Pv1LHOYMB?GNYUz zPdh<9al7a6LJ>)kGBOtsT0s4e-}};K!Qi!yE7e`rFt(dqW?Cj+aSM~va(1mwzAGIuQ*1Ug&NHm-J+)naFjVWVlbQ`lU^}>5K!0GYE0;=r11;f~t&mLBGM`F2q`4E|JHv#ZTHL3(SFD)UhV+!P5syE& zwA&{B+6sQ?rb3h7ZNIFUEDjrmaNSK{RdE#vW`{)VM!@aCw!G}lXlmSYLnd5HEGFtvI+_ji`n;9-sW#bhbs814rf+B`>JN4yC z0!ouXSP!D9q^^i2q6M*iw_=Y zpQm$C!Kfx&P{eEjL?OHpp)jtOnPgmPjDEfk|4(}MNa!b(1O)(iKm-6l|2I^AsMyZQ z*x?5)$*S^^2S4N5ObtRy61yaQhgJ^S-R#w+HncT|S&S!pg#3j#VZK^5u`TWABaV18 z^@Kw+3-!5L!Q9DvH)ix|8=?ZTxAkwD)b~2ua|P(WC4;&@`%=UoTLJTwC8*ZSV#1sQ zy3HFid~LQ_<~k7?l6@Sb+b3x$qHa$)o?Q1$Y_Gi%)>G|$JO_61jphP$nb&6SZ()ME zTeAjr$8VFu$pAsAur6!Mg?18)y67jI|xec}xGrG+aEb2aPub0N} z^&gf^wThIhiTQdg3&QafyYDP@_O@RLER|JbCv}0KW*%}GRaS|lxMBTZe8&?0Mi^Io z_{Y>Svl7M3RL3w^W!$AKZ9RP2oDh`jLCHT76Fp&52MbwG11bW2->0uGGNtxJl1G)ig%TRbq$b_6Fs5N zY0kfDM0D($M&}lUmXMsNERTIw7}!KJZA`?xh{g0rHK>EN z7okU&RWSISU!>YNSWk!}bMIrx#qG*qf1cs_WDeShbp10mjb6lb`w)ul5%21YLi12G zd?e@crKW$M2O&r9gQlDqfXj7Y#LJD7GjF`EEI^FiNj6SA1O z3KVeyrc5TCDi9LfCaVTFQ7tUE`}xbz9>YV}1#0L_MOCk32Jg z4zSSI)Xp2=U6Dn*JcoD1*cv!30$b2bVfw*|0q6HoE~PIh#)gfGf*;--M9XYYkSRDJ zxK>uOja`v_K>w3}k;;c}sDDZ|+E06o`fvXIPu>1u-z@nqn?QPm?N1akQoV(4bp;x0#vAe^oqr4iz^4ndeV!+g>Rp1Dl-aXUxQk_c>5|ln~&+tkhu{B(!UH}V? zXuq6{Htko#Knty-lP{?K!}0yk{1hU|sXz{Jv8=q<16d=YTp2T=R4m!|(!lMw_|wDeZW`ZjBRF-VTiJ)I z_7vCQz5!Ou;%{`v$KTlT$#PR1x9_{{gax-f@67+!Gf&H@Z!f;bE}lK@ZZQjDp{GO! zS?`c#q((Oqj}>s?zL?OhfG!a__eEn1Yg}kvz*1kmOvv%1V}H-UplMIgP0~r#VUkx* zT9yV@Ip$0=D$1UU)cKyuyeWRJh;*b*`ODMZhi%|a$tR3M)D>Vc)dy~jPa~VI4 z?T$!6%Vhcr72>@F>*;nz_{g0nl)Fqk+PSZp5_YABH?*-MtFM1eiH@*HK}tVmzVWA> zCis8E!NlCkSoeQHPF4Ot`s{Pf?q=wCS{}&OG9VZXwK#I_Z!BQ*=1OuX{}dTC!*FIX z&X~}zm#z3Dp|vsANxJyKgDuw|nbt_CL4LhHBBLB_BL1dkJW8ZU1-3%Dn^qW>ntJo6 z;&#KUE|_RTc$>Y4^Sb={h+&>`*KsCA-|QvvK2b?-)L3FUSstX(b;%JekOw50fcdKl zo3`#Z>7t<~M&9@rR!V)X6o|9|abV}y6M)p1$Bc`Xh6$?U@`E0gKE`D_V*!S{K|dow zVDN@ec4kif5!JwvTAEWl&nAtHZFiIa!1L+d)!9e3_cNWUug-RDR;i_mgFKVG0kvHo zMh(l2!OX5YhNafutXR~}S8uqf@Sv^m4U>6Z%m#n0Bu{u>NRAyWd^~F(d{`B*KW)zX z6rdVAc7_->eYSmRn({oY%;OL5AIY8Tm3-u+$;Kr0`7VWA}Z(r0j zuh{%@flIh+yXsvrZDLtjutZ=sv|i49oWPS1tR4w_fLe`cCjr^#@+D@bofdkUFfUe3 z-tK#ruGX*SftzWbO$0##tsk5)IttdM2)~M>hvBfD+$TOZ7jEGgKZpLO4_OYjcij&hFgehJ zc*D5u9<2h~C%7c#ia&ERLn`I*yK$<)EzWtkaYG?44=mWZ`_=nmy65&_PE?KlqRyq{ z)b^j8lfC2SIE%FN7ndH|>3ZjImkB&IN>I7c3PZ)n0Kv@^ki;B3H8I{~Z;5=bz?>GU ztb*Th;jzzF)vDgS{e2lzGK{;W&owXAdoGCedfPJtz@(zy!O*ahgQu~(w|C`y70{BY(q|$>%V7#mT)%0^~tKGsVa!Q7T)sB`F^+&^f}u7wqi>s z6%X5@{8k!7Cy3Q_67Gnx1f`5^(G=pXL>VwgSl}^lQK?w2`fF^*H6hSIG)`=|OT<-; z+_je2hrN4gq6N9!L%plDqf&vh+#p0c%40mc)b|_KYjB&ad$=QoFC^DC-p>9U2AnC~ zCzXEN8GtRdP#Ra4Jafi}^CYHQ?|ZNC$*QHqQne(|OWTSjyUz6F1W@GB>{s+y^Su|EUx z3xw~bfGl>p>ekKccxX|3`Ew|-xt1i`p?bvp_PHZt(e$8LD6cmMXRC|k;#uQ0&-wbx zKp=Ie&zI$^Cm+Thku}Gz;sVV?H>T%bl)Ml&tW^9{mZp9xKjHs_k{yhHOxgd%$ zwi`bq`@5=L+oFsj-FXN$)I;Nh%n-evDSzFGMin(E(gN$ZPhr7}p{7%<*@=&0cN|lNn zva^8DcMovs6ZrIpZB9utI9P-Yfs#bh2&s+UDS=bc^U?58P!D`Xx~}AK00Pr z?-l7#56PO#aoDMet6)&7`wf}N0eA?@( ztS;$|bxb&Po#I?d^|D&bHJtYyVLmmPbr6ac!~x%r8pwD7-U1|QB*-RM<_mOzD-{%v z>-CtOkKH~GV)>APxK3%8FPIbE&pBK$t~db9p8X%@i7bU{H+L%31 zCS$XSbe!|$UV#_{>h?4q2mxaGFKp$r<}+kwd$&KP3B6|+=76Y9mXN(>~;_CjvgEgTzuJhejIqSW(GUo{7cF@XMFtnf&&0pWCQ@f z`tR}k&jN$heiDTq~71_DB>QUyN>8u;T;tk zu~lNPa|55(Y)r%?3bD~!XyBVb;g9&Cna{Q%Pyu>(?o_KPW!fp#G8i+g#>wT@v}@Is zNn)$*m1;Dg9ib(aNIlB}l$g>$scA>-A;yO$iDy8q$@NaVpx8rcNYjhm;9~2^5pJ!`aL$Ckx4s80?IO z_aY^|^mHWTi?}6yEy29%;mgO20y4uQwAE7bqvfto)mydDxX~vLtr%Z#4^Uysgi!vx z(oPAff%1j!J!h24>j(J)=dy_pYBcmz zRxk(oHrzu7;*Gw5dr@PWwwlrC%Sr*dCa;EpHv>*Xr=VRt+JFbh;H|b)YBj`O)2^NF z^l(O!3W56Ofgt`hn0BjbF5MmBs4Q)E1VgIcHPOD6riEewp8lv>&6?ejR$k_UG}Pmg zpH}WHVu<&_J?l#bP)4O*gs+LUJu=yTH1~Wh@8Y(k>uKkAAH@8V5Wh}4A)suW;tw{y zL`SGnWu`-PE}>+J3tcQh3QF#59UU@et!@fQWGRM$VJ}}kY6v#etyL^so-!d9Va2mj zK-WzNtzZ2|;5NGRMQiD%kRdxFB(-W6-t^Z%$1Jk_(C|x?-bZ|TBTmirhyJAp{dgPT zeAOC|b^0TGf(GsH9`OksZDV2eL;cJ#4ojMeusu(=qAtMbvys?q`51eWUg*BR#JbQf zRJar%y8!E@$=f;lDlfpv{wAr#Mh}bgmMxMgLyBQSws;10istG;eW8S&MqVTnl`5mX zsI3y9o-_4#I>d+$FjPHpfS&xDEx7v29rWmkGNsr&EL?sBQ_f7~9iB$(JCwZsWqtay zaJ+hdj1nO+&JFWkfHnCsB-Qj6d*dk{^s1t%nvw85_9jQdfaMp2{E4^xibVBbfWC&9 z->EsnW#Wd(l4~0pO4F=949bKB-t;@g)NZ5^J{5|E-7d|pOhVFo!Kb|F$>fUDYzm(f zK#xO10Y9vV9_O{q_o-$1^NQ+6ESd!UPT|t32taJ}hubxmn)8&9!<|3quewmV5tARX za@&g4Hn2FE951OG7@=|kPsBH|gT%sbV@!J;1;;(45~^47fx!JLpje#9jF?;55x}wV z*L}ZBP&KgW9`|p&Br-HorKPo@GZo_0Q`IRJwxS1L{WAC|O@em`QyUJ} zrYc2Eq>G{3wxr@l7xq&>4+Um)ON0X!KGWC)H)uxKei7oHT%ou!x8h-MZp{pV^7zdA zVBP;7fbQt`I=yyXc1Gjz+~-oOXO6MR9N3Iz9}$%f-w1+Ivr+{D5Y$l^8Wg0AugibT z;h@@UZx4;z+M40Y7H7BskG@tMw{#!@18(SpsMdsIF^WX0D`(q#@K)c>4_xL#(_3_X zX3AwT|3l8ZI(Vho`V@vUcMo39+5`Z+5D)twJN<}dS>~n)vSZ4%i+H_pW*E+%3 z``TZ1rOC;Q4Jo}Hq4`5yy8t|ZpviNE9~Mz~;80!5^PPS4q2I^m;w=Ge@3qC<&A-6y zan-E%gk%B^V-w@EvJ976BnhcSc+@87jO5}9LxpTXNweF54#N{RhO_{IM%Yc0_rhZ+ zpo9mPD$wp?T9`mEx(dUfnwVZ(nx~97%_3&s&HNRAU;;}mX+oQOh7JBDuX>qk zVF67Kvh@o)4`=oUWUqVrF`+o1i%BfvJEV{tn&M#`ImjfSRrxIYc)P^_JeX<(lXSWc z&ajXI=Y5`B=`39yA!skgEUBELQ6+QgCq6(BYOn6!Nnj)At4&7ABoaMbeg^AlrwM@&L1s_3kSeud8_->9;jK34cb$t6b3+xY!S#96+tnmW`Bc7dL4K7;BwtG z@8c727=yT@a+VUnGzb7Rn<@zmgUa++^(F~d$mN3KdRog#-nh&L**>-P^m2`6Xew~bzI)!HyKzut=GOs@hFBs*oWN=^fw-%S7Xw;S`p96@3!!DxcJ5L(^ z#$wcfNP}sq%{?5}8!5^jwo9iy#W&gya(p5b-keK##2-9{x8==jm_g_Q3BjM`A)eqY z*+-iUq&j%1pGI->Ov&qSLyx-wj~Ja_GPe|NS4ILf&P~4;Wt2~C&mR`k7z848h?SBe zZK@bY4HA(uHBQG*m+zD-ixJc#28edznjS2|O*27fk(!`?*vSXkqZ7VWYGWzeq!leFdM~)hIW2iE*Ik`?sY&fnRR-N87 z0pCQYR_(S{vW{T`F=>?i_t~EVlCmsshW+xC-=c88H>N?LMbEDcn^HdJ#ae$+!i1;Y zUis{?7Lp>PV2^)>ot9BxC?=}oE}>k=FCZ&D7TZHaht`3U1}k83wNxCJF{)fiHM78l z$w5v^;LD3$DJKI#fVe@)pJcNYWj$V*Et0f@!s2Ik8;J1e#oj&>bDaS+qj=^MMTxI^ z)0Li%eub}ISSu$lA-i*)De0Kk<=V@lqe`h;*qw-#5;)#pShqjKbhZG{B8_$mbQ{ z;+#w|1of1nXO;;mb4Z4-G^5fJWy1sK(M|~YxGs!O{u@QjL;e*=O|D=s3#`=Va`(O+ zJ}71?FiSFcd#3tTK%UF@P$Scxqka8bq=6y_g`_&?(9 zGQxMAMcqsdXgLV;Zxdaj^)7xL)$*N!6$|Lv8k&zRe706@(<;Vyt2{tX8L2gw6rBFV zg%NYPJlwWmNWaM@WkWk%K!h0Z#^9?RdbjmQ8%>{&FJRqUhHJ<~O;-t-)bJ1iyEl@8 z)+cbyY^#DlKnQtJR8i?zrFZz>LSnZPi>`11RAeFgwR5lm896yPvl`1}hesK>Dtk2Q7cdlRrUgN(JV-P?$!d-Bh$?aqp z7(NU>KJa22Ovju+1IY2jfHFg;K;`KOsAVYf7cST;KvClR!J*WqzTg<#v2GDu%>9Ug zD>R7yB4QhMcDzW}Wi(;1iI@zSt7nr7gR_HIx#zSbB~ibK^`Kimg-qPOK-dPSDisl2 zq{(A$?T*yRkS`ZM7e2f>MV?1wbbK~R+J$qK&AQR*r8S}y-S7```rJ@qjvSfMdsb|r z(rHHMv}Oe$I(q5LYJsb$luFba3y*vKWiDb+hZsndxV`ci7Gj_>+g_SRa0{0~j;Hfr zq~VLd{DCO$W;ESzn9a=gLdcz=M}80SdRcOXI5nLyNbBCk0 zCXj|)xA9hlEKP>tJWu9? zJK+|U^}B5A09O{bG2>)(8=KE-&IjJAai~anLBs|tL)R6`3rg&$Rds}T!y@f*jujTy z%H-_tw&n7!gE!-WO8~et@$dUv00n0kUOS{YwO-tVx*i^pzwvKGyym`H{bNru8N5oH z58}tE9S(ia;l=wt1rT(cLQ*5Jq6@E~J13`)s?QlvU)VJ|Ph6EV%GzyL4?f@DC?PDm zT?NIC_u`XZ>oasOy!hmNJRZUAg$I~76mCFGB+a_=0<5XC`fxG*wI_?Z9?n~K3t33s zZ;>zN)l`B>Ej)bSHyc&B(Xh!cB!xWegN8Qv&NW0xq^jcD%>nwTSN^NgWl6PGb{z8u zpFFxJFUT5mF;Bla!_*{wsO_V?2Ijt*8yY;={0tPSrPr&~TJ%|#tqNRa$bISX131EYLSr{c92z`Z>^)SXk(o}dfY;<7q?8Nd zWjMTO!}>S~IHy&*b|{=(Q}s$E#7rePAAT%L`%I5DRZl^clMy{xSLKuE6UwSSokX?Y z05>Ex{SmO|`S6P2%?FxDnNlaH$}GvC$pWIonSSWv@V% z^U(}@-??>;Y+PQq5t&+1(TZ1TwrzTF)^X!9b$u%k?sPD8Wa3aJ{ImDF7o?)gy4#c4 zJBk)B@W^L22z^>6CWc&SqgH>_$d$s@nQc55)Jtr*XeU~Es=^!5hq&CAAi=fyuh6Y} zP2vhB*DKvWZ4WC_X0O*DUFiT40N~fZr{@3C`CT3K?d<+DHg~D?+59;BUGG$2V|}b~ zltZ|{FLA}Na=B&^HvT+L(Ej-%Xe%fbaZ1?V-aB&5)E#|5TLW)#tIIc28Em#8HUZb8 zZj9R3g84ac;RiKzkwXHSs6;#zmQ+QqGsAZ!xo_D6TnfKeTQ10(DCL2{ zj0nxoiHLZk)jozj#G;hm#87ui&`j9_&99LUdV-e&%{c6S?q|qLsbnsdk zY*FN0C+()m#48$ES=bA*frnI1+#~o1DSY72lZ4wSv$=t^V z@~QIxtYxxvs%r2GjDO*4`SOf)q~#vJwqyqF3iXx6n3mb*p)ORc!%<>PZ>^TgmC+Ok zE(<6e;5;bO##nPEGT4U@B2jdxhK7YHA&mPy?Bac2YhLiUBumDd_yaqb0Cf6wNuXLuI)Rc_r!i__*hev=3jMV0>-a3^5x- z=95=Dd#kYCNli%IYX~lA&AgHDS~Urqbq|h zR&m)rA?6%rQ^WRNK!v$Y_a&nB05DR-`%STzE0jx{=h^=5)#4aI8du0bf0R1qr>a0d9!LHy0X17KD42Fg|h7a zq`#j7+yA=_rEu=ukEJPr>D<-Jks$5ogIE&4l*}%{LdJt#Ua+YOG$04^Pa)5M6}BKo9ie&KaTSYCAUU3Y;a@)7e94*+ zou@`uD8OLqN2ca#^jc;n%95cJ4iO8XfQFV%6S%UZGzxJJV8P78mK4@#iT^rEno6uY zWcj=w^$>$tXkAe6>T<*BYE#Q&TD;stJR>P>5$W=kzxG<|P!DTIk|{}yLy6zW zlt9{3LdH}BCbE3I=-M@^y}*A-Go?5A4yw!y(YgrmPmU8pPxyn>Lx>*QbRA4YlTXtZ zew&}AU7}3KchedyVw~t-+O;4&Ek=(4(`zmR-gHo9R#mfsTI{>WE&qJrA1sSizkIo}i{4hXj>Pq-2S-~~8r%Riewv4~ zq#5*ztI}{!2cPTxt^eo&36KFX&8OAv3F>xrgWDc4QYi+Z0EBhu$P}-k^mZsa2U~KA zOW50vISg09I0UJ2JrTqNb&5kk>ofrc;b%##K&4932K5Fg)bm~HKj1$7^n9SapYEoY zM-pwe8qlFonU`;_>AI%orwZxaTjVsWfW@4owbdRgzeY$)yyN3c9h%PErHRQ1IZMdo zojE((wTZu)Q*X|DL`kQ$S4l8lU|9ZiMBwZOOjc&m@0>+U| z7B#)^?}i`+mU%@6+HOV=tf#Db3g>CJ0d|u2alLI{!3RVcX^Ks%>R+VBp`M4S^Dkv4 zQy*

    ETi{GQY#}hBZB>q*gAU6g_Sx5JAUh4$p**oE31TIdo5<)QQWE6I-8kqHC#Aa`EufTnM#{6@x3uuLG1;!PMY!3~ah zC1PhpC1nKRBt;xy+V6qA$1D8j<`U{j1RvP8WRJJiF0$mN#J;&7w^;Mg@KugAJ$P1P zpk6|N=IH?PqN*V?O)ACep?(&~1p&nc{sdGa$dX<0!7NW!MVf(XR5Ui*z2qj45hzP9&a$PKQ zt5xBwO3GcX<@RgZ6u6}{kILhQ5oGQOYs+gty# z+L_Kp(y9WLW>ODpu3?Wgd%&>HdEoKW><64eP>P^OBt=yO(kWkNN|g|`PEHx? z)6R&R*=$dhG$3lEx<;N-XqhNF`j0G}PFm=GN*!!-d`*ScrYnDW211yzOs;e9tU9=L znb_i*0q2oC%g*bb$-gn#SZ$IdWS3br@Pxg{4%xnrZ#?7)zCWj#S5LC2YVOM~#87OQ zCJY#=&mK*BIAQI?KX2i0N|a!31Mbb=Z5kbgt-+)i-XdZ}w^~%8)OQ^Um4(eUa@VWqFpf_olBVM?pxeD* zJy5KL`2zU*^X zIFcvlC9_q=p&p+mgeMuLttB$$v8%UO1uOK({IaLnn;nhnMu}vbb*UCu)!jlJqIu1- zRwaQ*;BOtHbsC8V3tgry$gk_Cr(@mLaw-&=T(mX8a9@^hZQF;sqsSq`V^FJR-JW&3 zG-Zw*tJw4kvtK*Z0KTvz-bD-C!VFZw*9(~$6@Fz>Vffkp0$oHbAn8|y3gDQH?Ju$j zGXRhH`2cxAO6g-TIUXVG{$wuo5n8i`wRJ342~3&L&0Ubw=#Fx-9EP=toNY@U!2b0K z6rgx+L~0aYyV6S5e790WNqza=cP_dI20Ccse^{L6g1t2lM-DqA;JS=8RtNm%}PyaH39J_DS(f?jX$bhr82 zcE6I5PrA)=4UYJ700Gd*?pe2nN~DOAb8tbp!wbaHU)YY=e?IMCb_RDQDrl0I~oz#sV4LTj>Y)~hD}w4Vbu-pN@K>WTbmEb0WXPME}7{n<$ z?c>H;Q+=&Te!4N6x9h4c=EB)PL+GO8COW+Fc1Lu^chGg!pZf8hD20brE5_=t1qT`K z+wH)+t1O3y1|Rxa$i6*3WkNEm1<*)0NN5>R2j`t@=3<C^QL$cNSAU$$Z5I!1O%HbeksO~sUWpwq@^IqA(xeN-1Eq1+eTTE8%J&8`1D*Cv~#R^=%X>MVQ zHi?^GrUQT4leDtH`T9see0dIAMvLn-e@HJVO@V*`O3`vddkOj&z;|Z&r;=b9Ec+=W z@7enuAzhSZ`4{6+VmV@|(u;zCg`bZu@^R7WRXH}xdjBDMI6FGT`r3Pd z4oTKrx{nNx(W!AlsUAvhZ_``?vXs$SyG)@SzrqL11_+~ zLB4^QhfwOACa${b*j3@6xbQGen!9j(>et~QqGFgH;+}ZdH;mGIbaUJ=!yggmSxgiZ zabTtfd*Jng#xU5tnLiDSPYvcYtEq3R;+oNxH_~l+v!eq8{7d+roag=*HmC zd|wvK)873DANI}cNo=nxM8#66(54vKpu5OJaQ27&%Qv1sW+Z6 zMDU(@1`_0raqNDMZXd3ff-iKAfkn1HYys)`0~|z+;D!dAl7|tSM$fSnr2{D|T7FV> z0(WkwDZ<{}-0JePPDG>tmZ2v0ur=IXV)ZNR`bX30txK1AXtO0TJKW%(u#0GJR6cWt zlLYOv80Cg);aJb#G7Vp2=A>eomf4GS=Qe`cbM=u`*vy?GkpnILQm)N+yP8v1~0E+QIvbaP&-d6iwcCCPqUy`Kvb#Z(&%`vdPkjZ4(LIxs$oVGmtv*s z>s}H};Cs#FljPAb^0iUE`gZMYl!a}SQ6)tAvW{~gPU7FNp$vtF761db6oT>R=jJTY zB}(`4<1DqN=%KBe55JefJPFF;?>tj*tj|_oM@-OOqt{W)hvU>*E7#w%LJ13{$AspFj~4Y{>5rkYGBzOx^rCn%_hAVSKzBVc(6Q;s&lmLD&!;E^bX)~4SVQ5d;%B0UV9;m@-^e` zIGm)o%Phaj7+a+(>=({)vP@+1)aI7beHi%mEycb11RXh}qb}(A*V;>@=a4|>Pd9P* zv-C!PB-Fru82DOozL@? zJ?wh+ak&Z+pu<8eTDYo2i`<(3tV^uA!H)w}Sh>1j21RaI8FDmBip~Cq!H2i+clQN= z>pr-c_y1SP{evVBhG78ztaFjJYe@^N7PlY@#3_`9XsP+83W9^6P#Tnm9Hm?e0tX?; z!Dtb4FbLX;kcPHsh$31V3S9aFLhs!nukUku(m5Qr{J2{@zW1KzEAE_J#Yc~qi$A`n zLhboJIvrEy?Zf)rThiEnnGf!6`y-Gg zZ@7Raw!zuds2}caI^A#-v5Cs!BaI=wMZ1@ZAXY~i%mn&@qDYD`b_*G<4)udY(-2`S z7cv~6;PqOMsv#;^-(%&&r8s3i6tLCB!U)ZG#C>qb3lXd)FjAnVfM12%&;?N6*;?MBGHZ<<}aB$9P7>{MH&-5O!~2xrsjdXy>{*o4NSYSaS?VI z9oaW@aQ@HE=M*^dYXCwx7G!9A1|TscL;z-rbgns(!Pg2iTXA6cC9|~Xr++l1 Obo!mrh;t=jUHt)k)a5+@ literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl b/env/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..f66479cf2f3bbc54aa2ad449998301910ce43386 GIT binary patch literal 12139 zcma*N1B@r#+OOT7wr#ur-P5*h+qP}nc2C>3ZQGhQrj2QT^StMKv(KJn@0_YsO39U# ztd+`Dzx$S#0tG__0s?{r!g5hn_`X`mzX=5dWQ7L=MDgdTfxW%4g`*SQcK|bh31DpD zF8I;;zT zmawT{L@lfzR*$mrAoGCey|m-glWG|~#uk@do`G4jbZPDA?J2_xCQ8D}i^#!CRo6<- znI8);TOw}CoGr!@WmNWL-H5Boj$)du#=I>EFJ?7Jm<0*ljXm-tuQ~yOh`WLX$%0fh zXOR&>zXbRR+=va(fyRVaEub+)P%oydR4l<}X;^@DDraI8;O`Et=#m zYNa&pdJM_Vtfc|}g0p1(v9k`9J>wS_d!+276Y~^BoPyMf+&ME*Aioj2^YiFiZbUaB zkQVJb(Y-nytX7a~`QAvw*I}b_X0Ym7+MvwU-1F@y-g7yHexjCKjcToEHruamUz0xdr+#~MN5K{04CJ1 zURqpk)Hdm=g?bgvUay{Zj{POYk6~$~s{M^SJSv!A6dYWs9v*O=0z|z}9BBy*#tZ_n z_zd_WlB1+k)X%PWM>nl~sKk~b*ij$aqvTynfBERf!$xZ5JIRxD6*p@6eVa&y}*50a96xrZ57!}uOuV`>^@VweP-x+`h`WLmqvk@p3xfdDc<)KIX zV2goGC05e(Epif1|C~1sg?W$NN%UJT+jgB@9yStEms+_d?$=h`e}&s ziyHkD);g`4uo4O`zSbF|9mZR8CyudR`#j&G`j}DuO5H8Fl4ODkq8$HZ7JsTZ=3!Y? z7=afd+#P$B*Du;a>Ya<)*5;|%P*Qjfo(+g?RKq_uS9YmI+$M6 z9b)(PH~uC!p+Vm{W5b(7+E1KApNGRZ@plLcz8Cp}dZ9k0k55<*u*hW-i}%qz{bWJ{ z7RW2KG0}}A&^BgIXN*ESIdIU_l=2ktRtXHDXU81}nrDf(W7K)3kjn+T-Hmx4rEwFV0 zcrq6}3w0PuyLw1?v%0k0m0$oBD}m3d%+^Dt!8a-q0HkaP{*1sG4nYcM^Yv3&r=CJ@ z)=hg^f1qvIj!jv4`TXPTHjDXW;7MxcLpdZnAn}17;O}op8@gyI?)PnJ`6!n2 zAZ1tK9=|1%!#H3j+#mjPFrUd>_^QS_l>U=m96R6^L2wbTDmSL=&7B8LB^SXrh6Wxv zcNT1IOLRHWoXH!@_S@hU0-JwrDZ#p&oo*i6bJ(vNmUxzv@@Onu&#pc+p?4LK-r-R=LzgX?8C}OC<-z?tD=x+^)oajv9 z&bgT47cD!5zRs69Y$?B1g|y2?ybhvO|{R!!L6n3*x2K zmu{%sv0fGdx^?P5=F?rGA=q~_Y4%=$f-kZ~8OmVg`{3Nic9-&TulzRLJ|gbjL@}43 zUos0&xS-vK;ZnvhnwRbA(-Z`+Mk~6KQ)!QaUS+!kv?S-%?g}ek^$%Re5157d;f$CHOIub%B?ca-IeHmuS zV)({jCH0W93O0J6JF#td$_?;VV`MG_v7b`l>_$dZ?`N~_TLhKv!o9oLhb`hy85VOW z2M^iDwpnj-(Q!p7+QNP>MS$;_eC+|8C&-?6c9iGR zAt2|wuzR|kg&PV6Cv!w0v%ba&G(nyjAHhnB`_CS{iL>3`7gUTYd z3(9Z}eLo)oIdO?wY&%T7#^!%{>4;OzOira5t=0%`L0Ir}&e^Uwh|!G7r^t}4$EvNozA!(Z z`B53X!9UKJ@DW9}L6E|@WP*f~Ry_c5dPDMrP>Q@{DMa+l=>rQKRA!otQ4!M_Wk1S3 zsrpE{DB<+XD=~caE#r2D9&(0umASGcyi!Ic=%JeJ(gzBzRoA))(!ua|Sq~}40A~&* zodY-9MQTkI7)sm$D+&NTD!$XsCA4R`edlB%VNMNyjRv4F+jgsvJ3+-M*B0)ULYR^M!o*l3vu}?%{ky(jngaqx=tAShnl$U|W6y5cw znmLKeika7b<6d-W!K{1ksA86WdlL?R@LRt~LWy>o534@;k;Fh~aZY)3F*N|W-!|E_ zzD}@|F=;)y%{;|wyjtI5fNo{6W?Y2S&Ui?iKP5|+_4yBf>W*1J^BAocec`6srQoFd2+Lca&4?Y$ z>1Sj&3LD#HP+*s(lv)Pj1#Yj-?$RQ921iwN(MWrauPLa0)%42*DGi!x!qp4Y`f z82!r5t>ZM_+n>t|&3b|w`UCx6c(bcJ^)+^K3*1OxQV4dfthBuu;|Y4!x9!Rtj9}>W zOEEh3beg3Fa^|__HN^~YSJyh|i~@*%yq@X^K93u=Aq+_&U&NdxPiis7xa{E}pBwpj zomv0)Bi*W!LE72Lc#eR+L!UzhIRk@x<12W7Et4(IS>Kd$!cdiRNJ+4OME{X&kjmW_ zBgW^LtZh1gF->M%5Pu%{y;{gCC=#yh?W6DPU2XQQ_!17=C$6dk@jrd|vDOA8d7uZ+h7RonB(D#>7=)1+3K_JMs0e7T4 zl6bnx)vw>J2YH~>zEb%khJ0e{kakUo^$e}5NANl*wqR{-n(LmY1&)wLgBda?W$OW+ zm1|*89_?oGx57+o{qEWV&fGQ4^8>;m<^@e3FoBa;(!D9h`*1DsWbXBZdF)Qu+?986 zChi>8bacjvU`z>z!RqMK$sj8pE7ov7{L-2y_%^ZQ&W2gK+eV^p-8)MnlwC8QWX z0Xa0Sbc~*j1&qi#5=z9~Z6x#aO=O%E-^dgb>?Q`CWRMW$-3^l)QwYIV*ewfOa}>~G zE0k03Ptji{`=X=AX(c1o<2UFTPEvbmP;7MPeLvS+Ln8A)eg&44Svrz4XJI^kZFKgP$0$Uof=FLlV_+wj3LTAmfSkpZB zNDIhmhqT;s(|96?21a7qSGstCZFKfiVS<{UaLNE0q+aw5Y)|1lNzY4kFns02SeBGd zIDPzce-ag7Un z($XQ*IN6%X!17GAU#sFLJq=S896`74UoZ`tx%UU3>HJE4Y%qOcAP{>>7a}ktwqANe z^KM(~0x8?t@g2N%_g1_#+9zSzAkwmL1S$zCb~|*CxJ@*9HU z^x|>mXdY(8Y~QSZflKf(d}hr(09DqCE*W*Lh@_kZ>ET5dV$GI-SYH)diX48c-#-2$ z>APVBYi{&<+RM*jA2;BCBt7CEN#`E@Bk3A#NCvcyTi>YT$K(d|zqDS)flKPQ-7#9o zu6bx*-hyaY#gUu+<+m)8f&t(#P`YiRI0jK$)G6s?9H?XwBOMN6w8$C6b-^Q3Nnsul ztK3!qz%ga>uqN#A7NdBo{M#X*4rWvaecrOO0Gg0rjMjW2R9^bSsc<$d#$#Y`cPR6 za)d|8C}?RclQd5PMV9bFrJ0+8nksWCSTD>+%;N>+8LL^kuBQtzpbQ&C^oA&}RQ7bz zzn=Fo~WXDxw*+O|x%zN{@TSG5XACZ z@YLc7;J#Fjb5Z1)*aL*+vv2p(3%`T5emv0Ck57JV)|KyH1!1e6bUaz8h!3_j>~A;L zt9{+xS!(1{c?f_0ubF344j$DVUjMI|b3bS7!)La(?Ef+I8aC~Eqkqg?%Wb+*2b<}VB_noI2SY6L`0B~B^qQ1{aEA2sJIW~QP;uK8#+gxvaFiGke!?Qqs! zjpN4fvp`kGLi4tpNzL_V3uQBBSB-pOLs5}_+pXDA{5nsw8dhb(JyA%yLrYS*b*Ywx zfbSgv-Z|Fo{P6hg+2h&E{N95n1Fm8VM4sqJr9^7fCgo$}o!Aq-vt7s^F^Bpi=5GI& zm~%Av^NsVLlhLjd!emf2hDU?bAQotBnqxK?8baq-CG)Q4%^UnEZx`&-U3UISt+q($b4})@#y{9?);TMv9*wDzMk=OWj8aTC z<PFl>nA_*^|R*UGv2w#AA3Isxi841SKq_L)rK7&wDs@S|;!jOGVg z?;hYjm_#0|Ht(Ges>vv^OoIL>yzFY*Oc2`of2mtudEPQ$s)t5b9^m$8uJt&F81%uL-t$*R03j4NOlvn1P2(<4F-@i+_(FH`m zDKHQa69^Cx{(q5jMG+x6MPZ-$$;1K%ppbnZwZ|+lh(!Ih2M{vJLuBx!6*zDZl0bj3 zo4beZbVt{x&!uO2*{v3fd8l?DAcx3&))&Vp>#aEhVHIbM#=eEXc4ApmESc^k6Q1Xg z`g6e{K?EkC?+Qz^alZ+O%NbJ>ve66DB023o)0xv>tkD>+#&b^fzy*&pX0Y4>8?oHW zmDo2v9Gq+bSTK89YkVr4O#}gn z>7BR;i&mU;Q6;`-N-5}4vDxNtt%5l2?I)@)=`_EbTGiu% z<|;p`>s!L&9{}=5!PhT67KPL}jgnW_UteXvUd12Rk3D~UIyT^~aD5Y#;8^OPc(}`4 z3$qFwl-*RqIL#yYYlfb-7kc#m%#7`y<4>~wA7gbjaS;(|m|1a|>3KLQI_jCJ*+xZ% zC8j+`xoIgnN!oGx21RknaauqG{kL+3IfgkV);XrRL+FWF`uRuN6*x*d$?0+F21QCL zYMCQw3F%fv$};AK>B(8CWtpkU;0R0-;kLhi=;+c}1BCvp8)|SMAhQ25G8+?T17ibc z1AwKIoo$Y?Lfi%e>?e(C9_tyPu5**TALi0_fwP~#Z_`$gh=ojSL0AG>DEy1J^N19` zl82?aclHx^lf!Ic4D(UdD105r*Nons|DbD_x}R}eSqu|)59(?khdg6jAXN>j5(EZw zHDpAR2(*SdRxmz7RegBmyVfzo6K@;n_fx;j+P!nr!)Qvzvx?v&D)J^ea7W2K4yhDO z7K9qu1%dt#ixX;I9_Qc)dYu5hPGADA0b#L_xB{o4(we?mod7&~iq;)M zIY^h9<|(=R#V^M^Es9088LQ!z;?0smSjg4`@u!F#Ff8VgtRG5hOAtm+VIX^YnbYC{ z9_h0gc8CQ(#+OT2sKm-uEJHuC^U1#9HKI}m;ibIOCpQXFx@;_GDZq9hrZlk!w=yhH zMINeCXQj6p5=%F4AQ(uj<-pd(mnXh$OfUrJwQUa!EdOfzW`>dX$hg{aiK9#fg%%2~LOGR9^^RTQS~hlBMfgoYN>; zVu>^@ro66g7QNOwfR>D5nccZP6A5q$m{nkR#)N&n2zaPHPf_jHxcC*I<8L;`z|aR{ zSEcPoa5VCUP^u4)2>$&G*4p}y&m2l?mtZ>!MR&R);j#MQ(a;Oy=!MN26@PD_0Z z^4F3My*F4=Kn4Qx(FX$h2m1flumJWRzqBu0H`xWZ1p&K zbJljo&Whxc3*}Kszn6&931})_XL!W<6#7(EQv;C-C}42ey1A`d>3t?S;me-7>&Z<5*icMYS8u!a%&yM!ae9?cufgp~jjeuwjl=9j~lkJv}W} zZ~w}%aXlT`fwLQyozkGW97Un{c}Z*kEAcy**JaUaR=pIy*v{9d9Ht6&s!4Yg&u$bC zK%FmIJ#Lg6+XI-PFZ*`wS)1Z%Kwm1l{o;`)?XgRIEk!cQ>B$gt^x(tPX>WM2$f|R{ zEW@Z2YOwxZN@n%eyFdHKDDpmRTZ|KE(&&3=PS|&hw>HnG5*P280e_iLTy*3x=^-L* zAi5PN!>~slJy#RyX+YvFd$gg~VY>n)KiH6X+;h%QoQ+s?=@(+nDp%XpXU;dRh~IBJ zGf!9d6gUK$wY9pxesTLXGcg7NTs34eqnkNmg&JBmM+6>j9S`QR*_=r)$cCZBUVwqqC4tyd@WDtQTa};jU}mAZbYHUNGW|@9QuU;P zCF^$FRY(B}I|*qD{3y|wTlJ^IH3|da=#z_D(7TtsFgp?h=%#+^>oBjjX3XU()9-#G zdySeQ3Ux z*eGXK^{CPB9ah{AV4l%O2WvV}{j-G88LJ1eyZYN;&gj3HO41-zzfB!M8l2i|H))+7 z!MA%&dl_e+Hr>WILefTu_;lchbPt_G%k}>@Oek!~P`e)ap5G(abMa zi*Dg2tLukmX8}XNcVR$v?t8G>i=cc9x@Xvfi$<0O31C+2O;M=OQ#j?<$HC3!WJqeL zfef6}!lzK^dyTkmtVcmm2yGM0rown;cuk@}Jfr9ulbbu@16 zYUD{k^pX~lZ}DqXPe9s|+FVJZciL-)j| zhN=RyDaR4arPQJ7%#7K`mL4KJ8uo0k7aRvII9P)+WoCmFWc0x#Q(twcRTz?#Wqo6j zUK{&99)m}ONd?^rVkL`FH5TPmsWw5z!37L6I+lB2RV=0Am}lg!dhgJ5U@r^1rc^Jm z?)Y;I32G)bIw)!ON6J+kVWm6b=Ogz3A)4ZB_#K-3X`m3%fjt%(@F1AKG?3Wml<08b z2sU$sfGILLZ(RjhjB^zR$%zzZcaxq!(%@IBg)l~$-vUZH5a}%cB*rik#ApbI(|}SB zQ0O9@P#%{+P}v91|l47CJ}+f+?qfXTz&Mt9^rl5nPiM`QzVz5`s}k84g~A7L8O zLpG0Yu61pgTf`2JB<3;sQ=tx29cQ z)j4rP-jpKYH*f$x+`S1`Z=g}UC{8?Nr)S7U!)kN6&Z@mr(1fY$bBw^8cjW#E*?|m zHR!V&+{YN{a3IBf`0c7Ju+1Bk2hIBVE7%=cN$u9`8QBw`Fh^-5g&mTN$Ri4N;N~G1 z_np9+P$K>dbVPKLCC`xN1i-)8z|58O(ouHTBJ`DE!)c@?Iy{lG;>l!0!*aQXT=G5a zL)7P?^*QTwkG&jWs=CD(z85v4{V=oKz8q!tV-1%lfC#Y3=X)r$A6h7L^?qs@hIU*u z#x|c*p~gxj-?J=CkBc;>q5#fiO`wFx(;}R&1$13!WlWeQGW2^2l`OA+Y>zitPYPH&pI5ci$I$Ljr*f}TAMv6B0N%uE#0@IEOTjM z-5|VEZyvTml_`Rs&A5~isKLw?XjpPnsM&}}7DMo8?K#YDc6P>Z!)%lY zOBfrefl#WGlvq@1Loh;L@8SI>R0%N$)(j!+_X@Zb^c|i~mxq%>u3^vD^Qle7?5FOU zO;8KA=cYfp5w>X!3AjmQL{q=?0XubIaveOOaApXi`8(AWIKd>icQ#Bh5Jja1VukNS z23%}WonIesDx|xmSUA%Ni+K>#xr^pCD%;$WivQAq=7_+@A}0h#82w}3Odxnl*(P{X zyFOF~Zb>;dAKLGct2}BCRi$NGrugKhl7#P!*T9x#R~3^_zs>fHl~kXjd&_^o;&k`0 zx$h-5WIrGU@fqIOfd=uRr<`5K(Ndcc9l4sA2so&ums(w*CL9Hueyq_F66j>-<$g4E z1$Su(c4rrJt*|*sS5?`gr#02JK}Gv1tGD*kMvPa5A3@rdfi!y5TqNi#t{j^Ni zp4KZtbR89bSBLhJ9*nb4hrZ62GSHZ5&ofMiwz5hdbiZUR?H1^PEs@eAPaqqv-87cY zNsLbP@o2V+Whr6n=a}L3%yYz>BWnjG?sf3)6V;XP$fH}JoGzTi>fQ}p^<*i3uV}1D zZa+$^f6Iqfu`<10ILOfEq@Juiiuf+(tm3F$nW<H}Xs5&t(KDZ>hzaz(I0ytRz6q5T zl7(~dDo+ZZ<<)wnf|T@b?ogt1LOzgTO|jFrz;sO-&g-qCf*NuEUGruqntVh7B?X=rsf`c=*^Z*yMbNq zUAK+Wx;9^SkumX*#wQpTl@cLb_tRMS&Xi~mFztz_r`T?~6h{wNUss2o+5scvwj$Uw zn}SpAqXqJ@DjF_+k@osK-EeUH5@y_*djgN&W@rpwO<@_w_g1?@8m6&I#ZjB_iYxYc z2+iXRFLiPCczF2ToEnPlmFIQZA26s_l=x8ICl>(-bLKN*?5~hwy>RTW?!Kaaeupm_ z*b1sYFPr728YmLas@3lUYPUEvF3xYxjjN3swDO_@WMe&6K@WgsVuXMz$%tU$?}j>` zF7cZea7y|n;_Cc3R!SBW`%^)tA*uzSF|Fg|jB0e@w7nlvtEFJPk0!xOetb5a*sV{f z@3_o3K+>O)|x`P zdpFKGPr94kT*{4q(NfFJWKWoiRL+w>!9CNpxWx(Y_0oV|b*fdNB6g1xp&}LuDSwPq zWO+Xw;pM6{#E;?V*+4k1p3v-g4U%Q+Z?AI%GnaKd)6a+EQ8%QK&*YzYrL|Y#8Lhie zeU}n16EygdhAGtHO60Ipd`i3gjyhCXk7lPn7i&nG}%Hbqt zz?n;cDhq*;Vw#$4B3>@_L+K@AIjBBt<&H~`Vs*4A()L=U0Nu6MKaC0%Ow<__f{pve zeJ>C}#Jqn&^xOF$9tSKTUu_{A0+L24C`}AkPUfC3Ur4}(enUg`59WK3S*d*jStGNs zis9E{+Zhb@qvmz8#hebttjC$}K5?toGqTkPjH)KiFBG;0?x?ehP#K|d2Tqd;o|)H1 zrR3%Si*YS5jx6pmdPW+fqg7SCq1qQ=0gm2#pR1Hz>5q~&j5}>_ao>n!nC`2w=MM=_ zvQ?ArPuK<7pd&^DoSZA_3&xf-rZg3=GzK$QPxj-7PZubw7l50QHLzAn4BhXfc<5H? z4picwMZ0NUmjeoN-w3=fguVTAU=mSwA3R)%MB9bgH}c_2EKA}zv~MbsLNZKjm@`lQ zjMXl|Rt?g7tSV~mj~$d?2+z)aU)zuGaS5v$2NBAH%fXom-O*orG(3jSDZ2q17uBS{ zCI>a(dH@!U>{14Ni%f!VTD$6d3tQ#-y?^#}e?s5rI6Q}hSF|Ir;3SSi;vW?SR&z3w zF<2J1o8mq0n#Y^NH$aCxGO(vzYCDv3!Ck{9njs9AQ6jWp-q?B(-QDg=<+W`c^rS^; zsLX3SSj>6{`WuyRdu%5BN&+=x{=GrZ|LDsAKL>cf}mHtfCEVxb!C-yW? zFra}<;MS{$hxwda0~^xGM;qm*ah|ox96(n04KDrY-{bjSXI+ zUDc&B#@U-Eh=!^>mGQLker0+8WnN;%1kfqrwE`uJ@J!#K2Q4A%I_1W%S(=tpsYfrz zoGWh|usH4>CdlqKSM-bBS^=GeWh7tPqS;f2ugIpkwYt||4D01YfZMY9=~nJl#u9|j zijC2lf12zq^_Y-2r_c^?W|f>N#~U>nE^0gNB@=nT$Zy5@yxN{b)a3o4kfnoMy^ann1L+f5t@vIoojlg?`L(QOqx+4&Y%MszG|egViC9vmPM< zaK2aAjcaF7__ihl=5|1l$iOGTP);YiUJ7##9RLf`oA4Gf7AXh7W|9WjP{>t|EF~DH|y_M z`(G?IjQ`B~pOE`+)ZaPuzfiaT1@&*K^xw$8L&bj~-LU`j=>9EY{2TdqwD>RN(7%v> Zf<}2MaEO22efzUx{z=z)=>EC;{{TVgp8)^> literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/certifi-2018.1.18-py2.py3-none-any.whl b/env/share/python-wheels/certifi-2018.1.18-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..5de10cf0525608f510b13c35ef238716421e69cc GIT binary patch literal 150807 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

    ;>YUS{A#%)2 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 YtzAjZ4x-=&2LMU1&q2X#4-UY804)@+ga7~l literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/chardet-3.0.4-py2.py3-none-any.whl b/env/share/python-wheels/chardet-3.0.4-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..2a9f0a95fbcf025eca21670145ca1febbd813069 GIT binary patch literal 133328 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

    lOB^utP3PxpPV>|tv2!@#E881e`TlFli&8;1g z_pj~dl;bI+m6D@Y+Gng%>vzmSJD~kOQ_s%neKD$&to)F}#9oAd*8_^{r{Wf!PWtYQ zl5&}Gnee`8`a0sGL-WLkd>qf8Iv3d=1akHOE@av#@R4#m>75CzZ2NGLDO}fuW6X^A zhdy_m4x4m6Xh!R;asPVY3|tV0tH-S!`8fNfChddIPX@({nw;cJ4;q~q-pNr*hWY*Y zl}R68gRnH{I-A!x1yv z8%Frv_9Rwv1S18~zQb^~KP3i)Pxhg%Qr>DBZ7sD7wW)2isdf0gJF7jeB968b5vst81~8zv)kyS`CMOC^e~mhapM&h&~7-tjge_S3diW zj-2ea#aAhm`SVcwj#lZYU)GgZb{s>au6PVv<*OqwqdB)-@4Wzzd3^#|EB{J7|1|Ig?C52tM6Y+~g6!zM?oN!uN;BXwV> z%iz(HHnBedJrfItHE)c7Y}nMvB1T!~&7zo~#!CbgUE&CRd6`K_HYajw;91AB{4+hy zgmifx@UWYDQ>t*vXP>>=)T%UR&lLSm5_3gpw$iNWyMr_kq5)nPtc>>8Vh7>AUdCvx z=na>{6{p@^7RD(HMlD8FB~>Y>DOY2U^!bZ!j?{Od;U(`fA7uP{ z?^#G0RIQS{y*_lb^g*N3%9fszAzo9gaIi7k+9Lc|&_lN~HyolW; z`MHzEgwMZArQlabD#f?#D z!abTP$bIZM`_B!{8w*SkO|@W{R!a}USZYO*B)QH>p%dNXvMqdJGEpvg_8T+6m~wX% zO{@zCDCIGdiYPSIJ3P-`Gtz5Ky5CRM4{(<_PU?m>=iAC+w5(cggONwL z0lH&+BrbMkMEU_kwpp|vp_!(TUFa@5{#6FJ&P?b%|2{D@W%7#5(3?NEl|56+K9KrN zObV;9Kv?^qqX#%WF#v_YV6YCcf`j=8pY>7-6r>uba0?QH2bHK-X%nQ`BDCr-6mnTH z=D;89_{sYne67$=m;wM^lUw(<$AUY8+8o2sbn`ap(U3P9`-ejFo)7GR=jHv5-M{8l zoO>h)dG^<%mCmOttv#h#DDPJ$u5Nya z^Ga>18XswT06bUo+r7M-*aF@lfx14u*g2Zlc#FD%;kz+k{KFMMf{ZP`Ory8!Lznvc zoe#tgfFb5ABeNJ1zyweoI<-al$Ry?01z62Fd;H^htJgKsyE4OJKUI5yN4_O2>lq_h zP{NS&VC92WLm7dY=zmJ?-UB)!$#o|cx3#B;m|~W*xXw(TIw05q!jd^^N%FO`J@wlG zWxQ%I(Oc=?>=IfwWYTeDQY$1F@Zi15a@L<6J#d2tuvadEG_NgcLt>iY$S6x_@B~4A z#d_CuU(B21Y_iGPpfKhRUfPQ-%V=G1(o4pk6!p9&uBmT*%)l;*o(pjSq_H-| zSa~2;IALffcT3g#Ge12aju!SoTdN0|h6l1wytp^>CqgU3W(ioo9L(>BFMb3}8vE|{ zrCzAr_E;_q^ac~j55=4msfb&Az)c!)&m3%-ANb>8w6I3cEvmcwYcIc}A=7f*Sa0LT z3i8l>rH{A?qw~QbQS{?N5AnY|jh(TDt(lXvfwPH?fswg| zt;v5LrPXijHrSCquY2}qy~7*ZwKffVGYEUL7A>O5beTNygM&+oIi)@ws*F5ye9%~`7D3UnGZXg9jY7) z&n3&H6&1^TlO&_Wvnxj$MBy}9F{H}%KcF&boN?jKQ?-F&-QF}d)~B(^XsR7DW5}Iv z?pLN;p>_kMT{lr()f?<_=8rKGUh9$l8OdO9SejIPI1gSY5com}54uKnNh%0X5cz91nEGk?q{|J+ zE0tgV3{G2=!$ykAg`!$WyCdyM9FEnl6Y?)a$fRzo972!ZY4WhAS9AT_^vlC-9!>f& z;D=b+#6%@C0^1o)bDAKfo$8vJUY61Q_#LWB>|6~@u*ye~!ujIHu&SYP>a$p5SBa!u z1kV=o@K%`VMBpA+lv*?kuPiPGNu{Bl5jP2X3AcGb0Q5V528$$v5j|x=xXB+#?|mKD zr_BpXvGiL)k0(f|RKSxrj3I59>Rp|9%({luUojcEO`F&OXwwx^T@Pul?Q-i;ESCS{ zV!Lby58>?HRuHfK22QN2GAwi2|C#{e#cja$H>+_C)w3}^v4^Mw%&1JzSa5dScuKKA zK^F#eMX;%1pSjZ{3aTgw4YS@?Ek1R&yhs<6CaR|#bFoeb1|RN!UZ<~IFexv-ni(G* z77KRP?NQ#`LNMTved&}1^=PVPqv)Glwx61VRu^8bp3gd-!xq@*29Q!x`4_MJ-X)Q_ zELmr%dg!I(^MMz{NZ7aw!yiBzb+fl3-N~Ksx#3g`=facg0MIC}klHTWi-|p)uB(z& zq+K2lF;p{4lddOm4uYz)8vIlNiCQT1i3d$o-iF$0=v% zJ^y?lsXi?HCHO1WnHSC5YVUW&X8_wuY1ePSkAR1cQaqI zVQw7{j<84@euwaxP0pd^hXLz3(ze2(1k|3iXZ$Sb7#+2ml{P2*WjieOYyqYH4p)u0 zw_gv_ZX!0vY}Z%Rcq1uh4WWN`oAp}hPqLRfs2`M%y=%45ET(JFBm3ufgK+}A5{Cu@B;sK46jmo zb>a41*UP>2=;(VMvs!2X?}~4{85qAgTQc$R61qwbGEh(RzA1Tv3JlW^Qvu)aySY}l zFekM<})Ghe&Kfx>Bp+_c? zKLHK4KLacBe-Ep6HueVp8B%}Z8SK^t{}a!UGZ-R4AM(2^=~zEpvI<3Tm2w}g`pTi} zydlbUrReJg?*W;ZEPlOf_2F*2JALiURe&E${N?UfqdUq}BGkc};XP{Zp(~HB%%5j9 z(bc?IZ$1o>02pY${pw)yt{3{_K@I|XMq<+rmpQDO`E^w+WKIw> zKUx^%;DMT_wn!M`DPRtp5K;=FG@KGl01h9BWK4_O%^3IdZo2^Qj;kS@KCNee%RAj< z4LG3w6hf-5ou%R10G2)(Bko;LI~^}om5B)Roj6%otPC%?2_`MT=?<+FG0G*=9L3EI>*h;Wx}#9NzDN#Sob-oW5J zWliQM6>KBWKhY01=SHKeeNXnBugsm;Z~-p;IWq_aZ(9QNDlH3plGqn}I4cH))_(7$ zZV$9B7Pp{XnLwc1YyetXj+ItXODpbl4r{p(M{yq1n4CA=`o@u5{}s`nt(Z!Y#RY=z zOI%;$mJ`7+toM}newRbvu5&tFNK;KV|;s}PrJ7D>KItn9fTiL25`$)QvP zB>#In`Dl>#s%z?6PAb})STYkTn)TGmeFs^JkDyX5`#lW`35$J!d+35a)Qo zcaJWjNjMGVA`EIo$)cW;D9dn#yt)Jak+_926~LFy-*+bYFcPM8$ENNaSCWM^V!q=K zJ8)`uZ<1h04Mcsh$rP+g0~@NCq&cFaK=wIfiSPJB5ez5Z-4B@w;4qjCkmk?vmc(Hg zbp8^rl*C#vL}xf2V2Ra{tt!N*)2I&Hf~IX6_xlWunugWsNQ13eg)b)k5F znw|()5!c$!Da|()n+(CfRaFLbEzoqAh5)*TaWXd2&0XQX!yTsQ6%YTL`3zPy*89^F ze17z&NdHxvCblj%PCqT7I!V@UpAjka<_*0tXC0RMZ?c*M4Vz#dJ&_P;)uJ-v7|zi0>7)z{6f!YpcBukzjSNH4?9;E!*b-gnNL3<)pc4nPZn? zalQCFJOeXp-N6})p3#IudnYTdsvPl?X>hVZGfAy!Wub(MAp zbg*c@aJ7DI_Kv^L-9}=h+_)MdiUGIeU_`w!mGu#o4DIu#e1XDtj!F}=r@vc|b_$^{ z+*~}b+44F;(wZ9VzCXE+*b1~Ox2)GTX;(%Mq@O@E-A_>qVUd20)F-dIwCnUdFW`6g zgcc#%Z}S(FO;s%v-fcjiTnWw<`Dm4y(68t%Qt{k}=DLpbMs@j41}ZN68nDNQL&4za zLJoFd=Cb<(Ezi+5$UywpPhb1v9~^7smZtal?iy_tTQKd9mgUc_dIYnmfS*{rUDEhh zyfSO(Qtz%S#%=GWdNBmqT^8r9nC+ymJNzT>?b_-?F3z>7CdVo3 zpVhwI;rj6|c+)6WCuSPs)v9I z5zm4p{j<$2ym2&l$=ICJ)ySvA@Er24*_M9U&xF-c{)}l|-Km4>jQ(#Qs#deH+yBuYOxI$ODS@M$2v{w5HAKi+sA@*> zg{n@`Z|NpD_H;M;_Hm|lY&Ly?OiuIiJWR3#F)(Bjv^wp0C}VkvxZ$+gbL7Aa^keT# zER)eLL$M60>(rrzGK=lvu-~)DD<4ZV1%_M8RXRU`ab)q{+(9e1iGni&FZc_6DYJ4L zYLhOQHlp$xhDzt3m99%Ae-i4aNhfcRgiPwgP5AsIWS}c!SapyjAUxLA`VobT zxj{l$z;r(??G}nX1v>!76krNp9nFd?FQ&B{fMn9%VUKxrsk#F=1hH`#QI5SDQwqv* z%Ou~Fn3`H>$zYKG%1pA5xq^DN1%*Q^U^!(Epdv%0h5IE%?sG67k8NkT5|=nyFGDPe zrT*&9KC(81c&+qZL8WUqi`y%$oR3&_Os3 zS5ju!982B>@J`aCt{i9qXZ0Mscnrlw1%nkm>iR9qCsV9p@}wm3|55f%QMN=&w{F?C zZQHhO+qSjJw#`+>D%-Yg+s3KgZaeqhf1juGH1lb;k&!tvBO{`JUGx<879^NO*F!D4 zQTUwujIKcC>nib-xD1;AWh^41N6AW1V2?N#;gKRm$#qZ8%2=2D*LG9)>7$GNE6>X} zAS{691ka)DrB;V1ty-<{5G>nbDp~BGs*~iB^2;Rz>=;IVhWYS(0+?V`BcZRYM&mIM z{PvopfjrrpBw~<}xU-T+OoqnQDwH@6X^2~2P@18N1z!3WRgr5kyQ#~^*Nq_qB>6vY zcNrM4f0f%yOAcOE9}KlNv=$yvJ#pWCwF_2Fg~^t%HL+GDE!I62CmI1!QBjx7*p-=o zaxi4)+v_gST^fgB^#C@I+Enz&6qU%uLeIfaK#M#xXISnfDgiT&&$gjdYe0S`Qz?Ot zu`~LgGF5=Eezp}`yQDQ`&4I+$lg&kyl0TjX4|ikmo_LmmJ{P#=%85IZ$Dr(6k|o+uE-OGXt2iN^U+V z5d578vCKXPx-{?AO&a`#&tuiio3|FpHUdtmK7=6*bgnF4Q&V6NcSJjOF zCiqdN#EhcE88fN6Ofd6F08ejLD}?+SH#T+kcOhAp_rCd=Xt%YS|6!)Y zi3x>RESjB*eY!VG`;^@)jn^OZ_JZ~?Gl_H4(O~!WYB*yWZEuhl+p}ts=6f*dd#|TI zxdq}h^7yhle$C>Up$ooi2z?)GSzySQk4II{@Xl(L@5&W;e{TFQ0X*_MR|VDyFaP_0 zeQ5SU85E-YCKPa#|CLlY8#~+nCKXp1w#xew2qQZWl*r3sKT}Z7{mmhC4FT8j4z0+|2KF^1Sr4YBuxl1fr z4*M6ZmH1unWUgP>t&sfMOEWc&g$FTYGd%JQ{f48+vhs_8kv1D@TeA*#-P}WzPkbzU z3KS1C5E{3POszv%6*d-s&L)4=3j2O)5D8DbiUpOUuaOAIu4Tw-Av+hPSIV|FQdLL`p8ZUO>zwY*X+PW(j zTYXoU??$C_kryq|Ci11RF@cV1QmuVB;IV*QvR#fLk?)?BTUeX(r}SEX>=qby3(JIY z-(7uYtu`AkxE}2v{bnr80AVPLP?VY4NPeX1LkP+7%$!Jo4Y|La&RbeL`QT?f3*e`I`-7!l;6qQf12c_))EGdrW zBwP7$bbx@5(3?XF=y7J0EjeC319Z4u7mpi#_|nGEoje1ufwdF$W-tBL?vXg9N@$K` z38=R)uT6DWxwvo*V{O&30PPA@&d)z|i)?%I91_RNoa@;E;HbmM>C`2UIJ8r2(5xqt z=Yndg@@41p($ZD|@>;^Byim~swB)P^eNX|%V|4EqNaYebLrf}(Iiy7B( zL|>G#Si{^N%Zy}Zwr?*e#?}hGbDmsfrV?h5wSzHvK-!#q1(h!MwqCHjSQTAR{7IXO zGO}SGAEcpED;PD8rF)XH+EbL$>2oS9LHUq4FUst@U|Az>9OO^@TIFlh5v#28b%6A} z!`m#0pb`>`nuaY5^INfVyNTytm*o=n;2!qte^_d}cjmJu}G5iN{VM-Ock&o??Z`OIv0cb6pEn+f@mr&!G@P{|!&|Nvy50*W~iqrMIW~ zd&H@&@_+xkQPE!uXX;dNQt?jrWD$p*LiyMc-yfK@O7ydVVC;>eiT0%))gc|3dlEcA zxUpT?0ft#ZK6<*_VKat$!=V_WQ|cgq=l{l1=v}NZg@U)`J_EeYRbIW7G}enooDEAS z)!U*~Xq>&jY=3^Z8ka$5*&TsM)Gurpnw%l#j(pcl+*SLPBS~MOP%G+%8u|z&GwCZ? zi{qr1LfWO({wV0xV}oD(l3E-VcF!;4We@7_9lvewbND!(?T#Sk1N0#@%LQP~C+Pn1 zq~@ncmbj&t_5@dtt&jc;CtL)*>WzOow(UBk1J*|1Mt&nu#7Izb@u^9m8?@RikU4WD zRvZ=Cz?@(=>FG`MwZ0Q8(Gywj5nR0Tp2hD&Q?;fBj~|82sDH9&OlkJv@%kEAd;>3e zr_ha?=;t%x0nlh9;4(9LH4z%-zux-O5(bSIgBw-dEuzCMI+NJj@NFv%l(j>{2MHAA z+{p}KBjfCi(7N0L9B3^sxrYQ+{0;g)J5dDegR@k>iF(OzC+h!SGBR~Fw)+1@g{#&4 z?bjs`zVhT5tyEB5f}yMB+R4t(AmW2l_4~zCRYaGK&{iwgL_01T9~XACH!y7SSI(_O zp|*V=%#NontLW+E_+2)-ZeYuItlh)(((FEpp24~Pbp6$d@7ZUWH=-no`dfXR9bC}# zPF5JsnyjZ3-XvxUekExL8jt%uN!+xTxfpZ_3AY=znHg`(k-B`L5gD&pP~2C!O_9?X zkUlI`c2RIVdCxi340%vbU5dM62CYslz2p{?X}|Lg8JTno)>Ify24`*254$qslWR7w zHgClkRXwk&+%XI_7jQPif;OiV#j1-$)M$bl)8bZQlFDBkF(|{_UB?;O=!R%x$xbhb(PpmfQgWw5pob2=Mma@xwGW5B z-Xr$4ktM4x`0)UyNgk#5Zxufa3TLCV>jA)f93w17WQ1c4b+^> zZCMD>VzrR@)$(4okg?>-4HMUH5ZrU@NL~)|kUG)b0VP|5lAdfbA!e{Vi6^fR^jgSK zKTj$i$3wfIFybUkJ(pQwP`1h3hm7gXVk1E(jxV1@p`GHo>?peSHPqVU%Hp$~KZ+w0 zknxLC1cEv*Bbf}GIkK#nD~z;yjqcS~Vgun7v(%-F+;sqI=)Tk0Fx}0rOvv|Ue6C~!lHAL=0W$>M*ZugfacmkHI-9}%P&a*;BTIcW1-L2y z@oyp}xMwia1pwP7z=-DB@+(n-BsP<2&n{Ks%^@sB2u0Ac6BHz1mv;V!SUmZP!LfGm+22zcxPql$(g-(}#!;XBs?z9`3MsA9=k)}$WVgYL! zGWvbr+!iTaPWE6+&5i9?2-L0FUNc!w3N*0NdoOPeYt2KycKh)AImQwhIbr@g(tLQa z86YY2sF!!?d*caQVO*hwC%6kNz?SNt(!g<<71L33UId)vZB@eG@oAmb+{`x{!)}vo z4^gAq`6S6r^u>XRm3R4RwdfR4G4)2Hr>5V<65L~BRpl_|P)!I&mrXL1cC7jpe*7w_%t7J8`;dZKBUk9g zm8lalfVhGY`)M%C+mODO^}8!l#D7RdXI=zc#iACrZ^RZ1$xq*U2768pz6-O^JjN6LM$+7~erWMVm+0-*sQ&lU^-&Pm)9`n;`JCmy${?=B)=vN1l{nKn4plrcwCAN( zB7$DbDt-KKm2^!LH6WP0HA5Y&#o<>F7DsxK<$GNjw)e01=p7H}vy@q}E=k&lim8~` z@KKEPakci&xB4~z=iQ~Gr_b~5UeXEt#Mg*C{%7@PQhke@T?+b*`_Y->&&2onegh9j z=T^#>>)YAw&d0<=)aTdUKw0HiR#etNeP`R|O^w}n7LN1F;l<*=%C9Lt^Y6M3S9j0X zR_@e+4yOm$OwRAI>*M#Sp^>d0q7Hr?-IJMvk%2jU$yOe2oR$~+*p8^It&RKle<(kl zi$jQ7`1~hIH}>Q1@OEkIADJZGoS$}W?w*>{nBKb6?kgP!wH+-Ra(Fm3cCjBTc}`h7 zx;x)#KFZ_r=p+8g<{uOKu^;e9a*}ZN<5LAZA3hJ?4o{{(lob|Rs{As)1azI6w05)Z?KrS7k; zkB$62yKKKsRBl|EJl>i+dtP1Bto;6Ml!>N9xg^Bp{rqy}cyzw@{hY_~fqqYXC#7;= z%JS{1RenSA;v>l|X&nEZSGLIC`K3{Y6wro1mZyw=y+?XJjt)NTz_QK1wcGGi z{>AAUp$X3YoMTZ*k8g(k=ThJE^)T#*`0pl{Wd97kg4*@@*4=G^PN!G`<7e{omp=Ou zaA)ru*^p)Am@z>Jc{q2N#__Bs{oAb%exP$xI z8+Ym3#SPw@cg5YujjLHd!qr98wzl!~>@vUJQw`nB_BGu&yuK}Z4~KaEkv_ZBg2uN} zccpvxXKT()+MS)iHP6}E&DqK)rHpT(V=2(xtG=1v#kUO8h3`FPW@Mcm{7(M>y z)#p-FUS1Aw>&xpBy!niNcHWl%+y3QQlKRQZy}zVoH}@ys_4d~Yygo1gM_kw&pE`8# z)9%+0Vv?lu+f14G-O>KjQBAgAMzUNIb6&TX%lGY$J}>Xj-kzu2_jPeHSMIUDFrN`e zwQ-)jwDyIiuGNfqH??t9nJM18Wdv4dWtk~vDh~VM%4uxWg3|KQBMBwVXXyFtJjcje z<8tPW5yso>eJv;X%*CL-q!*SNpA3%~9+HNkSxP?itpwXc!o*5y9Hy99DU31_j`?Wx zSoq^cX0bGfu?Z<;<3iHBHXZ2Auk#Bdt@sOIH`-3$K>AH8DLbNU1$BokWOTT-CgS|C zqI^)(@l9?Ay|tg*JVVQIZ$q8gv|7WnZr~~DA2|6 zlM*6tG+l(HeyJ#~dtIdL#Zw?(T9d%X{mtoAbs2Tu;h4RalF(Xlt#!R`wp2k zu$#(RBqUW;_wf`_y4WSYV#p)*XTz&&^Ud(2;ZbW`daD#(zbdg<-*`ZY_NAq3`L6N|oMfvLuk~6-r^*t!wAe>wX8t!D?|YuP*;1&^nvh zs!Wjdffj|c4?fs=+HBzo;QRwdVl*JqHjy zJgjw2(E`(6ov%HhC|=ANj6)RIxZZHah)$R9Jm&-$?L$7Ws)2j~2AIlg#3qvO!odcg zI|#ICZ5gn|HAa?SNTc=&@J=QR1PM>At#?=8dLQU2UkCYZG=|9~U=(16ief%e4?!^R zxq@&Vj(q!O9l!ES3NgA<5eAI#$!}LylHm{rYdy0U)sBno4lI zW`vaLR>Rx5lj*PQmhii4T*t0Wy>Zhq5v&xjtDISgX?R;O2CjLSs6hageYq6!k&>i= z&~JIk1#pGg{`_yZa3xT{fK58_aM7|M1E8ZJ41Bt9t7XM)Pc=wZITHs+mP48xM7lbk zah8GmcZl$W!>h&Z5XUkJt3=yA=HMou9V4hc>i%s;WCwtE1_okEx;fig_=m1y2pgE6 ziXccV#OkZQ9cD5Ty4Aa_CcBskGA#lOmlnX`1AQY*HD4y~8*2IPLr(BNqyy@^W+WdZ z8P;Jir#*zNS|tM}xVbD1@Sk)mdkNDeUNv9L7BT|Rg4%-QSSl_BJ3niyCF}|_Jy6WD zbA!QXeiwp&S@>>1{^0oB`K#oxXsVTX_XEeJIwnlc4q$~Nkz9u60DGaBwBoOruJ!*6 z8R~YK3u)|@1;XvxSDVOfkSkE5FCmZ+CfkaM2th1~0BlCmJ}%`yvGXw{XNg$MncYpM zqUfD0IBsHm`SJ5u#`0X7O-4qL5HYIlT~cV`;f23#neO%DavrpoYt zthsQd22CmSMa)zXC1U0P&n;qSN3CgGBZEc;hcaLYiViG8A<_X9a-J~Ydy@#JnCMW& z0S#@0Q-fmUBNn$2kc7~X?fzrs0>mc9#0eG6Wgy_n`dCiUHg_v=rs|pq$qV&E2Qt$u zd7q$2pBKX)lSLv;_FQ_z$;BV9WaGcrIqHBIFT@lcI$36DtCD9KM(~{7FgBB34ouCX zVhg7gUVtHueZVw*2z*JFDBi1xnmA@lmEZ^s3AU&RwRm?rXC@+}W@=OMu3ABZLz8`q zWO6RJo~i8?C^C)#-fr+MOI^}Bzl7X&ZYZE{ZxUY)C+J1A3XA4f88xza*W;E+iLlC~U znp>_?MPRC^t6{s2Y}6tIN{vOQb(Nu^y-MCoa}vUv@jhT!pNKW7S2t@_A%Ic6Wu=aS zZkrueg_?P8U)bY+hblitzMrjtjS|?+APoMQ*DL`sh>1whCSQrg zzMd8&6*CB+%2Z|nq8FL4-R_8-pf<<4XPKG0{i<%(uz;F5@l;I4a?D)i!Zf~>h%>(! zY3%`+C})$xstK;2h+0GOs)=K&$_Hx0*8|F`gfIi1NqOZDJu*lYJ%50}Ru38;9k^v( zO)0t9Qkr9ok3c08R|0hfXVGIIRR@t_Q0T=R@0ch}D2tdGfJt(nBmzm19Arh3(SmC| z8DS~LMW%-Z;T6#;PPq^QPZ1T?5Cc*%)O*1y9IrnPfo-;C2Dw~OF6AWD7u2$4YLp_x ziZNY@#<)W&xZ%Lu^~lpBiqY+<6W^}cVWs6lv+3>ZdwMai#V**H6dytO33{)c4o&PT zv0zJKZord}(1uxA#2rhDjWodkj`0X)#45^A>C|i1P$cDQ6|dsCJRMBdlo)28KMSe} z=lZnZuuhK54Kq10=LH>4$+{TmWyNl@hG!kJLrhF+sbf0VOcBV~r3C&+AAL9!OeGZ3 zYlWS?@v1ulNM1$d3=PfUAzBgvA$U0SzJSVHD2vKBy!CDQT4g}$NSA{P4ES^sWXp;hD9zoWvn#b=2fC_ko2mnef;LI>g z88X3rpmgh8#1+RZb0slZ(Rh`!#GschgF3bESY?)2X$vn~?7GElO?c%L1L92LwM;;y zH@x5ut7V_!k6IOPjY+6L{{kk1uZaZ19Mt0o9RjaF2MH6Bl6|L4k;w?qP(T6}n#wH8 zFUPP!tigF$@CQCr;TT~oEj`@}bwks{j4nL{3W`FGoI?atm-+@k+!Y2am@=1Wmc+Bu zvN>#ZnnC><{n|hT38FPw;gTs#iK0O?DCPjY(QAvw8LGtbXIdC^q)|q7;glj2TPT?& zgud8RgRq0qeq~i9k=zx>BZAyfH6IfgV4*20)P>EfG{soQxDgLz1^|DC?J}_XX0SvK z3kPpj`H3mE=U$ocM*BqWGg80{rKHsL_WDp}j>0qjS+X3powE?C#^s3vQ@AzY6dkj; zhcbw6><`$%dVZ5sk+>TNt2>q*I7XatD)U7Z z=k6F1xvfLMJd+1I&Nju{SAJIWFx~$nh=8L1X*m|KhH;@miVq!^0)9Kxoh0h93k<=Y zXcDuW2r4f!ImE0L)di#yK406p4vDCa!uR9q$7_i$qh&X_6 zya1$6F;*nVP6|LPa3;(WV5CMTyLZ1&Sf0po( zMW#Ez7HEY-@gk!u+RXTPVem+CEk4ZC%8X3PoNFoy{-0^_Uy{&_A^;-jkYDc+vn>t% zIz$nMc&bEZu~;*c)KoWu5D>5ZDXc-hw^9_K#1{DVW*+^D91;Kb0QG4Htrz+UZ8XAc zhh6ldlu}HZyXM(TnFAAZf`h-_iM!EJeK9H`&ezSHNu=x2uCwHU;_{v1@aVV6t30BX zL@@Hb?8u9RYLvZ+Zgdx;b=1%{=17uiz8T#k5O}e8_8q9Kz(9tOj8sw8a1Aq;Ft0#) ztwV^LY!Vd~ngDw!d>o1}vAO+;QQabYLLv^YxXpZ=Khkr5--hvWhUGz+9BBzTP~hS+ z`klJ4UA`v~xWT$j!=BpElC(aH5ft&9q8HRl4qkbp8e?mKdwpPXCeUb9Bhr zjG!stk=K!wVSW_o@m3%FE$Hqk4wxH!v!)q=>9945pG&>!@t&3DbF2Hy6keF53m5py&u9jzmgr!BGJ*M=|{Tmn8bY-&>bI zfaz846`q{vZNhTA+>C6pkw!pO7qbIqUFt4`uS`UQvWrWrZJ&uz4$!xL znVUi`DczTMDHBLx4OFCS(NRBPKs>68(D;{jU^8@|y+6A=l}n<6pV;#TVL2XRsp6SXhS9~)>f{(x;85`;Jlj|&_LIiZWS<8BoOE6Fu!e#RMQsNj(w2w{`%ao%Cm{~Y7NG+T#+H#APNY1H1g~Tnmfp!k z9PjU=3Y?!zJu}Gw0dU*sPX^i)f@aRk&^Vt0a!ww@vwxZ$#un7epWolBbK!i>_cm=* zE@pVp@ObSDf-!l#-B^!W;I_7nT{OP;SxXHwAeVwvc-7wv(%9wT1f5?3j|PZi!z8;X z5v`!H@r<$zVJl!tf#5-rOE+@L1<3(YaqLH5P@DVri+wQ9HV4!x8V5-Zc9ym#?nyPO^tX4Gsz-lkEGXiRFX zlD=wdFeBc33{9duGNF{&6C@te1=vn#`zj8>ADx!_#C9|%4oY~y(5SKe>^Vf!TskVNL6*l1-$h|bvT9q zjmyhtmzGYLwtSRiWl&<;Fi6g5HRk{%-zz2(h~LI~fgg%U2#E!miS_aCz-PPwzm2-f5QLIhA$at z+AGJeMqu%GZ0NrlzSd6v?`&p@%7)#qM!@&wS0jK9?$GFn4sF9uQP*HpCg$_Uq-Zor zK$Gt!{$ck}k}A8m4Tk+vhL82bQcQPbAoaiNMz#jaMmk{gql4 z8g^+$igkHN;pm~vyrQL_M2U#OWhT>V&@!V-aY2X zrka*nzjP6<-_`Q!7JPuE-Q{+!CR(nu))M#NPAyV%-}-W^)j>J(meS3`Ne`eSvh_PiJSVbx!;)rYYbxmu5}Mmt;CaO^hJPN$B2`mW z=USv>m@$^o-xIhByi{5!W6_W;-4YgtkQ+Sx!+`cyGG?mCUMh7$QD%6xmU{hnZ^1>< z*v;VoVc>c;DKQD(YnWBxCOI_P+Soa(S*;>S!iiW|0Q4xo1Zwo}Y<`U|_X*_%ZQnHm z8>K~;#NNXCyEt!LT%NJOzswfoJct*dVzNYKEDDGK=}?}%te+v>8MmdgAC5M z%0b%@yfeX72kPfqdO3l>&ZNa0}$#NN1 zG~^Ob!je6NGS3r@USz=uXPilY@J53PA_DoKxGy#-O_WDM2cU^Xk@4?W6XSbEZ&3>@ zn6e<&$+VtbKPZyWi@dh{QyDgX`c$J=oDJ$rpc&8BEp4x61Vc=fX6_ES#lu}yxT^}0c~8dm3l~fh<;>##I94u=Cp*~LZ!=%&kj1(N z+6JysP{@*|%4NFYRPGzt$5z()aoyy%H%39oLAIP|aKKR&8@wC|ZRO~<`HlM0i&AAK z`U`x}uN=L4v<+E3GF(^v6uJ}KTqq}m<(6tCf7UBZbT?$$Ijn3s`#8f2L3Y&)zFWOB z<7LgVSLglDy*9Zaxx~x`01)E+f3*Kx-2Zp`FJ~*3Y^bSp=7LH|sHnaK$o$h(Wc`4a z6{Axd8+d`GfrtF>8J*0SEP6*fqfw3D@`DHo-q`j$47jMeZ$?4_;>C;ZP2^42%lDK2 zMi~Cj-I@7DnLPjd>pyz_ZNAUPhq!O!5BeJ4o8zvlH+T1qleicEF8_!9r{}qW%8sk= ztLL(?AK#z%r>NJjj~jm<=b!tbj03m1_B&&7O`p?jMJjmyQ*9 z{!Lyx_#L~O@1bs?QWmDfvq3b%U_Ia%iYBRJbc_Y60p5K56^T@k58xf-Szd- z^VCf2>r9;2-KYltCr;e^_11G`oL^VT0}kV0Pv_^KtFeof4dxo(4&DxL@0Zt?4)q6F zJ}-}l>$~qP`~z11r{|TPm>!#rJUyOo+mHS4C;eZ<`_A@`QRq#xJNyPZf6vGD-jvsm zM#aj@4o|noXNKy>^WC+b_s8v3N1l;U&xW7htE2bZ{?xO_%lY>e4jU*s;FzHQ!iS4@VTf2X(e3x@r}P~1*uw?8Jk zzt_+G_0&ek)zHQj`1kX3hkw-~xy-L2O~O@D7{>O}*Or?*e%`}n&kk?*@4DaqxbWJ> zcytWu{hSYRALDnt0keN|k$pWpbGaSdwLkpvZv*-9_=Tf>VTXOuE%SXN0uM)hqZl>$ zI=6hiK3{L(>+cLhI9@%Ul+FBnJ=Esf%kzCqJfD!yD%S`eA{?8_}(3^ zJ(S`5KAk0*Z=mb*e(XQc^M4y`ba!@iq^1vjsz-fJAo*hp`~4tLznx!iMSZN;pH%*k zHow@)+&)!ab)ftAMA`azy5l1?bwQxM?VbG8^7?$;9@lo;Z{Ej&{zl{H>iKwY>*{&o zz;{$mVu%0AF8V(1s|&Wk|E=$8SxM({e`-f>1kDGt#oy`27Upa0A}nlV<7yzR<)-yf zUVeX@x2&-zZ#=j8s*?VI{%6U5VYvPbkS}C$GQb&q5UY4=;=Y#aPrx`Zv1c67UV0`}gbd z(bq-mt-sI9^%i`O?@ifnw05tT;_y2^&RU4Sjz3xt?%02Z|0&~bJb!=uG+*H_X2+rU zk6*QZFTPuRmY4W^m9M;&HJ-G8vrIElv0uAZ@#l2K>@V~Cy1p2F43M77Tw`AJe0^hG zu=hya)cSvWefWM06g|?IVbp%kymUoi8?*JisaAS>@qa&E?A+iNcgezjyoE6&*ZwRW z==uEdI(*)VXFY!O^7cS}|9HmLdj5)|@7d^vwk|V;u#s)sDbt>@ zRXw-H$j`hoGW~Gbc}sfx%zEpzoNPE1w{p1MvBmMy$@#PoJwImJOVQK%Q6DuQVhs$X zj@0tv)h~HrBkAqyQ`+$!7;?sVWg+F^U3JnP?5@4F(z?b)#c3_~+HR7Np{Wm=l7f|g zAj((Yo#Oo2wj(8LZespMTj-EI>8su_7-s!m8n&G(tL-oA{0sboC5^Z;yu-}DUz7N5 z%Z23rTLihMZQS|{y%wXJnK6^&ZMtu)8kly{o-wryun#N%p;J$6DYZmA|m z{Ny3k{1>2Lbu`E19H}iH7c~G>=W*APoD;`v?Yvu$&wfYt#dbq0X2qR_^zv(h(codU zznp|F!C0mNpq|x5GtIFzOwCkI%*U&P2R8jy`f%Nr%UI9MM(XFX&Fl7IVj8#piU{p- zNq1yWv~OSHqDGCUcmggplNhNuEKB3~nL4pMhnm5S7?TcCoAb>4Z-X%jPbtM}>rLDA z(IZa_la7s#?bak|rBbN>oO+v z8A@BpA&e1O8hUNaiwy7RTq&AyH;S6kyRpk>=1}V@w@W=62}AX{VYH2OFQXXeeb9TH z*Ubl6sA_SE1E`SB;p+NzIHaf`j1XL7k`f-g`jo)py3TOzs{ZgW+`DnwTFgAl&0rd| zRCH)X?(-c_KC6V)-?t*eEd-_fxEY_P5e(9Ps0PspC3jcJym`dbgqEUZRMschd4y*LzNgSsTNsow(4~zAtow$*b5f`A z6C6U@)@x}v$o?ZGj>2(M@E?DIa7N9eQQ(b@Ac(1=uOdFUTZV~+KoHUftHGa90tGPQ{^$<1<4AO$Cq1w_L`-oTMcyI( zuCD$!#5SvK@mC&$29!Q*H{IM2%b@1XVF!Kw#0Z`8H`cpe!LAclbQSAs!|5WO%Aa1h zRI!{?iAXb$o(2;_E6VVakerWGo6dNt_gJr^?2L?}7%>7FR-HyRHv&{}dLh=VCBRdC zoi}tPX3o|$cv?t$lz5I+fgjL$hU10HNY=X7|fe=7(; z^N@)e=~L(oH8hQ1x{M)>i?HH`>4GgTJg}YB+vYmcb>|kcJN&91DhnO&>&`M2q8v&! zC}1I#66(0HrSX^*TlP)2GN!wq`UV(M3Fm1dr@M?gjLdv#${{8YLvweK{E9;Dh6)E^ z#nW3E!t|nEOjVVZ%9MBPQ}_+Ynr1&6vJY z0+9h^0p6wp25wuQ2wr-*NxJbVQwWT(JVFRFHO6jsqupQmSk-WUTFzMXE=WRE+FOG^ ztTj{^V9>;36m2=zH?uN>a7b$L(FjO&NU`%E7NxpWxRC2a5DR*Qe z!WHPLMkS+9mHz&a6Uu4+=ls*!ctvOp8H9+9c*7Yh1>NGdB0tvHacuBc^K@&=o=|jw3@>6>(0-q;b0H+JpzNk#|KA3Fc>j?atWD3#!?ZjRb17(jX6_Q z4k0vhBNk(bN_>EA3BKoQa|L}0@k%F;J8y-}y>$H-HIKkooN~`tBn<>p&v+z$2##USM z1jVP&8W#+>8bt2~%8-;^ORJ&9FXwh6a9ARuROkZ*KpJJyOp8X*D-4QL+$eq4yMh(7+2qZU zJOK&}!O;%kl+BTfcIVV+X+!3e$Y5m%B;pQD$jk@D<4li7CJ%BbG&E*5x!(aLBs%;D z5%uB{P?Drph>@!v<gst(Ebs8sCEJx^e1@$kl@?1Jv+cXkJ?3pgFBOe)Oyexc< zUDVZsr#4|;88$Fx`G$+>FvkXvCgi;s9rlIc&T+}WbSxVX$65F(Pgv^c9bSrZ3tbjT}IFm*hsn$wy>B zx$s=kh~63;l;V1z43CxmHq{Z~qZC}<>5BZky2L1HU-ejh44B|O-OO+y?e)_XIBK0d$L zC%@F2(PfUzusW&@F5yR`<_y4a>{3x_0{hK^HNKacuqGyiO=wj%s9jp{dqLM{MfQkn zmRrroC!h`oD@~|aPR>llwk~uirel*BOmMs7ID?W%2=oRu(g15xNLO%Aus4VrA^~u` zVl^@;{qHNi8|v8v&9^0hStAzzeK|g@)Jz0~b<2uU@SMRzc=_mcu!&q33*p7~teKG9 zz<`lKDYlS=%pYV1Wey_pfCCXO{3eHKuLDrK9@bfa`hGcTV8p*v+RC?bA z1#)l626r7XilE7Gwo11|kN75g5?BeT;=Oh@WzAWHq7x&E(~E>V&zv;~fi=cutT5=V zUptQB$f3AFczuA`KNdzCpZRrKms#b=0rYmLp8yZ%y@MY;G@>9hy80-4-Z1V|`01m; zK>;8cNfDfOWrml5l&Zu`_z&l2oI;8i3 z_@Jm+z~X}#cZ|!yuRMV}Hj<~{aZ>A=pt5V9R}6E9i3z^VEg8>yg29^W>z%)U3AQ=a zeq?B(8Sf&5bRSSH$DcVz=wM|G>ib|fDE5rkf?9aVq9_ISd)sF0>j_@{AEM?IK>(BjkY6NH+75L3@c&=4LILI~<|y(^TnD zP&ffgFlm=4EC$#R8)EHdn}4Y$M^$>me1)Uok~;z?g5n32D15>HJ?K}R^tDGA?v_`@ zM60Sobg0=g;W6M*2vw;N)}Se`Uj3^?JM7YgLG|xSQci$~w_7nnOAmfdn_!b6NdS%zne1PB2IaB~o&|pwm98XfDW=;k4!fwIa8J4!Y(8Xm9WQ4eZk>iF%sh~1fS|+7*)$cjvHcPOPXmKMvM+yv!N*=Ab!Sq zC9a=kM7Ag3=#x$=TVl#_B(HMk6KufAM(piYb6Cn>jxUw!EX3Q_bzEo1?9$)c!9ZHqz6=2|fupFx}{ir!3C@~lo4Y{&@Z~~z@YLqjNhO%13_*cG3(lhx_VTYo)MKiiPa1pcR zxp-)h{g2U--g0kpaK%yLK+ge_!YpJt38J-)sIw`k(ki=AnKQj%n;B)dEsJIs;PQqsYc1PR7%L)OXz5%2SV~y z1Rd*vEr}dN1u9(_ga+&EDHUe*HCxf9Q@nvLl#olsNty9b(h0sqM}MOia3yx)nRaV! z|C0yufjn-~h7$M6OPE%XQwbnWXuS}iShw5%lV!QVaRO1%Fm53oxvSMMF5Hro#{lE0 z0bhpgOrCTToi9%V3J~lmlZF z*-0&)A^ZT!3PL4Yq({M=_tb0=>J8G4qm;7hZ9;^1v*aohZ1#3x3P0AB9wzWw6!t;T z7Yc%xHHDLr{438Xb~|QRI>X9atp+`24$4v0uj$)MZK{cSd0t@32bo5Hfo8crC6@9x zVBKWT*Xa#bbxke}z1OV8XL6cBqS?wN+z5F+h}rbv;Ol;#)tb#ylx1fVh)NhWjD`%h zn5DYFQ)CBLBmdkIu0Eu{JxM+@bh!y7C7=Y~4r;IYINlW~Lt4cXO3!T|+r`Q#!^nn= zBU~p$6Gdhca=6Cg(0UkzW{oFKu7;J@w|0!_`S8DR`W}d&bSi^wSWh5Dl-74>dQh1 zEu8MEEq1fdj!z73=$0P7Rw?SLqpITyo9N1ZienE{W&ur;Ho`Y#ds&%uscg@%KZ{9N zbA_6GlYN-XvE$h1D~EAd>ol-T&PJXS_pO*|;S5n{qB2JCujbs%5*d7>eL1(BKMe2w z-7JJZx->zHt4hny+8OgOkmuSKVXw1d`5z@r%&mJk`2+5L1fT0gr7}o|5I*Yu(kTmt zeIeUe8jE@=oKO@MlI_(!Vc3cFpf3R`4#&J;PcXAxINx*5jOe@itDvjhEFM69p_b$G z%l$!Gh2vpqs4YqVwy=h)1IDFTgsAQ3JEnG;w3M4itr`Q;@@Bwem!uo}p-)TcE@l9> z^fJJICa*&AB4Ie>ZeaHn#uXLaT1R>7X5^_KT>5*3YjhPdLKHdA3x{71Q#a|E!VNQhHMYEq*$NkW3J-k`;{n)eRctx8*%jL`d?p zvMxLUM2z+-D$RwMxo(3^JXChrk7~M&S%eIF7eL&>02D zvZJGjR1@UtNsSkQW@%s_bqT&vov zmNGXIS*paFBE!>cM!{ey;0L)4|23$GTW|o?D=2dkb!6X3ega?EdNmz4m-#Nr_kSyX2n)v&hb;i5yslS@@ab@ zk$qQ1(PAB5wq2ab8Y@98169!ud*j5i$J<(#22$NTtBFN&l1rCJrxtFnK7Mo4 zl^HR!X+G{POr-|Hn2ugvPL^UWe>n<&0yrw;)+N$506XOhgVT&5&8Iw59EuzvqJY(m zrqYl2)JmF>7|nD^zYVcfI&ccyst*y>SjXOZG^p=onvF?p_G-GDsyC=`<3i5M>YhRmiRzxzL3Fee7Pr zSzz3fPl0A4zkm>iHjy3XE1#&?Z*tbMW1ENkX|RPZgWQjzh}p@g4|eLgS+)bNqmCF& ze=~%sE1jwaaiF}#kIDGm(>lg#aL)~3O1c~GisY{rCkXmpsi-kiLi9^yytHF7EwjY_ z$hmr9=T?#YU}#NBG60GJX@Ri{>Xby6hWAbZtLj$uVde{wcj&HVJ#I_dGMS@@&7JYh zYxw~WCmhNTIT7&~YH$IOqX%KpA~uo(R-zHdb7Ci)T0*umYy#7rWmQtdHpvlTYeH=c za0-RzY@k$O51nEN@Q3gGPFqe{vVi(`ODf5a&@dN6XfSWv&qkF44rr5~)9|gs&zaYg@uZDn(Ms8- z08tftgJN0xNgV74Wie9#8=U~^m^H~zjkut2 zMSDe^X$X*Om*Gk4+C~UVRel4XmtVEU(!nd+goL5CFl6~>8-o}r0*=wBULLAj?Z9Ho z?rg-~)XY*)K7vxCXp-ewA_W^LDuxi7KWo={n0YuO9uTl<+~zO@uu!Q*ku0 z%vQ}(M2Ih%U55vURTLdhQN5MrNiDx--nI;Lm#2*#UvY#Kr0Yk8&I6aF^|T5R;P@f& ztKTw2`<_lF3ZKWbu*Y7qjbiB?!&t(NHp;VxQ>>(bg6F(43XCrP$n%%V2P*uSJj(tf zmN&Od`+8gpbzO+>Odbt6!QN>w{R2Iv)Su3@@0=(sYI56I7pw!zlvpW_9-|_#hU0|^ z@sNY5^G7kqSHWG4`&I5q)6_7kG6qCU^(mPdXgOv23)Wz@ZYzx;V6u2R+3}rbXtsbZ zCSYR))_A?gUBEn*{>sKz9Nnm4BdrmLzTGZPaN6H)xH4_y4GRg^nA%7iA!b&tOaBwI zXLju?!fk7ufj;FT_Us@3B#Dvt4FrQW;)*@nMT_9PEvS?!lwnKZs+rY9pHZ`sX?Ix+ zAp$fIT8a{3}fm52&c@CqS z{GsTLGCEgQfho3qodkrfRvoC|+62ZKni^ z$^{lNGP^?y_DJoABw+W{ER$TY4x2C)hm?L50~QKQJ!A7{zUdR~yaYZ5pZ!ech@*sx z@WxsNDM5QAWyy47<(fL7(r!qlDo_eAoTk9bwA)1O(xu}}nKL=sDRIT92k1I9RxX-1 zZHx>s$Y{j6?AMnu{0Mf}Uu1w3HQJ3Fy1Px9$m>W~BXUL`UN$|=ecUQz8{3F+2r2O~k9b+t0M!vVKwE#LMGn zT{=GB!`$`z6T8A0HqVdhbSzQ(k=|097qyOVW`?moSoZmKb*l&1JZClSz6@3iQo@Zb z-&O|la#`%ata&2xca2tcrRxQ~rWNS?I z@j!N94$I;?Y+axbecJ6hA}u&@I%b@^(baR^)3~t-0@^4`lSws`m3;~;N0F;x|E5G< z4%Yl!rvO!}RzKJzt78x5aYZJd$Yo60+%d2wZ}rQ-ddI!q((kUHh1e%KzL}uK<~Mb= z@sMwPzoQm_McgN=k@Iceky@PKe1rm{{;aAI{O?A$v2aHyKx~hYMsuZNvYm)P-Y?hI z*cGt$!`3f%8g@BU1$6|;v`5eLrNUvmX>&Ae_O5Y?aS`ZzYj!5JU-}5{UKKJu@NRRg zPf_{02Q}pqf>We!5drO{QoeR%W$ToQf9@c~#y<{<^VvYfu$-Cpv{7aHWS6rFa+w6) ze1xCSGBnM?h7POJjl~#b;FiV6zGr9-^SYO>iVJnqL6bNZT#RUa07fc1O$YH_g44qZjoYKX}v>66|Kfvgq!?eb9x ztrRZdVxFEp4$~=`LP3X&H`ra#nyD{JJ_*jyQo6JyUYSR-ovjV0^IrgSJ}kMBYg7k( z=NLG~v1Py}UKc$!LJXpo->rQ83j#9jn$t!49xxcqMtI-yc#?{edNrOEwXk)~BfXQ$ z)sWjQdDxkC)xb`%*#u8Q(r7Q?S+Pni2J#Y~^;#=M2t9u?Y>R{Qe>u0@~_2ZN8jO3@_e z!=u+eStgX5Q+;Yl2#NdgnbS1kckDmL)I>V#&`B(?35MVArk1z~yBDMdXTMK4S~DEp zImd+0(~u1}xPG_9Sa4V^BybH_f)(R+wxt2yN|ebd!zFSKtj>6WvVnLf6BeG;nE?|}=Yv69*y`joB72GpUi)-ii zI)h``3utI@k=dCvBU#QJ`^f5xXYB{cDqnA_KiU`DEGYmlWybWb=q(cXyYtJo*m9P% zK9fYjAjkok(W(*0fP6orNTLM?GLl5zSBNT4A#k`XJjW=C9MPe+T}ocZ1@xl7oUFjvMpJGT8~q_1E~9G$$k8aMP4YwqWl{h|Oa85P9lqN0ZjWV;Q;TTWbt)wiu~a2{g9@eXkDN_;_OYx(6r*%`};RlK!8 zKtqK!F7j$px=~5daeX!&-dJ&+zk9X<>NTQsT11<4jB)LDAkGS5;;X75=gdZLPZ~W8 z5L>NU+^eyjIwL&no}O*g8J4gZ!F(09?9QKcZg0O5 z7JWRVPv0u*&nX)1o;6q3X=lLo2?|{l zkdn7qFtEw8gbOq*OAJ5X374q7>ZVLZiIN=e<6MyNkqXk`@42zcY=>FkIFLv~H*ILF z&d98WJPq&nN8(3dw>cJi>puOB-8a0ZHuPW{84kdkKGUp4iQ2I_S@$b zV?;Z@L5vs5P2T zQPV_nyt=Ox7c=`Q;XNNacrOz79Gl>o7lXWAR5WLbW&Hv7f+6`DU=BI+P1MW)JJ0xe z3;M5A1`gNW322j?^C5RMQ-yaEn1TZmbd#i+V)r-@#|y^o*j)8~{W9aZ)E6@DJeR}O zmZobBXLlqBcpiRyKlTQwPqgY#@M(q@A1UcW1irq zgP(cQf+(Zt*vX5w{*P{y$OD>zAz2_0jEd>?0{(NG`(XaZ zKh|#l6)e60{qVS5Q%x1)wwS%j!O_w{`)K$&({;)aF_jnsH9}2yW_7G(n?e`D>8G}@ zV-OI!`~i?~0k|23(KBALFgR37RCHW~vn{N^Qs%<1tYab>b*`O3oeHx;gH}F^DFwge z+EE1lCBsuR479kAhf?@`&vV>l;Pb?vqHg@U(MUw9cOJ<_iyBb#($1HPk;r<>ApkBH{sqxIM)o=>elZLDZ@5V#7R2GnC;uAs#Q zZcU<4QNBA^!E0?eU_9>&Q=mnsvht%d>9_U}Q}w`4!5zBHx?uO*%eYi!&LdK%0yf1+gl@R0=NnnuINEAbV(YP7j^PoK-!%oT z*w}m>28rvwwvL;}PLiL5Q25dKa5i*L^AfPT@q+T~%S0WEXc=HL^>GVwIqCD)uc?CFn7a|I-F z3z>C6b+wA<1y9wuMlcUTBM+I*axJZv0J5`+VXs7OyM(2ztX5m@m`7`(DYDs%KhCFy zlAX|3gJ!k%kNHV~TGQe))mH1x`cKgzZC*c;ZqlYu#{r$`j6bAnzkLTg&1mU)P3r3Z zLY@;AJT>yFUE1nf~Cy0;XHp?z!2h`AJ!)6asztsUby)Nhq`SF;W`m#AKz1Uf3@a~aa zn1pZOnCFJ*%M2Si>KvV~*rt_<2gIS_RIr~hS zh?&-y1_)CAuaMZLPti0BM5|tz`0HLX-YsCW-molAm8>Ypw!=heBS0V(%&*0_LJG2c z69&e2_I3$VAeMlyD+5~~*w}wHa;qY0O%Q+f6ERzDP=aDmxedW+sZ@PnmTT@Az()Z8 zBzDuJtOFlSLkOo7E&|;qCh^w7_HRm4X_N;1I=Rf!JDQI!3POO=tul0wvMhqrU|U9- zhhO7cVdVINhXau=rl=_IcQ3$_q|?pI1BO|hcEl3E=iUJ2Rj@_Q6s*TrH2OnksXV0| zZtipEq6sln+pD9fwkcnu02$VFSx`p#yKu1HI^!90T(5ZN4AAN@D_nHoSpyTyOnFXV z`DhP})tzx?kmpC)bZRqY_|W>sp-WwVmw4x8MzF&?kuL%hL`=iIN|Mh{u;~t;G}3b} zaTJXaOE)^V7FExXe})T}EGua0WW`p0xTBTCuq4#-#qp~J4VMU-38)di$?r(RP$G88C`?jN(rY) zj)k@ZLfq>MeS?f5fIY5?8!1$S1-b!u5e38%RP!OK0IOXMHm_@ZkCb?5|+xY-UyJihTkMa zJZVT{M0biT7F?p|j6wQJ)EwX6Z?M;iP{zv3iXev3b*T^;1gl11CPi$$TgC=-R4|>k z)kqg8&kMv5F@;x#%%Y4_C!0le;~T3EifW^Wa6CHH$9*&UlDPlu+xp#J>AI`;z*6Dg z)8cu#oB%t+@bt3MUlut;T~-=pstY>-&t3N@yN!roZuUV2DxWwD;uHxQh0H#eCfDBN=( zQ^6eeCrECtL_@-61&Z5gv(wr&yPzmZmjfcvY|R&}QBT?Sf|@HZ=AAmiQMGnOc+|>` zPwQMTA6bXRiYlQC`0WP2sx!yf;go$-S()Zi7@K5>xp^Q>^DgJ6i%cJdid*TcZ%vc|WqN21L8)aGJ80p1GYOUthE)lGBFVN`X|BLq( zvr~;uyES#{hkU4_jeJe5;|yk7Qb!=-Z^ARS%7IsmUekIUlR3_RBWfF5ap`*x(<@tI z=)9xLi@zFB<(l$KDmdowbA>27gS-`VqZ6q-*Uf!IT(QjtJq0A;BTG#)f1_vNYH zR~Fdz4v27d)`gAp zxTYRHS#pQI_n|QQV>80kjcmgQX#LSz`jGHnLF^(DFvcf`Fc(FAAd3Mk&#F$}qj?dR(x`T{`qP`x=FjOW1H)G@i7R*5 z#~}2W$l?dkWjzaqO1{4h$5qC5&~(=r><=tRSC>w=vZ0;ht7X`h_#2O7Ko%=Ys;wpd zlEWhoR4P(-4X&xN&JtZGi%8w+-$;WH8cvHXZ?YYqdVc`j_ge0I68FV&Ixdz0Z8Ezi zIPSIq53{m|MwX3ScV)IFig-cMoeuT0p-5jD5;EsY)tF)~)Ujg*VQ|(_#mhN(pZsTj zHTn$Z7tuOzkHw)yv+nY0S0xRVaxHd;JJYn;qt;MhfJpm!m8E*1+bDkeeUkjvbwkbE zlHR!&0M*DPL6v@+0Fy}{M>X3% zj3`yrsXw|~5PkJ3qiqR)+9v1q9E^j|E+W0Yh+=;#A51U@nI1 zA4uHRR2Y;ROPcYvTF(J5q`G6^nPV+SZK-s~k003^+~f^wk#Nch1I8L-n4C{dy{unr zuv2H0GD`wb(*@IZJCjG6hZsukzcQOPd9oO^0kAQD5QQ6a)v_Xb9`r@&YA!`J#F+aK zFL)XBs*dc$A0BY@iJ`MAi{j z%d*a^lQ~ASd*4w0YfZLU`anlMRyt_e2QGZRG}rE#$Wz65|LyUtg&Big%f6Oswgpu00!=JhJ_)Yujqasgn18e82sjq z`U4H})Z^JadARF5i9kY&4{BnuN25RUXjen5e1Jd{3dX%ebiEIKifTtHA)`E_UoG!Q zxffTt^62afH+VsBxU+3F(AIfOBccMnIBiP~pdY ztvmbLEahsPjolaBIw`AtLFxH!nS|OJ1>5W{ZNAU;8H%)(UF4td8n5`t^MmwXlNSy$ zi>%Q75am9dkw($SnNqCl2duoElE{2oz0>b0Whw7&w%PPh*|= zLdj&nY3?}^?nV=Bo-XHU5AsG?1UV}#r@#QW`=I|rwNoS-kMrL`_u~J*(CzN^zZSX; zoxYeL{ExMN4k9E+F<+dPZN_Tp?TcU&ej#|P7R(#BoBZ6zwX@6{e>-oOw&FrqU{sz5 zX{sB7+`9r^#XklXt>yMrIkH9}&JwMD_qmt1fo#>AEpl`_lJ#g}6h0Eb*4_V6SE=MK-!oVE4|-(eE?BJG`u7r_UZdIDiY23)5TIF8ai?K{CsfW@fAdqM6b_VdYyQ<5LC~;9n2^bt~}u`{zsPOI>3pvlPbby zjhyY5^+3mBT-o+-$6dkRVAS|tlX&YH4c=M$Whe;SQ=c^dTt*D|O6CUwChT1fA0H9M zJSpt^P49 z|BkG=Jy8)%c49`y>2CA8iT@biLQ--4NYgjlKSOW%U^Q?ZM(E9^Y31!P;oc=D|F&CJ z#cf~wg*vc5ftbkqd28s~g5DK&`DW2+%sbZ}Tdo|&^sy|SJpTtv3Kc>qjkgLoiL+VW z>(Wb`AKt$mboO|4?HjcH9F@UJwkpJtCGx%peZejbYpvwBdhzfzb1XG+zuzSh z<)*=(SCT4l98*}WeQVB{Er>i?r&S&9_IC2!__*280D%CZR!XTReRxKU`mSmr) zJL=aycPcQs{wK|gS!qUq1t(~yuIu3S2rmNNS3P=0)0^zzzkTk1|3}wwB^OrBr~!a; z6#xM1f6-c5nX<97vi-k}?mP!43r)|uzBg?KI72uJ@$1LtKaTXt@HBko^CH#ol3UE< z8re+r6$AX-c@#89Gstz)#PphJ07lGyHT=tF3<0d&Kg#EkF;00o2p!~zP-MJ{+%H@ zU2lJmJRXtvIh+tr%_JUPg7z(5H$N2ZsaKx8Dsxo>`TtDeeAFm2P3hfN)U^Ne%q90u zP7HFnH;eq-d%C*%Z1(qkz8Tm5_fAo0s8=^N*2>(P=45oh{0|g#c&c6a4@LAaEEe&- zQdz%&ar5aW%IN)#IV54zEAQ?6?rdiHW0~Im^!5z6d43x5ijOe8_xW-Dw%XUL#dLq# zRXCaZZ|$j${U%3sYK-`wnXb^fa^M}XTP2fgyU)4pnR%(;+Xh>LkrB^!U!%Pbsrc-- zGwP|kbA*{w0lxqw_jlVF?@70|U+-awH31((z{mY(;lQ-MC*J5|mn((mYvC8JYm>7e z8set_LkODJOLAb%xlq6x$oWnpBIZxMnZ3YYpx50C;s`ryl&zbeyQ`~wUNME zkh1P1H~>$>0!vUAX7W@ZzEw#O~5J9p6?Ehv8O?#g?0 zZqT3lGwRBl;m}cQCA2W>FePl(cX8fi?jOj9(kQ7~5TZocz6EYaLT z`ZAMpv7^=p#mu5!UaHRSh!eSBU260XTlR&?pXTPAbV6yZ%>>3p1NOljpVsYWBJE8! zg$8oJCe}c~6$P8Qu(yl|Lc8x4Ip5YB?5C_@a(}Z8rr=%)zI7iAF(MpCkl#yls(+lN;>Q z838l6jM+Dn#mCv-bT4waEth_?kT6&tC{CLkrnOJ8;`C{+z=04-?D8($&ErnWT0x%O%QNoSdSG1W~Q1f>5NbEwIqMsl`v=9 zBlg{SQ;lt**n?v<>`&jVteNDIlP}?X|D)vvfEbiJCe=V`utZr!ROgc>9G^J8OYUre zkjGBCpS{C-%9S=uAfSMm?y$f&1&^QeM_-$vDyHg_b;dO;wk6tZ~k<8RT|mO8U`3+VQkYI|T8eykh8^ZgzrZGi@} z>1_FCn(JfWz#};m9DhH-WHL-Gzn*7+%`$r-IS>V-d>8B$IQe?tn{L9k5+lsOTGY%d zuE3U*#Cu`?wdlph#%oG*$5v_Dy z0zJz>S3GV;1p#uD?cGp$4MDsVD*IhH&3ggYw!Ams*#gnZ0xUR<2yIdGIWIHd%kHtvtC3xHCHM+&& zHio^j;t%W&JLyh>yIy*eDHF+i8eitPNgaAaM}AX=Jkpt%*h@s_F;`;6j}L}ADcvLm zjP_z9Texr8gY~cH#Gfp$=Y-v_xrLeyOtnE6)#uH%nM?a3v(qd`=dM9M>HC;m8@n1* zL7W-p+C>Y7luXu-c|sQ&u8{g$&|Wb`X|!IkCo&JebXyHTh~N*-W+$e_ToTZaj&n8U zg||T?BLcYQ@TI>*D;1yg$MXZb=pkM{f#E2vXFIrKHuX;W!kql-UWm*xBIbb*7Nmt7 z%ue1p92@;cg3eFSXF5SZbww-#A-lE;RqZDBJ-DU_x)<@1X2)!OpLh8lD8e}?>%=p> z>jP1f4%`Wf=Zt69(u-zVMs4gkuzc^Ag}w*Zg4h|pTKt&AH`Ik_f(wmCr_VweMB|;s z@l1aZF=HFTdeVezjpjv?6@&P1*!>`Zx$%H1gyxVc(;ZR!c))#!ie3^R!R@D{0(_0Ya&p(?PQZ$E`0d3Jxm` zbKW{9_lb_auc2~sftx|c;W8RyR3b8;2Tv*;fMC~<%xMV=?RB`jnoj{Q5W`K}Cnv?M zrfVh<1O_(&#(Qu!rXymQ)NJ4?jAl?OqEXA-+)^juT3c<+t1$l54Wr0S<(wHw`)jg1 zIsgR92akNB3p+#iQMuG0<70n@ped<4^_4XBVSApzK`lzMFA&yn-7zK$i$Q7$KeJob zcK?hB#|@mHDL2KjgM7@L-;q5rR}5?H(}%)0w74klVZ3Kl?#XbVR_CvWR0Bw1$CjFLaYvw~LF}uA-^U|qI=0nVM|ER9ao`IxDPo^uw z2HY3)Bmh)YPL^B{fRx0f*VwCKr0T^LLJS{HbT@uiF8s3E54@ErMt#1M8@y-tU@e$R zY)!VJ4ONIGb=U$C1s+3syQbWobgPRK9Wn)(_TSZfk-B1%`jr9W<4ifR`p@s8hb?dp>D+_Y1`oNW(V~x&EOa*~L>Y+y z|BPpOaoKkKP3>!&#I8`<(vtoRjQ4AEt|U8!l3@`oDt;)TWBA8IQYmE_L1BH7x;GgE z->&9`>Qi1CFZ%n5Mm0+jnsP>PZpcJ&%ngnhTXvnN zT9f^arKSk~p z_p&n+0J9F(9mb7fp0VKW`;evS$)SmswP(_3g3`2c#Z}0bnxFtVx<9W{R-0h= zz{WX3z7Ki$+O-{yq_1*JN^~mYK6nFz!GvsNhMDwR%UCYsEj(|Wh>8AIo=KjHKU@MI zs`cZz-&96mKXCXk{$4j1Uly6V8?}%QlX!CV+YsEYXVRdRV3`tvy#+b(7$M9`0KiC} z5)T6%b|sxK3dBx1zQ7}3><-&6eNJx7Eu?iQiM7%ZX2M^ec_XudBrBQ-ht7RRmZ9)d z*jy7UYkse5MMP$MZEH~?{B<8HsXEpbZz0D|hNFJLavD>sJe^4jl0wA2|B5TMFkVhU z;)o8IO;!JmMUB)v$3NV|O65^7xHdO2RnHX3a0RZuZaDUy!;OlbY7B%jNMqkxN`~d5 z1M%H6c`BcLHLM^3f<~C%F^*xRg7P~+$T#v~Km>*Se zO=p%OMlpGZypTE&24rxgh zE%Vhvnm_eH<0JpuM#X3>7@GP96Uda75V;8l86f9;ukKDvRP09|~%xoi6@l1e&JtH$vz^LUfy6zF^0$;?x}AJ6lIBMZEm>;w@9d z!i1=mITI`jks{zK%LQclJP070wrBq!UAuzNG#^_=D}e8m5R#q^lna#!0iN=@D`D9; z&i|;(KKDQb^CRpe!WC@ekZHol)e((vPytDS_dZ#g#y8jeDL@Z}5IB$>Cu)4H-&Taj zGlH(I(SYnS0-O)QrOwn1mk^p{lW@-0(!cZG1P1fdX-iq}19tj#6tyM(*59=AEwit) zq|owdk4M=7 zDrDZ;r5bXSb4x)P^QIwdPN|wrnBu6f-Jj9z+FRd1(bzQ3S7h;7U{`@3MnlTANWvpm zDv!kk0|rfyBY?sD6e!<#?dHgtVhjE>9^`@ROI8?9!j4?4)X?3Nay*jSqW%Wlh>_sp z+)4J!G$$s9tZk;n8&8wPri0HWtJg~m{uXo!2RPR?s<$dDl1G6=x)bX2D@6tX{FFP3 zsLrn2UA`##>2=YPfHab~=yBwkIhvO%kxu3dcJsDkFfLDl--6qGiq0W&;_VrZZ8afc z?Ha|j`h>QIk)0tX`g^L9;9kw%LmV>7H|yTy6&ordV)G15Cf-sf;v-=}s7hS-nBEG~ zb4IsmV4N4$93JXL;L_vY;pXFcLA-WXp zGUP>^NDQE#yy%U{i|nD{0u`?mQ;u{?v+;taY3vFbP7$Ma5x}Wf=YtcW>l} z_>hCrF9ylnc`8`N%z^4UHu347M3F{EzI%UQcmzqzASaP4@llTwW`9#QAPrq*Kk7lj zH2;_iuoJc;F%N$bMIZua4s)xjG-kfiPqA69^BsyiZ`)N0n$n@fy+QaoDc-}y$2*|XFWR{?61Z3mMqz5PILvM(ZEP=hznCpc_ zg>kHpE)6RRD+bP>^;-mVFlPuWs0PpHMIps)_6`0)W*%TYADZh0?!Ub z=yNzX95lz;xC8kfT*xsW}PRv_a369VSAUjCU*K( zGFO9Y{Yh%T{Y#y-xa>VkAVFf43$XTqmOmscgfgUUW7fdrC+n!*!`K z5TeSbxKJtT-H8JVwI?k=D0W`5&4pzfA@Li#sL^B(ub`Ts?82J|CPhb3Ohzp(p^*9> z{K`!cfRX-*IMT8YrU_%#?j7>MWr&j8P~)JVR7_sxcsI2C9f}~wpSNJ*IE@{70$^o6 zQf(XOX`hstVsY_~bjTTOdkt|B>lrqQjS_hptSbF&^3J^XrrpxfTuM3W)U#vV!3x<_ zg-o?wF_x)DE@AU|;(#x{DRuor7t;Bv#utT%QU?qO?*=XX$xL-0h9E7A5!?*t$twxv!BTS6T&a<& zqUg04{hqh1C+yv(HA|v&<4F9bQ@rZ3!bi)8@zKo@-X$0ev5%+)cP?&C0e&J#)3%jc zlxRCm05WhkBWu%M61`3F{)^{y2-)ISac#`$#;u6lD%YdI+cSxo`sqFZ+Wrl|Vjoka zr^<8a+i8gTEhj$_G#tX2^2lAyTvK4(qS|U3Zw@h0ZG3(bs?l;6Ma+oZn4_oy$w-)< z7)33S;yFzv5sk1Gj%jH)m-AbN7urEa3!Y7>RQBFfM}Y#>%3p)^O%_$rxOWJh2C|HX zgj5lmqt8RZN5OFMljVLPTZ;uvd7x}@GDMb7P?bxXDC0=!-hLWgtg36R+Di{&ol-DO zn1)q@Z3PT?A@0Vame2LNCTkZkm4kWXy0Khk5wdo_6>P57;`qa8BMwiMt1H$%W&j=Y z;b1bi&cqo7FQ|H%9|7-7sZvlCrrt~Et)--IlbU3ogtlmdYkFH196GXnBhvI$Lo2GJ z0!M~fpYuOvYebN1T?x7^e8{g{TOzI3%hfVw3MZl!%FBOPh1M=rSMaRiPdIC_NbaL* z;&Fn!xuY^=;FFgj>Ksfb6_})FLi9oxt)G?u!`3^;XSOVD!?A5njEQaAwrx9^V3JI1 z+qP}nwrx-RX7=9aJm;M6`_(^n_o{VOqq?)!N_Ag0{x>kGT_TE)wIwZzQ-xH5$!1LO zthHqV5xMvjO7O<=ItGX=_8BU+s1{ECD^eV5e%Tn+IN1CU6^2dVlW-#j$S5V_xuX?W zMIL_ovVrEp{$`A0xr(q1PS-%{BL$vw~NO+y^ z(Jxo|N)d^MhuS2X31JLc48RE$coQ;Ye+ZMCWuUd9AHc4#%p^PGJrcvUHOS(?U5bh@ z$ym1i_%H#NW@KzSrln-^@=vOGbU-Lmo#B(+DXyRnVVQ-2W{Un5=%&&J`9a#WLRC5< zK%kU=n2#k+C)E;ehXd8_KpxcE$5fllgc&qqF1Q7mSEN$F0S8wR*D$g`-hQ4~Y-JxL zG37$zUu10VVzcaGdE9tx8^!ozxk2njCKwO4omzssZ$D`l=-Dmrv%ofyVI^S!D}TWQ zn(645oJ52N#)IGP9=#fnTh3H*+FI2jEMPm>(l*GCrWABde$#ex7r7KRHRvMic7<^B zum-Ro6=oxnx{ja3(Nu-_@n~M|8&o2Kt3y`GJyHec3oIySh`%7i*&+jck)nrhgT!I^ ztBaRIB&H=iN!>$PW;}_E20Os%h`H}>0Z~HAtBOe#uc#+j7~wi7CRFiiCz_WR#Ekn7~}7hVxBZ85V3=hL&Y}A<){Yh@d)g zZjh%Sb74}&0-`r*L%7aAzA2g>Ndq|_2DecUsYZ59FyR-~Ld{B}dbBahDP06nSrBdj z)qJ5=T*ZJ2E2B!Wldmpw=?3sa$;tssSb|`|FCLKycxdTb&Ryiqs9XiT3G@lz##C300g;a$V{AzqvkYJd`N@>F zpO##AMyX0mgXfTyE)S}l^zG*W>;4rJ$qYYqU>)%rIoM+mO01_xbgUQgwa==1JunDo zIw?wSOX;8sQR7c7W=xuDBXA|Y&pRdnfM3LyH&(IehEC)7sX9<>01{Xkfrde0AN~xv zVu{8JJs2Nc3|>&^dZ)v}`cZM6z3ZmOB4}*b&=~BtDur`?*q}S!$UDGigz#d`Qq(_h zPC!-H-h0}-77thMufV*@t9^-zPETZjnA1hR3&ySr0^?=VgxSd6n{Hm0sx@|iA z`rub5E+&-z*E?X8IAIsJI<3`NKlicFB|JDeVcWAn@@j-2*^=qxlO@bBw65rXA*Nd+ z)gdpx3J4Bl%^uLG6Snh}LLWpmPQGoGp*IR5t`qyT@#G0E!r;p`1A%!fFD{M$Agu5O*QY6LCWTTzUtm=ruJw+HEqELFg z?o-a-7oCy(H^vI4lR$LfTb<%s>P4-PQ@EJMwOGam;O}$?@Uad;+HL@?Cv@FFBsxaZ zxM>`As&d`45LysQ0i9#L#>1Vab3r>W-) z`-74e@3|NlS?@07tVn)9$ZOsD`oPJ^7(M@yvW$EeKK%@?WoYAtf1NH&w2i|z9Wv7GFhOMZSf6nF?bMYvdS0tE=n7?|-EZ}i;dQRTZ zW3srn0u!!_*iF)R#z}4LpWjYSyD*XuYIg%~Elh7sr6a#DLQqysBz9=&KF4&Md_d#K zeQy2;xdsN74geP93LT{VR97}i3btSg+!3ZAR#OpiT?S^Uye@(AdP+?^-jo-r&Cl%QD;}iWR6!%|AGSV%nx#7%W!&wDS%Fh_r^_7N# z(s@OVEx~hT2s%U6oP0!l9>BhGB^=oEi|T?wZtAi34q*kn^-(6uGq3JJ5k@+3>(-Kh z1jMEaD!<~DGiM%%*2)h!hx6Dz2%;gM<@nunmY0YTSt_n2njDcwEr?gz`;FB_a7a}0 zGK=kE&LZ@m51Ei=CwhazW(k7ki{YLw)fVkLNKMliQXod{Sx0h+)wjavq?SEGXWuI+ zHrg4hdSR``(9avT4!*53Y!pyIP3wp%QU!U*M{|}_v(Ep{QTxnHD)Hbocd85!okeRnebvK$3LbDU?xYmAcpu2zF z2|=+;Ris=Jj75ZCp?7omMCFg2ih@w>NHay{5^Dzl!GCc*yGeYpiGVL=uUYyNx?)w^ z@(!ynAOm&5KdKj z-b%_SP=_@zU>tW^@om(%4}0;>5)ML8Ws)@jtN6l#6Y(T_Hdx~KNdtEkrOko|l{h+Os(Sw62@}|4r4VW*xO+?$N;Ku@n%Lh1T^z-$ zObuHHG*gN|O1D8lxVnOSI)TRy+9td$bfY&blUrAMYF3`eJ{0_N;sC9iZSFp3k1mv7 zh2w>D(^?Zhi>BQPVl#S8G9PfjTm$>GST{53^cZ8%m_^!1ZKnnSjQTL6+XqQnro&`1Q%W z>VyPDg(NO*Qsk?&QPqO~q28GnY$EJ5Zo+j(*0xTkOkw^wm-Brf=|FXWE3+s)kwfpT zZWC~7nWP@fit|a2>HH-Jr&SHQ!Bg;d+0=%r^T&@6hN>lHp~PorR13vwa@xUUBbq^a zPNd>%Ig8bHtVWNb#Qn0#++W(MiH_%fHBezctJhx6CT!I%a))|3tXCR~9O}3SU1T&O zVxFJ_Ml8fvPsgq+O_L%Q^b+PvRIakIq5vdN^eUNsRkufy>Bm1*s&3V&d|}hLptcn)1j{zs5qEW7oiTKD zuQfSkGQxh>ugP2RgbAjdrF`>{hYcfkKL@EaxF@;6Ict9zd23lz>fcw#!QR9GuhN<~ z@#%7><9A*5x&(#3YNn`EIwkC0l8~^z3rS%rs8{IVYF{ZFfSYdGsW`Afl$a#%IPAf{ zN=6^5S5=TaHaN!N&sY@)41zjVq0-CTWRbHpM{=r(GCP;{GwFyCLfN%!{Hf}=6QEy; zNe|04;hILHR@GCrOp9F=+PX(qFo?IEXa>`}MOqwVex>QwTy?T8(eLf%k|%GYeYwx$=d| zotv3;{!+=+T_r_G?z=48GvUmju&Lyc`GNgz2&z$+U_YEl7?QU;>>2%SFZ@g!_EJIG z!1UoakFK;emB)Hj%^;K>(}%=`*<{A{hJ%XnKHFQieWFbOM&;iAj#p#$X$xUikY&J~ zB^kT>VZZ^KM1fjvXNOSwyEcb*amYbh7N@UcH{cknz$U_qEdt_+WR)o%)g$s&@hiF~ zU@bX8YwlRO>PBd9w&ULu6L;RhOHG0@>RAMU8U)3?buNk~4QboufdbioB;IyLToy;D zHOU9AbRSF*iau{Yp6qkrQ4H_eK7*+&%1R|f3rR|YKl|0gT&zfxeaI1#*# zRKvegV2?MWOBL3NXSG?Pb8kt|lnx+MHq@(68)7b`>)#)^4;iJ!ooQw17>|CBr|73n zjNzR=egiYaf{Wc`yO4Kf6YreCZkP~>JH##w`HR!2|8Gtsi2@;`FHWQW+`$^B?1H4? z_9L=?aT7mhoEZ`e)mJa~kmqF5~{2)2Jv2@eijFJ=*Wt{n}!|;#u}p$WrdLSzK;U3|g~c zIEfQqW=$u?3KamQPQdrc4Nij)Pq){QuMAk5yvdse zV8gWVg2Zcn-oh5xZp+|Gaeb`E;BXoZyGtgr64!ccw0cqc!&(gyaP_i!zCzTPyqGQ|@$N%+Gn%cna7?GVB}>h>uS>|N<_#_{}L zKJ<7l3%);)F@~CBO&$6h(TAHdX^$7i)uSU8jEjc(rzA=7sB8VKWwK*1rOkJEUBsi; z0r#aSif}UsXEzLqAoT4TZv4^Y~7$U7dckHaKf4 zpT^@PM|=+-fSCXD$r$jolVPy2#4;VeAP-|XZB6FrQ2XdzI>;=B@OClCWAF9TO(-=& zDSa1fMz5BY_hoPJeM4omHq>==$oe)}Z8^WnF)c z=~B7Bw-0#TLtN&58vLC8%7M)a>Y-^Me|E0=lLM=Lf!F2{_BW%Ev>Vckljp*3(Epxl zu;1ruQ;+}v;8^~9s+k!ZI2iw5wt0uk(m-MF9aA*P{{EME4~OR)Zn-pr zMW%6Uj1Pyqr}yX&{j2^Rz|Ku{r=?9g>uhQ3Ap(+ogXdQR@b~4hmu?!lVJ=ajAgmK z$Fuzwt@=Q1@y_~u)(wCM!X+L>qNf8lH26x(l=%X`fp5Aql76c z2t}q*I`o!Ft!{El;vBTG1z5$X%?ieqm8=JZQ|Zlea;Z|#+E!w!b-ftIcj_%*hP)-x zIwfMJrF8ZN0bKhu36s0L2cVC%cWf!v$MOjS2tmy>(lzxu##f|x^8q#6N*#E8sCrJ%=LpRZ5FBGo<`;@6FOHYi!$YZ+@kCy2 z>UuRR=8cd&*gH8grmlOvKw9RQw+FocQmEA`fP@e%6)-&j3-|9nSeZEaagNb}sT+R9 zgZOl`*EX_pQNhvGDo^Ch-P(ek<=u?2QG5o^x}@4DDZ*iAqm3+98elU)+9#9z(k@Z5;Y_h!O#JxhR2CXi!sO`(cnx&IkothbEtGtd+NB z@7iN~7(14|jg?Cc|2DOxgdfyCT zSuDp+=%&imL_M8lsAOELu}hSbLK;m-M5E@Imw;1yGy#gKQVp!9Xdj$Sg7P7y!7o3- zM#b6{ye%DA@3)(SEim3oqJ=lgn&`=nqNOw9u)7A_^me!BSTwEuJ7S9pGYFW$4a!cq zL=G&f-?kbzcT<{S*T2-gaXX$0iPzZ*q%eYkP4eY`X|N@TIFrKZck|5lSq8j^urd--d5v6XKe3R_B*9vkk(fLq=r0(H&M5JeX%#F-pmAH5*wZ z_fsS%gWoWV84c5^KoEtQC$>BMveM@K7K--7}#>ug8Wmy2(=z? z^!{T&_noImS?-KPJzj-AgVC^jM+cYrH}PbW8!+o#X($YoLJNz6(eO~aQ#76|Qho+V z4RxsOC~S(ku7Q)!S%QXu1SNw6^XF&_8Liw_36q+{iIs;SN!BdkO$2cj6T0QESQXnr z+aVj!klZGVZ1wGFYP+}B{55xB`?gu@@~%7$faA(V8xz+k7l?P-G^vCXqY&*2Mcy= zN`>KY3p^RPb&40n!JPspxePt)8ODx42DygC@ACKi?LW`8&eV!nR9~Ye!^|9mdX~+f zv{Sujms~cix_H3z^B|(wZykcd-7%ko8Skf+#cm|qfF5NEA+us^-7Uo-dn*+>?CXD< znP~H|p+&>&)1D7BT+ITK6VX?6dkbaUVI#ayTR4}*dAssQY_a7vDv%At$|SKTXlz44 zhbV~14MSHuA8P!Hjm2)}rfq&uQ`{D~MzWkBGG@7E7a=5y7v+4-XX)RV^$@e{z|lMe zWEMNOI%1oUpHD2+u>WuB=T@XLwz0AC*>IhCZ@!7eeoD>@e80$;Gi3ws2{g+MV8T{7d*AL71e)@>Fo z)L`7KtVEEFx}JaaPLGLkcR{g803MDw$-z0DWZm4x5Rb$6mai@tP}B}#Ajb98u4;)^ z3*mcNKH=z)0C*cdDQ#nEE402v0YYk|r622Zswn{Yd?)BJr1fMfbc}LWE)Z*e5G+T~ z20(5!P&yu>3MDx{UukVSwlZ9IHE7k!eU6^sLt`l??rkLBtjf9;XlsSSU~CjXrXR0` z3rB2L$8U<6@^@#q00Pt+)l_VF-7w~Z6Fdmm+2NNmM0ZAADv)^)4m^Tl>#lG30m!yn zsO}9&rFSv;I1`ACZU_Nekpgy%U*l{pEk zo|>nz3da(<6x6)Z3>f@vxhI3FvQhjY&55n7 zI>I`dbuXNs+&;v}5lFreb4!|~wQU~phN+OUEL88?swi_HH8DU72;?)fYt59HSfY@0NK z)S|()fTCSfwRmXWP+H?MY{taAugO+ElA#FK+Gh10?Da;7Yz6F`k;c>`>cKGI%*?}x z#(Jvd7#%2UhnX>0`=Y&RQRUU8D|GwzEJp--+1b?jmATLea@i0&J5$Cjzz%+)bWOG(XD%Jp zjoe0NknofdMV1%#sw;AI+Q9K)!Ni-cwV@R#Thuc5hQt5M5@N|OcxVWXIJ9G z!3meBlQmL@*PHOMljR@a+C+4p^7h-fnZ@lRiMuF95YA< zW!(zu+f&J1`mp!-QY7SLVrBS(7O`L6=xAS?_JvU=tqx^lKd}t0~?US)QZ^ zZYxt&YqJL{&xZD5C}<9PT1snI5ZdVL>o;S~qpS7)>G9^JNzis9wJSCYG{wSB)3J3$ zuFbYoCt3>63Q}@h*{Vd3hxJ`${cmksQm_jC?k2vb10(Qb;TvhI#M$G2CfTZK-m=1`9~hv^MM{$T zYZH>s0eb9iEAUB=0RTp(Qz3`)FFi}a@^QQ3(nu?oEm#i*Q&!+e(vtDu_7G?Lbm!vb|SbxwDSE?eN5GK5O* zaZgS*#N;k_=MynJ|GB7dkt?i|dMo#EYy;eJ7n9WiVWfg(Rz`J;s_&Iv98E8$Ixlx+h;D(*L`)}1D3@NZSj zzmAhzEdA39L6X(?fEyP;;hU5$?B^SHn%{+|-01xMcEM!W(0xW(aZPd%UpzDTz@=e@ z%s{P*LIQ0(MqFWnmYz?mtKepYP7h9_;knz(3&oh>^{J3@g(-#Wgrid&*Th2YTuml0 zmpolzI%n|rErDKuNU#+Y<5JWWTCMc4Qvm0h+(GM0M;rK$th6oEb2FfV#bpVc`j5zE z-!x{ldB5BImWpToIUXPe+?E+u24>&Tq@4w7&&){ba>KL{fA}qP6{<{S-0ZEhCgdKL zW&uVkOe61J?=IjBJ58kKo8W@3TyxBT;)VfV#U-}aQu9G<9hbDRi?|LIR3sXy2c13n z%vbD-i%lnC;Iu#_B9j?rwUgZFnjNDh-)aBAi2gmJv}>?seF3wokkP-7TalK!io2Sx zF=3d54?f^4NEn>g*~&E5nX06| z1&V&Ow7w?Ks#4H-H)V$T;OMj>z#p%M zV7l6oxB9DEBW>0-g$`qz4Y^rdL~{^}XDkn|Qy&)KJlAvfDEaOY&>4A+yl&);Q%)4B z`!j3bm&iuA7+RMkJ3g$~1|G8O1-q1f`%&!E;lk7G<@Q%)qf? zVEl^v?iD$tjmcoIwrMaWUI9ks6k6w#%TyB>^kt^`&Ua@zX^r7FRg4z*0eQ)m7xUr~ zh?ig+MYnLVO7;WVvCxRu#W=TtJMc4}8F5y@hi3<;3kmSo38~T0f~uzZv!#lv7CEa+ zxon+=)411dGt2f|^LQ6E!{~!(7=bO67{SBvw%Bs0^-yoEgmbo9{b_V2J#7;uCl}ef ziyz)erYD7}NgXCcnBPm6ZQs@!@ewjMyAEZt-%A_O8zwwo&-pjI1#5g%6YH|DbFC0J zFIYdW`{^B&z=|;ApR+GJ%(5@Ct8ic#!8amY$H<1C>-)=HDsQ+NIY0@#=O^;z4zrJQ z-n_rHy9ra#x$5%3%jg6kJ{>SBy-I9yi(g=So#W}2#Z7h`Lt9XVi?{cyvUnBxzp-^Rjt_&TYnRcE2h`2?%@s zK8AeoSopv%^_rx|YH(F}iLf}cxWoqJNNi=^Hlh_PK3bMh1*LH{alA*mf2aetir=L) zszFhAA^Q|3g${P!XIcO@2v&@;NNrJ3#q#{&;_BkTn%RyF_xT;NeSJQ83pW4CT&jZ` zpF=Lm`{fexozk_WO|i-w&ZQ;B@W@OVELeel1Kgc7Z*(&Wky!e|zjcVoin&7i#wZy+ zlhswN#3J|8PALnctMjy!p*_dYV#U3COSi1&ic{a!1M6jZd1)AzB(Zqa^K4~2+n=3= z0HZV8f@$1VxUZvip9svBG9 zbx&mP{?AUq!uNaq6wiARyvGC4cqpfY*{q7h4X^&k4pKM5q2JgC7jL`6xDu4^zvo>B ztBg^cI~9M!7+$ZOuE@F0uq`6~;bj>t(CPKC=pD%r|LZ zUe{wuyFStX`)gJ&7P~$w9RNU$5dgr~M=bzDGkpgmV<%b*bH{)0<<^bD9f~>FdQ~LG zr_$@8mKGNJ&^AQRHX0SIqB0kU0=^2HCe&0h)YwSBEbK^^<-Orl*P_*ftu6~v+8Rq! zS56@#l1UFPm*shW_#8!_`n=vvyL||w&GNZBb${MHv+a7rJK%l3AVbfJU*gqGvcq+ja60l3I1T>Yd80XqI+D|^V_cB61pp^ zEbGeM(~?g|XNQmLyWFJ@g=`mt$;U_9SQ&`umA>ue)wjF7zP49zuVLRY*C+Vb zS628XRoNxmu_!#IU0$8jQ{S3RuVKmeHzn`8gQ9`ORQCR=kGH$q^T)>a{idjcgNMC` zKHaLVOS0$NkIR#t!=b0=sRQg13{?9o;ck)+QhK=H~)Wm0P&1(K)Z@%f7j( zC)cC9Bc+Yax8HUT*S_knCp#~#T$`Ww_f73JTM6(_S7T{qZMSyskB9c~S;#j^m6w|z zbMJzWp9dco6S8=}Pv1AzJaH~xPF{ABhN2vQ2ibPg>gw_yW+d`zZE5rF&v`z546UWH zt~{Tmu`anrEghWJwC}YIWqtA}>e>@kO=5r7-8i~V-PlSvOM7#z{MyYOH1t;Z`{?n; z;wU(YWa;IrQ`dbe4>>u!Q(510)(t7Lk%vhJ;0TIQ;GkJgXy*!6ghw~$m0 zhR$w3ZeEI>nv&QBJ{sS~!j?YYE}p8!>TEx>J`PsKlBPP{-;cHqY#j^lbRFLx#aO%A zB_TSgpOxTMU1jlZ2OWR%a{D|V@R~-M>bC!W893v0eA4Z3d!M*dtr}I`>ZF<)b)C}r z+QEJBq|5t5z4P_sz;&zB}OJO5aikY&GDZF+iwPdW&D9U}97DKcGo zva8!;4C|A4{!sS5%X(MM^tpTe6wSLG5r%s^4ILOQdO6woNOE`}f<76_LfZO#EqMcq zcCh6k71>D~9!p|$?=g|>)@^gO()JAGZR$0778rp3FfuDA23Eo;XIe$qYqrrW`zcfrfH zsTSQk^-(Y(E#hdosyve-z`47@H4W~ru+ z-3#Wy5E7fl;J zoO?}mK8d>CrM}h|WnCZFG!qw9+Mf(rcU=IB=v_YU_AzmfeP_HrPrGBLx}Vpt=v6vh zo;L$eRl1(96Y#WI2cHhZzu)v)JKvs9eOqLxKGvGx8Fb18Th@uVUU$!qc-uX0x-w0p zu)HpP9n(7Bb{?8|Js)nLKi_uNlDd387(Sm_(F^AH7+@=B?#B$~>dcuKKYLW$obFz8h+Iws$eNvy$TE?|D?lyOa%PO7C z_qHF2e2#b=ua(V7;T6npWgz}dPYCrHbTXVlv$^s7m=%oF^i$MrsAAaUG6= z&otjP4_7syWE33{EX63MF9#6-o><6;gAfvca`ZT zciwm=dWOp|Hb;5Rre+Uk9eVskoVpmSkddqYjXTBcUOD0@o%waxujS!-)umXMfirqk z;?ig!sP?_q9~mFc9m*A@G4ngirpMaadubnr?_o_SoN-F!XEZ+^VM?80q*q|B#M}tC z5n;_si{Q4YV6U9nIKFgpZ6!;u%PE?hJAq8+*Jru6^8n%Y`^FD%*VoLwG~t)YKb37d z&3KG?U;ejfmCfe;CBPV%*GB6zj_V>*B2!w$S`4kM|0y)fCyOV8gS9eII#11%OA#3v zu-u$~2{`v3>8bZM#}?49lsD{hcDWyCA9r78yED|;NAc}xmrQeK1evptEvb>GQyN^9Qr8{>G6Y~4sc<@SP zbp(e2&t%HhJ8DDyoX9#S02LZ0Q)KT6cQ2I@W4ThR@qE(Em)asRjlA2eQo9ex`gOaH z_V$SZpM6y?JkkrpUGo{&b!3uJ`e~Mr`3Ra(6KS%?D4*R<3Jz_$N&AVN7U(tlkgfs< zyEb0Luy(y=O>$BX&i5jIZrFJkZ>)f+v+ON^+gR%`%ziFOOE2Kg64vGgnkfA@bq$k^ zUVTf70J0WBvdd)!+lIqueo!>g8XGh(O*InC$da^=y=cJ9zL%dSwSzAf!>2_g9tfrt zSzkM9b&{-8B(^zOnhkSONA(c$6|8AIH_^3bD(ha#LWgB3Q&K8SWdfr?@-tH74fX^r z6dL8{Jd8uxBu1h5AznRp;vn-IeVecPgk}!*8pxV?tv%VdZGdNj9~><6H946qOljFA zOc8-8i^OA~aDx-DiEY0ycWCGp0w~SaQ_c>X&DC>z9d?hP3#-B>wN+q8r0Nngo=1H~ zAPwxw-Ffg`D=|~BO&|0&t}S|y3_a#r=|v`udqtrG$iS^I2K!ram>FXkalw}<{l(9; z=o+)8hJIdEKT?585iVunO?Lp&vk18C7CP$gBOmB805{$YbD1SJpDeO|n*}`L3Z~Hy z>AhD1ipk8pYJSfxF<9EBaQNz8FJJ%BwV5u1sZ)0N5y@MLb$R4&=G07{FS3nNJ!>53 zw8pX`uhlkvztuMktCu|U9q@@kL1~>>yx&+;$8I7+x@RYZxt!l-Zh|94 zow#!M5I359%C3=y7&$WKg{E%8>8h=cAq8-!AehGjp?4A0$E-Ne_WpqpVz;vFR<1ZvRw& zB{exq_P)CBzTt>mdUfx*MhdrNx$g&T`v&{RcnHw2s5XbpX5Kz8at9!9W!iAo@Y4AU z%*@`O&qPo*JxOq>x)s(V1(ut+j189DnFzyddU_CvY3Z$ULK3T;n2z0d1d@nqj9PT?3o_VqDTb zxQB{|U&7B4Pz*>qBt7D8v7a#jM1Ued;d=A6Ip7!}ol6yDwC2gfUqhe*6pQws79beD zcdW~veJiGdQ8h~ytc$Sa2v?}um8!xHEn_AhOrHvIIKj>kEOm7l{BH4ZV2X)P@rNi# zh-;b7ZX*U|71K-W<0$F}D##HHmY}`{00RJ_fGEIU_3SS;?jx$WU}c0Fc?FFHBnB4i z#ro>nXc!iA&`?xzm25R%LM^&9kvVg)iAGK$cX97*vgmR?q`_2JZeODTlkIPHIb?F> zT+#>p6msQ!H9!NWX;I$P{fp9*0I5jh|A1~+$PM}9smPSD3pIJGd~Q7 zzhdehBol3+dmjkDEf0N)4+e+uRY%V+v~polPmtg0Qv_kX1jhNt_t2w z9P|rJAm>j5%K2&y8o%I@D?(RF?Jl51C@@O&^8I2srkvBtvDHfSKn1d3xqHMwiBQ9p z=oJ1aaxaVBV!%YO;Y@V1GMzkMBNjBsnqe|6h2`Ogs1y~5G=qOD-6`c=;2Q%bf`wtO zm!Hw@@n>G#gHXbjGmWbN6HU*24c_0^{upJ`e6=FHe)){$ui^Jg08_y-Df{>Be-wPR zKPF!uyTvSjY?$1}zVXRc&vr}nSuy`9`%@i+3ZuS;KPp0z)iI!m#?~3j4#}6p|1tXu z1DI$S=O4hy-v+&sSZd~a0r(Wy9)4fG^zOc5_-|i-aDzF9SDyB?Slz_IDRIl4s%LA+ zaKp31n2+rQk1WLar2XJ5BosYm+!j%yLX7#fF0Ib$d&IzraKjOv zjsH~ckLvWNEULo>T4%OL;xEW^@qd?t6RExbsXYhAiC(@xVm(y^H0_CAfqw#=3ddu< ze+-;RcFUjI{RIL}1mXFo759ohYS*z}7HVInhO&R(`(^sSiuWM;KTbhNVC`wXT8n6I zSF9N^-Hyo3O1MR;u=00h?-{>o{0k2hlL0%=KK0Mvg2FkNRB=IgI)?7yWqW-Qm=>F3 z>#w?$!<>%*5CMn7{JHSIN@HZOTjri$0-y?*8s>5wpa>WSrk>Hym_G_X_xOa^UvL0K zd5hdM?M6TUu|vL(UGKRE`TqgU!~3D-HUdBiTnk(tm6 zQ>qN3*<&kayOCc4qzb88%5of}2q{L2o{?Y7-wFu9S6BZ0`f+$jg1LRvN`PuAC|k`? zLspDwE`Rbr#(&-QWoU98`xly?v4Jcp2EpKDVCMfJ{tG%SDY-|IRE=L?JTUYB+#=q$ zSv8~mM-BdER$xXR`X@NLeZE$k|G54)@FCY%OBs4bK`4>SrOrn{i2mJ53v2Q{EH^0JP{q|o-e_2mBZfui4m;cp}-pv24 z|9%G6_oBelHH7Zi#PqYoc4A(PEjH;t&;5TE@cbN8gM8!$V?p@5pqako8ut)mw#+>& z?ubkg*`hzs(%9vs{mmh9Z=-(;e)MW+q#kjCt|hG0Fwxc&e2T&;fcB`qoiqW{Ry zAxYwnTcqa6%JKh5vr3+5(ckiAWIh>*(==E2k2p^MBX$-1QU8(&NvggZ9M@UL{}uZR z;i!L!bLE=B1{yaycMlYUk?7H>nFcO<8Ih@Ttr>1aU7YZl(F{kblW6|A(M)SbJMrFr zm<(Y>oS0)`Z%PxCEHx)ysE}l^Y2iBXDeEB#0uDz>lgw!aK6i4)2lbb2==ol>aF9QU zN`4$SB#y3cBiN}v0SlcST6HbHm`kG(J{P-(QbUGoZFn3llubW9kIcA6G;Dfv59Bs9 zJ<`o3Ng5+>v0UmcjpI6>y`%9k zbcuUCt7)3q`aTI*6oZyY^cEA9E1$W)SVMOoEW_795uoUJb{l@TYQMpQh}aa8GoEcM z_wDU;L>OxMI>VC-a!)#OFh9B~AN@8_CFB!Pf;&jAJX zS#W;kDY@M0_NbH{`$q~{ndJm>!xr2JOG2BE2oS5%wP3L-6#<|)z>op4)~9#NpaKo{ zdSSp#R3`^M&}pS1QaG)Nk-CzVc%E&$vroBqv$Gz&VW11o#JuAMW45RgdANk@b?-sZ z2N{BCM{4U-P$soLZ1u0TLx5yYMn}TgoZI_Hax^pTy7!5q<3#a8;68Nl8E0${WYYv7 zbT5X~?Q88n+=Hw;9c-mO+7oF)E|apair7R`069VRaigQvQx$LzSLJ%J^~czAy5k7g zsJfs|OxlSA<}nG($%t&sM4Zb#21^Q#Q6g4QLZW-5!r92Q#U;1eG4w|=Gw=5bpzIQd z!#a-*i=>$>B-nAr`_Eh|XGV66$`Bskx851Ki|*SGd&QE~m1=-1jSH?6w!_ajLChdp<1wX{TMRsbXlvYOf8K#`p34ZorFcS$ zQybR6+V>&0_zyYnMn}sVZs4e>oH`PG`z~ZA^KDk_ zl><!$SN>BdHCEY#1{<4(Zg@}Y@E*IB8ye{66RWNkU8}PRG7~Eivyu9 z9fL;RH4oC*=pL#Elgf4kmPuTK9~OCbRz82?$(a-zF*oo$MB-5lWG}PDg)qLMD6qG| zhCCr~-@<{|tQ>6Zq4Dh1ft$kFe;J%mj){Z}&r*z}vt=|VV$AQGoUhg+gu7j+^?p2L zCeCwfcE0&n^ojgDG5XB4tt?U3J_oZ7c>`~bc$k=9<`py|s$yWH6$gcG7D{|cSP zM?`s)i|xnVK@nErXE=c;>-;Vz0(y0%t-m$ts`%Y&XSMDYw$w#oCLO0*jZC91CKdjz zu%s5c8vFb7^@Mrz2}K^(AH)!0;Jgb6;6dhy^cZA!4v8q`g-exmFi@}jvy65fRbf<+ zM*I=?dq?lMq~Fg!U?T7b8Ic9B=pFfwSdEIdq2LIh>!%4RB-smyA9S=w{>xl*A%rdi%HC2H~g~E{A<00gm*d>`Q*Y5@QI4vn2Gz`m@Y~ zAggBI_soQqg;452o;8vK@GWAB18*5wpVj|D9C7W&tnrR!V{QCJIV#jiF4QgZ(OaVB zI4TWeoo}XPpxhUaW&tz0{#Ez`*2Pv{hzxIpIfFwGIzhwY$!~%5PMhAC>Ko)}?fiCA zP-)R2yUmacT!Ke!R1w!i4^u5OY-guG3>DS!DJO%UK#eIh3Aj=|hSx+>m))rjv_{o; zDFND=n!Ge9@!s}nIWWCm6m{03-aPykg=hfqKGt1nCDg&MDB@Dm8Q7!f%zo+9MvN+q z*`{hls^+8K1ZUgXh$s~xL)8*O8C*=zcCN}#$1&Ykx^Rm#1ENia+JK{Pi$o;Gz~{<= zDss`rQ{Y?iD^ZhHO8r`CTW>ELaVntu4$q@uKm$6L`VmeoWvOUMXk%-ge zr=A%3PwJAxBo6omBZ$b=$VDGeqIHsEAabppu)1zg%E~e@$k}Ou^$2rRTLtB6v3!5= zz=TrAM@;tSMfpi^rI2OOITg0eT0A#^gs9z@3GpSWI zNl^%du2!00Dj3WZ3bPoRfq_HBSmFeUGSL%aEP_jAGth_eSV6e4 z!iuhnqSRQ-({@{fvp39AQ!#Do)@j$E%9X((Dlt(1`om>DodR+<|lx(J~_3c7~dv@*YVT zRdP~{2AU#-w@_@pe){a9P``j%6Lq4*!_P>Y2*qjV z9$GVct?g2_Q?Ds{4Wi0)}~?SgF#JPA=XhWa;(4kP+h8X}4MXE^67 znF@~_nI$C?K9x)fxXh^UX$liUeJBW$r-pto&Wosfmb1$ZXE;sB;AWCa!_;6^r+Ufa z6ljh^=6uiO8jQ-8OJ0{!d!gOEJ^K?po3^(|{_-GmiX|+}D6~ZH3WZjIeoEy$#3QM# zwj06JBglkIC=_TC8}5olmkWh&X;N9I?atfdH6AFvhKGV=ZEPm`l0gf8arg}G)rO#R zk`hyscO1@DBq-&5uf;<6Es=NoMa`hS-_lCKv_qq?`(d+(t$^uUOh=73WVqy>ER?>E z&8SlzC~B1)4krXciUJ){Ozg){-KIFBdd51caI|2^))ehW)saK-Cj=roY9y{w!3|g; zV6~^32W;CL1=mYR&oIrArj2zmt2%!!xLims#^O8{{3KaS0uTyO%T7vWsk}s=HD1j* zuN6QsS}ylXf(lp&PixPYE8cY^({@4<=npUp5G{M{25r=XG$`&1>SyonG@5820ojdU zJk{}nG$2S20Dsw@R#ZnjCTS8DE}2`F`zG${t}4V4#cZa4Dk1y{;&HOEOhZmddhvT-vVgYcxoQ;|yBu`w)^AtFovWeGV)y%A{}*iVxAa-HIG&P_&ti3?w|AkXXsfiUM3 zT8PS6G0IY!K`962o*%rtF=c{8)lfb5bo^otIWzA;IERR$h>>F| zmU32k5=iVx`fa2LSx4~xC`y+o;>7mJ8vHB6!_lP|-P0pe zY@=d_b@FwDca@_8QSFOPSp15w*}8;tPbl& zRkX4Ey38ozYyvrz_>B$~X9`7(MY%<&#JC(zIYnz;`QxvDLcU3I%FNksoUyJh0lX^4 zJoG>)&P-BEvuV+c8kHnM<=H$rw(W}H=QF1P*D`9zpD)l2kY;F~iF>LYbflml-DXHC z@nSf^q`Rk5=exzp?^MH8s+Wl}R>CWBfd?Tn zDtzdsrY1zKuI`k|e!uLJYrE&*miCAtF_MqWi3;#yJt2cvx8xEy|KI{QGjjhK1Nl&` z^o))NE#`*^Wn6sLj0O+z5gz~8uThdSUeg^X+n>aFrO_MwUsIzo*Fo_ib&15qgQDf>hlr?k5GnXmkd ztJ<1nms<>z>R?d~c}ChT{Kmp!A^W`3qD)#-!%XQ7GR|LErjodRON63mwXHL8YvPoI z@g{n*{+41UxhOjUq5>7%0DqNV_|_#cU5`?nl7&^HY6@aPFsVM4Zr&cj=Ys1)m%L`@ zREUcmIVkQ-vLNg;X;&iU8DWY=KwD_u*j(0`%JyizC8wC3_wt-g3q+=4Wbwg^>{CW? z;o>nNd%`xB&S-d~jiKE$I8^XV45?I&RjBexN2&vn7#|86Csq;Sa^|k;naGb zVTG`4`zPEt7`-7Oc0_cixcxO%T0z6%GdQD|VSG@%*C6o(j^Ka(5-G_pKB#UCYPt)NE&1z&%W^fwQ<*-pz0h6zAOPe&JLS7j)tUGr)?LR#=%D&ygp*b z*Wm@-tU=3LdHeWP`aIRyg+3B0>9b{v(1_61$s>d4d8X9GIQvfc3bLQm6S_!_{HNPB z2Z`=PB>j<-Q+GErCIrgj1ddl(XZ+51S@=S430_#C2TrYhw*CYA&ZhPN;KABmLsK1p zX^Uewv2&zcwkvFOhDT?}232RdrXREz%pq<)Vpsb{$<+YtQw3(D*Zq?bk<5EM&u|P*q0Z z4wMasCgBiDUvL&vnLBS)cNg~&zp3|R^d#US2Qq%8_!)o{oaeUedGOgOzF?cu=yer) z5))||#_=44B`l91M$o193rettev;x$Df>c^kGSI^F88A2c2`^cQF0|K0xpsT)wrz# znW&m1Bpn$_uA_E436LbZd(LXxiyo3O>oB02z4u+R99d>unE~bYZ>2*h1h}jDOv3yT zxmJHNm0SIr1M!HA3=lhG8R}PFnN0CR0@qML2BL4GwwQPy`Y?rAo6|ZYBhOA(e9>Na z5bteJVo`O{_p_za$3kPTV-^I%DlE|Gq+Fyf(ooJ0)5q)cQvI3XA6YRqDFI4o)%w;2 z+?>aOE_rVywlsioVm?@BJUbi$<$pbC<@O|sG$2_Q8JzI$;e5w*dLG()MwbVaMvt6W|Tv}0y(mGz< z&|{Agjq$p0UcmN^2?#lcy*JLvLX?OuW_vU#lnPFN07|mFHCvi=A7b0%HAM^enoh<0 z*$;Ycy;_H8B!h-`7FBF^FiB>}XxMcP>{l#gXO_@FN^G)UBBhjzH5m{6nQRkjD5=%T z?7J#TI-*@=TR_QhhEsT`i&g~408j<(w zr}QbcA`rDx6R9zX~e zPPA3W0e!ANt?GnD2IrlRA=Fg7$nzdoJe*QGA!*hC2$D08h)-%Mm36WobLW%&3Bi(T z6C85z+lf?a)xZLcl|a=@<=Fz!yj<#K9KRO1L*B{Y>mL1|pe|cgRVGix@ixKgTwaf& z8ptamDC(p>I59Q%3pO0P7I5_qI$&fLT)8E47@M(?$x6KVMbKrt}y z*yiRJuGF8)X@jee+$shoPhUx@l*a;4Mo)NiFoff%wowbHogC_%jP8i=D+(9bVxIZR z(Pb}OEvCjSq$M-jNp!@l2S03q=oZB>T~Yl~jDn+Who5wp>YGm{G*Oma zZ*vf3a&8GEJhrTpx{%aTE5Z@mSwwr7(5Eu*g;|xK@(u!2_8DzYa9)skY?Z(vXLdh6 z2B&IBy;#C1ZU&xdnq29m5N8M<T?KQvY-~`-<9e zgB9|6pQ<@YClih-Mi*ePRWgbg;~Ye#+rEU5j@PTQ^Rz+M0GO8vGH>e0f;EBG%O1hH z)1~oolyT&J#CK>GY2(Y@@e&PFwJI1j7Te+^C0|t0h<{m47l2KwW;T5l(V+FreT1eL zykJfJo<;oS ztxzOO?JI67Ae6>B9C2NhGxefEI+!Yzu8jF<(uOeUVkxYM3xXL}SIo$1q~5Ww@!zw`vr5M6`Jg-=mO5M$Xa9Of|oXS{qLbHGXK7K`r-8$Thg8DxkJQ zY6Wna&!Ql1Ww2?0MlQ+y2N)@`p}Pv}r9w3CcSPKyTdC6BnFw)%HE;oa#f073C`)>d z!=e;bPLn5fAI8cInMXCdmz_2Fah(Pnw8d0$bEF~y5*mP4L0!%(C--v@qyx8G-+;=I z7+GBpvAtl^W%-hNC-2ZsMJ-^At>bT8_eGtLS#Imf@oqEbzq&_CabbMbtnRqqRP3i! zdBlCERrg>O-gl>d-&$-d=@qupetDLRZC`)Rz-)ob%T?3$)6`|e;r`W9YLvomXGm4n zoO~6fpThNb|23RwlqL?%tzs{UW|z(uf>eE?Jf~${&Vn{;GY&X!x*(u-t1oOpySZTU zGAbo=bB3pDp+*%7ci*YHEx@+J`w=W&qel^Y_WRE-Ce!YyN=Jo}sSj&Oj*TN%VK?nA zxkZM~tU6@8mVr=u8nasceX{p+!#cxUFiSPx{8xCi@IpkH69Uz<-?p_HC+Cl2Hj4zc zTn}Vvt#eNMWH}E`!g6~MBw^CnU_iIS*l?5jp8dJpgGxy;uz$En$VlActk*_0dT-EV z3?TnjPkpHI$cQC7m5tx=^P?tJ(IVXCiTYQ7Xj~fbOt$5;U&ZadNKZIiAWyA59^Z*^VU}>fAfMP{h3O-IfAHVj; z4)9JKF%DJyNr!Vmj`XsCnUPw~By8%BGwS^0Ec}xW-?aP5tCfRfeW$mx(b3WW?Z5cT zi_BUc1qi5H76=IGzi%RNG_iN}q<8dM(X~_AmQ4CLS6_kW&)I=eBhBFR(A3-r`zsp@ z2XcVv#F3L*v^{IJBT-YzF6`q;$3ej?tz_(ZR(2$I3vNfb*VK&v%~V|)u+ecP7|U!~@XU`qRiU2Px#_HoYU8p+E34*u?tD75>SLUL?Cg}) z9gFR?828mpbz!)y92-LDDO^<5tInSsjXUpbr`KAh73E{9vWjmn=PipI6YX3<0`1Nc-MSLu&q>KbW8XM`#sFASw~DBLjW9m(bK!^ zDCno_Yz5L_x|52_uD8z3i_?1tOxYeYey-j14HEd=@zXfJOthR-GRN z+|^|j{j6kTw~LDFU0G>=$j`QrT|Y#`(w|i#2I%T28$fD?zl+ zgjHLy+)G{S`73}|gb7e*MF?^?%8? zs%5ELq<&pWuI%&%{S~fIYZcoOpdMTSs*h)g*RR447s%=3?)9rK72xXS=jrQ0rZ`Cl zDC*+s>*wS5dbxR0(eLW&=NRA-Ksu?VDK@GfrzG`8rCU#Qi(5G>J&UzoUoP!YKe$T| zJPFrC#g{Ta^wgjhi5BV}{=18|?XW-BY1Ur}MSah$NGq~`m*j0p9f}j)o9MDeZE`3P z6cC6IrB^F1`q!XN-l4psP*sZkZo0#2N9t$UrO)B(Tk$>?nR3@BYeF@WP2*;|CE)b? z`IANJXk!jOq3~aQRa*z$xiIO+gW6(L-RD|a&51SJ=&W|2Tz$pv_73G2rPZ`?AM%58 zUPfb^7`AR+;bi+YvvPGKuvbo&VM7i?N3VN8BS#Bw+7|%-^K{ z?4L8k=7wC6tnc#8^7q_~Oup1?yQ*(n{^iYbPV#k6jPnE3&2~&mR&nGT>FoUScgnHk zSe&W6R#&>OR;BH{EX=#k2X<@MWb9Z0gC$&-NcZ*y$R6{H z4)&K0(PdpRB()0I@Q`^a|BmD1NAo5%03X=v&7k&|sJyBe+~t7CnxKd#rVi8!Cf zu%SyPOb-&y93uEm1Vq_dG1761d++bXOxP&mQrV4bipB{k8EjJZM&0^nu7Rl+`3<0F zJH&F>j~n@sAGq1i?!RUjdc}>R!7gtV<9_}oT{#fW@%h# zak}+a_iB4f41QfEWH1TiQ!HB3U*W9DcJ{WS}$)<7G0N>x%3Q=7ypeN6f%X;CG-c6lGB zP_^qh5=Y=cB9Ga3PWA>$z({ygjUsMvLgtL_i(6{iDy7M#(gozzt746nxVzNvdVPL` zMCJTY$}THhgprlP?M#*i6e1Y2bG#{!Ii8aS$f+?LVv#>UMCLFg-u0K@WQVwvMB|Bs zA=suYaS{4im?ZBUA-$%^`yJ^pB?8o6{W`TEOfklIB`l>X3$_F=|8{{+e{*=d5XJ~f ztsshG)>}PHJ{ORLKcU!inetAmzFT37%Lq6;&A@!OZ>-W<-K4^%bG%4Gg7>aVWJ+k5 zBzIQ>bfOvf#k$!gN^w$?y!e&BT7W?yq6Vvo;+3alw~`9iOlXYlgadA|$#(W*XCk|` zhWN+($P~fs%>LoLyTrq*z>RoM&P_%DkcBCupO#31T(BB4z4Q{%7h$?^%ht9ps1!qR z_yCaWgb4hB>rF)QNe1`17W*JY8%>V5joao6J@{g!E!HX;hie`$0)D1U$ zDPwtv+ag#|9;_w|=U`+%hZx1~TKSvnsn*L>x@T=%x7f&DRCR7g#`}A86UAKmP{L>o z8s-+x0QvWEix>$~JdmfA=F&cImJdD|zZ@n8p)`^Jq50z5w%Et=_lR;t#@~HYwUmj! zY)PK38JxkMC=@x5{Z6#of~54m;_pFH5ekV$qq6=ji#SUtX;7}^A~7Ii3y2FM-EyLS zoQO-P0ENElBG>qISJRMzz+I|hwi(!!jSYx5O0)f8&fM2xqGQP5lFoG#8S$+JsaoWE z>|Gbicv5^kX5C9-WlZ>?+*DV`fC=|4K3C4Uk`|5x`Sw5ci&)fxx5NVtK!epbzo*B4 z4AMe6hDbUdRYxu~CA~UW?&!Ekr@|5=S4FT(!PLb~eq8UP%B{c>_MTc zV}2=7C4xpZybFP|l}nEj5&|%ouw54a*!M z(!hg(x0=p`ODUqdR163WK!KOSk&eCt?>}Js;af5gKxTQ-xeyltgsv0hKc|qSb!Co1_D_^9;f9;v*AxA46Yo65(a7ginP-Y=i9f@z_(P{zi@wZpl{hDP{eBt; z+1*Z%r5-~quzH5svdj71;N(d4`^guGS0=Rdlr@p1Jm|zR_qm3iUeP1c8E2(ycrD{h z&{M*E0ZX`uyz{qA#QZ9jw~4W*Ryk(Fki4~GWdsrxih)B&-Hb%eRGZO(ZJa;}fni6a z*hUF_i{hHzri$Ewk8#MH&^cH-@C<1v$SeYQNv4xv17p00N{<$2hL-Q!KKj?iVOJrx z)|%)LS&(+Fxl~Vt1KyN$YG~D(YMe$ zjD~WlwsqlPI!An7C#REIzR4ADt)X9>|Fs3(V^VC)9KP5;+NEPsvEUI9_?25pMqE+d zsgTEKhC!Tg#@`d0SbD<)Q*TcRhC9L%|L!oH5r;Q2{0JMBn_8a81Q|N1Ls^xm1jK~I zR!MDNn33`^dKz;qJ788P8Di-w&SA`441fCeL=Smzahr!@r}y_?j-JR%6vO63TE88# zLxKLv%)E`HR`CoBHwXxkQ7)p?B7o-_@x}pHYBk4Bttn)ynoTLOVBOYDc$@p7o|&Ce zs3}(|kg&XKx@iHj!_!ik8sWKAaB}lFUtz;?@enR-iQc)c&TemWhoZOk5o-1 zO+^oT*@+@IlLl}69La~M)y2Regq5*d#+)F7nK{vgh~u7ODIsvY zMSR$W{K+ZHAqD*+wj1-|rLeX0i%RFiA;yf0!hOi6V1{i_KZP-$StB`E`(uV3DF1f* z;r}^^$YH42H=&51K3iv%SAB@cOXvc*c;W8M~3Axyk%egd+EgHnvVnM}`s z11HNmv6ak@Ar%%vmpo2{dQZ4y39`zFO3~h47MokC;!huG zsgoq3nx977b;8bx&TjesBYedu|6T(ia zqJvZc`td&KtH2v`XRMBCBS^)#{Ynjyif4HurJKMkxA>)Kh^y~TVT^N`*?EWA{M1*g&LLSo!wA?EME4T6+8e%MHse%IGtu#`~+A|fFq?-Gj>|wKc`5Zc*Ki9>nZCiPgkrQT3`&4u^2ubQ>43E zTy*Ej${}GmghEKCoKGhm^0JAIn{AgdSEKOg5E`Gh`qmV_ym%Ti!ruU8{UEUTBJZL4 zC{iRn$3rZjMMPwA%j|2XF*jjlxQwB@E6rkeL)ASYiO)LmI2@xjsI7l*y98@x zi1cq)S5_l7%}%Hv?s2zJPM#-7^#p+|RA)e2_g#?oUd2&P*B9QX7iUp^mubT{y1A}kw<0(KMUEG|S|bF5g1;s36);?fDkd)KBmZ3F-vt8q>7~t- zEP;>TVmn{2%0of#87EIGo#6(iuv0pPbQ2cxkY2g}q86M`*xSV)!|J-1=_I?3{TrCl z7NCHE?*%W*oAu_jvHd4VUPG>Iu5?heWij;mui(~l0=z0xv(hUKmW9GL*(v|r9hrES z06_`?#7u&C4w+5$Kf z3ti(wu6pnc_OIQ!x!-!Oxvz~K4ChTWJ1+L&ZjFAIRrc+jZ>2deK6}@YPdAsd7aMPr zm#4SyucL2AI(NOV*dyRI%D{cYi9x`^ujaO3jrqn{4NHd*zpxVCur8q(_R%(kyeS=%C)tIn^>wQW%h zC!asHK=|0<(@x{Non#vo=0!OM;ya6=5bieSrd*PSMUvpJ@Qu&me<(@R(V*4r8d@Vy4 z?1#C7ujIVjel%XS;VQ06etNdVZ`iGi(e9l%RifQ>;jSY7ex`q<_+DuFMcDjHT!|rt z?EKB!BrjDT4G-s{jMk=gY7|{E7xki!^p$qy9@d+JH)sd2(jt8&<&{FND8sB7~@`md|A z_E=ost;UW&4bW$sE?3RU#ee`Q0PUmTnd0!$P=%_e3b+XwLbMypBqmv~tu43?>!tI# z@ai78>ptI-{!EwLy#fDPX}s~hxt&qY{Ty%enoMp}5+-}Dd`Rn4VMSu4OZADPP%paL zg!f7WzjC1em! zcHiE;dn9vve$V~$7U&(YD`V`B#6feIo$A`yt}~A=Vh9sjUD{=5lPhJhwG34s{X1=4 zi08=3{FNGHz#g}SkIG|BO}+XM`_Bg>$eV`!a#ZAx-zlwIh5*bUpF=kl#h)@NXNXnH zh_6O7z{}72x#7-FLlZ+6@b?hL<;15`M*dj21_lx{v-EWRFHdi_8L9TeD*FZ>JDE8gk z=tr|}`)~mkEBI>JAV8C{YVr3jlrt0Ghku7-9pz)2!Q1L|l^cJl`lT1A-#qwwtpAsG zRKNc`PPM~b{a(&xrobKYw>Pdrt^gNy0yYfrWWt0;CuP^m+IQ@t0=$6D<5e1O*DJYP zpEt<5EaT)K;&P*0CY`B8r1BI0*bo|NxF6%*JZCK|`K3zMBK?>Yx;=kkG^w19+d{QE zjCqNst_)}b{J>?;J-2afdj+o>ymxujT@ukZzN|*N(_f6yy29=gzfb z_;9{WtrqVVV&%#z$NN@n>|qw~Z@0WD`Ec{O{-FO;!Q<9)a*7ZJ2#A6i2ng@Lk#Dv} z_7=u&wiZUtRz~)A4yIww}U)B)acQJ*Aw@%1%E6lc%LG$HNFSENE$ENIY)PTIpUF=6X@C_p|3e#H1bK1^9Tslta%b-$BW7=txjp^o-^rM`h0?oob&hI zzw<6CmVYQXO{>eSDCect-yxMB$~`=u42QPtp;5a>JjMc2BjB}kBcb%J|Ku2~72um% zW)8B^wts8%>Yw!i9(Z^pADkW^k6+x#VxMOol08a{Ym|qlrvpweg)gHYzM`uSf*B}2FaV#^qi-8W`*Dcr+Bi{> zGyF+7Q4WRoM4-tqdg4yX%XR)@o-jbN=m7rrGNj|qxI`sl;YeD7e6(RwnHy?`@g*R=rqoHbj94F)T?k( zIl73^a(w6S#mFk2MFXVskorJDq1^g($27grc1XSJt??m+q!dyX)e@CgcSIvlsgHef zq}kH))hG49Y^kierskYg8CBmbfff==9U1iawg(0bC`go5YZ8R^ib(Z6ccBQ&4=#Z5 z01kj$2#~L9r~QZIY*EXU{@p&Ba+<|R-Q9f|;2joyu(zGn zw^Dl^PBOd)AE@xMWO-$T4|p7S}Rlgfxi6IU^ZWgd*^FDCu4xsyvKiIA9R2HE86H z>OzuE5{?#185BvHM~tJ7202{XksLKrG0!juIv5u_aT7Z>EDH+m4;(g)yx>EGa|FN8 zS42+1O@W_mCrPy}hnu*yJ?KsEiQToWzk8`b_Y#6fse8IrJBE~~Uo$QMH$gPLI6HAA$94NGcn9H;o}E0)HX$%in3K zoT3=-`82t6ZjBJAg9eO#I47K~7^G?byFdl1l zneun|aQ2*swsS?3tyt8X(Nn6=!@0vQAn7+a7Zd|s0s{k$c? z*loWA<4lkCNrV)k+G2HJ~p{$U}1Y zp9Q=+jtg_ZACq^sYB0Y4>~kT0#p=2+`2Imcb*T*&UGV! zwpk5&Vzs4}VXwwkZA1U%UWTD&!h;=k6ruxDpAIpY<W%^U z(qR60UO4jWV?^PBJl9*h>@}yTLUOI`2Z5-;u3d}zadRAS2ic0vs|mF@3=~3q|Jg)f z5-m|0K5|9Ej|lGfZ{N+nCNqxla0~{C6?gq1!4&@?3wQI>pcq}Y<>T4th>(c~We>;z zKhzx`Y&Ngvx6h?(H=@U*+dPE%T4Q<100&R=tY~nx`IJf@*Mv^hW#KM#XMUP&Il=m7 zv%XB(HunSQm*D}`>_1<`Iu-*apDRj7-6>nUw#;=CFo7A@=?z{lqG{Uf(5d#rUw+*b zROVC7?p#{e#9K431bQ~ec6h)1257bKZT*i?t6Q-Ym~46?;Na&XvazNd4HXKHP0P63 zULzjuY&B6)n>R4R-DT{G{yHNzk+R`ZhE2-Vut99&Bj71)_I*>ZdKvmOaeZ}kr$E(K zHwi7wih6XueMm76{uuq@Jf=oFr|G=HLtL#^W`XZWPM{N?q?lttt~2LB6b8o}1#Sie zY`Let5IROWe+&xZcf2_ug7szlU!`qMfvUjRw;w1D!-F&jH}L+|+pvG)g~k)!Q+?DNA`{<|B zn6$}Rf_>;2tAX3-I8ra2)QbN&G56iOzBC`g2A+Rs&;6Qhr9jZ_+P=Lj&!cp0{@p!Y zamT60dwjh_SG+)BNOdK$a6aW`XzSyEvQ{guz;!p zcH~j)e(CgGmwRJ_*unj~c2P`E-+IT=IL#TplOHLR3-Nq;p}aEt z0p~R^o$gSLt0q9B{}a8Q@M9H~# zCMrWeucL1Fe*E3gg1zvCxk|0yrnhJH46k>@FZZ-*nJW!fOsdc~xOw5o4V%wW_S5yZ z*Rv5f-aLPdf7LO{x~`Z9>q{F5@`=*>>dU_aul`njE1#urirwq4{#yb}jExrnC@`L3 zK!Gak=l>GNo48ZY27v_v!WI8H{ui`1@p87ZwY4(&|HxX`PGOrH{a>DekzR{6O=-VsY(Rwwb9TscQ}x%)M-FM+)yOcTSsi^9p|e!Z!NJ3Q&iEYT z*;v>|xbON`hyMutvxj^9ocl(2@IkJEZQx~C`{0~|v3m~1niTfzx;%TVmU6@JrNE>u z`u_X#Grb(SQs$8@vkaic6lKEJ+xpZmD+NmYAHILQ#Rl)3miwr5xcmgcs2Nk_abqF- zA45c}Rmi~*vJty@6Rd-K4>vQ=JvS#ZaSLGn{>3s-`yz>M@lfRQ|4MT^r5zI5oOtoa%2(Hg(UXXuqTj4ke>uad$S@HMKer z5N4C1f1vCyuh2Vknu)rs`UD={ZT`57lPgL&x?`oXeu5O8EOLFHryYOYvdz-nQCZXD z4&^a*!#ZgXjoKeCp1&ldH>CQ&EO&x;kiVw4m;?((NRrAyXNrbqFYg10OIXLla@oKd z`Cu(;Ec(s^z+SAbZ=CcC!YAbl&23oUVLScsQcVS#xXJ?^3?KQjiEuixJI`PPpIxVt zT9kc)*AKv;_fHW9qV&ct>mur}&G}gc(|k7sz7Jj>xVHG;r}}L3^Xv(7{e2O%M6o>* zf8ez<4+K~_tp1Ub_U^DFCFeHZ&KoF6o4_T(WxhYz#mn=2y!-sz`tBXomN~^%`N;=Q zK0=$q#^lML9Ok`L&Q~ZulX>lRO_snzzgIO$hY@WIC`!gVL^f27abZ>?5rJ2 z*)eS2XA({IX10m;Wh1d&BgU6sWWI=?&FArhM9OS97@#ozQQTf0 zAnWamp*J4#Mwdjhr1A5U*_#}of6M_<f0*naI@g7122Ysd5952YH4(EDQ_7L_5*|90tc|3-kn9L11`FsB0;wsWTjg$vh$p zT7d(=76CIi6X_Dil#+Af7bRe;Ac$KKs9T2Z82{B^93gWa2F(;iMiS_v$rkh)@m^rw zvYthhgFT$YG%}7zAo3elW-P-C_Q`~k3;!d@g*7lt(FOKo04`jczhXJ&FDe1RIpmiU z@P8Xjg26cfKO^L4q@-psElWnoM94$|kC28*!X~=L5dnvRVIm8<0c`*^0jokJz=Wk{ zL0W@EKp^e~y`qmK{*FA9AvGX=L!L~R>=V5wOJexXDH__uESV6^Byrs#$zL!T1v-rA zRgE!4@t+c_hHSyZF^RBTB0mx^Y$z3hH?j$oWbvv1-33P0ktiZ^SSDb=A|cL#gEE2| z+-I30Xb00hl04%;{2FXnbhgPBZ9Q1(x-I z^2RcL04<<0+)^O{T(1cRyN?u~%$THzB#DF*<-JURCRH-2mKFw|6E(ma;*;YH(=LC{6u15Bbt(P?CFN;%5( zSpYX~C|zy_rvEcF8#CyW8tqysvR-+Ar3;5$65?dJRg6~RNlaFP42eBI5phc?7wJH0 zGGSlUU$q5J&68Y%vZ}(mdgwr1EK%>gBFb%m2Ko-&Nm6YV?WY2FQi{|_r`cWLpG7VpjrBWM33pcZ6%?cS5ZFg*p>hAvsO5 zTICsxnFAS__6v~Gu#c3L_!^qg_s&|;A4%kg1*`v`xAv?2noeH3HZTNzq{UBSUnly~ zlm3FU4o=m=n$<-5{-BqqaJqxX0(=X8t0iHO4G_)x9PA$(4utkGbZj$&ADSb^jJXQL zJ8ku-ecj3hdMt`+2P-5jdhd zp}RJk+64~>ZZi>Ns{wq}�+DqSWGMREKi0 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�)j`)>% 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 V2Wep1Kj0q+(0{<={^#@6{{v;SD#HK( literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/colorama-0.3.7-py2.py3-none-any.whl b/env/share/python-wheels/colorama-0.3.7-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..e322ccea3554b8ae256af5b388134e3afc4d70bf GIT binary patch literal 19915 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 Icat|sf;SJ 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 Spa=s4I}oY?16bJ!!~*~~91H0H literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl b/env/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..c4d104ab2a11281de613fabd2bd3c78545185109 GIT binary patch literal 13506 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�y_7OKmjU)V&Z4k|4`-=aTgNCF#&7N`iKf2U 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 N-uZiS4E}TX{{WZW;Z^_u literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/pip-9.0.1-py2.py3-none-any.whl b/env/share/python-wheels/pip-9.0.1-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..83aa1369395e12b8f4441648b5b3d21d57d9be8d GIT binary patch literal 159285 zcmZ^qW2|UF)1{AX+qP}pW81cE-DBIfZQHhO+n76(OlICMd4E(o*?+pzsg5MI$oM|m=P3`DKM3saU zCFGSQd5 zlTFUcC%j|RXN}x?lq#1c%SXWsdU@^m1%#w*BI`#qyKT}syOuhbUqT)DIx4uGgzF2A zSj2E)j7)7llNcI&TX!kRpzMo4_)OUdAs}0bA<0muk`?Xrd($sMx|2-Fcf{`BSiL--^lcF zXbbo6`vr3~mfa8FW3PMb(C@2I`h$FO5{gySCpaqPRtCSIP!r0X1wX6dKPuuc zx&Y@;T3q@){&2;e>D@1)k$l9YoYG-)Qc0e6jzG#x!>$-VE**=^5Z~)thJJkeQ%=&V z%XoS7FL`0tE@{HSok3VdxY%jX=KLgmkZhPmP_SzTvZPE}zC$b^g^_7*cx3lSEcF{t z!86#h+qXk5tOKu&)Jcj|f3es5HWX;g`SWul_G6_Ty+Z`Z7WO|;e9s^HsznQ4-=Llb z$dxW$_pOdf?m=_WU4g7NH1-0>|3^mk%F_%M0|NlOLjnNc{FjW95mgox5mXjTR^4>m zWJB;7RkJRIx8)@}lS+_X8>^-+Ehh^v49|X<4;e=d4EDY<#{<{YuKM-z=#JI!9`wMmX92f`TcjsHmG^ z04`OAgfi{zHlK7Ven8?p9^M&8v69N)nY~%lx=NWa zW&=cN>BLV6lGa@1(9oF^Y?%&G-IO=E*z);;oI)&e!p9V%}g24Y>yK!*9}D} zhlaDwwvP@b2{=XQ-zuw;z;$6D8#D^n>e9FtI;_c%Hq0(4)roz!H4K&HIT*Z#scB-X zAhldrZDF!gxJgPW2j8j))`I%06~6Gfi=|--QW)48mgHh9qVoRUjqI{B*TmzSM#`Iw zA8|?#XZqz#aCjik!=H73r9birjM*redInDNwF0u)WrTm9D~8piAV6l%nV*y6&EB5p zw+?QhMBMzS`nK=rI708c70QaY(#OTUEn}p+OqK{~q^pmYV~OF_j8?2$A2#@R z&feq!<1#JD-+S1?2u6mo$GgqU>l}|eBvhj=biQYU)DNZaMF=sr$9=zIVU!SlmC9!1 zdhOg$Ko)v~p6mMk7qr5`f?c>PzQ!ES;6}|!X8JQ#SIOwMzY}YZ*$O*|TR8Zm<2Mpf zDz+K;K2a1{cY?RNh!Cu%lyCX|j_gPBUQMR|MgEVbh;u!NZ|>ODAxpq*H(*(PFZPh8 z$=LW+cdV-1rWnHr=h(!q`C&3yW!9#UVYQc5}`_ zstf#U({Xi^Q7*LsZbo)~7|xsmm72p)k3-N3t?R^4x%Oj^2Ex1E{vaC0Gkb~cR70Ku z<>EDrwY+gnpL8*sG3HncIbQ_L=vykAcc%0J-mUFLO|+S{MubFm~@Gm~$Kr@$u!tI&-}|&Lu~sf@!iQ3Az(Mj?ZHIP z@&lgX66K%*!(h~4rDJ~fJ8&QZ#`CRT^Dn82pspVg@0b*r1kWh+wZDj9$zu@`O3EJb zo79R=b*`m0rS+`FJFws(eip--;F7Y6{3v&lMM^TbC#+x8t-1N!q}9ueisp7$7vlTE zsXqW28F-JwR-hrm8@@WWGw+#e)uCuRFrd_w>}`g3VEe?<07vfzLuvFatdHrpdWxJh z3_bz|c{seP@~{l|k<9k3di4(602Fe2A9+YLv`IuaqMpgz4sGzcXaG~?Y5iC(`>TH( zN3c)bfoaVo*;=nXCW;u^6|!g4#m*-S<7EjRiIw72Q->rJ9bT@SK&2nMVO)iid!SON=hJq!Yrf z`n3|e68qsd3L&tgh5-&K&#L<&8ItN%WEFjkjAHO81BfSJB{qdSR)UhmXC@oVlqGd% zUMIzCrDS9lyhHdv`fw=E1*XsZQUfOf@u$^I&A9^#Mv!y7=Ybr80ptg=mrHlo;wzfq z*z!`$gumkod@JaL$={qn96c(r`F<`!{2+sCp9;u-d1VOx+(_p@OZMuptRGyYl{8IC z35i#Rf}MfPR_q;SENsjJ68a9angJwnhncP|xBnT%sc?|0r&e##W|Chs@6j3I@~O(- z?j=1@oY+w1dUJF7KrTBh`LqSAMffs}078R>Uka1YNAqqOa8o2{ERmEA;%1`5-G!c> z2hR%ei=L^iKkp?jSb;`fZwq5eHwvP5h&?3M!(AJ32cIko;m@P^NyacC z@Vv2~i|3MpF!m~qg0xR=!kUM77B3oKew33hL8RNO|Rt-c?5;1G4u3X!{k> zc=XIhaNJXl9kz`4m>@v-02KsTdZC3mRjVu6HlR`D^5C?df!GMW04y{}@))ds@?EC} zKx6D=fGKZ-c$p-q-TgV>pYpjEfPk&HK(@E0*MmqRiO z7w0ZpU~Yx>aXI9Jnx4$?W__cerY59Li5TuzVod0snbx|RKqef2-86?A=5lEQ^-b<) z!{AK~A$u!jqc`kH6{1<$`pq=`?g~-Mf5;)$xED3&$ampX=^`2dkh&?$N;x z=Ls&E+}H_WKSGrTQjqyIC^}mxq_KsBsF?9C91Xqr=x=y;3#)3ApzT|!QMaSi<2%&O z-o|f}sISLSS*_hlYUo&qZ5m;YQiU5_@f9G%H{Wy9up&9oc`K(r%m^B^!lyM;A=nyw z9G!YbGd*bx|D<8?d`MQ-D^_hG_*y^F6A4$!p=$-L$%6@al&NSU9Ml!v1NLMlx|O8b z(#@QLS*VY@*Xyqb>XKEBjr=TL%ccy14Z41j&8R>aQ6ZPah$B@YEzegVJ?|UQzuVV4 zbOEWr>~f7NZnqqM@VrQMVtL6YddAZc?yln;X5({|ue%Q%z|i|q3tW4P#|_zdy6{6R zWDTtmOnkP9qJY->7)z$AG!NT?x!2cqw_zz2|6A9Rn|pN3S9df;p?#~)&RRM1xH)ku z>-biz%b{85c@?1~@A}M^?%U7bjq?%w@>*1EOD=R=MY$}15c>y1nvef1fs4t#D7b(? z_2*a=F94%Ni~5)H)=nS(MMx#g=d!DSn5v5yknCV7AqFo#x`r#>0Cu+HxDT&bw_?w| z&pu0pf3Qa>kOXc1&jcEe)UIlZG8|>5V9UxxlC(i&9 z76ZuY6XxGDIfOKC2_+)(I-7t!_o#C_WUpm7mS_SmO^%ae-~9t0m*vhOednW|9fS))TFdJ~*>Z7>x_n^fXZSwJY~EtM&ZsmVE@gTpZaZW4sglb1yV`WJ`aK6Bx*llt`}tE;>X`e_lj?oT*6KLz87Pd}pwl*NAgG znTteC1UXr%cn@Bz`HdF&^rXKsv|^=(2HiJVL$C4PmineShWY_sbP~2sxV=cZlH|ai zvx=*{ROyJL@`Du>>8=kLny^g-^g$ZNTKzr4^oG1mRxyd$li^9sN?LcUXa}q4 z&-4$$)!}YEi&})NPxEZX{PXrIde^@h;%6ONLh1Eu#XM+`{-ofNXv6;sL3d$>X-}>P z3!X@y09~kuh+FS5BgQ@{J@0jqcIzfL#v4tHK^;qDNZ&De<_NRv>?;`%Q6ur$v8?tU zSoE#*=^_7{^Go^R`f*KwII+bfT6_UJ?mkzsMg-N*y)|8j-d=e2jAWkd8QmI*JWTP0 zuZdA5Sl1f_zM4hMGn7e^UkTS!2y1g>Cf_BS^%Wy@Q-mQoC6KT$1|Ahs?ZPoAfFq9!k{;4iu_h;q`C)%;*j0T^*woT&WCK&aspnmdiw{Fj@@#t~m z*u^BlBX0y|g1e*SZdx-KZO&}k0|j~U6D)M0%hRJ;kGIGP49>OE=Prz3gJ392S%feUaA*|~rWr=g| z_u0q(tRD`b4SJZ9<@8;CK3yEpulYjhYz*w!_Us9$wX?;eyLUVEX( zm(#Du>Ka$GC27{3*8y`QNnnyoL*0bjq-U;pChx0yYHz3vbeLZ0oSt&F*)5kFhxhL? zn#a$F8RXD6EYZ!we4^t$*s+`TtRz-94H%B2YhY}t24rq4!TDKr;4iUg9$v?=U1k^F z2mauvTnr1v{5+v0rfh7$VwRQhio^uqd|*CoKRuRSt#-zA?KDr^)9V!!On(V+e{6x> z#jd`+Gz$97zr+c>Y>wkOxp1`W43}g9#(k<%i}y@t5^G$Uz07{Y<7KJV3$$?B>`YsA zzybWJ$`lQ$(oo4xlI^pUhi`E*uI8>-g0em2f!sKu{Q0i^1^>^g`(=BfNAF*?ZTl}U z|4Y@aCN3%}4LvI^Gd&M0MN2g^HQT7ju*AIQC^s!dD@ij>-=HWiIZi_tP7hwLFvl>* z%r?h7cLX&tOF#civjR&&D>*$b-JnQ8NhNa(B_Z9aNKwYJFg-adwJbAL85E8|EYkKr ztbP-E+7Q*h(}?^FlK*ll6I*9T4?TN33tML=I%jw1NZFZL>X})IXnI+?2^tE@m}9Cj z8u>aEfCSa{@N^G?8b&U?Ss0BV=>M@-2@7+Y|36TL3kCo{_+R$2F>y99HgGnevvjhv zZC2j3LuQ2eQ5)d3Sxjl623D{@{!6G}VT5{(ogurP?FKtZO31&VqV(%_bp(Zbuun3i zbdxpvb2aOl6DbLKd;AyVG!pVtRl6T5sh;+%??f=@Y~6TZW(_ivQ)!e+yb#>op*D}h zbXXaDj&_Y zxFr{MgI}cFvV}pccq~ofP-IhbyUr>fznd1UtqwC5Te=QZelr*G9K z!0g+9afOP&0JNE9cbaV&munE2ZMiU6?4Z4FJXEd3Cb*{2<~oR$S_C8OFGvEK92Z%2 zT!v%c?ftGb#Y>M%C#ly-86iYD6Q~$`0h9$zF0??Eq%WjLLjs*hzCi5``;5q?hmmxl z{{jgSt)^s^I!yo}YNg&((WC`Bks*Vcb@|1Ha{Lp;IBTi=-`cDu5`_F(zG;5n>>0Gh zP5P~O`J$ohcQ_S_!pnspYo>c9kW2EvfC)~W^?_2%?h4dA8ixb5niAtoi|>A_&Y7KO zBDxmUvVEgRFOMDQ;X9?bh zaUS5jLFR+D#Q7FyZ`)ZS z@VVPK@bB;UCy5$ef)=)mB_0sjhizOBL%m$aapr!GS`&^8;YaFal{FV^8LP|i98`G8 z!3@6&<9<`0bjf$}>k17&k^fV`qxh)<|1uW<%mt0Dwpf0Pt`5->{ZmPtU^E!dXv`&fcR~)5d9&4e6&wFJSCB&YFbH_I4x3 z^P(w{Lus}sdQ_r@{m`5v2|^-_G67V4U2^l+w=)twkm#C=*A*)s4e z;UTh^qGxY7MUcjiie6N6sCa8i zo%m6krq|Hyew|-E!-Pi|vVdkGtGtAW?NX6RrN(v%q>VN+Bb*g^xTh;%JU`6CI%TBM zd;p}3JPi!c-+E0%!;27;wGcM_~e2y;|WMOwF;s0ZGj* z6OFZjdcI5ST)7@NG#H&!Jf7wdm7Ynr3eNaaQW^OO48|XN0of%dwN+^Wf>tdqFy{k# zuUci$CsCU+W4@+mB87o@7Io9XCY|<7A+@a>C;9je`hjy^!%eG@>)yBcK!Fy%5z**q z^^Ix$?@Dphbw+|vceE9T9VjdyxR_t0I?CNKv|Gngnh9$n?yb@ zIbt`o*!b}ZO`J?|(A9w6vNWEQx@;@jxZ;@Jh^W<)5LfOTlSo2fq8Q8${f1``8W}}6 zN>uId+NbLo-4Cce(a9v@ZwS;DOTI{$V1oxYSJ!{!0&)#p2^^E|S*0>NK+I|#bsrfP zV%YFvVdv%~n;p{9gImv7%Ff}O5-`~ua9U8Ph-{OF3AO?X3T86PFSMWV(9zQ+;_r6*Wb^oaKOR>;ww?mE6V~Vr%LhYhpfRHdAn}Nz zJ+%R`PtPrHc&q|4N%;EsJRiu^g{dS*az)k5nntDoL5L`X@)n$mqtY~4;L;R-~M zZH0BMc$ZvBH#XM+m7mQBC(~IVoK4@cTg}uEikL6%qsQY4CKJ{Ctv4tFZJu}OX5gM{ zxV+qsQD7lhr-kekg&gs&1ARI>Z*KE_Nrk?A`~mfrq@U-YNrRSTE{mN{NB(At^7PzP z(Fo-@*opul0+8zC2@@DLqXDq12FgWF5foiF;FwC9J`L$Ik*nnLSKA7h%@Tc$03Bmx z`z$@-mD{4qczZ@*;9>|7NSOqsAccC zg#DUrMG#{@__cBNF{XmH1E)#g4uy?B0BqU=;)}f1VTdgB8DbZyY^$t?*h!YQ5dEbN zZc(*Pes&H?N)LTKIkdxwW1ahd8*n!;_0#jFkdj1N_(@|>mS>y?b0cUo7OS;Z{ zr=prTGGKmV&VRv?T2<>}6I66r40kka-;E8Sqgwq=LVqhguW&$S9&g-f8T8f0qw*3j zk-th8g0F*x?hUHLU@VTWUz0KS-F;Ifmg&%2sI z77UktA@Y_0A9YkXxqpfpFCkN_ZsAro-XG2gNc`hAQt7H@y*K*lcD>mlNtD6jv{WNy zj|rIz!x9S_orRU z`A8;)Fq!~J$QFzifPCL1MPEB)L^y9$vLX|<2)cZ7kE*&=fJ|ZXuIJRb{0`ldgk~uJ zPXw2uO(d8>6zowspz#~*vj@eN7$EoahGDH>=9{F9`RVl9^HpW={AZBtT;2QHU7!?2 zwRc>o8`|zB7}Jg*dG?zihUedqXuPzvWM|djpSk=NMIt{x!+~7RLB&vpauQlf-K^fa z%z`czSJI6{n~Rc*I8Vtc%r@I%>t=(-_R34a1%+(6M;@-BVgmKL(mN-v?+0wq5%SG{ zg|z+w-VMbeu9Kd#cljW4!B|k!>yEmRn|jDh5H)XJvrq+vsZJ^$&11BOFQrvk`m}OY zI;vM+HTlXx0(F@1b^(-$O!k5UOSXW~%Iaw52TsrfDx2$ZoSw&N{`U{?@9AFA-d3Aa zTB;#4Gy_0J9*WgSx`$|>X&vsO1+6PiMfyAcUr1O(C`OFY+k;toHeK6yH*8u#UF5y%0Hpt;9U{3qdg_HSKsVjve}@;q`hvum#UFef>6 zxDK{hHqKK~Zk+wSbTue-WLzoCl~~zoO?)B$WyT&S*!tS>F{-N(8}6gjuWF`Du-Na@ zzh;&B$NS5W+|7h#=1?HyqbbpH%NX|q2~EM!woFjxD?)vvs!aWKyfmELNwAv^U(N;| zi0R~7B|z4<_<6#^49%>-_EDN^p#Wl&3U!9%{?h`hNiz{Ff3)s5a(2^J>yJ7eXJcUv z;wF2t+umEw)*hB+h?LWTwN3bv*4+qVCqP5N0@eK9AGQj5o*}9PUoXi zA?xPISObtUG)Ly0?eKVoaAL7%T48P;&S2AcBbRvTgv$9HsKm>%r-YS^nyszT)te^R zj_yC!w}n^OXon}7(8!G77_BWxV}2&rtSanBvDzEDr&dfiV3mPGSU0j4j`Z>WPC(u) zXWSqk=is^Tv5A5iw(>#GK(Eaq=kM_ZeZzH@HWJf%boL~k1aZ_4xYmkzW^EFsPOqT- zh{qghMBtHK*ahQzm{J0FL%Z-dX@nd_cTba9k2%Vw+SU)isnBIf;FnzLUrKNC9*?fp zF*qE{V$lB8r^Xso7#_vyYY%uyDpBU%lf!VmJ%{p_cIr zEr5ET*IVo722(KOD`FjU{{&OZs8+RgAUIM2vQm~xzoamxw8sEAR zy)X`*xV3O*{byQrZ4mSFIT-3-Jou9OXS z>uuEWX>s_!Q$YZ-Pj1aj2c5tX3c+Fgj2PLR3_SaiO!7fvZTnm;ea?=ulvw|cb*1L& zvGP{&==x^C(2G2785ysI*YlzBV4HgM%4n+g-c4pm`MYm$xBhdx*<6Ybo&t((3<<8Pz zRC(7u&9k(?0+%!E4sHRz3wFcuuR${1E#1m`{YVmX_X>$Ln=vTW2)paUXo5scLwgHq z%^rfTe&Lum@y+FtfVEQl0F`8}OL}NXFDN z1j_I#xeT(`E_rBPcPus9bl`_IfsT0uV1iUE{5RJ-@ogU{iRz9mwpsgiQK;OD{cb68 z)3pw=r#j~(4h@$H;Pck%|3uwKi65E4}==!$AjmAA4Nyc%l0?F z9mvb)!G@#Pi8+&tTqsi0@3)%4RCmx@aVE89c)2z^SaNMpy4@e#Oiz#Vwh8$Eyx*Wd zA?E!5ILHtZ008>`B^a(Iw#Igj|3AsdR+EYSHy6}>sfMsIxKUmxqgezBbTp^WZtkBK z$|4FUm{(j}KTJbfLDHqXOTfxZQ1yhlChwkpQXM} z-cxQ$D`|NzEt5Y6*@%RIwiC93WZY#QCW#g~DUpO$f;h8uM7>kME!Xm|*PFmDIT&G? zMODt;@_0qHc&lt`<__YEJli0>r;i>;6kwD% z%1~-jB)vr2M6c8YGam2(=D{?MVfDTOO&dwsF$PR~9O+`!@&dM~DXs-wFjpc*JQv7i z&&tB<5;Jn*Z(wj;UHN3ns8z~4tvAQR!WoAhm)-%p@A>_{V-xupVXNx+5)#!GA1E{T{w>NP)IUSo~&;E3M z<&ytog~yuv?OmqMr^vl#xhmA`p@t{`Yy{mXP{TRBH=w257XYbLlY)Zw(n1X=kJ7$4Js)@tpXFr6OvUqIGbZH8QSdOmo|6K94d&k3U6z=JT{SqlyTPLp^U<^~f6MN;zb<^8-Cn-xR|ptQ@@K)93OwVq!({n0cbE(7bl;dn`UzS>Na@g6e!LahCOw!CfkAk}{;n@>Q%dn?DP^*h8u zGKIf6%rrVhcWtsV3$Sb1kn2HaojGL$m8`OI^Bjlr=Ywq{d`+$2gnHa zbwFob{j^xfgxXPckWX_iYYF!0uV=Pp?c7k)&=MCtru~Q?p~fCid_g+MtBlXj#0V67 zIISueTaJbv4DePP`ZKcgmT#pO>}fH0K>cSbDNP0rVyy@Toj&3{oBw1}LsxrMATb+M z#Hg{R+dj140VV(b4{9EW5&0|(3jh#82LSNz+4(=z+|aIs}T!w;1={Cf!n0Iup{n;Ee6r4k{sf;I0PU^a(e%Q4Ofe$YrvGY7T zgdw3;U>@A>3N=OmxlKPhDq6GE$cf`HQk;R{gUYFo7~CzWS;(3sfQV5oSVNLjb5Vho zrIctjA*32eX&AeRQ2O?DHXdm-?3R6O_Mt8EN%%aer>IPT9KZe~M&{fbBj(jePjO9g z&jhg7JZgAHDfSr1rRhVBe^QXibo6KAMU!EgWYW$f^ZZ=Yp+sIDNmmbq8N(W>aY6QL*%?;9)kHu-s@~C zJO1RFPFPef+qa-DrJ!petrS;#W05$#C>m2c?+DfooJn2^4qib>wG>plfWFfr>$B+L zJEm4OOa6*6JN6)KsjAR^hx(~3HbnE8_N!LvZ{?{q6`2+m`Y8-%*@2(?Ck030@J1I>23Qu56oD_M_+AqyXDK$`4Xq6vpau3-X1PbIbMEVkByw{ z#QylPz28sDp{s$NnQzKQr{S_9lXjTLo<oC#|19%hI3aTZLE%MM*z>>_VHYEwh2mnf}#Dvj% zTMQBB=Nq8ub@?(VSj)meEU=M|}+9SF9Js0#8$cLR*|7FIHbk z#e^aI<*bN$0hk;|yC|A9x~OBJ37W+(Uh$D4pjT31uIUN|EKdrefhM+IU>&6)!3kO` zTr&{(TtQ7QhS3LnCe8r~m_+0@ty^=2gCIQO#N3qCyiw2|eNxorN+T4>4@7}a=ejwW zJr6i>XUp6FgF2W;2!TkaI4JlP7?&I*@EbX;58?IAf`6*6|DqV@%VLx7CgEJo5=t5`<(nn4Yr>#Y!5jUQ{?SZ*FI(js8J+L{X4=(_S zD%P$NdBOO79PPSWbh0}>=JD<)Q&9Ux8gC$2M~jWGZo3_6g>jLQkCT0@qgr*G3Md^) z0E^6|04RL-VwlDNx?n2c@G$YIE^ztsJs_JdV`B-U2$g+&foiq>%KpKBkLCo)yftd$ zJ1R&qG>S1}H6sJc%a3KhaTTfc-BuR`8z=1uK4j$9o^Sh>w)R@=I%=>;%8e(Zlzx&V zohd7h1M&Fe4?*iPB>iy12@0>#=^8uvT&g0$)=$}USC^}}Zwx)s{>qfD&2 z3VGNY278IKDpD-f1<6HKA<9w{u$PI?hgd2ow#7k9HrzBTKk4yDik2|ee0Foh;;YW$ zEee~>KrbgE9k*0D^y^fuW!kgXVJ$-Q5>Y8$O#*!M9vfe)(7-tj4EcF`GW;6L+|)v((_CCgWmnZtVW zTfXIAxn7Bh*x>j|0%~|;1z0~`5@a_Uo)Ga%7XJ?TOUjiZ4Lo$iP8*M#L~Lr0*o4WJ zsDs=q(tr-`P+d@U$V8+WeJ=a@{rfXO2H_L?g^4%0KFc5h zc1?f%S^0lOlrkPv#gQ3MpzC z5WWL6DwSRMZ1b4@6LqXhXr$aW6{g$Sm90@mZN%qcE4=!6h@IKdrA6yN11H%)XwTK( zN}uL{mLr>|=9|Ml0Vfsy71A4PA;PvTYHVhIMi%%v<~rKD?NU`!9GQB$)j-m$tN9le zLy;Xsp9KM!%Odr1;DAw<$q;kW0t#Ae$tv1P;Gf&8Pcf{!>($chH91X~!|Jo^52}7rhG=(zsyM`1w{n1$eH$g? z@Df~DSH70jOUwFV2mW?V?fFQlj<&Xr&TO7N+wIJ80!oz+NhnzSF1!-Am&b#XmyjOr zb{%b9^8(|AZMqA2?3<0LdH}4in>A>aNYp2oH^AvB05Xy5Wa989MOYSPAdQyLGbpIg zyW>~eHI&%w*Pz9K8tLFx3N*@>-F5r3^sF*jNQ+tm1ED3-wz2GuUAyzdIY-`TvRp)n zISD~i6%OZ){V{mynaw5nQHmCwkmHbSKF4Yw*qNnOAoDmLhxZEKRY6!k3 zoP-v$Xr;gC&^X%BUi$AE+OjC=Mm${#jX%X(zO%2Bf#JsS!qt=)4W1#ZlL^q>r09kF zrs=XS>O!(Vk|Vju<=HpPrDr(RYyb#r40RuZ??WNGfA|p9gDR3hA>rUljgQSNTZ}A1 zOe$}G^E73rF23!+^DCW0XS0-+@Enc#+yrQ1%%s=c4!2%!PpYu5Io!3Lj4d);ObE%?8;LaIB8} z44h>SX+t$d%;cMywUbyamw7wEEmZPfYZ9ZJ6q^;%8Q}D6LD0}RWv zK4##Jk2?&&)LI6^rjXe-YVGG!O30-mLM|nqv()fn3~a`jFl07wp&jff`;4lQlBn zwD8Kxi27cDHS4RhY`i6;!8H4ZU|ku6ojT7JaJ+pTY(cKKm$`R5QeH~^0S@}^tvDD|HOQil|S4iFaQAi6#s^m{y)oQZ{X-;;`q;TWoz2lZM7l(+~^5b zA&N_`UXX_RGF}KTc5Pu&(Dmn^qmQDtA-SbClR%L)Uv?M#b~Ag&i%VE>n}N*Ku;9$V zoF1p=t5q)VmK%yVXGEqrD^rn$8+P2PRxS^#MueaYx2$#>iwe3gLY6~rQz*PL> z`oWC3cTzu<8(GFP*bN0x%IQY9PP(aX#&@BSiZa6(pMwVEW?Y+lP+eshPFl6N!bHHX z)fB_>#QAI%fcR)JYT&dj@m6bisbix>{H+H9yCA}DWtD_4x$cONY9`|@fu1%V)Y3$c z_?@Anql3~PD>jdmZJ_m|At7ehpY1}C0oPV)|9DN^q#w47hPPu@S6ES|d=O=-mg}wS z_#`nFX1$a720U&haH!Nk?VhQL-r57c6%VcCO!Nb5N9AN_N8DrdA|Th2i_HyTo}G7@ z`iQXU_i>+eQ7DR7-emQVIfh&E`u^At%iR)tbF%Po1*!_3S$mR9ge7h|=}b{M8hiHL zOUcaE|C6jHot%ITj_0m%;wB-C4}GNRUNg>{b~TD`8nmSjn3kHrdN)4TogRA58uONcFs8yfcwD~GxztG3Z0`0(sfCm_^? ztN<}97>)K^=_rmGx3j=W`)1HG1Z(pkWD0zqgnqPB}&!) zXXbOeRlt01f|rDyo#frxSXrWKxo*+fuJ=ifr2S`wtZ~~*)NSh8hA$VgI<`6xO6Do2 z->xRi{1W-gu*hUIWAGQdBsQu!B|Mxak5r3-bpsl)f`!2n6!O8Ur_G~Kz%9Yss+Z`| z>OnGqO5Y>#uePBmq4EVaUlt*sOtqv{15n8N5?i0EX{-R6S@NEQvXrG5e4f7Es(Mv3 z3M(K8fv{%*=o+yyw>u_2K@O8jTx;?AiYh+jdr^Lu3>jY(KkIfKR`mm(la5w736Vjw zp&ZQz!vtb&Cy69WlyU)1!x7%|kmP{Hbu9KpSfLd%E+fQpZ+J|LScnePXqqwohErs* z-P-(H(uMhZC|j!QC=oas9-|A zV}AFm@j0ZHale817oU+zYn8 zj8;=x5<0{7->6DR0X|7r9L>>u)bT+}vzNQ}5LK0~SEdMjYn+9OE@XoVEdqPG?)fB}!~)=tMSa{+*zGcaSLT#(n>%J<7hV8xtX44tj#QW1FSRvydw^{TbWPC= z0(cdH9Jf^?8Y6WFW2RN73`dl=NHLUAVN<8=07vH>jj|Fazl>mCo>z_=k9K^+3}K2` zMjxW%oMd>qELiN#xz`04*s$|U8B}K-u9kRt0zfavjsQ2|FGo_##XnndawtqU_-Dz{ zu-89*q&Q|rz4L|5!Hok${r1{`QZ#=K10eY%$&3S{0M94*b*rn-5>-~fX5j0D;mq(X z*e0b;-i4?dCLJOBSa2anpY8WB+W!hYrf^TJ)890i5y=6aEaaOmEqoBDLud;dar%oH z(c4P{3N{(6lu{wHHVB;#+y}eiPEHNjO~Ucwq%%G-(3~cy#Yx0-Yie^bMd8EBikYA? zK*48Omv4m55z9ktQbEvN=DG`51OgYn=K6g*e>&Ztzu@C1uJ;dUh~mIRM&N4p;YX?y zUi~k&-YH1eaM{)@+qP}nwr1J3?W$R}ZQHhO+nQyYT`OY8IlXrG-T&WbA z4Sdbd!5GUk7k|QQK!nI&*n0vxV0V0bW+w3gyzRvS0Nt2?!^vhDg2Ra&k&7rKcZePX zBsUsjX@2E$3&=Oej<#{ zl}EZj?obir>rXP3xuxTc~lBVRzO0Hl`2%AF6dsiez6}K zTOh{(ke!`@^28@u6a%>tHmnVqjB{0p2Sc~56%x8YgkE~k&ahvS7G(A3<_D<7?p~r1 zqJipkf&or&jb(k=P}r(09{4`(wFa2(83s*gf@ZL$?4-95sB64g4e-_;yX5+Zh8tNc z^~lB-&eB(WJ(AQ{Nx<(T=;4)RQb=*=YR$r{hj{=moX}m%i2`Qh^+;%Re3r&=ywS!x+%p-n$yp7H|)L zaX)O1aN==mcT*+R0}}P>V~nH?u-z^~c+Zu-A5VgQ?}MrwjRNVc@o!(OV~FkNgI-vZ zvoVPF0;~*(!ZXK3f)7Qc(sz0j`h$@>jb!=qcA73MPAqEWqP@yepIm!En-s9XF|~elH&wW}N4mP#6Re0#VT4LXqKp zcx9xqt$(-OSVvYmg)F#TLC(}3{ecBZ=r~a`|JlOPr8%jB=8yZE)IKP%Z}2N)s#{oB zKf*U2Hyw8&-uLai8<`m=5-l8uSk_;1u70LL<y=f8ZF*SoGJWT`t?*Z0O6V&df67oxcYAtZ!*!ra#>09kHI zfY!=zx<3rh?KLaz%4%yyya1Lz(Cc-)y!QTIZwaBifpnpyfuP!KdObjQyM1Pz$a{Lo z72Q$!#i9J)^!B$weGfQenI2K#{w$pEwgl6b2b|$KdlIJk5oGS5t2I0*|(dl8v8D^&y!=P z2S5M)sG;b78ub5NAZZBv-$#v+jj^4*vxS|l(|^`T+*Wpn90|K$)DWPs>s~FMrszJQ z&}^ZTWa-y?rX7JK%+I~`- z%oh#Q=%QOuR2B$cU|C@wNO4G*Q%fa^qQHX>Tf%UBDJD6o^8Ty{hWSytsN?1+fS9Q+ z?T8i~)|oA;7F3TVR2O1n?UWBKij;n_?pqDC4J9;AharI90ySA)27(*07oP$UU7{s2 z!`rj$?5%2UZfBj9_;w{NcE;j-;~fA6Se-BmWb?y9KCW>i#DISMNl#*I=qB?^CVZ%q zvWcd$IW>RT+NId*fYVFQol;t%m)+1!xK@L!TK@nYu(pa7%Uc!SOZHxtXqWkVv2SKx z^w85YkCQZS^Y7|xm!SVczo}W6yx1&fa7j^R9b5b7tF(E#MPg;KQjzKA=J&DxwfVUH zw%u9TId2YPNXd3DSUlB`bmZP;IDja5F-~a^i!^9z ziEV9=)VwORGQ)Ql0A7hRv*XA zxMA0>c>55{bjrYNnI74Usy)|&qY#d#^u1Vz)hItkXedn@6v#MnMY`-I8qHuC;6MMk zOqn;Hrsmn<{&t4|$^_ejuxT*0wUFc#m`va~K9$`!?iNnvKKd0V${ET9JkM($t3aXD zs|LFbG>lJh=Trl_@?`Fhxm$YJW;Cu@*}JY;4dj~LZDY|8e9IULNCuh$?CTbl-NVyj z^@ClljcGAK0f_W(#9K(!mB?;a*g|FdH{u)HCWR``R-d-ej*-t5t>QZWo!b|wj%X00 zt2j_xHK_+=rpGg>R)ns5Sv=T}_H-v8lkT>(YS4gmlPMuy^Q`{fuDZSfP1uEXH(fEaTQfI(;s#Q{<>Vu zPvj^)1c#}*W%(9l!EzQwipB5?e1JRnkq+gL!9BQX=9QMa@oqy!bq7|_pc(U_ANI@L?dkRXaiyxUwd3Dn zs*Bvb__&CCz!%l6QDvYD5_zBc_0S8TU^t4{^g%QsJsPzvwL9wR=d>^WA^&;-n?k|4 zYAj2b=DHt4+7wI^?-Fnh$U zn-~15mNQjJ&20@8wG=Y~qWMfQ)uI&1!>hvi5W?M7p<0}zjf+wPxr%s(i>`hRqk2FI zEH54Q^DX!W(Zs7q{Cp%K(pg{1;0X{;+fW4dIca5V@f5$@eI5HI;lGgWL=^2zFC-6v zqoJ=gZV}7PR}gW>hK8~?TPm^SX{Ilz2c^|*$9D!IYr_51z)OK$i@_Zh-w-;(1}2P- zo(QlB{q?a=b|no)`~8s3@#g8p(U(l&p%_J(Utfc!1QJh$+8bjpj$RT3%8kjoAY_F& z;iat$&2{A)DJv5Z=rK3=`yutFvB+r9H_nXlYi~y z{FWcd^?vPoh}GRB09|r(E;Rv1U%kdMU?UXwS7cp!X!Tl%iM^Fxur_;1{kl9@k`JNSTqa&Q>-6~`G|IkX%| zg}|3;v+vLqUm0yX%G!;f5U{h;Q{tX^tb|~BO;h#5V9;DujKw32*n?SfHH)7|(HQ~U z`s2e@EbxYY1T~}QpJOQUSCY3x5O84AJlu|THY^RDHrGtzHC+-c81dyV(QR~8H zWfjPlSf5l)mE!q54(q=$b#*Dh(~{fT+hOdxUxX}X#%K_NekX6!Pa^&kDFIuQ^#Cr( zit=<%K;0t%5v(6z1NOO(zfHYahC2gyUbe_lKVUWtw-_0K>p z3@`AroW{spad;eCcwl6Q=@u@7Cjvo*$3kidm$_mRMay!T7BuZ-&lp=Lrs}1g!@4yq zwjCo4kNw5UXX-U0NnZknv1E>weiD2lfW;83$Gtx7xWk=6MnFd2Kf$Clz!*rph~=P+ zgXWFknZfNSAN;wQ=4OZtg*_$cf;05;-H3e~P%M&Y-9i?8gL7}k1GEz?>uk1A1W;xl zVg70q@jVb@;WZr_AGQoXc&`8#PGsuusR>TluhjE>@p+}fvM1!;JC6&li{lgo_m`NF z*bc1G0yyex`t`Pl?SVyL4H4fIOUANVdJ%`b8<%%*o;&D8FgaA?3aH?McrWj4Mc`d^2<%Qi% za*6p~WUE3Ja`6c1l_E6|kskN8>a4P@)!xJC+I=1Oci4Km9EAShYP=V)JmjrGn}!_YDP zYPu|UeG33fd0IblF!4H|5q>Flp%jkkmcuMmfUnCBCb;IUL1GTpLmt&{-;O*|`UraW2}kd(;Qp4J99ibZ4(H_6V)y13&BrnE*oP#_>zkoe`Wn94#%2 zjv5PJHmxfg+H9XoO)f%@?s_gBIKm}kerX-C6jzL)U1ohH{oZf3FBjXl(GQ(0^_-?S z-avhWofGM~7^TP0Z=Eyxx+Wc{J4V$t_tcoJ7&&iE{@Xy{NJnSiMd(qy%YkU)bJR+m zeS;g(N4@7A<+)?=)_CrY)f8GE-qmwz;(b-mk5_aVj6(We%yMPNf1o#T`AiBp1_5_u z+FV;;%=TH@sMyP#>y!vbbdBDO18>_0cEcDI{*X6@UfOZr*FP=do|=MG9~QHkZXypR zL-7%IV>NhK`RV{Sdo2>A^FBvJTNluQZsw+z&f!7&4T5QU^{|e)C%826a7ng9Nfv8o zH@3gqnlXM#v$A%}y|PanbzfhrJ+X}`Ot4!Bf=W=ym3s5Mw1>+de0~q*a!PsbQVw?ok*~b=v?jtE`kXu(_>R$#p24{p@}(> zF8Xo_WwwDN>}KFeLZM+b+3H5{7LDVQflo#xGvd}fP3M@am7=>_}H8L_(8bjRE29D`S=s0I)bBy3N1$%G}k}1)BA#wikbfF(1Mv z1+o}8-W~*z2iwu^A$kwjv*JtVcV_uGPWfJjz_zhw#lgJ_{96QyIvd4v_;LM!z;iES zv@+Hy7K>1K&2Ud3c>-|yx*a!u~x|y9PLF5Ono56wsd@r7O3@N}q3%mz|Wfwpv-fSRk zoC(K0%iB;R04)1X0Un&BTr5+)_MGW%$kXLAH;BGN3-{x26pX-AFAkdBxnR!=nxMBCCjjr5Ts9R2oi8 zh}#bAL7Vd|>IBsEPUDn*8V26bb239}xkKALDZN_uTHgVvchge2yT4RxuO?29Of>)9 zaCz^Mt~~-v`$qiMC5$7jOCw2MRCfXtXCGFYE_?NxDucp}h^`wXY`WEm(3LmgEpaQO ziS}DfEj0MZZ*A=^2=kW!Q3`)1T5^!y+2LGxo-B3eFh3b!BEzrHqT<-fkUZf;AWHI} z;?XguFNp2@B`Lh-rD=UQ5WSVGtH=nR>myY*Us=HU(GC%gvo_?l^f$&EA!QR?@yjdB zr(58-_bXeB<*5Zff?5XG&}_wly>HPJCl~0fH+O9c!1Mk9{j#UxqG3lv#^8d3@1=T; zngt5LEr#_v4D8B;eAn{FuqFjSX{t4*?2p-${d2m;L1QowBI$7de;X0_`S^m z#fUKtr4eQqx|b_D8sY$^*($*fws6Bw#NnLU$=lOt_FmpCnI9lrY@iGIbNw=(7-`oo0Rr_K`2lXszu;4VkMNk|WNvL8yxan(8zhObw=Msvx#DH=!pm zZDWS@?fnOlhn$ZHzdH&<)g>A5D_;*8f%w72wmPF(kX~Smd%ypdtKwiog-d^JOhXU= z02u$Xga4nCXQ%(S*TyGVHgb~zA>`&8m8g3tF67FEu+%vf&6DCW66u%yF%lj|11d=- zDgEOmuJ`?X5|?b6n{K}2MpLU=c}Yz>`v_5_yr4wa&Vxh+(tZmaa-Jb&+JNeqtjbCm zQBfZqQb5qvLtz8y!z#ss7Ew0~6uQ2dbcKcvm_nVN@N8p@pO;QkQlmsMp)@nvrZ-c@ z(uXhc*|L+{%s1vpSZpzr8#)W z(sTFPcM=9?2zbGXldnrcl-&$@Mg)jyj-M|`W0-vjdH(w+0=L|N!QUvFm_*sM}pfby~gbA=8}mXudb7z%WA;n#n9%<5>ZqAxlef$ z7*F1xvE1oxnJBg7z1lM_$6)Dv7!=lKcf!oM5c-A(zZM}K!P0M_%ozW%qQ1K9vU$vF z3dJ2PR+>f10>IrW$H$w&!O19mM4u9jXsT%18Vv?^cPu5`(9-fFtlo#3tmPNm#mXC} zJJ$Za6DBx(-Fvh^El6}}U#0oJ#1$!c>Mr8wC}hcj(>HAT}%`fhJ}g>T(VV2e(v zOe#rrBQK04g?xa*Mh|)kAS)`be5_S8?i^%oRlZV=qHfB-s{;2YFI6Znmb}&MX>v(% zov^8-{T=qy<8i^!AFkFSG&iFC^fsX2`*rWO?XR0J^*dC|-3{>MA_fHBy zE{m*R!JjKsTWtmi4@6v~tYK~-Y}~amNn#d`Jc~JrU}Z-$5eVa|LyTzL!)1xB88>Oj zJ_GxfKs9cWFS|)-ERD#{kmny|2N@!TK-#u>

    &{Sr!nwiwgG`UqhXvJa9C87)d@ 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
    7lbcsJ@S>wx$~so(s1-kt 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

    &L9{^2IpaRPC-n??wU#*3CS1ASF5V7 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 XJ1}CfKtdo&;9o4*GQ^pKyaM?jMea_` literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl b/env/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..82b777a2732aac5fd9cc78076b2ea910f5da4440 GIT binary patch literal 115663 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

  • *Ure!7cwK@-=01WnqpzeIY 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 literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/progress-1.2-py2.py3-none-any.whl b/env/share/python-wheels/progress-1.2-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..f8ceb5b6426dd70ca76aa9b6a5ffa2dc14d2db9a GIT binary patch literal 9606 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 literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/pyparsing-2.2.0-py2.py3-none-any.whl b/env/share/python-wheels/pyparsing-2.2.0-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..871e764b80d87d5b6db83d56dd34b1238eafc3f9 GIT binary patch literal 56411 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

    *T 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%0ACv3zp0Ry$ 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 literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/six-1.11.0-py2.py3-none-any.whl b/env/share/python-wheels/six-1.11.0-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..96a56ab80d43153616c55da71f0723d8254e2157 GIT binary patch literal 10720 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 WWuX4!?gL={oZx>dGD`iQr~d=AJ+LVN literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/urllib3-1.22-py2.py3-none-any.whl b/env/share/python-wheels/urllib3-1.22-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..b49a6fde401e88f15a85c1b268656fa445028b61 GIT binary patch literal 125332 zcmZ_#Q*I@sU8*10)jk9}EnTUYNpp872Z z4uK8=0s;+!&!gpGlPk(HIv%-YqB!P>#Xkx5)a zRZKf%Z=8wHfc2J{It=1;ocetI*p#_z3fhow=?=MUSov^AaF z&`$#$$~t`r0oAE)m}%;2E9Oa-L*Pg!gw@3+D4GL~&G|KQ8nKOfl+L_#BjiE}tCtmC zsaO+0v&(B!Z6b}&d=7)!wZL)gf0{BgY-r&?Klfh7hkg^_R&TUd-Xx{U!D7ZemV^YaT@Z85U;%tUo{+-$4UyNF)gMzpKq_o z9ytpK*57XY0tVzO%>`FRVRaG)C#_Jpk3E;bB9kAwE#uX5N~~XxE>PW^U^ZG5y6=|v_S(vWqM~U<&SRboO;WO-B=DGHh7$CTTVJ%&2|N=W%c|E#D;l>4uTLbtZ&Q z+zssiobcrbUb}q@29ZOT`&f>QFXe`wb{tf0EmrLxO(4JFsgIMkA%$_ph(MTq{;42pdeQvik}WN~T8ZoFfF z3b7l6uJkch!+vxRJV|)?!ium;iGecJNYA5lw5-_@BB}wLtHMf41amFeKOd{QB>twW z44Lh5HMn?ezTDj0R@5Yk1_&t(WZfGStsq_%QK!x#TR2cH5x+`&`F85cwlF;dmHv?# z2>ij*#h5Cs&yiZwoASvo%_YuJJmk=CuJWf?m}c%&h;B0dYl)BChBU6~I9j(7U@22z z@(cx&xk6iZOt^=b@lJ~<&B(k%d_UiUY#d8luoNID0i%#%Mox-|n`;eqC{*@rswT;| zV9;MI6EZT>yAB~Vwt>(39c4(LIu^62uAJF7ijn2cm;~RId@)7Hxl$2_*vO{)v<#b?O4 z0VrVaskqrUul$HQxwDg`_$FICd{zo$Yx7q(1@e$(=3r)li%T;T>CpMEH;&CNz70u0 z-sI)u<(xdqLVTeaz5sQS_1g-eix7a4ZcYFtb4`J6|6G|Gw*(05x)|a$0(=AR1v}@GRR%p|!XVCvmodD79h< z!Xv^xSSK4I<-6Sox~xnnx>4k2&J!Gp5%(SR?@_o$Bn>4;(_~f&iNRBzr~y%8QCQfY zrLZvhRb_2J&7eIfXI`kSR2RQ=t*mtDJ6bI#p|4MV_B3Dg{?BIkUPUo3!(;PwvAR56 z(PJyoLNvpHi2~ry$2_hzvsA6BtJlfduj?JB1^0e~r4`>|43r=;15$d~i?}Qk*~idh zIg?jwNE{~OOk$g96N7z6A^ZcK#m^*xaK4uLuA~b_#z%BCXf|Y;7%k;1%LDoDKSL0# zVf7hz(ivzS=u5nvyJ?y1c)JR?yCqcT{iIaQi*co3+1(TfgWd5UDHGfR+M|6p#idJy z(L=N#O5MIS{JwEq_T5UVDJ9+7A8s0{VNoZoB%u(_3rDVcCW00Lu^j+ECIv#6R)9hc zpwkBBGx{*@`?%pkUWTov0=fJi_5wlnkHI~ryAp;>DTc>0-qb%%M!~mu9;JHtRTt?j zaw`5=yL2dtC%fbp_}_%@sVMd0S+TD!Xza(ZY7Kf;9Z-A{q^p zNo&aA-jbHeAR#;kw0QK(=MTYt+Np0S=ZGTY6$@aZ;Z$n=!srEpKK#q)@Etctb$uzo zUXTE3E<{pXedU98rL<48i7ap{)Gnslhpu`v>*`l;Q$?^xwdAg!8`on=a|`Hx{w%Z* zRP7|;k<^RO38sQJ=_l@#RKGkbNEsyDWi)uIudkVG%v|^M)V59ohwq<;Nfj&N^@HO2 z2lY`w>@0PRd@L9;=;b$_B003BP3tX-eZ)VgM`*L8kCGZ%&0N@6Tt(YWeB#K&ECVH? zKU;sGS@J2LMZW~z-CzYrv#RZ_xWu6jV!BJ+dGf`8OCQHYznBW3nRYO1L);i_{O;~B zizG*@rfBCcW%am76r>q-RVj)SwH719eDy*N{fJmJ{EV^sRAfIO0c%s@)O}cb&-^6d9OeC%|{ZJ%9Z03^MHXa_Q~Ta+*NfWCK^ zR~C>eIZwY+OBYQ>FXoD5BdOi^s1ys|5?Bkrtymk7+08Sm zlE&90u-~2DFJNb%ra`*fUaK^ku?UiPx1I;Z$`fC=SC&@V78T4~K%eu7R)H^C`*Af! z(f{QNF`hYR0y0ETT4SOU|TmEd1Me<7-u7W`L^ zVjdYfc!gNupEz>T5|rLYTk5+=ht%g}K-$vr zNFd(QAz1>dol#PC-r$bO-xLBYtrV&3<5~{!WGQ5~)HJ6gye&`=_hM!SjE%=)TI|6) z=3vCVMlA-l&ee5t%6c{bF$44tV=PABVpbMZAxFzFTP zC48sXJB(e|rJN$5L!snwvL0eBzh;bZQo?a|Map#fa6Ahvc!kvSDNa_r^0o}3z!A>| zFwxO?*8G#ER8SH}Z92LpCo=o?wMW>}MREY3_M=x;lPrr21xtCUoj#PQ>y;UVz@}Ry z-+&9gUg^nMZZC0DL8^1Rm@LiEhLwR3%Palo(yOXu!ioeyzJFS~SuqRa*h9Ex#FSb! zPvoCygdFpG(uNdintIoQXHR1v6>W&;Kh;{b0O#`OxK$?PqOnB-H6rwIuD@N2hy4Y_ zXHqSoB`NapMiv+Y`BHwxM z6>jB`fu^;J#%?=sj$oTCsBvwEYDxGnR?C`9!3$L4c9k7b^tcGP>D&mv;9rR2&KDd) zTW77+Uns!6&MnZK`5WChlb!|7`cZO8Wk6&S<>0swYjs6mdA85x5y3mn|LzDgWnKd^02ZFIe%S^vI?f&g$Ela)Y%@kJ> zWgJ4%VF{NGQJfDcDq4^$V&Sy^gB7f3m*>HJntuxV8CR% zhhf8Ga}C3n9Iq2a&=J!ed-s5YZq4 z1A~_M=KfqFvy?1(zpsyD==UemiEI?}3wP?@UBZ1fi&c9*Fj|1uQ6c}g) z($41Ne-;uBY3MyxkXJCn>^?5GfLF7-T8SELO^Qf#-Jz>vu0hDB_@;JUP$p#pABL5c zJ37(jt$&W9*cDODO+v?CD@uj|)>9IF{qOHB+Q8_KX?p;G3}liWj+ z$g-+JaFU?()1Z(dl7L1ITiqkzAWX2m5{02jho->5#(X$qQAN(Of(po zcOS`o1VYmhUtn!&>8Vg)aR76Z%|<#B*?K8kwAvj#mdpT74bJCHQRU$Y1-HN}MhBMv z5f?>50tKig$-^yl&9`-kcT~&vu3liu+gF2fa`dN>Yq495WO4cv89t}kO_MFh;i4w~ z*7xH`*gZa+JzC`~U_9)F}@bu4zNGnbcB09JqG37v$}`_-x0S(n5}>u0vNTA$EUM|-#*?wgeW~iv zWD4%zSJeyo+x7##bbgig+XRA~mq1FQgam(BQCxCe=(fEEmCjUEnZqL4}`!@*2hu^;_rr zy6JGL%fQqsBH{xxTEr_k&Vanvc)$PJp7Pe#&-g_X^{_XPxHj3qHCREe3s2f#kIZ4n z5SC7O0a*vgnWPZom}g9#-Ohn6{OkIneh@Kdc_>tP+rurSDu zyFVQdEk4vI)=F~FF5}MvcsA)$&`jeZHC4V7Q+fw2e-T``%U4lA`|Ty_EEQ{^sac*B z^_8cbyoPTu`e_Xon`d6wsn3u{98=rN=kMat4t!?PVqqFpv60TLEH6q*nQ?dr^p49G zmIv;ea;wAm9#RGLmI*9EDQeo%qQ+f8NCr1W#hoUIqfO11hMmd{?=#l%GdidKWol9AQ9{kqt?P5nCHX_{vu229X;KYK6pM} z*&aE&xhU+{+tu$2ye{caHI|D1aNK=34HM)vG=x3oaJ$;76ZhK9d$!;aa6LB;u@h|U z^i$#&DOm#>B%_8sAVYarH)^jhDp7ek<(pi&ZDT&`BAVGvn3VcmK;Q8*677`|+A;Yk zf!kr7*A5@{G$lNQ%PL2PAE}PS*)=gkf}I$T70LBqc(}nLTveqj;C-Pkr+)MQeA4iw zp6WEQ0>FEK+?MrAY{!2R6Z!Z7pFIF*=iYcS-G5w-s^^@sBTIY654{Uqd54pkf9)b! zvmeg02^om}oQyCDHRJ3{5^*vb=NbyQI@gd%Ppxn=Lx~ zuDto0r)mc$nX)!!oU8)0@BLGgX!S1fHRH8-&1#TJ+cRr1wxUSb!h zyumO5E+Rl;hqp4k^zQ}le~+8f*v?hnna7&?)PxR~r{;Igog)5a$N8J?%o;yo)~Wf< zu7qIg(_uD4=TPjM_va!5q=1-Z2L=IF;^UZ6fVTKEwUN!xTJjpnJ6WQIAG^~ZVF9Wi z#b|vtsjg@V&%lTqr9cLYlT}WU*FST_=y4f4Xc80;W}j)0Qt7W&ApIIS zzMFsq=Skuqo&aF3LcBYeqi*quq=|K_A99}3g3awe!grexZQ&^zYLd*-wcFaKLm@1; zmR;GRi~52bKW%=}nXd^fjY;xZ={+AO)Pobg-EF@&UX=PyAn)Te+HMUdB4aYdWr zDqBBFYBooV)2?I=Pw`4@)pyv@4T;}t{&foRx`mG!J$mpxwBoFZI|K}NhRsfso)OP` zB=zj|)r;`9!(}KtdI6Y`dao`m%=0>sc1aF%AAO8*tTQM%DNH=tV*FH|80xYCp^iF> z7upsjuT{5_IC+12$&E%y5n#v%rSyoYRqe?sgD)G#(CMbI$}5D^BfyISZ~n;Hz)eX zSMSJkc74{e2cLPQ-~=ZZz6&%Dbvxfk_8w*Ht9VrYqiaqnn_SOwk401|ZJ{DhwI~)l zz3eK(6olVUZn`oQBn4_8Ve!>gHgAR>;7~ z{<=Crh}15z_2=Aek}LQMt?xz(=U-{(a(h83bc3NvdBb{4!X2Zz2#B6xou zKEfZhqeN$q+}b*GYU^tzeg;KKHe74+Z20wmV{yjoU}daK8zDtw%>@f2USr^GKkUQ8 z(?13!)FPLJ+Az*eMM2)gQnR4c?!?k{S21T}(KXTpzLfMuQ=$EC7+?WYM|mJl{>myb zUKB9hL4ZX1PEBU=_XWutK(~z`fjs<@JEAd!go`~ z<`qv{4#tQGT1K9Qf$U-=KK?~=pG@)JH=7Wgb@#;t|G0%d`s-cGdNwZ-!cMYrXQCF{ zeSO<#;FGUcQTzGG0e`YjGhv~O*Z3Y z1JfWMv>o>l$$I!+xwleEyaB<+oV;PC9eEZ#ABE zI3*8TaTAz!VZ6tXdgk{DL346IL+On~xZ2qnpLvh_4qWG+LrUR2IS;4WA3S}m-(M}* z*Jy6^IEm*gEL@PjI8Oz#tWT43R8u0k$K2fJ55HeD`4m57U>Y8!xJ;c#z0H%2-Hoz& zD}aPEO7`j4bN^*XaOp>($hNZACw~iJ%QMW>p_l$mR$#qBJ54T z*eZlvCVF{-fOr1z70IZRh|sp-AGDKWuji~tP8b~&KsO&vSAMd-`%r3-s3!{qwUK1a zptMdCkbMq+n=;JRdf8l)DiR@$rHom1YkvK)dHmdb$M@*(-TdI5HIXHNzBC|9wLGNen^cDvg*$l7ye$sBIzSB z(eFchZ*hDGH6G3$%}cU7P-Z(~!Y<67c!_n6+~Ol(hfvWPvz|U_snN#qWl&z`>Pk;C zbNP-hL|sm2mDfw2`o&WU_zO)D7%tQ&ljw2v4ye&`HY|-`y|n(CTUm2I(mSvx44cv< zFFO*un(daIMge?eOJ5CiY_KJl&Nk7cX5-@yx>vQObSp5NL74s1C2$781`mp4-e`h` z+=3*GG!(eRPu&I+6Hq9JsTN#KAv?>LG^{iC&5w&+GONW)EM#c2MK2;(fN~me-AU>@ zL2nXyz6#$;pBkepv(VZUK5mDcMC1}3po_?#%Ib~Aw3g@hNM=O#H>|J4(R04-D1?^aJ6>lWy)j2C zCrc`~EVYzC$mpp3FfqO(dhrIUIeaQ(uPs81K8U0Ky|iYg-oT&X@T+RNyppZRG`Dpa z-@-R2n@s>`54|UUCrBY1gf$iVyeo=-{P)v`aZRtBuZq)l@iLmzo*n?PqZ$ZQQ=Xyr zLvhz6k}5gV@P8F{0M_Nr3toH%oY`UwLgC%8IsDh zo7_(4FGEO)j7Q3ib<0Xzn5>--B@hjCipi7ceHb@XQQ-Sq*pewN#XmQyWNo|mhZA}P z8LKIC>TS3}H(()m!L z0(av0DmemNf0k!eN7r1b6DEi`aq91}Jtw{B9Ea_w_qGW;DQH}I&;j2Ov$2x10N!P! zZ-3g=tuxB+LxkTG1>C$AOnIx@u651AtRaa?ZMem5b&YQ1Q8}47soN3m)LCH=;IAVy z7BUp?nFvLji>86E&|t&r_1|%@;uY%bomL-I*__fU6>o}+iQ+`?38Q$FzV8wR zj!Ld!w=e%}yr$ye6D*k6Hje!^J2o!e87fa6R_IgUEL82iYTX&X$q-3h5!$8FZoJWk zSl0T`qX^;&3b2DadzR4n(&Wn@PTT5FzE6DUqWe08l56<*H|C_2TkOZ}G&p(2#YLxl z_Tq3#u_EI8-fduI6pAwaDoq&HIDqi#Pm|_AR7x|`1goFvBhr3R$k&?O1uo5o;XOhV z$#gb(+&T_PL7GHT(@KdqSdtZkpY&yz+Jh&h6kCv>F8bz z1^*3gaGqh;G*Tlu3_+D>=gwi{T)wltkSTIo>MQEoquHN2Pp;uK&ER|d%+(WndRNsC zdxJx4dlodr!?68wabJfSjn6>~fPBa;UZA?gBy;aO&SubYtr#CCouj$}NkRAAY>%Q4 z)J_&;KYQu;v-1s-bQ+lw0w%;hG8E-TS(OVwnB#6Mb0#PXZ#!4zI91F>H5a=A#6?^t zG#g6GS=W`?2eI?8!|J)pNtI!~iraF-`%Q}Ch1Lz%lSEV=&^i(4ZtJADXDQ@@x$T{P zNTadByt7gbQG9X={~c%1&4cyos*vefYW%w`w>h<-W?}=eMj*WwvInBR#B7XVHv3?S zz?TKTR32Knp#=0S_G!!M3fhYoHr&0+v%@uhA6cwVXmCD17WL#X-RnlNtkNu`gTbT6M+6T1#SPOV~B z%k#0F)ei1;wKyiPyt5>_i}aB?NXdIYA8QqSwwAm`<^dPQ)wdA&6qp5_g*xC`WaG-D zI#-8=gf63|vNI1eoj=H?AG!nY%>{ z4yp?@g32Pbb{l8VADe?=p?^eu01D_^AAPH-#wbkez0oW=aGccTKOt1G(>)S1J$!!N zhQ1^MRQuyijl{zs#uE>jWpdv@TU5@HItwooC>`DER4v`y(LX1Oru>K=mDZ8lnHv z?VZG5eJ^>tL4qJwO;&D}3!NBD<^E+=`fY6zmwm#Y+zk3CkX5$r!r$i zbCye(*!$u}C9vFP1AFa!-+BeII*@GXk2p2;wddQ+Z6WN`Z`gTSRy6{BZaUKl5JgmyvnmO> z=EloLx5ir|dkUl~|Fud4=3m(6EKK()j<^?;Z(^u^q<@z2u8vJ%!<_S1a@LD-oe33f zn7y%NpMEx62Orx$rnkyU%H@QsvGI?oG@a+TFOz07Dzt;9F&LwV&kx(_4sjCZ|HBIt z?Cw4BQ7)-qCz%Wz3&eusXm)%d(R|4|XQFRHsFk;r%5@$^p#)&sT@YBClv9$hJg8Oe zOA+f@CC0|fiNV-@K7dS+|x4k3k%hSAW2xgvorIh%+Ak|*U%h~8@kqvZd zMznI)uxTD$D2%`+N`$zbTa2gxLD&D-xW1yd;nm&h&rQajvqqQ6lDwsmaIqKknV0!& z{4Ub>4CUohp=y7cLgd{G087E*A*ko5pDiNF5tI}DY$k&FHzWD-uk^g#w){BbJz+LA z{%`QGOD)ugfJ0^nUC_0JP>?KdfvtjlVQ8%Qm==v0>w^rFph-6cY`;-Pw)^BjBKYj9ls1gZdtta1l6L4Rz; z79R=%fYJ4ff?}xX#h4*DudA(C>Wj>@WVm5fQWKj7=C#B#M|`R;oSU|%dWzLO_6_K! z{YTm0zAxQMGsT)>C`W7#_OOL8{w@}^+KU5M28`YCVJRvp=4-jVUC_qI^M>a+4dMJf zukSKz^4o;i%lMhU=Y*fn_acyA;HIo&BO|h4JyTV!P)^_Mie6s=0*=wV`}LCyTN)+nq71vjP8 z?8Z+PeGvcGEtQCLvl{)O<1XRyg-O7<2YkLZ>UV0kGj3D8k zaw=T8a2^+GWU_cyho2Z-!9k>ex{k8Bgrt|^$zH_dy6-a|Sqqn`Ps-w|%0hN&voG2X z7B9}pLCl9ZiUr^1kdrL$x-MqrM<@pevCk@_ht(>Eo$Zi)=^vV

    Z8O0!20oH-1cr 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¬n9(c=Qs8Ir27@(L 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

    LQlgYQWD^b3tX1|0MiQy$=y(*BtgQvH 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%0DYlYeF`l<@3{OBz48Z5lXm^ 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 L;G;31zX1Iorl9#S literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/webencodings-0.5-py2.py3-none-any.whl b/env/share/python-wheels/webencodings-0.5-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..056657792691e98449c0b47e9ff96e4f2f3805aa GIT binary patch literal 11646 zcma)?bx>Sgm+l*P_YQ&J8XSVVySr-|m&V;8Sa5fD3l=Ou(BST_!5xAP-%QQC^YY#M z-g{2%>QnoVU++3+?X}l>>QR(|g2n~_0Pp|;XLTi9u%DP1BmjU04FJ%-&bpczo7tM! znSyLBoIWx!urru~oWLJJw&r$>qGBo{%2JA|QVQ}6j!s}3l@<9VChU$|m5f6nObEzY zTUkhsMrm0QON``*LqbfX{%Gsa@z(Y}eLID^F@~Bl`Z8>u>-*=?^P1?)`re;(jYI5< zjY1ji-a(o!+~_`WwvGq~K1|E?Q7o3$D}24tr5z709c>TN23Zr-qM&yN@6Kx@98%O~ zkQ4}D)pw=`IU5QuZLUk7wGhvvtIW31OC2n|g0m-_u0PBKT5~0csK+8T^=be#nT z!G;U%53PyyFDP8vQFHhrc)7VA#NgvqOiip9Qi1(xe3TU7=LS0$y3IXEv&%8-JEqE* zodkizNdpWJTM1t+6ivx8K0~A-lE;4NqC%=diK<%O1j#nsv6)4)(knsoJUqGBiqeS(_Ux+hWDg*kd6>CAWY1@83!9Oy8fr2K&Jip5{$4l>RZ^cjd zQxV@gY$+cC&(+kdd1>{rvw!OT0@&)wH_aJT*(J?wD$AVCWEz`3|3s^>S@WmG5en&2 z$(rJk-iMTaFKAJln`V`U+5jmLJy7fx=IrNfjE?cCH?qk4^ax7$GIr|ZTxei

    MD% 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 literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/wheel-0.30.0-py2.py3-none-any.whl b/env/share/python-wheels/wheel-0.30.0-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..92321da7da678d25da5139f0b442ce5f0e6cc8d9 GIT binary patch literal 48886 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 literal 0 HcmV?d00001

    `%Am7 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ໞcf$(9E>UWtqg`Q1b?HJnx@uIBTK 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 literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/requests-2.18.4-py2.py3-none-any.whl b/env/share/python-wheels/requests-2.18.4-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..4bd577e99fcc898b3c9382a468ecc35640b298ae GIT binary patch literal 88788 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 N#DGs~HsCP;{sWD)%bfrK literal 0 HcmV?d00001 diff --git a/env/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl b/env/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..b77407383d7a5f4be6ce36e3845039e8b9b9cda1 GIT binary patch literal 9480 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 Rm#}Y*^zFyP48?;=GQ|i0+8)>a5DF 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