From 810ba2252216e38618ed00a66f5942b225a52503 Mon Sep 17 00:00:00 2001 From: timmypidashev Date: Tue, 7 Sep 2021 14:41:45 -0700 Subject: [PATCH] remove `venv` --- venv/templates/index.html => index.html | 2 +- .../images/colors/colors.png | Bin .../images/elements/ai/line_long.ai | 0 .../images/elements/ai/line_medium.ai | 0 .../images/elements/ai/line_short.ai | 0 .../images/elements/png/discord.png | Bin .../images/elements/png/github.png | Bin .../images/elements/png/gmail.png | Bin .../images/elements/png/itch.png | Bin .../images/elements/png/line_long.png | Bin .../images/elements/png/line_medium.png | Bin .../images/elements/png/line_short.png | Bin .../images/elements/png/timmy.png | Bin .../images/elements/png/twitter.png | Bin .../images/elements/png/youtube.png | Bin .../images/elements/psd/discord.psd | Bin .../images/elements/psd/github.psd | Bin .../images/elements/psd/gmail.psd | Bin .../images/elements/psd/itch.psd | Bin .../images/elements/psd/twitter.psd | Bin .../images/elements/psd/youtube.psd | Bin {venv/static => static}/styles.css | 0 venv/.vercel/README.txt | 11 - venv/.vercel/project.json | 1 - venv/__pycache__/index.cpython-39.pyc | Bin 1000 -> 0 bytes venv/bin/Activate.ps1 | 241 - venv/bin/activate | 66 - venv/bin/activate.csh | 25 - venv/bin/activate.fish | 64 - venv/bin/easy_install | 8 - venv/bin/easy_install-3.9 | 8 - venv/bin/flask | 8 - venv/bin/pip | 8 - venv/bin/pip3 | 8 - venv/bin/pip3.9 | 8 - venv/bin/python | 1 - venv/bin/python3 | 1 - venv/bin/python3.9 | 1 - venv/index.py | 8 - .../Flask-2.0.1.dist-info/INSTALLER | 1 - .../Flask-2.0.1.dist-info/LICENSE.rst | 28 - .../Flask-2.0.1.dist-info/METADATA | 124 - .../Flask-2.0.1.dist-info/RECORD | 52 - .../Flask-2.0.1.dist-info/REQUESTED | 0 .../site-packages/Flask-2.0.1.dist-info/WHEEL | 5 - .../Flask-2.0.1.dist-info/entry_points.txt | 3 - .../Flask-2.0.1.dist-info/top_level.txt | 1 - .../Jinja2-3.0.1.dist-info/INSTALLER | 1 - .../Jinja2-3.0.1.dist-info/LICENSE.rst | 28 - .../Jinja2-3.0.1.dist-info/METADATA | 112 - .../Jinja2-3.0.1.dist-info/RECORD | 58 - .../Jinja2-3.0.1.dist-info/WHEEL | 5 - .../Jinja2-3.0.1.dist-info/entry_points.txt | 3 - .../Jinja2-3.0.1.dist-info/top_level.txt | 1 - .../MarkupSafe-2.0.1.dist-info/INSTALLER | 1 - .../MarkupSafe-2.0.1.dist-info/LICENSE.rst | 28 - .../MarkupSafe-2.0.1.dist-info/METADATA | 100 - .../MarkupSafe-2.0.1.dist-info/RECORD | 14 - .../MarkupSafe-2.0.1.dist-info/WHEEL | 5 - .../MarkupSafe-2.0.1.dist-info/top_level.txt | 1 - .../Werkzeug-2.0.1.dist-info/INSTALLER | 1 - .../Werkzeug-2.0.1.dist-info/LICENSE.rst | 28 - .../Werkzeug-2.0.1.dist-info/METADATA | 128 - .../Werkzeug-2.0.1.dist-info/RECORD | 111 - .../Werkzeug-2.0.1.dist-info/WHEEL | 5 - .../Werkzeug-2.0.1.dist-info/top_level.txt | 1 - .../__pycache__/easy_install.cpython-39.pyc | Bin 328 -> 0 bytes .../click-8.0.1.dist-info/INSTALLER | 1 - .../click-8.0.1.dist-info/LICENSE.rst | 28 - .../click-8.0.1.dist-info/METADATA | 110 - .../click-8.0.1.dist-info/RECORD | 41 - .../site-packages/click-8.0.1.dist-info/WHEEL | 5 - .../click-8.0.1.dist-info/top_level.txt | 1 - .../python3.9/site-packages/click/__init__.py | 75 - .../click/__pycache__/__init__.cpython-39.pyc | Bin 2706 -> 0 bytes .../click/__pycache__/_compat.cpython-39.pyc | Bin 16055 -> 0 bytes .../__pycache__/_termui_impl.cpython-39.pyc | Bin 15981 -> 0 bytes .../__pycache__/_textwrap.cpython-39.pyc | Bin 1548 -> 0 bytes .../__pycache__/_unicodefun.cpython-39.pyc | Bin 2343 -> 0 bytes .../__pycache__/_winconsole.cpython-39.pyc | Bin 7799 -> 0 bytes .../click/__pycache__/core.cpython-39.pyc | Bin 88348 -> 0 bytes .../__pycache__/decorators.cpython-39.pyc | Bin 14310 -> 0 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 10147 -> 0 bytes .../__pycache__/formatting.cpython-39.pyc | Bin 9427 -> 0 bytes .../click/__pycache__/globals.cpython-39.pyc | Bin 2424 -> 0 bytes .../click/__pycache__/parser.cpython-39.pyc | Bin 13581 -> 0 bytes .../shell_completion.cpython-39.pyc | Bin 16660 -> 0 bytes .../click/__pycache__/termui.cpython-39.pyc | Bin 26540 -> 0 bytes .../click/__pycache__/testing.cpython-39.pyc | Bin 15131 -> 0 bytes .../click/__pycache__/types.cpython-39.pyc | Bin 32921 -> 0 bytes .../click/__pycache__/utils.cpython-39.pyc | Bin 17785 -> 0 bytes .../python3.9/site-packages/click/_compat.py | 627 -- .../site-packages/click/_termui_impl.py | 717 -- .../site-packages/click/_textwrap.py | 49 - .../site-packages/click/_unicodefun.py | 100 - .../site-packages/click/_winconsole.py | 279 - .../lib/python3.9/site-packages/click/core.py | 2957 --------- .../site-packages/click/decorators.py | 437 -- .../site-packages/click/exceptions.py | 287 - .../site-packages/click/formatting.py | 301 - .../python3.9/site-packages/click/globals.py | 69 - .../python3.9/site-packages/click/parser.py | 529 -- .../python3.9/site-packages/click/py.typed | 0 .../site-packages/click/shell_completion.py | 574 -- .../python3.9/site-packages/click/termui.py | 807 --- .../python3.9/site-packages/click/testing.py | 479 -- .../python3.9/site-packages/click/types.py | 1052 --- .../python3.9/site-packages/click/utils.py | 579 -- .../python3.9/site-packages/easy_install.py | 5 - .../python3.9/site-packages/flask/__init__.py | 46 - .../python3.9/site-packages/flask/__main__.py | 3 - .../flask/__pycache__/__init__.cpython-39.pyc | Bin 1897 -> 0 bytes .../flask/__pycache__/__main__.cpython-39.pyc | Bin 228 -> 0 bytes .../flask/__pycache__/app.cpython-39.pyc | Bin 63588 -> 0 bytes .../__pycache__/blueprints.cpython-39.pyc | Bin 21752 -> 0 bytes .../flask/__pycache__/cli.cpython-39.pyc | Bin 27072 -> 0 bytes .../flask/__pycache__/config.cpython-39.pyc | Bin 11509 -> 0 bytes .../flask/__pycache__/ctx.cpython-39.pyc | Bin 15555 -> 0 bytes .../__pycache__/debughelpers.cpython-39.pyc | Bin 6473 -> 0 bytes .../flask/__pycache__/globals.cpython-39.pyc | Bin 1847 -> 0 bytes .../flask/__pycache__/helpers.cpython-39.pyc | Bin 27329 -> 0 bytes .../flask/__pycache__/logging.cpython-39.pyc | Bin 2464 -> 0 bytes .../flask/__pycache__/scaffold.cpython-39.pyc | Bin 24692 -> 0 bytes .../flask/__pycache__/sessions.cpython-39.pyc | Bin 13111 -> 0 bytes .../flask/__pycache__/signals.cpython-39.pyc | Bin 2378 -> 0 bytes .../__pycache__/templating.cpython-39.pyc | Bin 5565 -> 0 bytes .../flask/__pycache__/testing.cpython-39.pyc | Bin 9032 -> 0 bytes .../flask/__pycache__/typing.cpython-39.pyc | Bin 1312 -> 0 bytes .../flask/__pycache__/views.cpython-39.pyc | Bin 4922 -> 0 bytes .../flask/__pycache__/wrappers.cpython-39.pyc | Bin 5037 -> 0 bytes venv/lib/python3.9/site-packages/flask/app.py | 2088 ------ .../site-packages/flask/blueprints.py | 603 -- venv/lib/python3.9/site-packages/flask/cli.py | 994 --- .../python3.9/site-packages/flask/config.py | 291 - venv/lib/python3.9/site-packages/flask/ctx.py | 480 -- .../site-packages/flask/debughelpers.py | 171 - .../python3.9/site-packages/flask/globals.py | 59 - .../python3.9/site-packages/flask/helpers.py | 836 --- .../site-packages/flask/json/__init__.py | 350 - .../json/__pycache__/__init__.cpython-39.pyc | Bin 11350 -> 0 bytes .../flask/json/__pycache__/tag.cpython-39.pyc | Bin 11479 -> 0 bytes .../python3.9/site-packages/flask/json/tag.py | 312 - .../python3.9/site-packages/flask/logging.py | 74 - .../python3.9/site-packages/flask/py.typed | 0 .../python3.9/site-packages/flask/scaffold.py | 864 --- .../python3.9/site-packages/flask/sessions.py | 404 -- .../python3.9/site-packages/flask/signals.py | 56 - .../site-packages/flask/templating.py | 165 - .../python3.9/site-packages/flask/testing.py | 280 - .../python3.9/site-packages/flask/typing.py | 46 - .../python3.9/site-packages/flask/views.py | 157 - .../python3.9/site-packages/flask/wrappers.py | 167 - .../itsdangerous-2.0.1.dist-info/INSTALLER | 1 - .../itsdangerous-2.0.1.dist-info/LICENSE.rst | 28 - .../itsdangerous-2.0.1.dist-info/METADATA | 96 - .../itsdangerous-2.0.1.dist-info/RECORD | 25 - .../itsdangerous-2.0.1.dist-info/WHEEL | 5 - .../top_level.txt | 1 - .../site-packages/itsdangerous/__init__.py | 22 - .../__pycache__/__init__.cpython-39.pyc | Bin 1023 -> 0 bytes .../__pycache__/_json.cpython-39.pyc | Bin 1557 -> 0 bytes .../__pycache__/encoding.cpython-39.pyc | Bin 1869 -> 0 bytes .../__pycache__/exc.cpython-39.pyc | Bin 3450 -> 0 bytes .../__pycache__/jws.cpython-39.pyc | Bin 7597 -> 0 bytes .../__pycache__/serializer.cpython-39.pyc | Bin 9752 -> 0 bytes .../__pycache__/signer.cpython-39.pyc | Bin 8449 -> 0 bytes .../__pycache__/timed.cpython-39.pyc | Bin 6370 -> 0 bytes .../__pycache__/url_safe.cpython-39.pyc | Bin 2718 -> 0 bytes .../site-packages/itsdangerous/_json.py | 34 - .../site-packages/itsdangerous/encoding.py | 54 - .../site-packages/itsdangerous/exc.py | 107 - .../site-packages/itsdangerous/jws.py | 259 - .../site-packages/itsdangerous/py.typed | 0 .../site-packages/itsdangerous/serializer.py | 295 - .../site-packages/itsdangerous/signer.py | 257 - .../site-packages/itsdangerous/timed.py | 227 - .../site-packages/itsdangerous/url_safe.py | 80 - .../site-packages/jinja2/__init__.py | 45 - .../__pycache__/__init__.cpython-39.pyc | Bin 1922 -> 0 bytes .../__pycache__/_identifier.cpython-39.pyc | Bin 1909 -> 0 bytes .../__pycache__/async_utils.cpython-39.pyc | Bin 2322 -> 0 bytes .../jinja2/__pycache__/bccache.cpython-39.pyc | Bin 13303 -> 0 bytes .../__pycache__/compiler.cpython-39.pyc | Bin 54199 -> 0 bytes .../__pycache__/constants.cpython-39.pyc | Bin 1553 -> 0 bytes .../jinja2/__pycache__/debug.cpython-39.pyc | Bin 5546 -> 0 bytes .../__pycache__/defaults.cpython-39.pyc | Bin 1353 -> 0 bytes .../__pycache__/environment.cpython-39.pyc | Bin 53459 -> 0 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 5594 -> 0 bytes .../jinja2/__pycache__/ext.cpython-39.pyc | Bin 26360 -> 0 bytes .../jinja2/__pycache__/filters.cpython-39.pyc | Bin 49997 -> 0 bytes .../__pycache__/idtracking.cpython-39.pyc | Bin 11115 -> 0 bytes .../jinja2/__pycache__/lexer.cpython-39.pyc | Bin 20322 -> 0 bytes .../jinja2/__pycache__/loaders.cpython-39.pyc | Bin 20164 -> 0 bytes .../jinja2/__pycache__/meta.cpython-39.pyc | Bin 3811 -> 0 bytes .../__pycache__/nativetypes.cpython-39.pyc | Bin 4800 -> 0 bytes .../jinja2/__pycache__/nodes.cpython-39.pyc | Bin 40829 -> 0 bytes .../__pycache__/optimizer.cpython-39.pyc | Bin 1942 -> 0 bytes .../jinja2/__pycache__/parser.cpython-39.pyc | Bin 27602 -> 0 bytes .../jinja2/__pycache__/runtime.cpython-39.pyc | Bin 33123 -> 0 bytes .../jinja2/__pycache__/sandbox.cpython-39.pyc | Bin 11933 -> 0 bytes .../jinja2/__pycache__/tests.cpython-39.pyc | Bin 6585 -> 0 bytes .../jinja2/__pycache__/utils.cpython-39.pyc | Bin 27457 -> 0 bytes .../jinja2/__pycache__/visitor.cpython-39.pyc | Bin 3907 -> 0 bytes .../site-packages/jinja2/_identifier.py | 6 - .../site-packages/jinja2/async_utils.py | 68 - .../python3.9/site-packages/jinja2/bccache.py | 364 -- .../site-packages/jinja2/compiler.py | 1954 ------ .../site-packages/jinja2/constants.py | 20 - .../python3.9/site-packages/jinja2/debug.py | 279 - .../site-packages/jinja2/defaults.py | 48 - .../site-packages/jinja2/environment.py | 1674 ----- .../site-packages/jinja2/exceptions.py | 166 - .../lib/python3.9/site-packages/jinja2/ext.py | 879 --- .../python3.9/site-packages/jinja2/filters.py | 1824 ------ .../site-packages/jinja2/idtracking.py | 318 - .../python3.9/site-packages/jinja2/lexer.py | 869 --- .../python3.9/site-packages/jinja2/loaders.py | 642 -- .../python3.9/site-packages/jinja2/meta.py | 111 - .../site-packages/jinja2/nativetypes.py | 118 - .../python3.9/site-packages/jinja2/nodes.py | 1205 ---- .../site-packages/jinja2/optimizer.py | 47 - .../python3.9/site-packages/jinja2/parser.py | 1040 --- .../python3.9/site-packages/jinja2/py.typed | 0 .../python3.9/site-packages/jinja2/runtime.py | 1103 ---- .../python3.9/site-packages/jinja2/sandbox.py | 428 -- .../python3.9/site-packages/jinja2/tests.py | 255 - .../python3.9/site-packages/jinja2/utils.py | 854 --- .../python3.9/site-packages/jinja2/visitor.py | 92 - .../site-packages/markupsafe/__init__.py | 288 - .../__pycache__/__init__.cpython-39.pyc | Bin 10698 -> 0 bytes .../__pycache__/_native.cpython-39.pyc | Bin 2345 -> 0 bytes .../site-packages/markupsafe/_native.py | 75 - .../site-packages/markupsafe/_speedups.c | 339 - .../_speedups.cpython-39-x86_64-linux-gnu.so | Bin 53224 -> 0 bytes .../site-packages/markupsafe/_speedups.pyi | 9 - .../site-packages/markupsafe/py.typed | 0 .../pip-20.3.4.dist-info/INSTALLER | 1 - .../pip-20.3.4.dist-info/LICENSE.txt | 20 - .../pip-20.3.4.dist-info/METADATA | 94 - .../site-packages/pip-20.3.4.dist-info/RECORD | 284 - .../pip-20.3.4.dist-info/REQUESTED | 0 .../site-packages/pip-20.3.4.dist-info/WHEEL | 6 - .../pip-20.3.4.dist-info/entry_points.txt | 5 - .../pip-20.3.4.dist-info/top_level.txt | 1 - .../python3.9/site-packages/pip/__init__.py | 18 - .../python3.9/site-packages/pip/__main__.py | 26 - .../pip/__pycache__/__init__.cpython-39.pyc | Bin 676 -> 0 bytes .../pip/__pycache__/__main__.cpython-39.pyc | Bin 520 -> 0 bytes .../site-packages/pip/_internal/__init__.py | 17 - .../__pycache__/__init__.cpython-39.pyc | Bin 725 -> 0 bytes .../__pycache__/build_env.cpython-39.pyc | Bin 7560 -> 0 bytes .../__pycache__/cache.cpython-39.pyc | Bin 9117 -> 0 bytes .../__pycache__/configuration.cpython-39.pyc | Bin 10860 -> 0 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 14949 -> 0 bytes .../__pycache__/locations.cpython-39.pyc | Bin 4583 -> 0 bytes .../_internal/__pycache__/main.cpython-39.pyc | Bin 662 -> 0 bytes .../__pycache__/pyproject.cpython-39.pyc | Bin 3765 -> 0 bytes .../self_outdated_check.cpython-39.pyc | Bin 4596 -> 0 bytes .../__pycache__/wheel_builder.cpython-39.pyc | Bin 8638 -> 0 bytes .../site-packages/pip/_internal/build_env.py | 242 - .../site-packages/pip/_internal/cache.py | 346 - .../pip/_internal/cli/__init__.py | 4 - .../cli/__pycache__/__init__.cpython-39.pyc | Bin 283 -> 0 bytes .../__pycache__/autocompletion.cpython-39.pyc | Bin 4962 -> 0 bytes .../__pycache__/base_command.cpython-39.pyc | Bin 6870 -> 0 bytes .../cli/__pycache__/cmdoptions.cpython-39.pyc | Bin 20799 -> 0 bytes .../command_context.cpython-39.pyc | Bin 1363 -> 0 bytes .../cli/__pycache__/main.cpython-39.pyc | Bin 1467 -> 0 bytes .../__pycache__/main_parser.cpython-39.pyc | Bin 2254 -> 0 bytes .../cli/__pycache__/parser.cpython-39.pyc | Bin 9356 -> 0 bytes .../__pycache__/progress_bars.cpython-39.pyc | Bin 7718 -> 0 bytes .../__pycache__/req_command.cpython-39.pyc | Bin 10569 -> 0 bytes .../cli/__pycache__/spinners.cpython-39.pyc | Bin 4812 -> 0 bytes .../__pycache__/status_codes.cpython-39.pyc | Bin 412 -> 0 bytes .../pip/_internal/cli/autocompletion.py | 164 - .../pip/_internal/cli/base_command.py | 260 - .../pip/_internal/cli/cmdoptions.py | 971 --- .../pip/_internal/cli/command_context.py | 36 - .../site-packages/pip/_internal/cli/main.py | 75 - .../pip/_internal/cli/main_parser.py | 96 - .../site-packages/pip/_internal/cli/parser.py | 285 - .../pip/_internal/cli/progress_bars.py | 280 - .../pip/_internal/cli/req_command.py | 436 -- .../pip/_internal/cli/spinners.py | 173 - .../pip/_internal/cli/status_codes.py | 8 - .../pip/_internal/commands/__init__.py | 123 - .../__pycache__/__init__.cpython-39.pyc | Bin 2983 -> 0 bytes .../commands/__pycache__/cache.cpython-39.pyc | Bin 5882 -> 0 bytes .../commands/__pycache__/check.cpython-39.pyc | Bin 1599 -> 0 bytes .../__pycache__/completion.cpython-39.pyc | Bin 3205 -> 0 bytes .../__pycache__/configuration.cpython-39.pyc | Bin 8155 -> 0 bytes .../commands/__pycache__/debug.cpython-39.pyc | Bin 7479 -> 0 bytes .../__pycache__/download.cpython-39.pyc | Bin 3987 -> 0 bytes .../__pycache__/freeze.cpython-39.pyc | Bin 3322 -> 0 bytes .../commands/__pycache__/hash.cpython-39.pyc | Bin 2166 -> 0 bytes .../commands/__pycache__/help.cpython-39.pyc | Bin 1392 -> 0 bytes .../__pycache__/install.cpython-39.pyc | Bin 17339 -> 0 bytes .../commands/__pycache__/list.cpython-39.pyc | Bin 9100 -> 0 bytes .../__pycache__/search.cpython-39.pyc | Bin 5114 -> 0 bytes .../commands/__pycache__/show.cpython-39.pyc | Bin 6441 -> 0 bytes .../__pycache__/uninstall.cpython-39.pyc | Bin 2977 -> 0 bytes .../commands/__pycache__/wheel.cpython-39.pyc | Bin 5203 -> 0 bytes .../pip/_internal/commands/cache.py | 234 - .../pip/_internal/commands/check.py | 51 - .../pip/_internal/commands/completion.py | 98 - .../pip/_internal/commands/configuration.py | 280 - .../pip/_internal/commands/debug.py | 251 - .../pip/_internal/commands/download.py | 143 - .../pip/_internal/commands/freeze.py | 116 - .../pip/_internal/commands/hash.py | 63 - .../pip/_internal/commands/help.py | 46 - .../pip/_internal/commands/install.py | 763 --- .../pip/_internal/commands/list.py | 329 - .../pip/_internal/commands/search.py | 169 - .../pip/_internal/commands/show.py | 186 - .../pip/_internal/commands/uninstall.py | 95 - .../pip/_internal/commands/wheel.py | 198 - .../pip/_internal/configuration.py | 407 -- .../pip/_internal/distributions/__init__.py | 24 - .../__pycache__/__init__.cpython-39.pyc | Bin 859 -> 0 bytes .../__pycache__/base.cpython-39.pyc | Bin 1975 -> 0 bytes .../__pycache__/installed.cpython-39.pyc | Bin 1255 -> 0 bytes .../__pycache__/sdist.cpython-39.pyc | Bin 3534 -> 0 bytes .../__pycache__/wheel.cpython-39.pyc | Bin 1599 -> 0 bytes .../pip/_internal/distributions/base.py | 46 - .../pip/_internal/distributions/installed.py | 25 - .../pip/_internal/distributions/sdist.py | 105 - .../pip/_internal/distributions/wheel.py | 37 - .../site-packages/pip/_internal/exceptions.py | 391 -- .../pip/_internal/index/__init__.py | 2 - .../index/__pycache__/__init__.cpython-39.pyc | Bin 237 -> 0 bytes .../__pycache__/collector.cpython-39.pyc | Bin 17762 -> 0 bytes .../__pycache__/package_finder.cpython-39.pyc | Bin 26090 -> 0 bytes .../pip/_internal/index/collector.py | 667 -- .../pip/_internal/index/package_finder.py | 1015 --- .../site-packages/pip/_internal/locations.py | 199 - .../site-packages/pip/_internal/main.py | 16 - .../pip/_internal/models/__init__.py | 2 - .../__pycache__/__init__.cpython-39.pyc | Bin 271 -> 0 bytes .../__pycache__/candidate.cpython-39.pyc | Bin 1498 -> 0 bytes .../__pycache__/direct_url.cpython-39.pyc | Bin 6522 -> 0 bytes .../__pycache__/format_control.cpython-39.pyc | Bin 2756 -> 0 bytes .../models/__pycache__/index.cpython-39.pyc | Bin 1237 -> 0 bytes .../models/__pycache__/link.cpython-39.pyc | Bin 7167 -> 0 bytes .../models/__pycache__/scheme.cpython-39.pyc | Bin 959 -> 0 bytes .../__pycache__/search_scope.cpython-39.pyc | Bin 3452 -> 0 bytes .../selection_prefs.cpython-39.pyc | Bin 1669 -> 0 bytes .../__pycache__/target_python.cpython-39.pyc | Bin 3375 -> 0 bytes .../models/__pycache__/wheel.cpython-39.pyc | Bin 3223 -> 0 bytes .../pip/_internal/models/candidate.py | 39 - .../pip/_internal/models/direct_url.py | 243 - .../pip/_internal/models/format_control.py | 92 - .../pip/_internal/models/index.py | 34 - .../pip/_internal/models/link.py | 246 - .../pip/_internal/models/scheme.py | 31 - .../pip/_internal/models/search_scope.py | 135 - .../pip/_internal/models/selection_prefs.py | 50 - .../pip/_internal/models/target_python.py | 117 - .../pip/_internal/models/wheel.py | 78 - .../pip/_internal/network/__init__.py | 2 - .../__pycache__/__init__.cpython-39.pyc | Bin 259 -> 0 bytes .../network/__pycache__/auth.cpython-39.pyc | Bin 7111 -> 0 bytes .../network/__pycache__/cache.cpython-39.pyc | Bin 2835 -> 0 bytes .../__pycache__/download.cpython-39.pyc | Bin 5286 -> 0 bytes .../__pycache__/lazy_wheel.cpython-39.pyc | Bin 8075 -> 0 bytes .../__pycache__/session.cpython-39.pyc | Bin 9520 -> 0 bytes .../network/__pycache__/utils.cpython-39.pyc | Bin 1412 -> 0 bytes .../network/__pycache__/xmlrpc.cpython-39.pyc | Bin 1874 -> 0 bytes .../pip/_internal/network/auth.py | 310 - .../pip/_internal/network/cache.py | 79 - .../pip/_internal/network/download.py | 202 - .../pip/_internal/network/lazy_wheel.py | 231 - .../pip/_internal/network/session.py | 428 -- .../pip/_internal/network/utils.py | 97 - .../pip/_internal/network/xmlrpc.py | 53 - .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 207 -> 0 bytes .../__pycache__/check.cpython-39.pyc | Bin 3629 -> 0 bytes .../__pycache__/freeze.cpython-39.pyc | Bin 5949 -> 0 bytes .../__pycache__/prepare.cpython-39.pyc | Bin 13675 -> 0 bytes .../_internal/operations/build/__init__.py | 0 .../build/__pycache__/__init__.cpython-39.pyc | Bin 213 -> 0 bytes .../build/__pycache__/metadata.cpython-39.pyc | Bin 1234 -> 0 bytes .../metadata_legacy.cpython-39.pyc | Bin 2010 -> 0 bytes .../build/__pycache__/wheel.cpython-39.pyc | Bin 1351 -> 0 bytes .../__pycache__/wheel_legacy.cpython-39.pyc | Bin 2633 -> 0 bytes .../_internal/operations/build/metadata.py | 38 - .../operations/build/metadata_legacy.py | 77 - .../pip/_internal/operations/build/wheel.py | 47 - .../operations/build/wheel_legacy.py | 113 - .../pip/_internal/operations/check.py | 155 - .../pip/_internal/operations/freeze.py | 277 - .../_internal/operations/install/__init__.py | 2 - .../__pycache__/__init__.cpython-39.pyc | Bin 271 -> 0 bytes .../editable_legacy.cpython-39.pyc | Bin 1389 -> 0 bytes .../install/__pycache__/legacy.cpython-39.pyc | Bin 3279 -> 0 bytes .../install/__pycache__/wheel.cpython-39.pyc | Bin 21263 -> 0 bytes .../operations/install/editable_legacy.py | 52 - .../_internal/operations/install/legacy.py | 130 - .../pip/_internal/operations/install/wheel.py | 846 --- .../pip/_internal/operations/prepare.py | 608 -- .../site-packages/pip/_internal/pyproject.py | 196 - .../pip/_internal/req/__init__.py | 103 - .../req/__pycache__/__init__.cpython-39.pyc | Bin 2508 -> 0 bytes .../__pycache__/constructors.cpython-39.pyc | Bin 11038 -> 0 bytes .../req/__pycache__/req_file.cpython-39.pyc | Bin 12724 -> 0 bytes .../__pycache__/req_install.cpython-39.pyc | Bin 21475 -> 0 bytes .../req/__pycache__/req_set.cpython-39.pyc | Bin 5827 -> 0 bytes .../__pycache__/req_tracker.cpython-39.pyc | Bin 4249 -> 0 bytes .../__pycache__/req_uninstall.cpython-39.pyc | Bin 17577 -> 0 bytes .../pip/_internal/req/constructors.py | 476 -- .../pip/_internal/req/req_file.py | 574 -- .../pip/_internal/req/req_install.py | 915 --- .../pip/_internal/req/req_set.py | 204 - .../pip/_internal/req/req_tracker.py | 151 - .../pip/_internal/req/req_uninstall.py | 657 -- .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 207 -> 0 bytes .../__pycache__/base.cpython-39.pyc | Bin 1039 -> 0 bytes .../pip/_internal/resolution/base.py | 21 - .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 214 -> 0 bytes .../__pycache__/resolver.cpython-39.pyc | Bin 11594 -> 0 bytes .../_internal/resolution/legacy/resolver.py | 473 -- .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 218 -> 0 bytes .../__pycache__/base.cpython-39.pyc | Bin 5797 -> 0 bytes .../__pycache__/candidates.cpython-39.pyc | Bin 18022 -> 0 bytes .../__pycache__/factory.cpython-39.pyc | Bin 11567 -> 0 bytes .../found_candidates.cpython-39.pyc | Bin 3476 -> 0 bytes .../__pycache__/provider.cpython-39.pyc | Bin 6339 -> 0 bytes .../__pycache__/reporter.cpython-39.pyc | Bin 3225 -> 0 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 7063 -> 0 bytes .../__pycache__/resolver.cpython-39.pyc | Bin 7912 -> 0 bytes .../_internal/resolution/resolvelib/base.py | 156 - .../resolution/resolvelib/candidates.py | 604 -- .../resolution/resolvelib/factory.py | 504 -- .../resolution/resolvelib/found_candidates.py | 101 - .../resolution/resolvelib/provider.py | 174 - .../resolution/resolvelib/reporter.py | 84 - .../resolution/resolvelib/requirements.py | 201 - .../resolution/resolvelib/resolver.py | 297 - .../pip/_internal/self_outdated_check.py | 197 - .../pip/_internal/utils/__init__.py | 0 .../utils/__pycache__/__init__.cpython-39.pyc | Bin 202 -> 0 bytes .../utils/__pycache__/appdirs.cpython-39.pyc | Bin 1392 -> 0 bytes .../utils/__pycache__/compat.cpython-39.pyc | Bin 6717 -> 0 bytes .../compatibility_tags.cpython-39.pyc | Bin 3951 -> 0 bytes .../utils/__pycache__/datetime.cpython-39.pyc | Bin 523 -> 0 bytes .../__pycache__/deprecation.cpython-39.pyc | Bin 2849 -> 0 bytes .../direct_url_helpers.cpython-39.pyc | Bin 2670 -> 0 bytes .../__pycache__/distutils_args.cpython-39.pyc | Bin 1142 -> 0 bytes .../utils/__pycache__/encoding.cpython-39.pyc | Bin 1322 -> 0 bytes .../__pycache__/entrypoints.cpython-39.pyc | Bin 1346 -> 0 bytes .../__pycache__/filesystem.cpython-39.pyc | Bin 5683 -> 0 bytes .../__pycache__/filetypes.cpython-39.pyc | Bin 891 -> 0 bytes .../utils/__pycache__/glibc.cpython-39.pyc | Bin 1749 -> 0 bytes .../utils/__pycache__/hashes.cpython-39.pyc | Bin 5269 -> 0 bytes .../inject_securetransport.cpython-39.pyc | Bin 975 -> 0 bytes .../utils/__pycache__/logging.cpython-39.pyc | Bin 9242 -> 0 bytes .../utils/__pycache__/misc.cpython-39.pyc | Bin 25527 -> 0 bytes .../utils/__pycache__/models.cpython-39.pyc | Bin 2002 -> 0 bytes .../__pycache__/packaging.cpython-39.pyc | Bin 2655 -> 0 bytes .../utils/__pycache__/parallel.cpython-39.pyc | Bin 3220 -> 0 bytes .../__pycache__/pkg_resources.cpython-39.pyc | Bin 1871 -> 0 bytes .../setuptools_build.cpython-39.pyc | Bin 2948 -> 0 bytes .../__pycache__/subprocess.cpython-39.pyc | Bin 6085 -> 0 bytes .../utils/__pycache__/temp_dir.cpython-39.pyc | Bin 7230 -> 0 bytes .../utils/__pycache__/typing.cpython-39.pyc | Bin 1484 -> 0 bytes .../__pycache__/unpacking.cpython-39.pyc | Bin 6646 -> 0 bytes .../utils/__pycache__/urls.cpython-39.pyc | Bin 1546 -> 0 bytes .../__pycache__/virtualenv.cpython-39.pyc | Bin 3379 -> 0 bytes .../utils/__pycache__/wheel.cpython-39.pyc | Bin 6358 -> 0 bytes .../pip/_internal/utils/appdirs.py | 44 - .../pip/_internal/utils/compat.py | 293 - .../pip/_internal/utils/compatibility_tags.py | 178 - .../pip/_internal/utils/datetime.py | 14 - .../pip/_internal/utils/deprecation.py | 104 - .../pip/_internal/utils/direct_url_helpers.py | 126 - .../pip/_internal/utils/distutils_args.py | 48 - .../pip/_internal/utils/encoding.py | 41 - .../pip/_internal/utils/entrypoints.py | 31 - .../pip/_internal/utils/filesystem.py | 224 - .../pip/_internal/utils/filetypes.py | 26 - .../pip/_internal/utils/glibc.py | 98 - .../pip/_internal/utils/hashes.py | 169 - .../_internal/utils/inject_securetransport.py | 36 - .../pip/_internal/utils/logging.py | 399 -- .../site-packages/pip/_internal/utils/misc.py | 977 --- .../pip/_internal/utils/models.py | 44 - .../pip/_internal/utils/packaging.py | 95 - .../pip/_internal/utils/parallel.py | 107 - .../pip/_internal/utils/pkg_resources.py | 44 - .../pip/_internal/utils/setuptools_build.py | 181 - .../pip/_internal/utils/subprocess.py | 299 - .../pip/_internal/utils/temp_dir.py | 284 - .../pip/_internal/utils/typing.py | 38 - .../pip/_internal/utils/unpacking.py | 281 - .../site-packages/pip/_internal/utils/urls.py | 55 - .../pip/_internal/utils/virtualenv.py | 119 - .../pip/_internal/utils/wheel.py | 225 - .../pip/_internal/vcs/__init__.py | 15 - .../vcs/__pycache__/__init__.cpython-39.pyc | Bin 495 -> 0 bytes .../vcs/__pycache__/bazaar.cpython-39.pyc | Bin 3817 -> 0 bytes .../vcs/__pycache__/git.cpython-39.pyc | Bin 10630 -> 0 bytes .../vcs/__pycache__/mercurial.cpython-39.pyc | Bin 5192 -> 0 bytes .../vcs/__pycache__/subversion.cpython-39.pyc | Bin 8617 -> 0 bytes .../__pycache__/versioncontrol.cpython-39.pyc | Bin 19705 -> 0 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 123 - .../site-packages/pip/_internal/vcs/git.py | 460 -- .../pip/_internal/vcs/mercurial.py | 172 - .../pip/_internal/vcs/subversion.py | 340 - .../pip/_internal/vcs/versioncontrol.py | 735 --- .../pip/_internal/wheel_builder.py | 363 -- .../site-packages/pip/_vendor/__init__.py | 123 - .../__pycache__/__init__.cpython-39.pyc | Bin 3322 -> 0 bytes .../site-packages/pip/_vendor/vendor.txt | 24 - .../pkg_resources-0.0.0.dist-info/AUTHORS.txt | 590 -- .../pkg_resources-0.0.0.dist-info/INSTALLER | 1 - .../pkg_resources-0.0.0.dist-info/LICENSE.txt | 20 - .../pkg_resources-0.0.0.dist-info/METADATA | 13 - .../pkg_resources-0.0.0.dist-info/RECORD | 39 - .../pkg_resources-0.0.0.dist-info/REQUESTED | 0 .../pkg_resources-0.0.0.dist-info/WHEEL | 6 - .../site-packages/pkg_resources/__init__.py | 3296 ---------- .../__pycache__/__init__.cpython-39.pyc | Bin 100384 -> 0 bytes .../__pycache__/py31compat.cpython-39.pyc | Bin 649 -> 0 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 204 -> 0 bytes .../__pycache__/appdirs.cpython-39.pyc | Bin 20521 -> 0 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 201357 -> 0 bytes .../_vendor/__pycache__/six.cpython-39.pyc | Bin 24487 -> 0 bytes .../pkg_resources/_vendor/appdirs.py | 608 -- .../_vendor/packaging/__about__.py | 21 - .../_vendor/packaging/__init__.py | 14 - .../__pycache__/__about__.cpython-39.pyc | Bin 728 -> 0 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 566 -> 0 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 1028 -> 0 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 2810 -> 0 bytes .../__pycache__/markers.cpython-39.pyc | Bin 8938 -> 0 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 3925 -> 0 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 19814 -> 0 bytes .../__pycache__/utils.cpython-39.pyc | Bin 513 -> 0 bytes .../__pycache__/version.cpython-39.pyc | Bin 10649 -> 0 bytes .../_vendor/packaging/_compat.py | 30 - .../_vendor/packaging/_structures.py | 68 - .../_vendor/packaging/markers.py | 301 - .../_vendor/packaging/requirements.py | 127 - .../_vendor/packaging/specifiers.py | 774 --- .../pkg_resources/_vendor/packaging/utils.py | 14 - .../_vendor/packaging/version.py | 393 -- .../pkg_resources/_vendor/pyparsing.py | 5742 ----------------- .../pkg_resources/_vendor/six.py | 868 --- .../pkg_resources/extern/__init__.py | 73 - .../__pycache__/__init__.cpython-39.pyc | Bin 2455 -> 0 bytes .../site-packages/pkg_resources/py31compat.py | 23 - .../setuptools-44.1.1.dist-info/AUTHORS.txt | 590 -- .../setuptools-44.1.1.dist-info/INSTALLER | 1 - .../setuptools-44.1.1.dist-info/LICENSE.txt | 20 - .../setuptools-44.1.1.dist-info/METADATA | 82 - .../setuptools-44.1.1.dist-info/RECORD | 164 - .../setuptools-44.1.1.dist-info/REQUESTED | 0 .../setuptools-44.1.1.dist-info/WHEEL | 6 - .../dependency_links.txt | 2 - .../entry_points.txt | 68 - .../setuptools-44.1.1.dist-info/top_level.txt | 3 - .../setuptools-44.1.1.dist-info/zip-safe | 1 - .../site-packages/setuptools/__init__.py | 245 - .../__pycache__/__init__.cpython-39.pyc | Bin 8645 -> 0 bytes .../_deprecation_warning.cpython-39.pyc | Bin 563 -> 0 bytes .../__pycache__/_imp.cpython-39.pyc | Bin 1933 -> 0 bytes .../__pycache__/archive_util.cpython-39.pyc | Bin 5235 -> 0 bytes .../__pycache__/build_meta.cpython-39.pyc | Bin 8650 -> 0 bytes .../__pycache__/config.cpython-39.pyc | Bin 17956 -> 0 bytes .../__pycache__/dep_util.cpython-39.pyc | Bin 866 -> 0 bytes .../__pycache__/depends.cpython-39.pyc | Bin 5284 -> 0 bytes .../__pycache__/dist.cpython-39.pyc | Bin 42490 -> 0 bytes .../__pycache__/errors.cpython-39.pyc | Bin 863 -> 0 bytes .../__pycache__/extension.cpython-39.pyc | Bin 2012 -> 0 bytes .../__pycache__/glob.cpython-39.pyc | Bin 3770 -> 0 bytes .../__pycache__/installer.cpython-39.pyc | Bin 4117 -> 0 bytes .../__pycache__/launch.cpython-39.pyc | Bin 871 -> 0 bytes .../__pycache__/lib2to3_ex.cpython-39.pyc | Bin 2464 -> 0 bytes .../__pycache__/monkey.cpython-39.pyc | Bin 4685 -> 0 bytes .../__pycache__/msvc.cpython-39.pyc | Bin 39673 -> 0 bytes .../__pycache__/namespaces.cpython-39.pyc | Bin 3683 -> 0 bytes .../__pycache__/package_index.cpython-39.pyc | Bin 33121 -> 0 bytes .../__pycache__/py27compat.cpython-39.pyc | Bin 1796 -> 0 bytes .../__pycache__/py31compat.cpython-39.pyc | Bin 1238 -> 0 bytes .../__pycache__/py33compat.cpython-39.pyc | Bin 1453 -> 0 bytes .../__pycache__/py34compat.cpython-39.pyc | Bin 493 -> 0 bytes .../__pycache__/sandbox.cpython-39.pyc | Bin 15923 -> 0 bytes .../__pycache__/site-patch.cpython-39.pyc | Bin 1523 -> 0 bytes .../__pycache__/ssl_support.cpython-39.pyc | Bin 6891 -> 0 bytes .../__pycache__/unicode_utils.cpython-39.pyc | Bin 1192 -> 0 bytes .../__pycache__/version.cpython-39.pyc | Bin 337 -> 0 bytes .../__pycache__/wheel.cpython-39.pyc | Bin 7476 -> 0 bytes .../windows_support.cpython-39.pyc | Bin 1036 -> 0 bytes .../setuptools/_deprecation_warning.py | 7 - .../site-packages/setuptools/_imp.py | 73 - .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 201 -> 0 bytes .../__pycache__/ordered_set.cpython-39.pyc | Bin 16395 -> 0 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 201354 -> 0 bytes .../_vendor/__pycache__/six.cpython-39.pyc | Bin 24484 -> 0 bytes .../setuptools/_vendor/ordered_set.py | 488 -- .../setuptools/_vendor/packaging/__about__.py | 27 - .../setuptools/_vendor/packaging/__init__.py | 26 - .../__pycache__/__about__.cpython-39.pyc | Bin 725 -> 0 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 563 -> 0 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 1025 -> 0 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 2807 -> 0 bytes .../__pycache__/markers.cpython-39.pyc | Bin 8946 -> 0 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 4038 -> 0 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 19759 -> 0 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 10837 -> 0 bytes .../__pycache__/utils.cpython-39.pyc | Bin 1472 -> 0 bytes .../__pycache__/version.cpython-39.pyc | Bin 12092 -> 0 bytes .../setuptools/_vendor/packaging/_compat.py | 31 - .../_vendor/packaging/_structures.py | 68 - .../setuptools/_vendor/packaging/markers.py | 296 - .../_vendor/packaging/requirements.py | 138 - .../_vendor/packaging/specifiers.py | 749 --- .../setuptools/_vendor/packaging/tags.py | 404 -- .../setuptools/_vendor/packaging/utils.py | 57 - .../setuptools/_vendor/packaging/version.py | 420 -- .../setuptools/_vendor/pyparsing.py | 5742 ----------------- .../site-packages/setuptools/_vendor/six.py | 868 --- .../site-packages/setuptools/archive_util.py | 173 - .../site-packages/setuptools/build_meta.py | 264 - .../site-packages/setuptools/cli-32.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/cli-64.exe | Bin 74752 -> 0 bytes .../site-packages/setuptools/cli.exe | Bin 65536 -> 0 bytes .../setuptools/command/__init__.py | 17 - .../__pycache__/__init__.cpython-39.pyc | Bin 681 -> 0 bytes .../command/__pycache__/alias.cpython-39.pyc | Bin 2439 -> 0 bytes .../__pycache__/bdist_egg.cpython-39.pyc | Bin 14227 -> 0 bytes .../__pycache__/bdist_rpm.cpython-39.pyc | Bin 1829 -> 0 bytes .../__pycache__/bdist_wininst.cpython-39.pyc | Bin 1005 -> 0 bytes .../__pycache__/build_clib.cpython-39.pyc | Bin 2484 -> 0 bytes .../__pycache__/build_ext.cpython-39.pyc | Bin 9874 -> 0 bytes .../__pycache__/build_py.cpython-39.pyc | Bin 8705 -> 0 bytes .../__pycache__/develop.cpython-39.pyc | Bin 6584 -> 0 bytes .../__pycache__/dist_info.cpython-39.pyc | Bin 1408 -> 0 bytes .../__pycache__/easy_install.cpython-39.pyc | Bin 67018 -> 0 bytes .../__pycache__/egg_info.cpython-39.pyc | Bin 21835 -> 0 bytes .../__pycache__/install.cpython-39.pyc | Bin 4049 -> 0 bytes .../install_egg_info.cpython-39.pyc | Bin 2937 -> 0 bytes .../__pycache__/install_lib.cpython-39.pyc | Bin 5102 -> 0 bytes .../install_scripts.cpython-39.pyc | Bin 2316 -> 0 bytes .../__pycache__/py36compat.cpython-39.pyc | Bin 4657 -> 0 bytes .../__pycache__/register.cpython-39.pyc | Bin 858 -> 0 bytes .../command/__pycache__/rotate.cpython-39.pyc | Bin 2553 -> 0 bytes .../__pycache__/saveopts.cpython-39.pyc | Bin 936 -> 0 bytes .../command/__pycache__/sdist.cpython-39.pyc | Bin 7946 -> 0 bytes .../command/__pycache__/setopt.cpython-39.pyc | Bin 4588 -> 0 bytes .../command/__pycache__/test.cpython-39.pyc | Bin 8686 -> 0 bytes .../command/__pycache__/upload.cpython-39.pyc | Bin 831 -> 0 bytes .../__pycache__/upload_docs.cpython-39.pyc | Bin 6225 -> 0 bytes .../site-packages/setuptools/command/alias.py | 80 - .../setuptools/command/bdist_egg.py | 502 -- .../setuptools/command/bdist_rpm.py | 43 - .../setuptools/command/bdist_wininst.py | 21 - .../setuptools/command/build_clib.py | 98 - .../setuptools/command/build_ext.py | 327 - .../setuptools/command/build_py.py | 270 - .../setuptools/command/develop.py | 221 - .../setuptools/command/dist_info.py | 36 - .../setuptools/command/easy_install.py | 2402 ------- .../setuptools/command/egg_info.py | 717 -- .../setuptools/command/install.py | 125 - .../setuptools/command/install_egg_info.py | 82 - .../setuptools/command/install_lib.py | 147 - .../setuptools/command/install_scripts.py | 65 - .../setuptools/command/launcher manifest.xml | 15 - .../setuptools/command/py36compat.py | 136 - .../setuptools/command/register.py | 18 - .../setuptools/command/rotate.py | 66 - .../setuptools/command/saveopts.py | 22 - .../site-packages/setuptools/command/sdist.py | 252 - .../setuptools/command/setopt.py | 149 - .../site-packages/setuptools/command/test.py | 279 - .../setuptools/command/upload.py | 17 - .../setuptools/command/upload_docs.py | 206 - .../site-packages/setuptools/config.py | 659 -- .../site-packages/setuptools/dep_util.py | 23 - .../site-packages/setuptools/depends.py | 176 - .../site-packages/setuptools/dist.py | 1274 ---- .../site-packages/setuptools/errors.py | 16 - .../site-packages/setuptools/extension.py | 57 - .../setuptools/extern/__init__.py | 73 - .../__pycache__/__init__.cpython-39.pyc | Bin 2469 -> 0 bytes .../site-packages/setuptools/glob.py | 174 - .../site-packages/setuptools/gui-32.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/gui-64.exe | Bin 75264 -> 0 bytes .../site-packages/setuptools/gui.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/installer.py | 150 - .../site-packages/setuptools/launch.py | 35 - .../site-packages/setuptools/lib2to3_ex.py | 62 - .../site-packages/setuptools/monkey.py | 179 - .../site-packages/setuptools/msvc.py | 1679 ----- .../site-packages/setuptools/namespaces.py | 107 - .../site-packages/setuptools/package_index.py | 1136 ---- .../site-packages/setuptools/py27compat.py | 60 - .../site-packages/setuptools/py31compat.py | 32 - .../site-packages/setuptools/py33compat.py | 59 - .../site-packages/setuptools/py34compat.py | 13 - .../site-packages/setuptools/sandbox.py | 491 -- .../setuptools/script (dev).tmpl | 6 - .../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 | 220 - .../setuptools/windows_support.py | 29 - .../site-packages/werkzeug/__init__.py | 6 - .../__pycache__/__init__.cpython-39.pyc | Bin 365 -> 0 bytes .../__pycache__/_internal.cpython-39.pyc | Bin 18475 -> 0 bytes .../__pycache__/_reloader.cpython-39.pyc | Bin 11986 -> 0 bytes .../__pycache__/datastructures.cpython-39.pyc | Bin 106457 -> 0 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 30250 -> 0 bytes .../__pycache__/filesystem.cpython-39.pyc | Bin 2100 -> 0 bytes .../__pycache__/formparser.cpython-39.pyc | Bin 14034 -> 0 bytes .../werkzeug/__pycache__/http.cpython-39.pyc | Bin 38068 -> 0 bytes .../werkzeug/__pycache__/local.cpython-39.pyc | Bin 22295 -> 0 bytes .../__pycache__/routing.cpython-39.pyc | Bin 73087 -> 0 bytes .../__pycache__/security.cpython-39.pyc | Bin 8186 -> 0 bytes .../__pycache__/serving.cpython-39.pyc | Bin 30738 -> 0 bytes .../werkzeug/__pycache__/test.cpython-39.pyc | Bin 39095 -> 0 bytes .../__pycache__/testapp.cpython-39.pyc | Bin 9629 -> 0 bytes .../werkzeug/__pycache__/urls.cpython-39.pyc | Bin 36645 -> 0 bytes .../__pycache__/user_agent.cpython-39.pyc | Bin 1846 -> 0 bytes .../__pycache__/useragents.cpython-39.pyc | Bin 6888 -> 0 bytes .../werkzeug/__pycache__/utils.cpython-39.pyc | Bin 32813 -> 0 bytes .../werkzeug/__pycache__/wsgi.cpython-39.pyc | Bin 30229 -> 0 bytes .../site-packages/werkzeug/_internal.py | 626 -- .../site-packages/werkzeug/_reloader.py | 430 -- .../site-packages/werkzeug/datastructures.py | 3051 --------- .../site-packages/werkzeug/datastructures.pyi | 906 --- .../site-packages/werkzeug/debug/__init__.py | 501 -- .../debug/__pycache__/__init__.cpython-39.pyc | Bin 13009 -> 0 bytes .../debug/__pycache__/console.cpython-39.pyc | Bin 7952 -> 0 bytes .../debug/__pycache__/repr.cpython-39.pyc | Bin 8881 -> 0 bytes .../debug/__pycache__/tbtools.cpython-39.pyc | Bin 18045 -> 0 bytes .../site-packages/werkzeug/debug/console.py | 211 - .../site-packages/werkzeug/debug/repr.py | 284 - .../werkzeug/debug/shared/FONT_LICENSE | 96 - .../werkzeug/debug/shared/ICON_LICENSE.md | 6 - .../werkzeug/debug/shared/console.png | Bin 507 -> 0 bytes .../werkzeug/debug/shared/debugger.js | 359 -- .../werkzeug/debug/shared/less.png | Bin 191 -> 0 bytes .../werkzeug/debug/shared/more.png | Bin 200 -> 0 bytes .../werkzeug/debug/shared/source.png | Bin 818 -> 0 bytes .../werkzeug/debug/shared/style.css | 163 - .../werkzeug/debug/shared/ubuntu.ttf | Bin 70220 -> 0 bytes .../site-packages/werkzeug/debug/tbtools.py | 595 -- .../site-packages/werkzeug/exceptions.py | 943 --- .../site-packages/werkzeug/filesystem.py | 55 - .../site-packages/werkzeug/formparser.py | 495 -- .../python3.9/site-packages/werkzeug/http.py | 1388 ---- .../python3.9/site-packages/werkzeug/local.py | 666 -- .../werkzeug/middleware/__init__.py | 22 - .../__pycache__/__init__.cpython-39.pyc | Bin 710 -> 0 bytes .../__pycache__/dispatcher.cpython-39.pyc | Bin 2769 -> 0 bytes .../__pycache__/http_proxy.cpython-39.pyc | Bin 6814 -> 0 bytes .../__pycache__/lint.cpython-39.pyc | Bin 12711 -> 0 bytes .../__pycache__/profiler.cpython-39.pyc | Bin 4962 -> 0 bytes .../__pycache__/proxy_fix.cpython-39.pyc | Bin 6191 -> 0 bytes .../__pycache__/shared_data.cpython-39.pyc | Bin 9865 -> 0 bytes .../werkzeug/middleware/dispatcher.py | 78 - .../werkzeug/middleware/http_proxy.py | 230 - .../site-packages/werkzeug/middleware/lint.py | 420 -- .../werkzeug/middleware/profiler.py | 139 - .../werkzeug/middleware/proxy_fix.py | 187 - .../werkzeug/middleware/shared_data.py | 320 - .../python3.9/site-packages/werkzeug/py.typed | 0 .../site-packages/werkzeug/routing.py | 2332 ------- .../site-packages/werkzeug/sansio/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 198 -> 0 bytes .../__pycache__/multipart.cpython-39.pyc | Bin 6549 -> 0 bytes .../sansio/__pycache__/request.cpython-39.pyc | Bin 17194 -> 0 bytes .../__pycache__/response.cpython-39.pyc | Bin 21123 -> 0 bytes .../sansio/__pycache__/utils.cpython-39.pyc | Bin 3902 -> 0 bytes .../werkzeug/sansio/multipart.py | 260 - .../site-packages/werkzeug/sansio/request.py | 548 -- .../site-packages/werkzeug/sansio/response.py | 656 -- .../site-packages/werkzeug/sansio/utils.py | 142 - .../site-packages/werkzeug/security.py | 247 - .../site-packages/werkzeug/serving.py | 1079 ---- .../python3.9/site-packages/werkzeug/test.py | 1324 ---- .../site-packages/werkzeug/testapp.py | 240 - .../python3.9/site-packages/werkzeug/urls.py | 1211 ---- .../site-packages/werkzeug/user_agent.py | 47 - .../site-packages/werkzeug/useragents.py | 215 - .../python3.9/site-packages/werkzeug/utils.py | 1091 ---- .../werkzeug/wrappers/__init__.py | 16 - .../__pycache__/__init__.cpython-39.pyc | Bin 921 -> 0 bytes .../__pycache__/accept.cpython-39.pyc | Bin 827 -> 0 bytes .../wrappers/__pycache__/auth.cpython-39.pyc | Bin 1305 -> 0 bytes .../__pycache__/base_request.cpython-39.pyc | Bin 1780 -> 0 bytes .../__pycache__/base_response.cpython-39.pyc | Bin 1791 -> 0 bytes .../common_descriptors.cpython-39.pyc | Bin 1382 -> 0 bytes .../wrappers/__pycache__/cors.cpython-39.pyc | Bin 1290 -> 0 bytes .../wrappers/__pycache__/etag.cpython-39.pyc | Bin 1290 -> 0 bytes .../wrappers/__pycache__/json.cpython-39.pyc | Bin 819 -> 0 bytes .../__pycache__/request.cpython-39.pyc | Bin 21308 -> 0 bytes .../__pycache__/response.cpython-39.pyc | Bin 29702 -> 0 bytes .../__pycache__/user_agent.cpython-39.pyc | Bin 840 -> 0 bytes .../site-packages/werkzeug/wrappers/accept.py | 14 - .../site-packages/werkzeug/wrappers/auth.py | 26 - .../werkzeug/wrappers/base_request.py | 36 - .../werkzeug/wrappers/base_response.py | 36 - .../werkzeug/wrappers/common_descriptors.py | 26 - .../site-packages/werkzeug/wrappers/cors.py | 26 - .../site-packages/werkzeug/wrappers/etag.py | 26 - .../site-packages/werkzeug/wrappers/json.py | 13 - .../werkzeug/wrappers/request.py | 660 -- .../werkzeug/wrappers/response.py | 890 --- .../werkzeug/wrappers/user_agent.py | 14 - .../python3.9/site-packages/werkzeug/wsgi.py | 982 --- venv/lib64 | 1 - venv/pyvenv.cfg | 3 - venv/requirements.txt | 1 - .../CacheControl-0.12.6-py2.py3-none-any.whl | Bin 23441 -> 0 bytes .../appdirs-1.4.4-py2.py3-none-any.whl | Bin 14285 -> 0 bytes .../certifi-2020.6.20-py2.py3-none-any.whl | Bin 161344 -> 0 bytes .../chardet-4.0.0-py2.py3-none-any.whl | Bin 174749 -> 0 bytes .../colorama-0.4.4-py2.py3-none-any.whl | Bin 20722 -> 0 bytes ...ntextlib2-0.6.0.post1-py2.py3-none-any.whl | Bin 12692 -> 0 bytes .../distlib-0.3.1-py2.py3-none-any.whl | Bin 147633 -> 0 bytes .../distro-1.5.0-py2.py3-none-any.whl | Bin 19426 -> 0 bytes .../html5lib-1.1-py2.py3-none-any.whl | Bin 116071 -> 0 bytes .../idna-2.10-py2.py3-none-any.whl | Bin 63344 -> 0 bytes .../ipaddr-2.2.0-py2.py3-none-any.whl | Bin 19706 -> 0 bytes .../msgpack-1.0.0-py2.py3-none-any.whl | Bin 75866 -> 0 bytes .../packaging-20.9-py2.py3-none-any.whl | Bin 41435 -> 0 bytes .../pep517-0.9.1-py2.py3-none-any.whl | Bin 22249 -> 0 bytes .../pip-20.3.4-py2.py3-none-any.whl | Bin 311145 -> 0 bytes .../pkg_resources-0.0.0-py2.py3-none-any.whl | Bin 122731 -> 0 bytes .../progress-1.5-py2.py3-none-any.whl | Bin 12965 -> 0 bytes .../pyparsing-2.4.7-py2.py3-none-any.whl | Bin 72626 -> 0 bytes .../requests-2.25.1-py2.py3-none-any.whl | Bin 62975 -> 0 bytes .../resolvelib-0.5.4-py2.py3-none-any.whl | Bin 17707 -> 0 bytes .../retrying-1.3.3-py2.py3-none-any.whl | Bin 11776 -> 0 bytes .../setuptools-44.1.1-py2.py3-none-any.whl | Bin 473123 -> 0 bytes .../six-1.16.0-py2.py3-none-any.whl | Bin 15791 -> 0 bytes .../toml-0.10.1-py2.py3-none-any.whl | Bin 21108 -> 0 bytes .../urllib3-1.26.5-py2.py3-none-any.whl | Bin 134200 -> 0 bytes .../webencodings-0.5.1-py2.py3-none-any.whl | Bin 15904 -> 0 bytes .../wheel-0.34.2-py2.py3-none-any.whl | Bin 31030 -> 0 bytes venv/vercel.json | 15 - 852 files changed, 1 insertion(+), 126041 deletions(-) rename venv/templates/index.html => index.html (97%) rename {venv/static => static}/images/colors/colors.png (100%) rename {venv/static => static}/images/elements/ai/line_long.ai (100%) rename {venv/static => static}/images/elements/ai/line_medium.ai (100%) rename {venv/static => static}/images/elements/ai/line_short.ai (100%) rename {venv/static => static}/images/elements/png/discord.png (100%) rename {venv/static => static}/images/elements/png/github.png (100%) rename {venv/static => static}/images/elements/png/gmail.png (100%) rename {venv/static => static}/images/elements/png/itch.png (100%) rename {venv/static => static}/images/elements/png/line_long.png (100%) rename {venv/static => static}/images/elements/png/line_medium.png (100%) rename {venv/static => static}/images/elements/png/line_short.png (100%) rename {venv/static => static}/images/elements/png/timmy.png (100%) rename {venv/static => static}/images/elements/png/twitter.png (100%) rename {venv/static => static}/images/elements/png/youtube.png (100%) rename {venv/static => static}/images/elements/psd/discord.psd (100%) rename {venv/static => static}/images/elements/psd/github.psd (100%) rename {venv/static => static}/images/elements/psd/gmail.psd (100%) rename {venv/static => static}/images/elements/psd/itch.psd (100%) rename {venv/static => static}/images/elements/psd/twitter.psd (100%) rename {venv/static => static}/images/elements/psd/youtube.psd (100%) rename {venv/static => static}/styles.css (100%) delete mode 100644 venv/.vercel/README.txt delete mode 100644 venv/.vercel/project.json delete mode 100644 venv/__pycache__/index.cpython-39.pyc delete mode 100644 venv/bin/Activate.ps1 delete mode 100644 venv/bin/activate delete mode 100644 venv/bin/activate.csh delete mode 100644 venv/bin/activate.fish delete mode 100755 venv/bin/easy_install delete mode 100755 venv/bin/easy_install-3.9 delete mode 100755 venv/bin/flask delete mode 100755 venv/bin/pip delete mode 100755 venv/bin/pip3 delete mode 100755 venv/bin/pip3.9 delete mode 120000 venv/bin/python delete mode 120000 venv/bin/python3 delete mode 120000 venv/bin/python3.9 delete mode 100644 venv/index.py delete mode 100644 venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/LICENSE.rst delete mode 100644 venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/METADATA delete mode 100644 venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/RECORD delete mode 100644 venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/REQUESTED delete mode 100644 venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/LICENSE.rst delete mode 100644 venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/METADATA delete mode 100644 venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/RECORD delete mode 100644 venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/LICENSE.rst delete mode 100644 venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/METADATA delete mode 100644 venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/RECORD delete mode 100644 venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/LICENSE.rst delete mode 100644 venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/METADATA delete mode 100644 venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/RECORD delete mode 100644 venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.9/site-packages/__pycache__/easy_install.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click-8.0.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.9/site-packages/click-8.0.1.dist-info/LICENSE.rst delete mode 100644 venv/lib/python3.9/site-packages/click-8.0.1.dist-info/METADATA delete mode 100644 venv/lib/python3.9/site-packages/click-8.0.1.dist-info/RECORD delete mode 100644 venv/lib/python3.9/site-packages/click-8.0.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.9/site-packages/click-8.0.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.9/site-packages/click/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/_compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/_termui_impl.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/_textwrap.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/_unicodefun.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/_winconsole.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/core.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/decorators.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/exceptions.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/formatting.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/globals.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/parser.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/shell_completion.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/termui.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/testing.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/types.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/__pycache__/utils.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/click/_compat.py delete mode 100644 venv/lib/python3.9/site-packages/click/_termui_impl.py delete mode 100644 venv/lib/python3.9/site-packages/click/_textwrap.py delete mode 100644 venv/lib/python3.9/site-packages/click/_unicodefun.py delete mode 100644 venv/lib/python3.9/site-packages/click/_winconsole.py delete mode 100644 venv/lib/python3.9/site-packages/click/core.py delete mode 100644 venv/lib/python3.9/site-packages/click/decorators.py delete mode 100644 venv/lib/python3.9/site-packages/click/exceptions.py delete mode 100644 venv/lib/python3.9/site-packages/click/formatting.py delete mode 100644 venv/lib/python3.9/site-packages/click/globals.py delete mode 100644 venv/lib/python3.9/site-packages/click/parser.py delete mode 100644 venv/lib/python3.9/site-packages/click/py.typed delete mode 100644 venv/lib/python3.9/site-packages/click/shell_completion.py delete mode 100644 venv/lib/python3.9/site-packages/click/termui.py delete mode 100644 venv/lib/python3.9/site-packages/click/testing.py delete mode 100644 venv/lib/python3.9/site-packages/click/types.py delete mode 100644 venv/lib/python3.9/site-packages/click/utils.py delete mode 100644 venv/lib/python3.9/site-packages/easy_install.py delete mode 100644 venv/lib/python3.9/site-packages/flask/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/flask/__main__.py delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/__main__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/app.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/blueprints.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/cli.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/config.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/ctx.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/debughelpers.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/globals.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/helpers.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/logging.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/scaffold.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/sessions.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/signals.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/templating.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/testing.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/typing.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/views.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/__pycache__/wrappers.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/app.py delete mode 100644 venv/lib/python3.9/site-packages/flask/blueprints.py delete mode 100644 venv/lib/python3.9/site-packages/flask/cli.py delete mode 100644 venv/lib/python3.9/site-packages/flask/config.py delete mode 100644 venv/lib/python3.9/site-packages/flask/ctx.py delete mode 100644 venv/lib/python3.9/site-packages/flask/debughelpers.py delete mode 100644 venv/lib/python3.9/site-packages/flask/globals.py delete mode 100644 venv/lib/python3.9/site-packages/flask/helpers.py delete mode 100644 venv/lib/python3.9/site-packages/flask/json/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/flask/json/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/json/__pycache__/tag.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/flask/json/tag.py delete mode 100644 venv/lib/python3.9/site-packages/flask/logging.py delete mode 100644 venv/lib/python3.9/site-packages/flask/py.typed delete mode 100644 venv/lib/python3.9/site-packages/flask/scaffold.py delete mode 100644 venv/lib/python3.9/site-packages/flask/sessions.py delete mode 100644 venv/lib/python3.9/site-packages/flask/signals.py delete mode 100644 venv/lib/python3.9/site-packages/flask/templating.py delete mode 100644 venv/lib/python3.9/site-packages/flask/testing.py delete mode 100644 venv/lib/python3.9/site-packages/flask/typing.py delete mode 100644 venv/lib/python3.9/site-packages/flask/views.py delete mode 100644 venv/lib/python3.9/site-packages/flask/wrappers.py delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous-2.0.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous-2.0.1.dist-info/LICENSE.rst delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous-2.0.1.dist-info/METADATA delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous-2.0.1.dist-info/RECORD delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous-2.0.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous-2.0.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__pycache__/_json.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__pycache__/encoding.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__pycache__/exc.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__pycache__/jws.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__pycache__/serializer.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__pycache__/signer.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__pycache__/timed.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/__pycache__/url_safe.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/_json.py delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/encoding.py delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/exc.py delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/jws.py delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/py.typed delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/serializer.py delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/signer.py delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/timed.py delete mode 100644 venv/lib/python3.9/site-packages/itsdangerous/url_safe.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/_identifier.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/async_utils.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/bccache.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/compiler.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/constants.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/debug.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/defaults.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/environment.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/exceptions.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/ext.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/filters.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/idtracking.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/lexer.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/loaders.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/meta.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/nativetypes.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/nodes.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/optimizer.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/parser.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/runtime.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/sandbox.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/tests.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/utils.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/__pycache__/visitor.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/jinja2/_identifier.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/async_utils.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/bccache.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/compiler.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/constants.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/debug.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/defaults.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/environment.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/exceptions.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/ext.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/filters.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/idtracking.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/lexer.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/loaders.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/meta.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/nativetypes.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/nodes.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/optimizer.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/parser.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/py.typed delete mode 100644 venv/lib/python3.9/site-packages/jinja2/runtime.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/sandbox.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/tests.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/utils.py delete mode 100644 venv/lib/python3.9/site-packages/jinja2/visitor.py delete mode 100644 venv/lib/python3.9/site-packages/markupsafe/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/markupsafe/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/markupsafe/__pycache__/_native.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/markupsafe/_native.py delete mode 100644 venv/lib/python3.9/site-packages/markupsafe/_speedups.c delete mode 100755 venv/lib/python3.9/site-packages/markupsafe/_speedups.cpython-39-x86_64-linux-gnu.so delete mode 100644 venv/lib/python3.9/site-packages/markupsafe/_speedups.pyi delete mode 100644 venv/lib/python3.9/site-packages/markupsafe/py.typed delete mode 100644 venv/lib/python3.9/site-packages/pip-20.3.4.dist-info/INSTALLER delete mode 100644 venv/lib/python3.9/site-packages/pip-20.3.4.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.9/site-packages/pip-20.3.4.dist-info/METADATA delete mode 100644 venv/lib/python3.9/site-packages/pip-20.3.4.dist-info/RECORD delete mode 100644 venv/lib/python3.9/site-packages/pip-20.3.4.dist-info/REQUESTED delete mode 100644 venv/lib/python3.9/site-packages/pip-20.3.4.dist-info/WHEEL delete mode 100644 venv/lib/python3.9/site-packages/pip-20.3.4.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.9/site-packages/pip-20.3.4.dist-info/top_level.txt delete mode 100644 venv/lib/python3.9/site-packages/pip/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/__main__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/__pycache__/__main__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/build_env.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/cache.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/configuration.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/exceptions.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/locations.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/main.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/pyproject.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/build_env.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cache.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/main.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/parser.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/autocompletion.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/base_command.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/cmdoptions.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/command_context.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/main.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/main_parser.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/parser.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/req_command.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/spinners.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/cli/status_codes.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/cache.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/check.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/completion.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/debug.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/download.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/hash.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/help.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/install.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/list.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/search.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/show.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/cache.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/check.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/completion.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/configuration.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/debug.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/download.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/freeze.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/hash.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/help.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/install.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/list.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/search.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/show.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/uninstall.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/commands/wheel.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/configuration.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/base.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/base.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/installed.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/distributions/wheel.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/exceptions.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/index/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/collector.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/index/collector.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/index/package_finder.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/locations.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/main.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/candidate.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/format_control.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/index.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/link.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/scheme.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/target_python.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/__pycache__/wheel.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/candidate.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/direct_url.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/format_control.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/index.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/link.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/scheme.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/search_scope.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/selection_prefs.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/target_python.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/models/wheel.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/auth.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/cache.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/download.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/session.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/utils.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/auth.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/cache.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/download.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/lazy_wheel.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/session.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/utils.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/check.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_legacy.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_legacy.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/check.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/freeze.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/legacy.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/editable_legacy.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/legacy.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/install/wheel.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/operations/prepare.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/pyproject.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/constructors.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_file.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_install.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_set.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_tracker.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/constructors.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_file.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_install.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_set.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_tracker.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/req/req_uninstall.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/__pycache__/base.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/base.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/base.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/provider.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/reporter.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/requirements.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/self_outdated_check.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/logging.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/misc.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/models.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/parallel.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/pkg_resources.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/typing.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/urls.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/appdirs.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/compat.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/compatibility_tags.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/datetime.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/deprecation.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/direct_url_helpers.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/distutils_args.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/encoding.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/entrypoints.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/filesystem.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/filetypes.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/glibc.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/hashes.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/inject_securetransport.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/logging.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/misc.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/models.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/packaging.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/parallel.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/pkg_resources.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/setuptools_build.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/subprocess.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/temp_dir.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/typing.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/unpacking.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/urls.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/virtualenv.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/utils/wheel.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/git.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/bazaar.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/git.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/mercurial.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/subversion.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/vcs/versioncontrol.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_internal/wheel_builder.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pip/_vendor/vendor.txt delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources-0.0.0.dist-info/AUTHORS.txt delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources-0.0.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources-0.0.0.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources-0.0.0.dist-info/METADATA delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources-0.0.0.dist-info/RECORD delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources-0.0.0.dist-info/REQUESTED delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources-0.0.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/__pycache__/py31compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/appdirs.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__about__.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_compat.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_structures.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/markers.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/requirements.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/specifiers.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/utils.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/version.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/pyparsing.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/_vendor/six.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/extern/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/pkg_resources/py31compat.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/AUTHORS.txt delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/METADATA delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/RECORD delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/REQUESTED delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/dependency_links.txt delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.9/site-packages/setuptools-44.1.1.dist-info/zip-safe delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/_imp.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/archive_util.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/build_meta.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/config.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/dep_util.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/depends.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/dist.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/errors.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/extension.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/glob.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/installer.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/launch.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/monkey.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/msvc.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/namespaces.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/package_index.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/py27compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/py31compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/py33compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/py34compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/sandbox.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/site-patch.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/ssl_support.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/unicode_utils.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/version.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/wheel.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/__pycache__/windows_support.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_deprecation_warning.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_imp.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/__pycache__/six.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/ordered_set.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__about__.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_compat.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_structures.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/markers.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/requirements.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/specifiers.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/tags.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/utils.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/version.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/pyparsing.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/_vendor/six.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/archive_util.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/build_meta.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/cli-32.exe delete mode 100644 venv/lib/python3.9/site-packages/setuptools/cli-64.exe delete mode 100644 venv/lib/python3.9/site-packages/setuptools/cli.exe delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/alias.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/build_clib.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/build_ext.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/build_py.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/develop.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/dist_info.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/easy_install.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/egg_info.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/install.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/install_lib.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/install_scripts.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/py36compat.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/register.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/rotate.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/saveopts.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/sdist.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/setopt.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/test.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/upload.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/__pycache__/upload_docs.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/alias.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/bdist_egg.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/bdist_rpm.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/bdist_wininst.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/build_clib.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/build_ext.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/build_py.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/develop.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/dist_info.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/easy_install.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/egg_info.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/install.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/install_egg_info.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/install_lib.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/install_scripts.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/launcher manifest.xml delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/py36compat.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/register.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/rotate.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/saveopts.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/sdist.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/setopt.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/test.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/upload.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/command/upload_docs.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/config.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/dep_util.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/depends.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/dist.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/errors.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/extension.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/extern/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/extern/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/setuptools/glob.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/gui-32.exe delete mode 100644 venv/lib/python3.9/site-packages/setuptools/gui-64.exe delete mode 100644 venv/lib/python3.9/site-packages/setuptools/gui.exe delete mode 100644 venv/lib/python3.9/site-packages/setuptools/installer.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/launch.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/lib2to3_ex.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/monkey.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/msvc.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/namespaces.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/package_index.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/py27compat.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/py31compat.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/py33compat.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/py34compat.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/sandbox.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/script (dev).tmpl delete mode 100644 venv/lib/python3.9/site-packages/setuptools/script.tmpl delete mode 100644 venv/lib/python3.9/site-packages/setuptools/site-patch.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/ssl_support.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/unicode_utils.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/version.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/wheel.py delete mode 100644 venv/lib/python3.9/site-packages/setuptools/windows_support.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/_internal.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/_reloader.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/datastructures.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/exceptions.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/filesystem.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/formparser.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/http.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/local.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/routing.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/security.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/serving.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/test.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/testapp.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/urls.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/user_agent.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/useragents.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/utils.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/__pycache__/wsgi.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/_internal.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/_reloader.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/datastructures.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/datastructures.pyi delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/__pycache__/console.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/__pycache__/repr.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/__pycache__/tbtools.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/console.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/repr.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/shared/FONT_LICENSE delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/shared/ICON_LICENSE.md delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/shared/console.png delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/shared/debugger.js delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/shared/less.png delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/shared/more.png delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/shared/source.png delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/shared/style.css delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/shared/ubuntu.ttf delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/debug/tbtools.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/exceptions.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/filesystem.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/formparser.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/http.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/local.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/lint.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/dispatcher.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/http_proxy.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/lint.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/profiler.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/proxy_fix.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/middleware/shared_data.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/py.typed delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/routing.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/multipart.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/request.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/response.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/utils.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/multipart.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/request.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/response.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/sansio/utils.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/security.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/serving.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/test.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/testapp.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/urls.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/user_agent.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/useragents.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/utils.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__init__.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/accept.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/auth.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/base_request.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/base_response.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/common_descriptors.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/cors.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/etag.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/json.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/request.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/response.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/user_agent.cpython-39.pyc delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/accept.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/auth.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/base_request.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/base_response.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/common_descriptors.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/cors.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/etag.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/json.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/request.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/response.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wrappers/user_agent.py delete mode 100644 venv/lib/python3.9/site-packages/werkzeug/wsgi.py delete mode 120000 venv/lib64 delete mode 100644 venv/pyvenv.cfg delete mode 100644 venv/requirements.txt delete mode 100644 venv/share/python-wheels/CacheControl-0.12.6-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/appdirs-1.4.4-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/certifi-2020.6.20-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/chardet-4.0.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/colorama-0.4.4-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/contextlib2-0.6.0.post1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/distlib-0.3.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/distro-1.5.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/html5lib-1.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/idna-2.10-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/ipaddr-2.2.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/msgpack-1.0.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/packaging-20.9-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/pep517-0.9.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/pip-20.3.4-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/progress-1.5-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/pyparsing-2.4.7-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/requests-2.25.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/resolvelib-0.5.4-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/setuptools-44.1.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/six-1.16.0-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/toml-0.10.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/urllib3-1.26.5-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/webencodings-0.5.1-py2.py3-none-any.whl delete mode 100644 venv/share/python-wheels/wheel-0.34.2-py2.py3-none-any.whl delete mode 100644 venv/vercel.json diff --git a/venv/templates/index.html b/index.html similarity index 97% rename from venv/templates/index.html rename to index.html index 84544f3..3868b56 100644 --- a/venv/templates/index.html +++ b/index.html @@ -56,7 +56,7 @@

diff --git a/venv/static/images/colors/colors.png b/static/images/colors/colors.png similarity index 100% rename from venv/static/images/colors/colors.png rename to static/images/colors/colors.png diff --git a/venv/static/images/elements/ai/line_long.ai b/static/images/elements/ai/line_long.ai similarity index 100% rename from venv/static/images/elements/ai/line_long.ai rename to static/images/elements/ai/line_long.ai diff --git a/venv/static/images/elements/ai/line_medium.ai b/static/images/elements/ai/line_medium.ai similarity index 100% rename from venv/static/images/elements/ai/line_medium.ai rename to static/images/elements/ai/line_medium.ai diff --git a/venv/static/images/elements/ai/line_short.ai b/static/images/elements/ai/line_short.ai similarity index 100% rename from venv/static/images/elements/ai/line_short.ai rename to static/images/elements/ai/line_short.ai diff --git a/venv/static/images/elements/png/discord.png b/static/images/elements/png/discord.png similarity index 100% rename from venv/static/images/elements/png/discord.png rename to static/images/elements/png/discord.png diff --git a/venv/static/images/elements/png/github.png b/static/images/elements/png/github.png similarity index 100% rename from venv/static/images/elements/png/github.png rename to static/images/elements/png/github.png diff --git a/venv/static/images/elements/png/gmail.png b/static/images/elements/png/gmail.png similarity index 100% rename from venv/static/images/elements/png/gmail.png rename to static/images/elements/png/gmail.png diff --git a/venv/static/images/elements/png/itch.png b/static/images/elements/png/itch.png similarity index 100% rename from venv/static/images/elements/png/itch.png rename to static/images/elements/png/itch.png diff --git a/venv/static/images/elements/png/line_long.png b/static/images/elements/png/line_long.png similarity index 100% rename from venv/static/images/elements/png/line_long.png rename to static/images/elements/png/line_long.png diff --git a/venv/static/images/elements/png/line_medium.png b/static/images/elements/png/line_medium.png similarity index 100% rename from venv/static/images/elements/png/line_medium.png rename to static/images/elements/png/line_medium.png diff --git a/venv/static/images/elements/png/line_short.png b/static/images/elements/png/line_short.png similarity index 100% rename from venv/static/images/elements/png/line_short.png rename to static/images/elements/png/line_short.png diff --git a/venv/static/images/elements/png/timmy.png b/static/images/elements/png/timmy.png similarity index 100% rename from venv/static/images/elements/png/timmy.png rename to static/images/elements/png/timmy.png diff --git a/venv/static/images/elements/png/twitter.png b/static/images/elements/png/twitter.png similarity index 100% rename from venv/static/images/elements/png/twitter.png rename to static/images/elements/png/twitter.png diff --git a/venv/static/images/elements/png/youtube.png b/static/images/elements/png/youtube.png similarity index 100% rename from venv/static/images/elements/png/youtube.png rename to static/images/elements/png/youtube.png diff --git a/venv/static/images/elements/psd/discord.psd b/static/images/elements/psd/discord.psd similarity index 100% rename from venv/static/images/elements/psd/discord.psd rename to static/images/elements/psd/discord.psd diff --git a/venv/static/images/elements/psd/github.psd b/static/images/elements/psd/github.psd similarity index 100% rename from venv/static/images/elements/psd/github.psd rename to static/images/elements/psd/github.psd diff --git a/venv/static/images/elements/psd/gmail.psd b/static/images/elements/psd/gmail.psd similarity index 100% rename from venv/static/images/elements/psd/gmail.psd rename to static/images/elements/psd/gmail.psd diff --git a/venv/static/images/elements/psd/itch.psd b/static/images/elements/psd/itch.psd similarity index 100% rename from venv/static/images/elements/psd/itch.psd rename to static/images/elements/psd/itch.psd diff --git a/venv/static/images/elements/psd/twitter.psd b/static/images/elements/psd/twitter.psd similarity index 100% rename from venv/static/images/elements/psd/twitter.psd rename to static/images/elements/psd/twitter.psd diff --git a/venv/static/images/elements/psd/youtube.psd b/static/images/elements/psd/youtube.psd similarity index 100% rename from venv/static/images/elements/psd/youtube.psd rename to static/images/elements/psd/youtube.psd diff --git a/venv/static/styles.css b/static/styles.css similarity index 100% rename from venv/static/styles.css rename to static/styles.css diff --git a/venv/.vercel/README.txt b/venv/.vercel/README.txt deleted file mode 100644 index 525d8ce..0000000 --- a/venv/.vercel/README.txt +++ /dev/null @@ -1,11 +0,0 @@ -> Why do I have a folder named ".vercel" in my project? -The ".vercel" folder is created when you link a directory to a Vercel project. - -> What does the "project.json" file contain? -The "project.json" file contains: -- The ID of the Vercel project that you linked ("projectId") -- The ID of the user or team your Vercel project is owned by ("orgId") - -> Should I commit the ".vercel" folder? -No, you should not share the ".vercel" folder with anyone. -Upon creation, it will be automatically added to your ".gitignore" file. diff --git a/venv/.vercel/project.json b/venv/.vercel/project.json deleted file mode 100644 index 07432c8..0000000 --- a/venv/.vercel/project.json +++ /dev/null @@ -1 +0,0 @@ -{"projectId":"prj_fhKjryWYHXc2me4RvhUk0RTMRgSR","orgId":"RXDy9fsHHUMdP3Y9CCzxaa7w"} \ No newline at end of file diff --git a/venv/__pycache__/index.cpython-39.pyc b/venv/__pycache__/index.cpython-39.pyc deleted file mode 100644 index 563b03cefaa03e721f164729696a9152b6c0d8b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcma)5F>ezw6n^&kl1oUMwn8j0biE~pJwioAz!X(d9?UgCE{A7RU=kI&=ccR;E1GeME@8cf?;HO{ITZD^!9F@T!L6SM- zWJCxkqUa?VMJl>tl3o)TN%jR0i31WN(vZ!7Gy;+!(vt0fGz0Pok&f&JBnikCB0aes zke1vzf^_#6@a1U`9P`Od z&q^@>H4TjG1{WvDwwc83SAK6z_Mge^1Yt${sWv?bbzEX`bxh& zyMS}JBG+(1&dCR$XkUi?G9qvUFQDo_2NL>6j1sYw4c9FxtmuEPbm53W+p%0rl~Tua zsS3x85;CQuX1*Fvv$=B2sx$llYelH?DQc;_CxC8|gqR-AhH2ZyQ*UGAb-QFdE<~=z xV}}`~i;XvGFp}}lYkXnG7ap=}EWyda7|8(jE#~T_{|PF8VVx+664GW5#~ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser - -For more information on Execution Policies: -https://go.microsoft.com/fwlink/?LinkID=135170 - -#> -Param( - [Parameter(Mandatory = $false)] - [String] - $VenvDir, - [Parameter(Mandatory = $false)] - [String] - $Prompt -) - -<# Function declarations --------------------------------------------------- #> - -<# -.Synopsis -Remove all shell session elements added by the Activate script, including the -addition of the virtual environment's Python executable from the beginning of -the PATH variable. - -.Parameter NonDestructive -If present, do not remove this function from the global namespace for the -session. - -#> -function global:deactivate ([switch]$NonDestructive) { - # Revert to original values - - # The prior prompt: - if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { - Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt - Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT - } - - # The prior PYTHONHOME: - if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { - Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME - Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME - } - - # The prior PATH: - if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { - Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH - Remove-Item -Path Env:_OLD_VIRTUAL_PATH - } - - # Just remove the VIRTUAL_ENV altogether: - if (Test-Path -Path Env:VIRTUAL_ENV) { - Remove-Item -Path env:VIRTUAL_ENV - } - - # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: - if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { - Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force - } - - # Leave deactivate function in the global namespace if requested: - if (-not $NonDestructive) { - Remove-Item -Path function:deactivate - } -} - -<# -.Description -Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the -given folder, and returns them in a map. - -For each line in the pyvenv.cfg file, if that line can be parsed into exactly -two strings separated by `=` (with any amount of whitespace surrounding the =) -then it is considered a `key = value` line. The left hand string is the key, -the right hand is the value. - -If the value starts with a `'` or a `"` then the first and last character is -stripped from the value before being captured. - -.Parameter ConfigDir -Path to the directory that contains the `pyvenv.cfg` file. -#> -function Get-PyVenvConfig( - [String] - $ConfigDir -) { - Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" - - # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). - $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue - - # An empty map will be returned if no config file is found. - $pyvenvConfig = @{ } - - if ($pyvenvConfigPath) { - - Write-Verbose "File exists, parse `key = value` lines" - $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath - - $pyvenvConfigContent | ForEach-Object { - $keyval = $PSItem -split "\s*=\s*", 2 - if ($keyval[0] -and $keyval[1]) { - $val = $keyval[1] - - # Remove extraneous quotations around a string value. - if ("'""".Contains($val.Substring(0, 1))) { - $val = $val.Substring(1, $val.Length - 2) - } - - $pyvenvConfig[$keyval[0]] = $val - Write-Verbose "Adding Key: '$($keyval[0])'='$val'" - } - } - } - return $pyvenvConfig -} - - -<# Begin Activate script --------------------------------------------------- #> - -# Determine the containing directory of this script -$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition -$VenvExecDir = Get-Item -Path $VenvExecPath - -Write-Verbose "Activation script is located in path: '$VenvExecPath'" -Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" -Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" - -# Set values required in priority: CmdLine, ConfigFile, Default -# First, get the location of the virtual environment, it might not be -# VenvExecDir if specified on the command line. -if ($VenvDir) { - Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" -} -else { - Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." - $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") - Write-Verbose "VenvDir=$VenvDir" -} - -# Next, read the `pyvenv.cfg` file to determine any required value such -# as `prompt`. -$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir - -# Next, set the prompt from the command line, or the config file, or -# just use the name of the virtual environment folder. -if ($Prompt) { - Write-Verbose "Prompt specified as argument, using '$Prompt'" -} -else { - Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" - if ($pyvenvCfg -and $pyvenvCfg['prompt']) { - Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" - $Prompt = $pyvenvCfg['prompt']; - } - else { - Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virutal environment)" - Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" - $Prompt = Split-Path -Path $venvDir -Leaf - } -} - -Write-Verbose "Prompt = '$Prompt'" -Write-Verbose "VenvDir='$VenvDir'" - -# Deactivate any currently active virtual environment, but leave the -# deactivate function in place. -deactivate -nondestructive - -# Now set the environment variable VIRTUAL_ENV, used by many tools to determine -# that there is an activated venv. -$env:VIRTUAL_ENV = $VenvDir - -if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { - - Write-Verbose "Setting prompt to '$Prompt'" - - # Set the prompt to include the env name - # Make sure _OLD_VIRTUAL_PROMPT is global - function global:_OLD_VIRTUAL_PROMPT { "" } - Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT - New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt - - function global:prompt { - Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " - _OLD_VIRTUAL_PROMPT - } -} - -# Clear PYTHONHOME -if (Test-Path -Path Env:PYTHONHOME) { - Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME - Remove-Item -Path Env:PYTHONHOME -} - -# Add the venv to the PATH -Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH -$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/venv/bin/activate b/venv/bin/activate deleted file mode 100644 index 3cefc20..0000000 --- a/venv/bin/activate +++ /dev/null @@ -1,66 +0,0 @@ -# This file must be used with "source bin/activate" *from bash* -# you cannot run it directly - -deactivate () { - # reset old environment variables - if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then - PATH="${_OLD_VIRTUAL_PATH:-}" - export PATH - unset _OLD_VIRTUAL_PATH - fi - if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then - PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" - export PYTHONHOME - unset _OLD_VIRTUAL_PYTHONHOME - fi - - # This should detect bash and zsh, which have a hash command that must - # be called to get it to forget past commands. Without forgetting - # past commands the $PATH changes we made may not be respected - if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then - hash -r 2> /dev/null - 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/timothypidashev/Desktop/Github/Portfolio/venv" -export VIRTUAL_ENV - -_OLD_VIRTUAL_PATH="$PATH" -PATH="$VIRTUAL_ENV/bin:$PATH" -export PATH - -# unset PYTHONHOME if set -# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) -# could use `if (set -u; : $PYTHONHOME) ;` in bash -if [ -n "${PYTHONHOME:-}" ] ; then - _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" - unset PYTHONHOME -fi - -if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then - _OLD_VIRTUAL_PS1="${PS1:-}" - PS1="(venv) ${PS1:-}" - 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 2> /dev/null -fi diff --git a/venv/bin/activate.csh b/venv/bin/activate.csh deleted file mode 100644 index 0664f16..0000000 --- a/venv/bin/activate.csh +++ /dev/null @@ -1,25 +0,0 @@ -# This file must be used with "source bin/activate.csh" *from csh*. -# You cannot run it directly. -# Created by Davide Di Blasi . -# Ported to Python 3.3 venv by Andrew Svetlov - -alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate' - -# Unset irrelevant variables. -deactivate nondestructive - -setenv VIRTUAL_ENV "/home/timothypidashev/Desktop/Github/Portfolio/venv" - -set _OLD_VIRTUAL_PATH="$PATH" -setenv PATH "$VIRTUAL_ENV/bin:$PATH" - - -set _OLD_VIRTUAL_PROMPT="$prompt" - -if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then - set prompt = "(venv) $prompt" -endif - -alias pydoc python -m pydoc - -rehash diff --git a/venv/bin/activate.fish b/venv/bin/activate.fish deleted file mode 100644 index af07f91..0000000 --- a/venv/bin/activate.fish +++ /dev/null @@ -1,64 +0,0 @@ -# This file must be used with "source /bin/activate.fish" *from fish* -# (https://fishshell.com/); you cannot run it directly. - -function deactivate -d "Exit virtual environment 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/timothypidashev/Desktop/Github/Portfolio/venv" - -set -gx _OLD_VIRTUAL_PATH $PATH -set -gx PATH "$VIRTUAL_ENV/bin" $PATH - -# Unset PYTHONHOME if set. -if set -q PYTHONHOME - set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME - set -e PYTHONHOME -end - -if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" - # fish uses a function instead of an env var to generate the prompt. - - # Save the current fish_prompt function as the function _old_fish_prompt. - functions -c fish_prompt _old_fish_prompt - - # With the original prompt function renamed, we can override with our own. - function fish_prompt - # Save the return status of the last command. - set -l old_status $status - - # Output the venv prompt; color taken from the blue of the Python logo. - printf "%s%s%s" (set_color 4B8BBE) "(venv) " (set_color normal) - - # Restore the return status of the previous command. - echo "exit $old_status" | . - # Output the original/"old" prompt. - _old_fish_prompt - end - - set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" -end diff --git a/venv/bin/easy_install b/venv/bin/easy_install deleted file mode 100755 index 5bcfd00..0000000 --- a/venv/bin/easy_install +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/timothypidashev/Desktop/Github/Portfolio/venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from setuptools.command.easy_install import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/easy_install-3.9 b/venv/bin/easy_install-3.9 deleted file mode 100755 index 5bcfd00..0000000 --- a/venv/bin/easy_install-3.9 +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/timothypidashev/Desktop/Github/Portfolio/venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from setuptools.command.easy_install import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/flask b/venv/bin/flask deleted file mode 100755 index 3dd4ec7..0000000 --- a/venv/bin/flask +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/timothypidashev/Desktop/Github/Portfolio/venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from flask.cli import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pip b/venv/bin/pip deleted file mode 100755 index 90c8b2d..0000000 --- a/venv/bin/pip +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/timothypidashev/Desktop/Github/Portfolio/venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pip3 b/venv/bin/pip3 deleted file mode 100755 index 90c8b2d..0000000 --- a/venv/bin/pip3 +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/timothypidashev/Desktop/Github/Portfolio/venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pip3.9 b/venv/bin/pip3.9 deleted file mode 100755 index 90c8b2d..0000000 --- a/venv/bin/pip3.9 +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/timothypidashev/Desktop/Github/Portfolio/venv/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/python b/venv/bin/python deleted file mode 120000 index b8a0adb..0000000 --- a/venv/bin/python +++ /dev/null @@ -1 +0,0 @@ -python3 \ No newline at end of file diff --git a/venv/bin/python3 b/venv/bin/python3 deleted file mode 120000 index ae65fda..0000000 --- a/venv/bin/python3 +++ /dev/null @@ -1 +0,0 @@ -/usr/bin/python3 \ No newline at end of file diff --git a/venv/bin/python3.9 b/venv/bin/python3.9 deleted file mode 120000 index b8a0adb..0000000 --- a/venv/bin/python3.9 +++ /dev/null @@ -1 +0,0 @@ -python3 \ No newline at end of file diff --git a/venv/index.py b/venv/index.py deleted file mode 100644 index 8c8384e..0000000 --- a/venv/index.py +++ /dev/null @@ -1,8 +0,0 @@ -from flask import Flask, render_template, request - -app = Flask(__name__, template_folder = "templates", static_url_path="/static") - -#home page -@app.route("/") -def index(): - return render_template("index.html") \ No newline at end of file diff --git a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/INSTALLER b/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/LICENSE.rst b/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/LICENSE.rst deleted file mode 100644 index 9d227a0..0000000 --- a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/LICENSE.rst +++ /dev/null @@ -1,28 +0,0 @@ -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/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/METADATA b/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/METADATA deleted file mode 100644 index 2b881c2..0000000 --- a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/METADATA +++ /dev/null @@ -1,124 +0,0 @@ -Metadata-Version: 2.1 -Name: Flask -Version: 2.0.1 -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: Donate, https://palletsprojects.com/donate -Project-URL: Documentation, https://flask.palletsprojects.com/ -Project-URL: Changes, https://flask.palletsprojects.com/changes/ -Project-URL: Source Code, https://github.com/pallets/flask/ -Project-URL: Issue Tracker, https://github.com/pallets/flask/issues/ -Project-URL: Twitter, https://twitter.com/PalletsTeam -Project-URL: Chat, https://discord.gg/pallets -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: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Internet :: WWW/HTTP :: WSGI -Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application -Classifier: Topic :: Software Development :: Libraries :: Application Frameworks -Requires-Python: >=3.6 -Description-Content-Type: text/x-rst -Requires-Dist: Werkzeug (>=2.0) -Requires-Dist: Jinja2 (>=3.0) -Requires-Dist: itsdangerous (>=2.0) -Requires-Dist: click (>=7.1.2) -Provides-Extra: async -Requires-Dist: asgiref (>=3.2) ; extra == 'async' -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. - -.. _WSGI: https://wsgi.readthedocs.io/ -.. _Werkzeug: https://werkzeug.palletsprojects.com/ -.. _Jinja: https://jinja.palletsprojects.com/ - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - $ pip install -U Flask - -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - -A Simple Example ----------------- - -.. code-block:: python - - # save this as app.py - from flask import Flask - - app = Flask(__name__) - - @app.route("/") - def hello(): - return "Hello, World!" - -.. code-block:: text - - $ flask run - * 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/main/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://palletsprojects.com/donate - - -Links ------ - -- Documentation: https://flask.palletsprojects.com/ -- Changes: https://flask.palletsprojects.com/changes/ -- PyPI Releases: https://pypi.org/project/Flask/ -- Source Code: https://github.com/pallets/flask/ -- Issue Tracker: https://github.com/pallets/flask/issues/ -- Website: https://palletsprojects.com/p/flask/ -- Twitter: https://twitter.com/PalletsTeam -- Chat: https://discord.gg/pallets - - diff --git a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/RECORD b/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/RECORD deleted file mode 100644 index b84dba6..0000000 --- a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/RECORD +++ /dev/null @@ -1,52 +0,0 @@ -../../../bin/flask,sha256=oKXJDZPqk6BN2kppYhY7euvhskduDexwetAAkeqfyfg,255 -Flask-2.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Flask-2.0.1.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 -Flask-2.0.1.dist-info/METADATA,sha256=50Jm1647RKw98p4RF64bCqRh0wajk-n3hQ7av2-pniA,3808 -Flask-2.0.1.dist-info/RECORD,, -Flask-2.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -Flask-2.0.1.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92 -Flask-2.0.1.dist-info/entry_points.txt,sha256=gBLA1aKg0OYR8AhbAfg8lnburHtKcgJLDU52BBctN0k,42 -Flask-2.0.1.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6 -flask/__init__.py,sha256=w5v6GCNm8eLDMNWqs2ue7HLHo75aslAwz1h3k3YO9HY,2251 -flask/__main__.py,sha256=bYt9eEaoRQWdejEHFD8REx9jxVEdZptECFsV7F49Ink,30 -flask/__pycache__/__init__.cpython-39.pyc,, -flask/__pycache__/__main__.cpython-39.pyc,, -flask/__pycache__/app.cpython-39.pyc,, -flask/__pycache__/blueprints.cpython-39.pyc,, -flask/__pycache__/cli.cpython-39.pyc,, -flask/__pycache__/config.cpython-39.pyc,, -flask/__pycache__/ctx.cpython-39.pyc,, -flask/__pycache__/debughelpers.cpython-39.pyc,, -flask/__pycache__/globals.cpython-39.pyc,, -flask/__pycache__/helpers.cpython-39.pyc,, -flask/__pycache__/logging.cpython-39.pyc,, -flask/__pycache__/scaffold.cpython-39.pyc,, -flask/__pycache__/sessions.cpython-39.pyc,, -flask/__pycache__/signals.cpython-39.pyc,, -flask/__pycache__/templating.cpython-39.pyc,, -flask/__pycache__/testing.cpython-39.pyc,, -flask/__pycache__/typing.cpython-39.pyc,, -flask/__pycache__/views.cpython-39.pyc,, -flask/__pycache__/wrappers.cpython-39.pyc,, -flask/app.py,sha256=q6lpiiWVxjljQRwjjneUBpfllXYPEq0CFAUpTQ5gIeA,82376 -flask/blueprints.py,sha256=OjI-dkwx96ZNMUGDDFMKzgcpUJf240WRuMlHkmgI1Lc,23541 -flask/cli.py,sha256=iN1pL2SevE5Nmvey-0WwnxG3nipZXIiE__Ed4lx3IuM,32036 -flask/config.py,sha256=jj_7JGen_kYuTlKrx8ZPBsZddb8mihC0ODg4gcjXBX8,11068 -flask/ctx.py,sha256=EM3W0v1ctuFQAGk_HWtQdoJEg_r2f5Le4xcmElxFwwk,17428 -flask/debughelpers.py,sha256=wk5HtLwENsQ4e8tkxfBn6ykUeVRDuMbQCKgtEVe6jxk,6171 -flask/globals.py,sha256=cWd-R2hUH3VqPhnmQNww892tQS6Yjqg_wg8UvW1M7NM,1723 -flask/helpers.py,sha256=00WqA3wYeyjMrnAOPZTUyrnUf7H8ik3CVT0kqGl_qjk,30589 -flask/json/__init__.py,sha256=d-db2DJMASq0G7CI-JvobehRE1asNRGX1rIDQ1GF9WM,11580 -flask/json/__pycache__/__init__.cpython-39.pyc,, -flask/json/__pycache__/tag.cpython-39.pyc,, -flask/json/tag.py,sha256=fys3HBLssWHuMAIJuTcf2K0bCtosePBKXIWASZEEjnU,8857 -flask/logging.py,sha256=1o_hirVGqdj7SBdETnhX7IAjklG89RXlrwz_2CjzQQE,2273 -flask/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -flask/scaffold.py,sha256=EhQuiFrdcmJHxqPGQkEpqLsEUZ7ULZD0rtED2NrduvM,32400 -flask/sessions.py,sha256=Kb7zY4qBIOU2cw1xM5mQ_KmgYUBDFbUYWjlkq0EFYis,15189 -flask/signals.py,sha256=HQWgBEXlrLbHwLBoWqAStJKcN-rsB1_AMO8-VZ7LDOo,2126 -flask/templating.py,sha256=l96VD39JQ0nue4Bcj7wZ4-FWWs-ppLxvgBCpwDQ4KAk,5626 -flask/testing.py,sha256=OsHT-2B70abWH3ulY9IbhLchXIeyj3L-cfcDa88wv5E,10281 -flask/typing.py,sha256=zVqhz53KklncAv-WxbpxGZfaRGOqeWAsLdP1tTMaCuE,1684 -flask/views.py,sha256=F2PpWPloe4x0906IUjnPcsOqg5YvmQIfk07_lFeAD4s,5865 -flask/wrappers.py,sha256=VndbHPRBSUUOejmd2Y3ydkoCVUtsS2OJIdJEVIkBVD8,5604 diff --git a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/REQUESTED b/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/REQUESTED deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/WHEEL b/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/WHEEL deleted file mode 100644 index 385faab..0000000 --- a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.36.2) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/entry_points.txt b/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/entry_points.txt deleted file mode 100644 index 1eb0252..0000000 --- a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -flask = flask.cli:main - diff --git a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/top_level.txt b/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/top_level.txt deleted file mode 100644 index 7e10602..0000000 --- a/venv/lib/python3.9/site-packages/Flask-2.0.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -flask diff --git a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/INSTALLER b/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/LICENSE.rst b/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/LICENSE.rst deleted file mode 100644 index c37cae4..0000000 --- a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/LICENSE.rst +++ /dev/null @@ -1,28 +0,0 @@ -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/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/METADATA b/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/METADATA deleted file mode 100644 index afd84cb..0000000 --- a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/METADATA +++ /dev/null @@ -1,112 +0,0 @@ -Metadata-Version: 2.1 -Name: Jinja2 -Version: 3.0.1 -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: Donate, https://palletsprojects.com/donate -Project-URL: Documentation, https://jinja.palletsprojects.com/ -Project-URL: Changes, https://jinja.palletsprojects.com/changes/ -Project-URL: Source Code, https://github.com/pallets/jinja/ -Project-URL: Issue Tracker, https://github.com/pallets/jinja/issues/ -Project-URL: Twitter, https://twitter.com/PalletsTeam -Project-URL: Chat, https://discord.gg/pallets -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: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Text Processing :: Markup :: HTML -Requires-Python: >=3.6 -Description-Content-Type: text/x-rst -Requires-Dist: MarkupSafe (>=2.0) -Provides-Extra: i18n -Requires-Dist: Babel (>=2.7) ; 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 %} - - -Donate ------- - -The Pallets organization develops and supports Jinja 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 ------ - -- Documentation: https://jinja.palletsprojects.com/ -- Changes: https://jinja.palletsprojects.com/changes/ -- PyPI Releases: https://pypi.org/project/Jinja2/ -- Source Code: https://github.com/pallets/jinja/ -- Issue Tracker: https://github.com/pallets/jinja/issues/ -- Website: https://palletsprojects.com/p/jinja/ -- Twitter: https://twitter.com/PalletsTeam -- Chat: https://discord.gg/pallets - - diff --git a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/RECORD b/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/RECORD deleted file mode 100644 index 4819ff9..0000000 --- a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/RECORD +++ /dev/null @@ -1,58 +0,0 @@ -Jinja2-3.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Jinja2-3.0.1.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 -Jinja2-3.0.1.dist-info/METADATA,sha256=k6STiOONbGESP2rEKmjhznuG10vm9sNCHCUQL9AQFM4,3508 -Jinja2-3.0.1.dist-info/RECORD,, -Jinja2-3.0.1.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92 -Jinja2-3.0.1.dist-info/entry_points.txt,sha256=Qy_DkVo6Xj_zzOtmErrATe8lHZhOqdjpt3e4JJAGyi8,61 -Jinja2-3.0.1.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7 -jinja2/__init__.py,sha256=fd8jaCRsCATgC7ahuUTD8CyfQoc4aRfALEIny4mwfog,2205 -jinja2/__pycache__/__init__.cpython-39.pyc,, -jinja2/__pycache__/_identifier.cpython-39.pyc,, -jinja2/__pycache__/async_utils.cpython-39.pyc,, -jinja2/__pycache__/bccache.cpython-39.pyc,, -jinja2/__pycache__/compiler.cpython-39.pyc,, -jinja2/__pycache__/constants.cpython-39.pyc,, -jinja2/__pycache__/debug.cpython-39.pyc,, -jinja2/__pycache__/defaults.cpython-39.pyc,, -jinja2/__pycache__/environment.cpython-39.pyc,, -jinja2/__pycache__/exceptions.cpython-39.pyc,, -jinja2/__pycache__/ext.cpython-39.pyc,, -jinja2/__pycache__/filters.cpython-39.pyc,, -jinja2/__pycache__/idtracking.cpython-39.pyc,, -jinja2/__pycache__/lexer.cpython-39.pyc,, -jinja2/__pycache__/loaders.cpython-39.pyc,, -jinja2/__pycache__/meta.cpython-39.pyc,, -jinja2/__pycache__/nativetypes.cpython-39.pyc,, -jinja2/__pycache__/nodes.cpython-39.pyc,, -jinja2/__pycache__/optimizer.cpython-39.pyc,, -jinja2/__pycache__/parser.cpython-39.pyc,, -jinja2/__pycache__/runtime.cpython-39.pyc,, -jinja2/__pycache__/sandbox.cpython-39.pyc,, -jinja2/__pycache__/tests.cpython-39.pyc,, -jinja2/__pycache__/utils.cpython-39.pyc,, -jinja2/__pycache__/visitor.cpython-39.pyc,, -jinja2/_identifier.py,sha256=EdgGJKi7O1yvr4yFlvqPNEqV6M1qHyQr8Gt8GmVTKVM,1775 -jinja2/async_utils.py,sha256=bY2nCUfBA_4FSnNUsIsJgljBq3hACr6fzLi7LiyMTn8,1751 -jinja2/bccache.py,sha256=smAvSDgDSvXdvJzCN_9s0XfkVpQEu8be-QwgeMlrwiM,12677 -jinja2/compiler.py,sha256=qq0Fo9EpDAEwHPLAs3sAP7dindUvDrFrbx4AcB8xV5M,72046 -jinja2/constants.py,sha256=GMoFydBF_kdpaRKPoM5cl5MviquVRLVyZtfp5-16jg0,1433 -jinja2/debug.py,sha256=uBmrsiwjYH5l14R9STn5mydOOyriBYol5lDGvEqAb3A,9238 -jinja2/defaults.py,sha256=boBcSw78h-lp20YbaXSJsqkAI2uN_mD_TtCydpeq5wU,1267 -jinja2/environment.py,sha256=T6U4be9mY1CUXXin_EQFwpvpFqCiryweGqzXGRYIoSA,61573 -jinja2/exceptions.py,sha256=ioHeHrWwCWNaXX1inHmHVblvc4haO7AXsjCp3GfWvx0,5071 -jinja2/ext.py,sha256=44SjDjeYkkxQTpmC2BetOTxEFMgQ42p2dfSwXmPFcSo,32122 -jinja2/filters.py,sha256=LslRsJd0JVFBHtdfU_WraM1eQitotciwawiW-seR42U,52577 -jinja2/idtracking.py,sha256=KdFVohVNK-baOwt_INPMco19D7AfLDEN8i3_JoiYnGQ,10713 -jinja2/lexer.py,sha256=D5qOKB3KnRqK9gPAZFQvRguomYsQok5-14TKiWTN8Jw,29923 -jinja2/loaders.py,sha256=ePpWB0xDrILgLVqNFcxqqSbPizsI0T-JlkNEUFqq9fo,22350 -jinja2/meta.py,sha256=GNPEvifmSaU3CMxlbheBOZjeZ277HThOPUTf1RkppKQ,4396 -jinja2/nativetypes.py,sha256=62hvvsAxAj0YaxylOHoREYVogJ5JqOlJISgGY3OKd_o,3675 -jinja2/nodes.py,sha256=LHF97fu6GW4r2Z9UaOX92MOT1wZpdS9Nx4N-5Fp5ti8,34509 -jinja2/optimizer.py,sha256=tHkMwXxfZkbfA1KmLcqmBMSaz7RLIvvItrJcPoXTyD8,1650 -jinja2/parser.py,sha256=kHnU8v92GwMYkfr0MVakWv8UlSf_kJPx8LUsgQMof70,39767 -jinja2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -jinja2/runtime.py,sha256=bSWdawLjReKpKHhF3-96OIuWYpUy1yxFJCN3jBYyoXc,35013 -jinja2/sandbox.py,sha256=-8zxR6TO9kUkciAVFsIKu8Oq-C7PTeYEdZ5TtA55-gw,14600 -jinja2/tests.py,sha256=Am5Z6Lmfr2XaH_npIfJJ8MdXtWsbLjMULZJulTAj30E,5905 -jinja2/utils.py,sha256=0wGkxDbxlW10y0ac4-kEiy1Bn0AsWXqz8uomK9Ugy1Q,26961 -jinja2/visitor.py,sha256=ZmeLuTj66ic35-uFH-1m0EKXiw4ObDDb_WuE6h5vPFg,3572 diff --git a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/WHEEL b/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/WHEEL deleted file mode 100644 index 385faab..0000000 --- a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.36.2) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/entry_points.txt b/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/entry_points.txt deleted file mode 100644 index 3619483..0000000 --- a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[babel.extractors] -jinja2 = jinja2.ext:babel_extract [i18n] - diff --git a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/top_level.txt b/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/top_level.txt deleted file mode 100644 index 7f7afbf..0000000 --- a/venv/lib/python3.9/site-packages/Jinja2-3.0.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -jinja2 diff --git a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/INSTALLER b/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/LICENSE.rst b/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/LICENSE.rst deleted file mode 100644 index 9d227a0..0000000 --- a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/LICENSE.rst +++ /dev/null @@ -1,28 +0,0 @@ -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/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/METADATA b/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/METADATA deleted file mode 100644 index ef44e2b..0000000 --- a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/METADATA +++ /dev/null @@ -1,100 +0,0 @@ -Metadata-Version: 2.1 -Name: MarkupSafe -Version: 2.0.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: Pallets -Maintainer-email: contact@palletsprojects.com -License: BSD-3-Clause -Project-URL: Donate, https://palletsprojects.com/donate -Project-URL: Documentation, https://markupsafe.palletsprojects.com/ -Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/ -Project-URL: Source Code, https://github.com/pallets/markupsafe/ -Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/ -Project-URL: Twitter, https://twitter.com/PalletsTeam -Project-URL: Chat, https://discord.gg/pallets -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: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Text Processing :: Markup :: HTML -Requires-Python: >=3.6 -Description-Content-Type: text/x-rst - -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('<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 str subclass - >>> # methods and operators escape their arguments - >>> template = Markup("Hello {name}") - >>> template.format(name='"World"') - Markup('Hello "World"') - - -Donate ------- - -The Pallets organization develops and supports MarkupSafe 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 ------ - -- Documentation: https://markupsafe.palletsprojects.com/ -- Changes: https://markupsafe.palletsprojects.com/changes/ -- PyPI Releases: https://pypi.org/project/MarkupSafe/ -- Source Code: https://github.com/pallets/markupsafe/ -- Issue Tracker: https://github.com/pallets/markupsafe/issues/ -- Website: https://palletsprojects.com/p/markupsafe/ -- Twitter: https://twitter.com/PalletsTeam -- Chat: https://discord.gg/pallets - - diff --git a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/RECORD b/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/RECORD deleted file mode 100644 index 6fba495..0000000 --- a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/RECORD +++ /dev/null @@ -1,14 +0,0 @@ -MarkupSafe-2.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -MarkupSafe-2.0.1.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 -MarkupSafe-2.0.1.dist-info/METADATA,sha256=FmPpxBdaqCCjF-XKqoxeEzqAzhetQnrkkSsd3V3X-Jc,3211 -MarkupSafe-2.0.1.dist-info/RECORD,, -MarkupSafe-2.0.1.dist-info/WHEEL,sha256=C-sg6l2ppbqlkU_0fUt0o5fTSvsM-h9TfVKAh4ryMfI,111 -MarkupSafe-2.0.1.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 -markupsafe/__init__.py,sha256=9Tez4UIlI7J6_sQcUFK1dKniT_b_8YefpGIyYJ3Sr2Q,8923 -markupsafe/__pycache__/__init__.cpython-39.pyc,, -markupsafe/__pycache__/_native.cpython-39.pyc,, -markupsafe/_native.py,sha256=GTKEV-bWgZuSjklhMHOYRHU9k0DMewTf5mVEZfkbuns,1986 -markupsafe/_speedups.c,sha256=CDDtwaV21D2nYtypnMQzxvvpZpcTvIs8OZ6KDa1g4t0,7400 -markupsafe/_speedups.cpython-39-x86_64-linux-gnu.so,sha256=eGr-sqbWsXEBzb2iypAevZQXZFzkverTnd_GX5lvgnM,53224 -markupsafe/_speedups.pyi,sha256=vfMCsOgbAXRNLUXkyuyonG8uEWKYU4PDqNuMaDELAYw,229 -markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL b/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL deleted file mode 100644 index a98f911..0000000 --- a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.36.2) -Root-Is-Purelib: false -Tag: cp39-cp39-manylinux2010_x86_64 - diff --git a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/top_level.txt b/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/top_level.txt deleted file mode 100644 index 75bf729..0000000 --- a/venv/lib/python3.9/site-packages/MarkupSafe-2.0.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -markupsafe diff --git a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/INSTALLER b/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/LICENSE.rst b/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/LICENSE.rst deleted file mode 100644 index c37cae4..0000000 --- a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/LICENSE.rst +++ /dev/null @@ -1,28 +0,0 @@ -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/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/METADATA b/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/METADATA deleted file mode 100644 index f991d5a..0000000 --- a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/METADATA +++ /dev/null @@ -1,128 +0,0 @@ -Metadata-Version: 2.1 -Name: Werkzeug -Version: 2.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: Donate, https://palletsprojects.com/donate -Project-URL: Documentation, https://werkzeug.palletsprojects.com/ -Project-URL: Changes, https://werkzeug.palletsprojects.com/changes/ -Project-URL: Source Code, https://github.com/pallets/werkzeug/ -Project-URL: Issue Tracker, https://github.com/pallets/werkzeug/issues/ -Project-URL: Twitter, https://twitter.com/PalletsTeam -Project-URL: Chat, https://discord.gg/pallets -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: 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 -Requires-Python: >=3.6 -Description-Content-Type: text/x-rst -Requires-Dist: dataclasses ; python_version < "3.7" -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 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. - -.. _WSGI: https://wsgi.readthedocs.io/en/latest/ -.. _Flask: https://www.palletsprojects.com/p/flask/ - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - pip install -U Werkzeug - -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - -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) - - -Donate ------- - -The Pallets organization develops and supports Werkzeug 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 ------ - -- Documentation: https://werkzeug.palletsprojects.com/ -- Changes: https://werkzeug.palletsprojects.com/changes/ -- PyPI Releases: https://pypi.org/project/Werkzeug/ -- Source Code: https://github.com/pallets/werkzeug/ -- Issue Tracker: https://github.com/pallets/werkzeug/issues/ -- Website: https://palletsprojects.com/p/werkzeug/ -- Twitter: https://twitter.com/PalletsTeam -- Chat: https://discord.gg/pallets - - diff --git a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/RECORD b/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/RECORD deleted file mode 100644 index 960fd52..0000000 --- a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/RECORD +++ /dev/null @@ -1,111 +0,0 @@ -Werkzeug-2.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Werkzeug-2.0.1.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 -Werkzeug-2.0.1.dist-info/METADATA,sha256=8-W33EMnGqnCCi-d8Dv63IQQuyELRIsXhwOJNXbNgL0,4421 -Werkzeug-2.0.1.dist-info/RECORD,, -Werkzeug-2.0.1.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92 -Werkzeug-2.0.1.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9 -werkzeug/__init__.py,sha256=_CCsfdeqNllFNRJx8cvqYrwBsQQQXJaMmnk2sAZnDng,188 -werkzeug/__pycache__/__init__.cpython-39.pyc,, -werkzeug/__pycache__/_internal.cpython-39.pyc,, -werkzeug/__pycache__/_reloader.cpython-39.pyc,, -werkzeug/__pycache__/datastructures.cpython-39.pyc,, -werkzeug/__pycache__/exceptions.cpython-39.pyc,, -werkzeug/__pycache__/filesystem.cpython-39.pyc,, -werkzeug/__pycache__/formparser.cpython-39.pyc,, -werkzeug/__pycache__/http.cpython-39.pyc,, -werkzeug/__pycache__/local.cpython-39.pyc,, -werkzeug/__pycache__/routing.cpython-39.pyc,, -werkzeug/__pycache__/security.cpython-39.pyc,, -werkzeug/__pycache__/serving.cpython-39.pyc,, -werkzeug/__pycache__/test.cpython-39.pyc,, -werkzeug/__pycache__/testapp.cpython-39.pyc,, -werkzeug/__pycache__/urls.cpython-39.pyc,, -werkzeug/__pycache__/user_agent.cpython-39.pyc,, -werkzeug/__pycache__/useragents.cpython-39.pyc,, -werkzeug/__pycache__/utils.cpython-39.pyc,, -werkzeug/__pycache__/wsgi.cpython-39.pyc,, -werkzeug/_internal.py,sha256=_QKkvdaG4pDFwK68c0EpPzYJGe9Y7toRAT1cBbC-CxU,18572 -werkzeug/_reloader.py,sha256=B1hEfgsUOz2IginBQM5Zak_eaIF7gr3GS5-0x2OHvAE,13950 -werkzeug/datastructures.py,sha256=KahVPSLOapbNbKh1ppr9K8_DgWJv1EGgA9DhTEGMHcg,97886 -werkzeug/datastructures.pyi,sha256=5DTPF8P8Zvi458eK27Qcj7eNUlLM_AC0jBNkj6uQpds,33774 -werkzeug/debug/__init__.py,sha256=CUFrPEYAaotHRkmjOieqd3EasXDii2JVC1HdmEzMwqM,17924 -werkzeug/debug/__pycache__/__init__.cpython-39.pyc,, -werkzeug/debug/__pycache__/console.cpython-39.pyc,, -werkzeug/debug/__pycache__/repr.cpython-39.pyc,, -werkzeug/debug/__pycache__/tbtools.cpython-39.pyc,, -werkzeug/debug/console.py,sha256=E1nBMEvFkX673ShQjPtVY-byYatfX9MN-dBMjRI8a8E,5897 -werkzeug/debug/repr.py,sha256=QCSHENKsChEZDCIApkVi_UNjhJ77v8BMXK1OfxO189M,9483 -werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673 -werkzeug/debug/shared/ICON_LICENSE.md,sha256=DhA6Y1gUl5Jwfg0NFN9Rj4VWITt8tUx0IvdGf0ux9-s,222 -werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507 -werkzeug/debug/shared/debugger.js,sha256=dYbUmFmb3YZb5YpWpYPOQArdrN7NPeY0ODawL7ihzDI,10524 -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=vyp1RnB227Fuw8LIyM5C-bBCBQN5hvZSCApY2oeJ9ik,6705 -werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220 -werkzeug/debug/tbtools.py,sha256=TfReusPbM3yjm3xvOFkH45V7-5JnNqB9x1EQPnVC6Xo,19189 -werkzeug/exceptions.py,sha256=CUwx0pBiNbk4f9cON17ekgKnmLi6HIVFjUmYZc2x0wM,28681 -werkzeug/filesystem.py,sha256=JS2Dv2QF98WILxY4_thHl-WMcUcwluF_4igkDPaP1l4,1956 -werkzeug/formparser.py,sha256=GIKfzuQ_khuBXnf3N7_LzOEruYwNc3m4bI02BgtT5jg,17385 -werkzeug/http.py,sha256=oUCXFFMnkOQ-cHbUY_aiqitshcrSzNDq3fEMf1VI_yk,45141 -werkzeug/local.py,sha256=WsR6H-2XOtPigpimjORbLsS3h9WI0lCdZjGI2LHDDxA,22733 -werkzeug/middleware/__init__.py,sha256=qfqgdT5npwG9ses3-FXQJf3aB95JYP1zchetH_T3PUw,500 -werkzeug/middleware/__pycache__/__init__.cpython-39.pyc,, -werkzeug/middleware/__pycache__/dispatcher.cpython-39.pyc,, -werkzeug/middleware/__pycache__/http_proxy.cpython-39.pyc,, -werkzeug/middleware/__pycache__/lint.cpython-39.pyc,, -werkzeug/middleware/__pycache__/profiler.cpython-39.pyc,, -werkzeug/middleware/__pycache__/proxy_fix.cpython-39.pyc,, -werkzeug/middleware/__pycache__/shared_data.cpython-39.pyc,, -werkzeug/middleware/dispatcher.py,sha256=Fh_w-KyWnTSYF-Lfv5dimQ7THSS7afPAZMmvc4zF1gg,2580 -werkzeug/middleware/http_proxy.py,sha256=HE8VyhS7CR-E1O6_9b68huv8FLgGGR1DLYqkS3Xcp3Q,7558 -werkzeug/middleware/lint.py,sha256=yMzMdm4xI2_N-Wv2j1yoaVI3ltHOYS6yZyA-wUv1sKw,13962 -werkzeug/middleware/profiler.py,sha256=G2JieUMv4QPamtCY6ibIK7P-piPRdPybav7bm2MSFvs,4898 -werkzeug/middleware/proxy_fix.py,sha256=uRgQ3dEvFV8JxUqajHYYYOPEeA_BFqaa51Yp8VW0uzA,6849 -werkzeug/middleware/shared_data.py,sha256=eOCGr-i6BCexDfL7xdPRWMwPJPgp0NE2B416Gl67Q78,10959 -werkzeug/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -werkzeug/routing.py,sha256=FDRtvCfaZSmXnQ0cUYxowb3P0y0dxlUlMSUmerY5sb0,84147 -werkzeug/sansio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -werkzeug/sansio/__pycache__/__init__.cpython-39.pyc,, -werkzeug/sansio/__pycache__/multipart.cpython-39.pyc,, -werkzeug/sansio/__pycache__/request.cpython-39.pyc,, -werkzeug/sansio/__pycache__/response.cpython-39.pyc,, -werkzeug/sansio/__pycache__/utils.cpython-39.pyc,, -werkzeug/sansio/multipart.py,sha256=bJMCNC2f5xyAaylahNViJ0JqmV4ThLRbDVGVzKwcqrQ,8751 -werkzeug/sansio/request.py,sha256=aA9rABkWiG4MhYMByanst2NXkEclsq8SIxhb0LQf0e0,20228 -werkzeug/sansio/response.py,sha256=HSG6t-tyPZd3awzWqr7qL9IV4HYAvDgON1c0YPU2RXw,24117 -werkzeug/sansio/utils.py,sha256=V5v-UUnX8pm4RehP9Tt_NiUSOJGJGUvKjlW0eOIQldM,4164 -werkzeug/security.py,sha256=gPDRuCjkjWrcqj99tBMq8_nHFZLFQjgoW5Ga5XIw9jo,8158 -werkzeug/serving.py,sha256=_RG2dCclOQcdjJ2NE8tzCRybGePlwcs8kTypiWRP2gY,38030 -werkzeug/test.py,sha256=EJXJy-b_JriHrlfs5VNCkwbki8Kn_xUDkOYOCx_6Q7Q,48096 -werkzeug/testapp.py,sha256=f48prWSGJhbSrvYb8e1fnAah4BkrLb0enHSdChgsjBY,9471 -werkzeug/urls.py,sha256=3o_aUcr5Ou13XihSU6VvX6RHMhoWkKpXuCCia9SSAb8,41021 -werkzeug/user_agent.py,sha256=WclZhpvgLurMF45hsioSbS75H1Zb4iMQGKN3_yZ2oKo,1420 -werkzeug/useragents.py,sha256=G8tmv_6vxJaPrLQH3eODNgIYe0_V6KETROQlJI-WxDE,7264 -werkzeug/utils.py,sha256=WrU-LbwemyGd8zBHBgQyLaIxing4QLEChiP0qnzr2sc,36771 -werkzeug/wrappers/__init__.py,sha256=-s75nPbyXHzU_rwmLPDhoMuGbEUk0jZT_n0ZQAOFGf8,654 -werkzeug/wrappers/__pycache__/__init__.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/accept.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/auth.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/base_request.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/base_response.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/common_descriptors.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/cors.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/etag.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/json.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/request.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/response.cpython-39.pyc,, -werkzeug/wrappers/__pycache__/user_agent.cpython-39.pyc,, -werkzeug/wrappers/accept.py,sha256=_oZtAQkahvsrPRkNj2fieg7_St9P0NFC3SgZbJKS6xU,429 -werkzeug/wrappers/auth.py,sha256=rZPCzGxHk9R55PRkmS90kRywUVjjuMWzCGtH68qCq8U,856 -werkzeug/wrappers/base_request.py,sha256=saz9RyNQkvI_XLPYVm29KijNHmD1YzgxDqa0qHTbgss,1174 -werkzeug/wrappers/base_response.py,sha256=q_-TaYywT5G4zA-DWDRDJhJSat2_4O7gOPob6ye4_9A,1186 -werkzeug/wrappers/common_descriptors.py,sha256=v_kWLH3mvCiSRVJ1FNw7nO3w2UJfzY57UKKB5J4zCvE,898 -werkzeug/wrappers/cors.py,sha256=c5UndlZsZvYkbPrp6Gj5iSXxw_VOJDJHskO6-jRmNyQ,846 -werkzeug/wrappers/etag.py,sha256=XHWQQs7Mdd1oWezgBIsl-bYe8ydKkRZVil2Qd01D0Mo,846 -werkzeug/wrappers/json.py,sha256=HM1btPseGeXca0vnwQN_MvZl6h-qNsFY5YBKXKXFwus,410 -werkzeug/wrappers/request.py,sha256=0zAkCUwJbUBzioGy2UKxE6XpuXPAZbEhhML4WErzeBo,24818 -werkzeug/wrappers/response.py,sha256=95hXIysZTeNC0bqhvGB2fLBRKxedR_cgI5szZZWfyzw,35177 -werkzeug/wrappers/user_agent.py,sha256=Wl1-A0-1r8o7cHIZQTB55O4Ged6LpCKENaQDlOY5pXA,435 -werkzeug/wsgi.py,sha256=7psV3SHLtCzk1KSuGmIK5uP2QTDXyfCCDclyqCmIUO4,33715 diff --git a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/WHEEL b/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/WHEEL deleted file mode 100644 index 385faab..0000000 --- a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.36.2) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/top_level.txt b/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/top_level.txt deleted file mode 100644 index 6fe8da8..0000000 --- a/venv/lib/python3.9/site-packages/Werkzeug-2.0.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -werkzeug diff --git a/venv/lib/python3.9/site-packages/__pycache__/easy_install.cpython-39.pyc b/venv/lib/python3.9/site-packages/__pycache__/easy_install.cpython-39.pyc deleted file mode 100644 index 52cb6fd0cf5e9260dceb93a65c8417fb483b8228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmYj~KTE|h6vdOaY7yTj5VW|x!Det0L>&}yd5CUZu6fPXgyv6a(n1|v{4{>0u1;>w zPNwSc4%~A%aQPj+SnQIhi}3aM8uMc=n@VE2jOUM{2~rWHf;LHaAQF-4#H3Y938rs^ z5|KTS<<`soeQ%2(vAE`bytO`Xt&7?j!>yQd0K=69_>4HRq*FH6)iRrQ0EDXn<`>Hi z0#t_{L*EAHv@ibwB}OQyKWdjo#yjb@WBl4TFzF1kpo|N0Y?a_%;=r!ZH^H^+Mg`fg z*`4dclhewv0qwxFTC;Wx(%F;plzA2KxaD=jpV70;xw0Ln{LDDfYdoiM)6c_MlG8o< E18e49$p8QV diff --git a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/INSTALLER b/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/LICENSE.rst b/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/LICENSE.rst deleted file mode 100644 index d12a849..0000000 --- a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/LICENSE.rst +++ /dev/null @@ -1,28 +0,0 @@ -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/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/METADATA b/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/METADATA deleted file mode 100644 index 7be0832..0000000 --- a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/METADATA +++ /dev/null @@ -1,110 +0,0 @@ -Metadata-Version: 2.1 -Name: click -Version: 8.0.1 -Summary: Composable command line interface toolkit -Home-page: https://palletsprojects.com/p/click/ -Author: Armin Ronacher -Author-email: armin.ronacher@active-4.com -Maintainer: Pallets -Maintainer-email: contact@palletsprojects.com -License: BSD-3-Clause -Project-URL: Donate, https://palletsprojects.com/donate -Project-URL: Documentation, https://click.palletsprojects.com/ -Project-URL: Changes, https://click.palletsprojects.com/changes/ -Project-URL: Source Code, https://github.com/pallets/click/ -Project-URL: Issue Tracker, https://github.com/pallets/click/issues/ -Project-URL: Twitter, https://twitter.com/PalletsTeam -Project-URL: Chat, https://discord.gg/pallets -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 -Requires-Python: >=3.6 -Description-Content-Type: text/x-rst -Requires-Dist: colorama ; platform_system == "Windows" -Requires-Dist: importlib-metadata ; python_version < "3.8" - -\$ 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 ------ - -- Documentation: https://click.palletsprojects.com/ -- Changes: https://click.palletsprojects.com/changes/ -- PyPI Releases: https://pypi.org/project/click/ -- Source Code: https://github.com/pallets/click -- Issue Tracker: https://github.com/pallets/click/issues -- Website: https://palletsprojects.com/p/click -- Twitter: https://twitter.com/PalletsTeam -- Chat: https://discord.gg/pallets - - diff --git a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/RECORD b/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/RECORD deleted file mode 100644 index 0fa14e7..0000000 --- a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/RECORD +++ /dev/null @@ -1,41 +0,0 @@ -click-8.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -click-8.0.1.dist-info/LICENSE.rst,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 -click-8.0.1.dist-info/METADATA,sha256=Q_8tjC_Ps-9OmIDcovMWvqzrNlmYNwJ7yZxyeJ-SIsk,3216 -click-8.0.1.dist-info/RECORD,, -click-8.0.1.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92 -click-8.0.1.dist-info/top_level.txt,sha256=J1ZQogalYS4pphY_lPECoNMfw0HzTSrZglC4Yfwo4xA,6 -click/__init__.py,sha256=TweMqq3qEdmxSl3M_O0H1crtKtd7_oS7PDd0WlLote0,3243 -click/__pycache__/__init__.cpython-39.pyc,, -click/__pycache__/_compat.cpython-39.pyc,, -click/__pycache__/_termui_impl.cpython-39.pyc,, -click/__pycache__/_textwrap.cpython-39.pyc,, -click/__pycache__/_unicodefun.cpython-39.pyc,, -click/__pycache__/_winconsole.cpython-39.pyc,, -click/__pycache__/core.cpython-39.pyc,, -click/__pycache__/decorators.cpython-39.pyc,, -click/__pycache__/exceptions.cpython-39.pyc,, -click/__pycache__/formatting.cpython-39.pyc,, -click/__pycache__/globals.cpython-39.pyc,, -click/__pycache__/parser.cpython-39.pyc,, -click/__pycache__/shell_completion.cpython-39.pyc,, -click/__pycache__/termui.cpython-39.pyc,, -click/__pycache__/testing.cpython-39.pyc,, -click/__pycache__/types.cpython-39.pyc,, -click/__pycache__/utils.cpython-39.pyc,, -click/_compat.py,sha256=P15KQumAZC2F2MFe_JSRbvVOJcNosQfMDrdZq0ReCLM,18814 -click/_termui_impl.py,sha256=3IBc-wR8art7cOIN3y4vQ3ftyCs4GNLMjDcrSalUD9c,23423 -click/_textwrap.py,sha256=10fQ64OcBUMuK7mFvh8363_uoOxPlRItZBmKzRJDgoY,1353 -click/_unicodefun.py,sha256=JKSh1oSwG_zbjAu4TBCa9tQde2P9FiYcf4MBfy5NdT8,3201 -click/_winconsole.py,sha256=5ju3jQkcZD0W27WEMGqmEP4y_crUVzPCqsX_FYb7BO0,7860 -click/core.py,sha256=xYDxID7ShkgY2Lbw7vKOMjP5ImT1NLCTqMJphUicAQ0,111335 -click/decorators.py,sha256=u_Ehdo3PA2nzCoud9z6fGhxwtMI8vVNG_SL8Bl9lsnY,14871 -click/exceptions.py,sha256=7gDaLGuFZBeCNwY9ERMsF2-Z3R9Fvq09Zc6IZSKjseo,9167 -click/formatting.py,sha256=Frf0-5W33-loyY_i9qrwXR8-STnW3m5gvyxLVUdyxyk,9706 -click/globals.py,sha256=9pcmaNfGS1bJV5DoFYhfv51BPeHP8dWaya7rP3kcrY4,1973 -click/parser.py,sha256=x5DbnBV9O8kXiMdJAdtpdTO2eRUXw2ab5PRMLxo0po4,19043 -click/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -click/shell_completion.py,sha256=F0CHHFOP4ulDsYoqTMm9FXih_OVKsg3mzD-XBzMN79c,17881 -click/termui.py,sha256=MJNkEntRiNZvwa0z9SVK0d6X9BvUcFhvxKky5M-kBGY,28809 -click/testing.py,sha256=kLR5Qcny1OlgxaGB3gweTr0gQe1yVlmgQRn2esA2Fz4,16020 -click/types.py,sha256=ngn3qOaHcDvyeMF2UT5QJNNpJAAVrA9BRj4t8x1xOZM,35375 -click/utils.py,sha256=q7xUTlebAnIENo2Uv-REArW_erqGFm_8yMW241mMjzQ,18752 diff --git a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/WHEEL b/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/WHEEL deleted file mode 100644 index 385faab..0000000 --- a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.36.2) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/top_level.txt b/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/top_level.txt deleted file mode 100644 index dca9a90..0000000 --- a/venv/lib/python3.9/site-packages/click-8.0.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -click diff --git a/venv/lib/python3.9/site-packages/click/__init__.py b/venv/lib/python3.9/site-packages/click/__init__.py deleted file mode 100644 index 9e0afb2..0000000 --- a/venv/lib/python3.9/site-packages/click/__init__.py +++ /dev/null @@ -1,75 +0,0 @@ -""" -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 as Argument -from .core import BaseCommand as BaseCommand -from .core import Command as Command -from .core import CommandCollection as CommandCollection -from .core import Context as Context -from .core import Group as Group -from .core import MultiCommand as MultiCommand -from .core import Option as Option -from .core import Parameter as Parameter -from .decorators import argument as argument -from .decorators import command as command -from .decorators import confirmation_option as confirmation_option -from .decorators import group as group -from .decorators import help_option as help_option -from .decorators import make_pass_decorator as make_pass_decorator -from .decorators import option as option -from .decorators import pass_context as pass_context -from .decorators import pass_obj as pass_obj -from .decorators import password_option as password_option -from .decorators import version_option as version_option -from .exceptions import Abort as Abort -from .exceptions import BadArgumentUsage as BadArgumentUsage -from .exceptions import BadOptionUsage as BadOptionUsage -from .exceptions import BadParameter as BadParameter -from .exceptions import ClickException as ClickException -from .exceptions import FileError as FileError -from .exceptions import MissingParameter as MissingParameter -from .exceptions import NoSuchOption as NoSuchOption -from .exceptions import UsageError as UsageError -from .formatting import HelpFormatter as HelpFormatter -from .formatting import wrap_text as wrap_text -from .globals import get_current_context as get_current_context -from .parser import OptionParser as OptionParser -from .termui import clear as clear -from .termui import confirm as confirm -from .termui import echo_via_pager as echo_via_pager -from .termui import edit as edit -from .termui import get_terminal_size as get_terminal_size -from .termui import getchar as getchar -from .termui import launch as launch -from .termui import pause as pause -from .termui import progressbar as progressbar -from .termui import prompt as prompt -from .termui import secho as secho -from .termui import style as style -from .termui import unstyle as unstyle -from .types import BOOL as BOOL -from .types import Choice as Choice -from .types import DateTime as DateTime -from .types import File as File -from .types import FLOAT as FLOAT -from .types import FloatRange as FloatRange -from .types import INT as INT -from .types import IntRange as IntRange -from .types import ParamType as ParamType -from .types import Path as Path -from .types import STRING as STRING -from .types import Tuple as Tuple -from .types import UNPROCESSED as UNPROCESSED -from .types import UUID as UUID -from .utils import echo as echo -from .utils import format_filename as format_filename -from .utils import get_app_dir as get_app_dir -from .utils import get_binary_stream as get_binary_stream -from .utils import get_os_args as get_os_args -from .utils import get_text_stream as get_text_stream -from .utils import open_file as open_file - -__version__ = "8.0.1" diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/__init__.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 8ccd9fdac3ad29f238f54212f9d70a0b5cc5dacf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2706 zcmd7U$yOUj6b4`cl8}U$2OBVU8;miN#9$1V!GIWy!*mR6?xs`fE~E-QovIcXKS5q4 zCvT)}Ryik&th36!R}9V@1Rwu=Rozw9eO2m4w72IH`14o%_s_rQ6Nx{l@#9Z3Hn#A; znQKWT+yo@tCb!vZ@|&T#iQIy2ffjZWorEMig-$_=okpi2&2B}vLMuCi&OnBpMQ0() z&Y^RVW4C#2ejf7dJh~m)+3n~K=wNrCJE4=^iSB|fb{D!Ey4l_69_V5BpnIX0-HYyn zK6W3vANtw-=m8jD4|vb~=kT2U3_S>g?C0nq7-A2ihhdmKgnj`p*u&@%7-7Fazl4|U z5%eo~#eRvlz+%7hUi+gk%C^vBFvfoEz46CkoIUEj^(SD0J?6dhCt;HP20aB+>~Zuo zOtasjXJCdsfu4m~_B(U|3hYUA5sK_7^c>8wr_u8;&z?aqzyf;~y$Fl!0{T6?XBW{+ zu*9D8KKRS9%$`TDzzTZ-y$Y-BMf6Ab$bOGrgEjUNdL7o;AJ7}H!Cpph!X|qK{Ruv? zSJ7Lr#r}xihHds5dIxsc>*x}c*c<3w*kx~ed;UJ`vp=B^;DEh_{tTbl+vr0$WbdHA zz!!E2{S*Ae-bEk55qb}f-Tm{#N$cz`u7-i-hi(m9Dln1K z(zVKWR$P^qiCs^XtuTrsp^dcS(DKE#%-w1gtDs^zq3?^pwLBHz$&OZ0Y^}JMN@r1F;!bmqKbXdcYj~B9ic8E)g*m6T@tRReOa%tVFxQff-x;3YY zi&vCm(Td9C@OTs&QTAjZ_h%D67bctPnQdLE`7(&nZ9BM7sd0taY<*()JxihINhele z&^R8%@*9mz9pJ@9i2QNQi`CP>^l5Z|cJ@qY;mcTRJS`)hR&8}2SL}7d;7Vy<&=?zw z*jOl4xu3nQD!u5bzn4mDN5UA}l}@Nd9Ma_J$ANi1hLhf3W`^5g`4>E^lYAR$_i4V4 z8>!8ISKcm%nr^UbN4O7_x-_C9v9AOB8n^e*lgFMPZ?l89&)zpjKHN%nUwLv*YrfE~ zV`U8PiXVsMPr`Hj;2z7CL3 zL@jWt*qMq%&Ct=dNQV_IjVU+Iz@{JZHZimeooeDck0+`H4@~Zyo*v<`bg3FDhYn_T zMJz9rPfk+dXypFU>GlO8x9^1_{wf0gELsjvs55gIJa#oU+{InQ!_P!a*O)%P_%wwBJ)Jg}K7~$>d4B)wbQxvF&;i_p{XW z0@wKNPUs{>iXu(XN|B++QqZ3PkbC?R7~Mv__$NU^w^MXbbW(ItbW`+D^iuRu^kdX> z@?ozUJwUzBD4tUcQVdZHQ@o%Up?HY_xki=f8K+-SuZ4lz#0$&9Gx{~P(h=`KJ&FxT z)0V0!J%$bahGLxJEyV=IJBmq)DT--|8H!no0!0y{o{I4kHhPXa<|!5^7Af9SEKz)* zSf*H^Sf%(#u|}~@v4K%f)nbL0yGb3ND7GlJDRwAI6uTJpHrsx9TG+oO^f4Wv_(v40 z_!ut6%Ew3fU8G!Ls`93|E6sHrM#TesJlD#_GkmOEg`NtFH!`>>;ya@l@rz}#uv#=K vma~y?uJNmAiVnSkingr+729?px~pf_8*d+ck>cNWzhWfQ`KJHDzvh1d(4)__ diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/_compat.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/_compat.cpython-39.pyc deleted file mode 100644 index 88c9cc541928c3de9b44941a46b360ad7d89c36e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16055 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 U4>?IA`lhrSF7^dWsQP!t8)^ubN6e&^0E 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 F{|n*41R?+c diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/core.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/core.cpython-39.pyc deleted file mode 100644 index fcd753a8d10ffa2d01cb26c2a87b3f9808b9426c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88348 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 z 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 diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/exceptions.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/exceptions.cpython-39.pyc deleted file mode 100644 index 7cebd045cabcfe500f17a1da83244aecdd39a695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10147 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 diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/formatting.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/formatting.cpython-39.pyc deleted file mode 100644 index dcc28f23b9a81c200ea625f4047f42e1267edb56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9427 zcma)C&2t+^cAuUZ3DyXKL45i_r`y`W*GlY563?)9^S!~{4a`M7}Ag;G}Z-v z&CqOH>z1H8E4178dI9&gEQC(GxL)LYCv@AT^%CyIdN~l=Q$c0P2&QH6vVo@=T+alv z!ED1^GEh%X73tEGEIlw~Sx()t*PorxvVyuf-CMUukIDl}PRkkeI3>@5YK15V^TDi~ zd*H}Za{f+X{q%>1JS`XQ7;@pzTwef%Gr?>=GTQRUXE5@jTmqd%DLyr-&ppD-jkT)C zX6kX22Dj6;ANgB>LQQciNU7$LKodN>X`tG*Fo+cihyLrnK%DX#uUAhX(aT3!0O?rfATyku6lv zmC&_-qHlaQgK@-x**AY_2xG^T2KtJ%uZ^menadY5aXSS3#XYo!sZwx6c0XluE%pOr3e1yOLjqpqC7!2g5G=y~nHPr53orT%6Z zEME@ex*sN2mWNHN#jF%W-FBe-G{~&Be>=0VcZ!xfE2P~{7-UWY#sZlYz(PBz78J>T z=Ipg(+DtMFTb5ZZiH`L+98FryP^;-N1}dmZSg(X_x?)zmXsYK>SG6?F5-8N_aW_g; z3DtEI#o$9*;NYs`N?t|5n}3!zL1MeL2rL@&#uhNj^yeEfPLGjCvlu)gl$c zEz;bUFhf-%8KiwqY!rs&3iT3xAFZKKFQB+ubuyczJ1g)SWHYU(mA3q_){0~hrP;Gd zcQXlgy0{-yo$9C{3Dj;->-fswQhukI=sD6#4?eU$G;tQUvyen704GLU8~{T4#*z8Z zI57GU+dc`mCGGq6fz!8>H~Y?!)i)kOgtv@)CN4u3?g?3t&I9p<@rC%pY*?}=-8+?o zBIwu;NpapgaQkl3=@$8AuH5?X|*ioKL3G z^dotEw8T3Pc3TlTZSH&NUhDR2saJth*xo(gEqJ47OB#@$eYp-v}=&|0tZCXnb>&iy6gu+3|FiASWJ(#`VDU^=H5 z$YmZQ@5B11I{~^{?QR>B0xWre#v!S(9^76E-neb_} zRFd+>K%z)+Qbo{woZlyaVZZrL9bB&c`O)^5O@jEz1)Krd+t zhHN%Me~V-^31|hdRkZiRT_kD!6XSd1(wvLnNcc_E^u?nI5Hl>8M|ew%XiHq zaaVNC0ZoCKM<(7Er13f2sfVIrF&3T8+gwE(M;58g;2m1y`?>iOl)xQVy9kekdp#3n zp3T+A!h_{6(EfEYhb3KR_IBKg*us2mW!7f5kvX}25FKrJ*g}?Tjj)?E$u3-_iI5F2 zgpKd4c-1^BdN0r>)EK>n_IuPv{TZ6~%yPLpwO-;@)LeZJwOJY70N@0+KgsL{b}%cm z@5R`mO}rB_)9Q7!U$0Kqlr?NYDNBac^PaS4?A zA*wQ)hFN!G)!HJ@FEiCHoCSYR&wYh@@dA{F^CRP$TtQ(hRp1_&gYO?5#};Li*2Fd! zN)`M%!a)oAR`7N3ZU*aRi#hX6Y&a;?iOlg2`3~>kN@ieJ19sKdO}O8d{9a%Og>5IW z;qd0aBqtBxvP%cfaWQc5T!i}zn+Er{gs1WYA*W;oPv!hcyVz6m`+O@XjZL(<82OwG*spK;3BZwzFf<*mDJ<-@^!o{8MK|gCA?)vV z7q}P&0a-o*=G{Q;dr2p#!)Id9P!VqGpp;zDRuvRHII1y|ffUCyND^ykl)-Kgl8pv? zuwHu#C_!k|QeM0lc@00R?|X4K?Q~OM4wHB{C99VJ-O1>K^q#+u2~p34IEdjWw_~+G zZjo{YXhn4uw9!|CwJ#;Sy_i@YzTs&x0Efif80sFgQ4?&F=kYq{E(v@Pnk1%!c&UXU zCSa~6f{kf+uqbHndjs1C&*VpM>%kw9@4QyEv)PlgVExTX=u=}-8d%xaMHl*zOG?l0 z<4S&w0-$Jw#(@pT)2Jbik_Mc_vl6jZAF&VaKT1t@#Pz+E+I{<|@X*+H`qm+0twqGY zhui}Fi*VPCn!5#uwpL~3yS{K914UfttfjI zVG8h0FHO0KpAJr-jT;g0P{9GM2qVlxeaj;{msZ z&WKfO3NJY(FdWx(fI4=5oh2j^y@fILSsrvlMC)jy{$xBu`(xqaMV`e?-`F;e5Xq1| z;sD$1y>UZJsPA>7Ry~$M?o()yB{?BSm$gSvZh5V0s*ga70Uh_(=>9LLI1%a;SolB3 zn}j$q%-*T-Iq-XR9;WYa#SWZC-saZnqp}dfj{7eG8WLLg%pm9z}+K4Q>0o%O$$Dw4xz0285QKOFtSyPS{WD!|B7lqL9t%x($F<6Mp>C$!5q3t zO-^d|6l-pc`}{rLC*->sWmn9Yi=txAn&dx?d@K7qr(70gvBw__9m zX~kyXOGGx4F^#6h0!@>IfROQEF&!6Q7B(9~Q|P@s6q=my2;OpuVXac1f?&_QR3?n$ zbt4cNVBD{8e{v(TY&;h>H$NQ>ajX!RK>4apc9vjyRaPg01oUQlB6U(jCLal4#rL9Pqm zK<-Pu#YwA69Ur|&BiTAlNq$BR{!=zZHx!@_wc)rMRY8{_y#EY_6FEwxnGXb|r}1lJ z)#0g2am!M#rWQf|-wAS^$d^Y#8#%r+fObk#>z0S+Dsp0<8Av`moX2zMSONQ1%yrA5 zU*5T5(!=fn?CEJ|HFf*Wp@0E^D|Sn$f8=*X7!9tctSPmNUL5rqv>@ta0_c5;+}(D$ zUw}IYqa$6obZ$D;M>bHFWcj{@d|~ORf_x!zbYBW}nP~J8A1xU$Sx(Lw4liVdVsGRN z&mT#zfhib=3GWN^0F?fnZBBW`? zd&uySC!(Vi4<869QYUR3U`U-m8-y--xI<~Dp#FT@16hPHexq2yEJ9Zm7ea2P2jVX5q2~Fv4TG$ z@9KJ0Xx%2AS*uP{!T`=Pod+n=wybo0zY~0*RIJo0RZep1%s5paSy~NYU5kr_2_!j;-PgUKZ*A<<>keo-!3OY~nW9ogv9dtFM$nanB zGP!`ln9<1y*PMfyeIDRahLN2Wi)LBOoAXFdP~b3c&WiKq$#7vnj1Iua^OqIJlC8XOM@qcfp>mHIM?VR=+-B9h#>js4$_9~ zIr9UN9U(O3k#qBSVJN<&G&%+$*LVx2X2So)q&zzQsG8MJu}41j-}1X7BVkvgd7|u=T@5CWA9r z#2%eU@sv(DX~#mWC#Geg z+xxh9U8Fd|)VATi07lK;^Pli(tB%vO!=-0Jd#d9Zlk=Oy#HyDi=(#IAe+hmno8~of|5R2w2?VhurL;t1a<>LpZn+(7wqoA@#tF(b{2LjeX(tEveS^o`vOj_i+B(w{SF)!Ivan8 z1IGqAx>NoXnD`K<3v@Czh`KbBd2WK_2+B>#Zx*RGoI{3*c8nMexp5VDR0~lX;|TI_ zY<%^J|9A(oy$HO{4{dNw=TbBR`O$tJ5!G5rEkT~LS>4z`co^XLi(p9uyEe%=3v8L` zki*x<9fWqw26TrHv5*Wz5E&tTs10vEGaY%srtj&49U4qy)m64}kHyOMCv=X)h(Z=t z+CGqXiH;9Uo$F#Tf&nBS@t8=FG-d8(`}295~m zKLvDfV4GxTRUfr5BOZRV6GCuvwYro!DgJ|j__c%Qtel%b{M~{zU(tf8U(%~09EEnr z&;JeKAYQ={zMd1MZqyDHF|~ZAR`a7MP8q2a0F#Cf{O3ZY)JRdmo=unT$dk$J%^3fe z;Mkw=L(wKN&&MV_gct~g#=2r83`iVC6%ftD6lpis3dp$4JE89N#8I^&V; z$!=E5rR|mfpojKY?)(${33KICi34XY@a&l>+jbF_#^WDv-hA)#d!NbbYRiN6hxv2# z>yqdFZYO739VVZ{qkn^rdK3w7P`we%ec{h)gBtP}ItbJaXHg$CXpIJ9Y1SMxVW;-c z8!R*Lphe%L4Z1{|kA1pKTaW4w(O|``Z?iUhze<;OJh$7fcInP5JF9kQumWBXT?0Ss zbmLJlScBQ-V?^Je7htwdFI#V{y<<_iH{Al;i}VtFyFt-CuXE)&#N+ilD6b0{5%CVFRm z1)d2^ec~@}AfOLQ4SrpqqO4lrk

|e99Cz18XE}KIpL7PifIF3^8`mRNv1rRVs128 z#AMFF=a^Vl;KwhqSTGQ_oSS`#(@e+bSzN`v88dNjRF+GqBbl<%S;k8zVTk8|9YQ3O zGTQ6mkHc$)|6WQInclXvg3 znVdraHjhA1v0!rs1!c?HE)~%Goti`KLda{WOwT}jp>g>NY*g^B!`~`+mthQS*CQ#U zdYx~Jum+Dq`92Iz0bPbv`xHda0MoSgGx`agf*```JE!OXE+>aSIQeDImT^KvS^t)L z&~t~q%H^UiZp6~Vlx%d&zQ$d8o=Mz3PHgqS+A#o$bY zl!w+Jb&R>Rx2#nMUrDXo==ZYOy5dN2uX7LkB8Za|a|VP0Yr`^_PvEN}lj}_s z_$|MQ8oqkV`a-umD0F?lvza#xT$agHt-@BmY+}U-wR1~$zPf+^&aL6@*SB`R+3SBb z*eq;^aHX@vs*uio!=M;J!d(@YDGQ0Bge25mW_d7{Qsm9=QY+0wD4T@J9<_sWZh|y# j&LqtQ`^?_{+M;fvCTjbQqOS#LD+ti#V0(L`zE=MSX{d7* diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/parser.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/parser.cpython-39.pyc deleted file mode 100644 index 913696898ce71d5b2715becc6c25bf10a92d600f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13581 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 diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/shell_completion.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/shell_completion.cpython-39.pyc deleted file mode 100644 index f97c2190f8a96094cb9a13a433c246ab106376df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16660 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 M=;)QAdg#;t0}P`ta{vGU diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/termui.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/termui.cpython-39.pyc deleted file mode 100644 index bbede3aa166e8407e44dccc4d7d8d6acbacd7797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26540 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 Yf7tS2^M2%qqfs#00sivmu>b%7 diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/testing.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/testing.cpython-39.pyc deleted file mode 100644 index 040eb100ff221fa9e106c29d9a7b33fddc979a53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15131 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 diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/types.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/types.cpython-39.pyc deleted file mode 100644 index 50757a6e7864cc9076ec1f59b1af9b357fb058de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32921 zcmeHwdvqMvdEd_L>;sDh2!J5?FeQ&DQ6gv(q#kh;gpx^tg3MZmbVx{!*RmGNodLMu zVi&qIAc+;=rlt}rN!7TCn>04vkZ$UPY3q~ZxJl~c)Al5P^z@mwY14MjX?jkb)7E*k zdGs`m>`MLpzI$h87g&&VPLn^Hg50}zX71d_cfb4H?{&Ye4Gont`1|efcNb24eTmAvE~;~m8HLAib}uJ7~i z$MyYk?c(~qo{MYOchTMhxPHJpgzH0ceF)bNdJp0HA^!pY&~>NsAnqLY9>$%ArNl$H ze#AS1>mw-f5K0`zok{N~?i`gi9>(?iykodNCfASP`nWfR>nXWDg6k9BNnD?l>q%Tc z>OF?*$NU56(^2pJfa?43IkunhjdT0G$8Ti4C%kWaBUd@@AH1HaO!@aAJ%N5^DkssG zOyyDkVWf}wk05>Avo2&Nzy0gPpSejZDtfih4;w2!@`WWo4E<{%Z?{bT>lO;)##j|M zsx`HArRulpZLiT!Fmw-E8UL<+pB)78idNPt=zVv@-sE>#hR+E_@S@Z z!1J}v`YhgLKBz7F^;)xud|{^DGJP0G%H#dvnfA(R6FqIW&Y`6````VS$Hi%Uf+x{o zKSR8)*e_u%0Q2pNMQj6@V9qBMtQV^;N(2%b+Ib{Z-`$ek%;z@RIL_xbLx!>X{z|R6<_9Gge~YTUBJbDRD=RG2Y_w31a$j5zFST24 zqZPKzbEW)xDD6y@`V<25T4V&03%v?kW|!O}`ePnoGWJ zzuj!MuL5PKb)Co2r+Ex#x)z3NdZ7iZTyRZIxYM|}7W(cAT5>P?Zs3PgQVZXj0hXd3 zj1-*?!dj~?@JL{DwGm!&7Z&E)Eq`G_SE2lHO|_&3!Xkb+g&s5l7yoNbtPyWL9j5QO z7uQ|SU#zV)yV{<{+PO5nU;u1tH&-qe8vCVz?)C*ITjv=1)>Et3{nape|56RWR({eq z4zS*q$w@}SIY=RME=(X+yVwM(v}07jtVy@r#-dE}!a_Z~2IvqG78V4N78a6PL1NZ8 z*MJM!-vX^V;NGs+*OYtplHZCO;J{abVyj_NOQW^AWO@*DO>_Ez=+c(x0f+ZMO%f?4yo9d!`J)dNfpF?o;)A)}M~kt0O8wN|TVaTQ3z z`J&YsOM4#|xNYlNq=!WF_>Xzcqx6t92oGU*o<1+6O>YgrvKrPyJJ)_A zg-87-&LZ1FMSSQSS3yYBJ1u- zW9d@p>NW0y?@_g$HCemZUgMUt(g=d?g(m|d8*|5{@L1PU&?8lo7{b=+*)0RmEnuiY z06cuLYpC~a8ES9IZHUw}O&etOtXeUPsnff%tZq$=`)v`)megv48UaSwi5iQ^iY93= zlsrf%vwMWM4UF{T$u7XiCMR2|*$7)-J$nJvm}SINf2+Cin`y$ML;*1_`B8tE<% zva%+`I3Sl&za%5-yJg{R*{YH*p3}Re1~fK2&IMXCi{AH+$;`xLeX-VPF1W&W)RHQ& z!s@C4M8ATW(KyvLCDVFEN(0lv2kExb9b50}B>kqWyrIh`*srGo3w({M16RnBa(3n-WpD&ogLZ8V3-dYj zx&?Zop)HsXb_QEgL$zDN-hzHMH1kAY3L^pzF?82flaUFl9IRk%y7fzIt;+!jE(9&g zV<4&kh))U(_8PLRFg4({!N1_39s&U=v5FgNjba~%1tw0KO4L5LM* zP^PJkVtUspb`GW(vAtlY6i&^x^@a#;reKy`*S>t`jeiUcfs?d0vK!zd-^zXxoFp(O z+j-)HeiK|0rU9ao44X^dtawTx=x4(-NEI)3jPgMakelk98bCT}n1#pU+kKe@hjp)` zh#qsHGn|f@j}*}xd`D7wR07DgWbXH8ZF+X3B``7Ak^UoYYEWT02!6KHU1nMYvFU|R z2s1VXjt<<5X#+bqSlDhwz=GSpxD1goFbqe^wWb}@zyXD5Qzj(A2gB@=t{Q$sHUzC) z0KJCvmtbN5{t|_;BN3&!DuIFRt3kIMip9}RYZCc1c|Ywp-qf2~*Ag_;Rmk1B)|GZ$ zwv2?@k^h%AQ47W96szxrEGz#t$lnwhx`wx{iWExI6y(=@vyx25xl#?ametnP`MYrc zWaVO{OVCA;iQc;GhI^*i|73!GyE^+)^y@7&Y0u5c=YS&19F?lomA1Fmq~uVpR$l|5 zFmgnpT7`5}ttzgt$O@z43{?g%*Hq+OglHA*s#ax_)!Q`+?qo(COP-_Gll%at72bP<*& zkO`hfQnH-UF>5SaEbg-pjDq+6rfoY`5&xWTlm{lV6UA}Md8fQ@Vn{!;<(d7Baw%^W z-;uiNsHW$SeEVs90@8$7K}PkM59OF=L!ku;^$q8`RmpoftkQfm#+4>Ab21C_ihb;n zhq=C!HBLQsn7N(-^}*@o%$NKuhdlnBqgO5mbfU9j=iubm`jiMR< z0)-@o8x*h(KDi}}si*`&uc3$&7*_JQTkwm?v)m2qQ<+7}%X@`4%1}Mx9ehe&5sE^7 z56E}UD?uGM=#`<48~jwp$yCaihoNX_cCA%UrT}OkIg7Z{pAoUq%Ncf;(Acn+!Gu(y zjzDTBQ!<&=prhoio<}liWH9EtpcTuHjaDP9RzHu2T7Cq!btZZ`HC2T=frYl?2RoEC zpMb(U@#Cg-i&~P*vJGL^I)#p6r1qTdOcwj~8s<>1FZRi7+LeJsX927lfZWQJj7HOC z#3gwPA1$a`CH(6g=|wNfZR?dwAR1N0`6OQ z5@I0NtxY^>-H#{P^|Sg36hV#$)VO7DS|81{?30*}o4Hu3w=(*k$oAQ}PHrt+JpN=< zQ2uHYOx9#x01}miFw3%0r_qt9{8Fm{9lS5MqP*wxLdcBTiM9PA-V3;UXR@|c#y_2o z*_}PT;4#eZ>O3vLbZAAeg7{miT`^ik}*?*iY6c4`4cJ(AXS=qgEiueB% zCVAHd(Tyh*R8`o~J4|mL&y$t^CN9XBht_pleRpVI&uluKVXW)yhI31=_*byvo%N1h z@nH@navQk~=WXo#rS9^j2bOddoMWx<_P@{0j2c3W^o*6uH( zP{0>6*^-q9u^0x)0CQn-4Se?CFAp6Ha-~5I7^XKNC+YxgWvFg{@8(BA2XW!N~ z6MR)4N3pKKqzFjr{SR124+8F1yx$iAaX%A$6-hUhp&ikC5A18PB@wg*wpVWIIk6{} z`~sd13Oi6VTRtcaw*0a;=oh>)7=$5j81!c-xu(_IsSNWye0F)T=*jn}d=GkKpkTCp z!_tTvP^(zJ9at1cSqI9Fd3(hQ=ol;DZebn9LEjEW`I$@YM%}MH4d79;RhLVxrZIv{ ztdD>ULoL%KzkZpzl_hAiAT8D0#l|&ULo*;U4Qzkdn^&Px$4!xtgDLk6lo5CUc^>uy zebc=Ja{}ce)Csm1LP%glhmW?`+~AT}I@&ELVOPa|XQV*LJ8Q7@u{PaR)Gm4gO8JWW zj#daBX*MqVu~DS0f=SW%#d?8YO|2>}ktHa11K7~wwh01#htH&^5TvPRY+kLcQ;9&u zv>6NRlZ~Z@))cdo7_jM+KtlOTHRYj0P-ZW>uxZr-zY0q!G=I?Zz`RA{O>3P`!fUV) zT!u9qst;&x8Xdn%2F@70wB{mM_3Mqr22~eQ{RJPE8|5#;-Y0W*yuBI*3)&fUnUerI z&(lJblYE}}$->;*)<#r}t*MdqdSq?BZGG%*>*F-GEw>vj8D3PRo&eT9ud-{EHhnS5 zi4iWI3BoHHG*eEGj;%9t6b1eeA2Z}~cEl=YJ7Z?Zce2oM3T2#HFz~R;En^050zH;# zKFz*G!N8g8>_ug5pfRZ_k*<+=FNlS);aaq+UuZ^l|1y$<_>|=HjS=|CZ z74Iqsx;xuzV-Z{4b{>#BEI*v8fZWZ7wJEIr8`S$|&cY_VnR^pvJDBoj--ISO&fSDK z26n&^i4fEHMsXu|)4pZi;J|~$4d)GW&th@Y1-YdQZgn2V_D+~84>f#3GdW3l{RnEx;4vG?F z1B3Z^i3aTr>xb>v9Pl85>P#Sr+EXW$hirON*!rk+iiTzCke)6B%71_&na&{tW5eT4 zooYhi)eN4VN(=XNhL9!8zZ)OnMWi$1uRxUA#2BDo2OKx-u5Q6NI^K`c-p(pY@0B4E zVBf21?1_pog@-cYK|I%^5F!)c5{_(|$mH$(yW4t}fQkAi>Did>8CW=opj-P@B&CEE z+EZ7OmQtd@=Js|s_qKh^?HqVrwx|cxCYAHlR~o$Eoa!9f_RQ>D$9^Ettf0`3nXHrzSf#g>;T|9d ziYjys*=x)Rcn>27Kg3Kx`j#m;)(99%2zm@quOP)cbO`jz?B~TES#(FN+-h)n3X$Ez6y4#D@6as?^wc!A) z8f_(UF`2k7)o#pC&`qZL7ABFJ&p%LYe4qK#g8WgYH2BKyf0(MUh7h# zSy4$K8qoL(4HYR&WYs}S-p?kI#T^ZtqW8|VRrT~!Xk3MO+Bss-w^ys(MH1szcJ8H% zdeF;#x|g@0Q`@PhFo3~k0fpLMV8=em0wFQ~MvR$_G*0^1?s5k37fJtk9 za?e)1$uw&v@RTS|&N6qJ$x}?o&}t>x40EDHBTJ6sR%mggQPtRY@Tm@f3W}Ec87xHEvA86C) z8w>rKCHl2k{w?B}mVXOI{-wT+@^1?!pW1lkY$IsA(@2TR%eEx)u=EDYzbu2X!qqJ}If#L{K-!hGQOP`Kx(c;;!g<9zb4%i!E~- zjaNgpUIpL`(XMhyEpZ@Pv!Zph-^KqAKIrRJ% zH2pSp`Xa)QZ{%#Sf)_HcjYBizgb=@3J`uhPVbOyjI2@3>6uwJF_;x6K)0@`_-?=%} zLED|_#8Lp#{20Yi@G)T^PADY~w7G(@b_`KJnZ=+<8~UK9^>ds^e+%k1u#?a zNyI@WdM0F-fugv>Z<g7&_QS<9t3|2 zNy5iZV5;HnBU7%w^FIDzr^(*PL)n;vB}>r5r;|!aELnNO$;0{tPJWR0S&MO6afDB& z6U*QYt5&=k0<8Ys4EBt{-YiNDTV)+pw>%^r^R9!o`n(i{BfK7;v7i z;S?f~Zf^E=9;&HEi~6Z+Q4zT+j~60WyQXtF_=2pg>a9z5U<{jo%yan(5*|W^=v6fa z2sm59FJ=Q&zM6$XHB)sGlf>y8?8&UyYq&W-21xVpp^I5zzSxgz3 zD8IJK4Ryy+s-2je+Z+nDYGiVp^xrq~h0cB3hP0jW8N!>&Mbe`vBffI3viJml4+(HG z(}W5fc6Sg5%$n?+*o84v?!)bAjKxe`a zb~KRAq9L75v9oU*&X|4v?a|PmdR`2_&5u2L%su|-$9bd*r*c|el=T{L;3N^yYo41; z{Kq`Hqt`qUE2KlBEQHQCXB*-=QSNhO`WNT_&8<@5HL2^On#b4y5Y!P^AouDtDIC) z&rGqiciS{+&tT@>KlKsH=Hb-`QwUTWzf#c~` zApQ-2;6Ehv5}fWZEFC%><{3hFJ5YO-6;cIRq`yr3Pv%=9N61HmBb

|c+lpN`+Ocy$j^0(8qcBd;W{BCp{2 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 ReCCmn#~ykv@0fqt{{!g^PQL&E diff --git a/venv/lib/python3.9/site-packages/click/__pycache__/utils.cpython-39.pyc b/venv/lib/python3.9/site-packages/click/__pycache__/utils.cpython-39.pyc deleted file mode 100644 index 20e2141f4cff521072027138c7d1c6c30551c92f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17785 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 KoRqbC_ str: - return sys.getfilesystemencoding() or sys.getdefaultencoding() - - -def _make_text_stream( - stream: t.BinaryIO, - encoding: t.Optional[str], - errors: t.Optional[str], - force_readable: bool = False, - force_writable: bool = False, -) -> t.TextIO: - 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: str) -> bool: - """Checks if a given encoding is ascii.""" - try: - return codecs.lookup(encoding).name == "ascii" - except LookupError: - return False - - -def get_best_encoding(stream: t.IO) -> str: - """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: t.BinaryIO, - encoding: t.Optional[str], - errors: t.Optional[str], - force_readable: bool = False, - force_writable: bool = False, - **extra: t.Any, - ) -> None: - self._stream = stream = t.cast( - t.BinaryIO, _FixupStream(stream, force_readable, force_writable) - ) - super().__init__(stream, encoding, errors, **extra) - - def __del__(self) -> None: - try: - self.detach() - except Exception: - pass - - def isatty(self) -> bool: - # https://bitbucket.org/pypy/pypy/issue/1803 - return self._stream.isatty() - - -class _FixupStream: - """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: t.BinaryIO, - force_readable: bool = False, - force_writable: bool = False, - ): - self._stream = stream - self._force_readable = force_readable - self._force_writable = force_writable - - def __getattr__(self, name: str) -> t.Any: - return getattr(self._stream, name) - - def read1(self, size: int) -> bytes: - f = getattr(self._stream, "read1", None) - - if f is not None: - return t.cast(bytes, f(size)) - - return self._stream.read(size) - - def readable(self) -> bool: - if self._force_readable: - return True - x = getattr(self._stream, "readable", None) - if x is not None: - return t.cast(bool, x()) - try: - self._stream.read(0) - except Exception: - return False - return True - - def writable(self) -> bool: - if self._force_writable: - return True - x = getattr(self._stream, "writable", None) - if x is not None: - return t.cast(bool, x()) - try: - self._stream.write("") # type: ignore - except Exception: - try: - self._stream.write(b"") - except Exception: - return False - return True - - def seekable(self) -> bool: - x = getattr(self._stream, "seekable", None) - if x is not None: - return t.cast(bool, x()) - try: - self._stream.seek(self._stream.tell()) - except Exception: - return False - return True - - -def _is_binary_reader(stream: t.IO, default: bool = False) -> bool: - 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: t.IO, default: bool = False) -> bool: - try: - stream.write(b"") - except Exception: - try: - stream.write("") - return False - except Exception: - pass - return default - return True - - -def _find_binary_reader(stream: t.IO) -> t.Optional[t.BinaryIO]: - # 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 t.cast(t.BinaryIO, 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 t.cast(t.BinaryIO, buf) - - return None - - -def _find_binary_writer(stream: t.IO) -> t.Optional[t.BinaryIO]: - # 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_writer(stream, False): - return t.cast(t.BinaryIO, 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 t.cast(t.BinaryIO, buf) - - return None - - -def _stream_is_misconfigured(stream: t.TextIO) -> bool: - """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: t.TextIO, attr: str, value: t.Optional[str]) -> bool: - """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: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str] -) -> bool: - """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: t.IO, - encoding: t.Optional[str], - errors: t.Optional[str], - is_binary: t.Callable[[t.IO, bool], bool], - find_binary: t.Callable[[t.IO], t.Optional[t.BinaryIO]], - force_readable: bool = False, - force_writable: bool = False, -) -> t.TextIO: - if is_binary(text_stream, False): - binary_reader = t.cast(t.BinaryIO, text_stream) - else: - text_stream = t.cast(t.TextIO, text_stream) - # 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. - possible_binary_reader = find_binary(text_stream) - - # If that's not possible, silently use the original reader - # and get mojibake instead of exceptions. - if possible_binary_reader is None: - return text_stream - - binary_reader = possible_binary_reader - - # 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: t.IO, - encoding: t.Optional[str], - errors: t.Optional[str], - force_readable: bool = False, -) -> t.TextIO: - 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: t.IO, - encoding: t.Optional[str], - errors: t.Optional[str], - force_writable: bool = False, -) -> t.TextIO: - return _force_correct_text_stream( - text_writer, - encoding, - errors, - _is_binary_writer, - _find_binary_writer, - force_writable=force_writable, - ) - - -def get_binary_stdin() -> t.BinaryIO: - 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() -> t.BinaryIO: - 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() -> t.BinaryIO: - 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: t.Optional[str] = None, errors: t.Optional[str] = None -) -> t.TextIO: - 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: t.Optional[str] = None, errors: t.Optional[str] = None -) -> t.TextIO: - 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: t.Optional[str] = None, errors: t.Optional[str] = None -) -> t.TextIO: - 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 _wrap_io_open( - file: t.Union[str, os.PathLike, int], - mode: str, - encoding: t.Optional[str], - errors: t.Optional[str], -) -> t.IO: - """Handles not passing ``encoding`` and ``errors`` in binary mode.""" - if "b" in mode: - return open(file, mode) - - return open(file, mode, encoding=encoding, errors=errors) - - -def open_stream( - filename: str, - mode: str = "r", - encoding: t.Optional[str] = None, - errors: t.Optional[str] = "strict", - atomic: bool = False, -) -> t.Tuple[t.IO, bool]: - 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: t.Optional[int] = 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), - f".__atomic-write{random.randrange(1 << 32):08x}", - ) - 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) - af = _AtomicFile(f, tmp_filename, os.path.realpath(filename)) - return t.cast(t.IO, af), True - - -class _AtomicFile: - def __init__(self, f: t.IO, tmp_filename: str, real_filename: str) -> None: - self._f = f - self._tmp_filename = tmp_filename - self._real_filename = real_filename - self.closed = False - - @property - def name(self) -> str: - return self._real_filename - - def close(self, delete: bool = False) -> None: - if self.closed: - return - self._f.close() - os.replace(self._tmp_filename, self._real_filename) - self.closed = True - - def __getattr__(self, name: str) -> t.Any: - return getattr(self._f, name) - - def __enter__(self) -> "_AtomicFile": - return self - - def __exit__(self, exc_type, exc_value, tb): # type: ignore - self.close(delete=exc_type is not None) - - def __repr__(self) -> str: - return repr(self._f) - - -def strip_ansi(value: str) -> str: - return _ansi_re.sub("", value) - - -def _is_jupyter_kernel_output(stream: t.IO) -> bool: - while isinstance(stream, (_FixupStream, _NonClosingTextIOWrapper)): - stream = stream._stream - - return stream.__class__.__module__.startswith("ipykernel.") - - -def should_strip_ansi( - stream: t.Optional[t.IO] = None, color: t.Optional[bool] = None -) -> bool: - 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 - - -# On Windows, wrap the output streams with colorama to support ANSI -# color codes. -# NOTE: double check is needed so mypy does not analyze this on Linux -if sys.platform.startswith("win") and WIN: - from ._winconsole import _get_windows_console_stream - - def _get_argv_encoding() -> str: - import locale - - return locale.getpreferredencoding() - - _ansi_stream_wrappers: t.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() - - def auto_wrap_for_ansi( - stream: t.TextIO, color: t.Optional[bool] = None - ) -> t.TextIO: - """Support ANSI color and style codes on Windows by wrapping a - stream with colorama. - """ - try: - cached = _ansi_stream_wrappers.get(stream) - except Exception: - cached = None - - if cached is not None: - return cached - - import colorama - - strip = should_strip_ansi(stream, color) - ansi_wrapper = colorama.AnsiToWin32(stream, strip=strip) - rv = t.cast(t.TextIO, ansi_wrapper.stream) - _write = rv.write - - def _safe_write(s): - try: - return _write(s) - except BaseException: - ansi_wrapper.reset_all() - raise - - rv.write = _safe_write - - try: - _ansi_stream_wrappers[stream] = rv - except Exception: - pass - - return rv - - -else: - - def _get_argv_encoding() -> str: - return getattr(sys.stdin, "encoding", None) or get_filesystem_encoding() - - def _get_windows_console_stream( - f: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str] - ) -> t.Optional[t.TextIO]: - return None - - -def term_len(x: str) -> int: - return len(strip_ansi(x)) - - -def isatty(stream: t.IO) -> bool: - try: - return stream.isatty() - except Exception: - return False - - -def _make_cached_stream_func( - src_func: t.Callable[[], t.TextIO], wrapper_func: t.Callable[[], t.TextIO] -) -> t.Callable[[], t.TextIO]: - cache: t.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() - - def func() -> t.TextIO: - stream = src_func() - try: - rv = cache.get(stream) - except Exception: - rv = None - if rv is not None: - return rv - rv = wrapper_func() - try: - 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: t.Mapping[str, t.Callable[[], t.BinaryIO]] = { - "stdin": get_binary_stdin, - "stdout": get_binary_stdout, - "stderr": get_binary_stderr, -} - -text_streams: t.Mapping[ - str, t.Callable[[t.Optional[str], t.Optional[str]], t.TextIO] -] = { - "stdin": get_text_stdin, - "stdout": get_text_stdout, - "stderr": get_text_stderr, -} diff --git a/venv/lib/python3.9/site-packages/click/_termui_impl.py b/venv/lib/python3.9/site-packages/click/_termui_impl.py deleted file mode 100644 index 06cf2b7..0000000 --- a/venv/lib/python3.9/site-packages/click/_termui_impl.py +++ /dev/null @@ -1,717 +0,0 @@ -""" -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 -import typing as t -from gettext import gettext as _ - -from ._compat import _default_text_stdout -from ._compat import CYGWIN -from ._compat import get_best_encoding -from ._compat import isatty -from ._compat import open_stream -from ._compat import strip_ansi -from ._compat import term_len -from ._compat import WIN -from .exceptions import ClickException -from .utils import echo - -V = t.TypeVar("V") - -if os.name == "nt": - BEFORE_BAR = "\r" - AFTER_BAR = "\n" -else: - BEFORE_BAR = "\r\033[?25l" - AFTER_BAR = "\033[?25h\n" - - -class ProgressBar(t.Generic[V]): - def __init__( - self, - iterable: t.Optional[t.Iterable[V]], - length: t.Optional[int] = None, - fill_char: str = "#", - empty_char: str = " ", - bar_template: str = "%(bar)s", - info_sep: str = " ", - show_eta: bool = True, - show_percent: t.Optional[bool] = None, - show_pos: bool = False, - item_show_func: t.Optional[t.Callable[[t.Optional[V]], t.Optional[str]]] = None, - label: t.Optional[str] = None, - file: t.Optional[t.TextIO] = None, - color: t.Optional[bool] = None, - update_min_steps: int = 1, - width: int = 30, - ) -> None: - 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.update_min_steps = update_min_steps - self._completed_intervals = 0 - self.width = width - self.autowidth = width == 0 - - if length is None: - from operator import length_hint - - length = length_hint(iterable, -1) - - if length == -1: - length = None - if iterable is None: - if length is None: - raise TypeError("iterable or length is required") - iterable = t.cast(t.Iterable[V], range(length)) - self.iter = iter(iterable) - self.length = length - self.pos = 0 - self.avg: t.List[float] = [] - self.start = self.last_eta = time.time() - self.eta_known = False - self.finished = False - self.max_width: t.Optional[int] = None - self.entered = False - self.current_item: t.Optional[V] = None - self.is_hidden = not isatty(self.file) - self._last_line: t.Optional[str] = None - - def __enter__(self) -> "ProgressBar": - self.entered = True - self.render_progress() - return self - - def __exit__(self, exc_type, exc_value, tb): # type: ignore - self.render_finish() - - def __iter__(self) -> t.Iterator[V]: - 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) -> V: - # 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)) - - def render_finish(self) -> None: - if self.is_hidden: - return - self.file.write(AFTER_BAR) - self.file.flush() - - @property - def pct(self) -> float: - if self.finished: - return 1.0 - return min(self.pos / (float(self.length or 1) or 1), 1.0) - - @property - def time_per_iteration(self) -> float: - if not self.avg: - return 0.0 - return sum(self.avg) / float(len(self.avg)) - - @property - def eta(self) -> float: - if self.length is not None and not self.finished: - return self.time_per_iteration * (self.length - self.pos) - return 0.0 - - def format_eta(self) -> str: - 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 f"{t}d {hours:02}:{minutes:02}:{seconds:02}" - else: - return f"{hours:02}:{minutes:02}:{seconds:02}" - return "" - - def format_pos(self) -> str: - pos = str(self.pos) - if self.length is not None: - pos += f"/{self.length}" - return pos - - def format_pct(self) -> str: - return f"{int(self.pct * 100): 4}%"[1:] - - def format_bar(self) -> str: - if self.length is not None: - 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: - chars = list(self.empty_char * (self.width or 1)) - if self.time_per_iteration != 0: - chars[ - int( - (math.cos(self.pos * self.time_per_iteration) / 2.0 + 0.5) - * self.width - ) - ] = self.fill_char - bar = "".join(chars) - return bar - - def format_progress_line(self) -> str: - show_percent = self.show_percent - - info_bits = [] - if self.length is not None 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) -> None: - import shutil - - if self.is_hidden: - # Only output the label as it changes if the output is not a - # TTY. Use file=stderr if you expect to be piping stdout. - if self._last_line != self.label: - self._last_line = self.label - echo(self.label, file=self.file, color=self.color) - - 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, shutil.get_terminal_size().columns - clutter_length) - if new_width < old_width: - buf.append(BEFORE_BAR) - buf.append(" " * self.max_width) # type: ignore - 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: - self._last_line = line - echo(line, file=self.file, color=self.color, nl=False) - self.file.flush() - - def make_step(self, n_steps: int) -> None: - self.pos += n_steps - if self.length is not None 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 is not None - - def update(self, n_steps: int, current_item: t.Optional[V] = None) -> None: - """Update the progress bar by advancing a specified number of - steps, and optionally set the ``current_item`` for this new - position. - - :param n_steps: Number of steps to advance. - :param current_item: Optional item to set as ``current_item`` - for the updated position. - - .. versionchanged:: 8.0 - Added the ``current_item`` optional parameter. - - .. versionchanged:: 8.0 - Only render when the number of steps meets the - ``update_min_steps`` threshold. - """ - if current_item is not None: - self.current_item = current_item - - self._completed_intervals += n_steps - - if self._completed_intervals >= self.update_min_steps: - self.make_step(self._completed_intervals) - self.render_progress() - self._completed_intervals = 0 - - def finish(self) -> None: - self.eta_known = False - self.current_item = None - self.finished = True - - def generator(self) -> t.Iterator[V]: - """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: - yield from self.iter - else: - for rv in self.iter: - self.current_item = rv - - # This allows show_item_func to be updated before the - # item is processed. Only trigger at the beginning of - # the update interval. - if self._completed_intervals == 0: - self.render_progress() - - yield rv - self.update(1) - - self.finish() - self.render_progress() - - -def pager(generator: t.Iterable[str], color: t.Optional[bool] = None) -> 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(f'more "{filename}"') == 0: - return _pipepager(generator, "more", color) - return _nullpager(stdout, generator, color) - finally: - os.unlink(filename) - - -def _pipepager(generator: t.Iterable[str], cmd: str, color: t.Optional[bool]) -> None: - """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 = f"{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) - stdin = t.cast(t.BinaryIO, c.stdin) - encoding = get_best_encoding(stdin) - try: - for text in generator: - if not color: - text = strip_ansi(text) - - stdin.write(text.encode(encoding, "replace")) - except (OSError, KeyboardInterrupt): - pass - else: - 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: t.Iterable[str], cmd: str, color: t.Optional[bool] -) -> None: - """Page through text by invoking a program on a temporary file.""" - import tempfile - - _, filename = tempfile.mkstemp() - # 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(f'{cmd} "{filename}"') - finally: - os.unlink(filename) - - -def _nullpager( - stream: t.TextIO, generator: t.Iterable[str], color: t.Optional[bool] -) -> None: - """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: - def __init__( - self, - editor: t.Optional[str] = None, - env: t.Optional[t.Mapping[str, str]] = None, - require_save: bool = True, - extension: str = ".txt", - ) -> None: - self.editor = editor - self.env = env - self.require_save = require_save - self.extension = extension - - def get_editor(self) -> str: - 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(f"which {editor} >/dev/null 2>&1") == 0: - return editor - return "vi" - - def edit_file(self, filename: str) -> None: - import subprocess - - editor = self.get_editor() - environ: t.Optional[t.Dict[str, str]] = None - - if self.env: - environ = os.environ.copy() - environ.update(self.env) - - try: - c = subprocess.Popen(f'{editor} "{filename}"', env=environ, shell=True) - exit_code = c.wait() - if exit_code != 0: - raise ClickException( - _("{editor}: Editing failed").format(editor=editor) - ) - except OSError as e: - raise ClickException( - _("{editor}: Editing failed: {e}").format(editor=editor, e=e) - ) - - def edit(self, text: t.Optional[t.AnyStr]) -> t.Optional[t.AnyStr]: - import tempfile - - if not text: - data = b"" - elif isinstance(text, (bytes, bytearray)): - data = text - else: - if text and not text.endswith("\n"): - text += "\n" - - if WIN: - data = text.replace("\n", "\r\n").encode("utf-8-sig") - else: - data = text.encode("utf-8") - - fd, name = tempfile.mkstemp(prefix="editor-", suffix=self.extension) - f: t.BinaryIO - - try: - with os.fdopen(fd, "wb") as f: - f.write(data) - - # If the filesystem resolution is 1 second, like Mac OS - # 10.12 Extended, or 2 seconds, like FAT32, and the editor - # closes very fast, require_save can fail. Set the modified - # time to be 2 seconds in the past to work around this. - os.utime(name, (os.path.getatime(name), os.path.getmtime(name) - 2)) - # Depending on the resolution, the exact value might not be - # recorded, so get the new recorded value. - timestamp = os.path.getmtime(name) - - self.edit_file(name) - - if self.require_save and os.path.getmtime(name) == timestamp: - return None - - with open(name, "rb") as f: - rv = f.read() - - if isinstance(text, (bytes, bytearray)): - return rv - - return rv.decode("utf-8-sig").replace("\r\n", "\n") # type: ignore - finally: - os.unlink(name) - - -def open_url(url: str, wait: bool = False, locate: bool = False) -> int: - import subprocess - - def _unquote_file(url: str) -> str: - from urllib.parse import unquote - - if url.startswith("file://"): - url = 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.replace('"', "")) - args = f'explorer /select,"{url}"' - else: - url = url.replace('"', "") - wait_str = "/WAIT" if wait else "" - args = f'start {wait_str} "" "{url}"' - return os.system(args) - elif CYGWIN: - if locate: - url = os.path.dirname(_unquote_file(url).replace('"', "")) - args = f'cygstart "{url}"' - else: - url = url.replace('"', "") - wait_str = "-w" if wait else "" - args = f'cygstart {wait_str} "{url}"' - 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: str) -> t.Optional[BaseException]: - if ch == "\x03": - raise KeyboardInterrupt() - - if ch == "\x04" and not WIN: # Unix-like, Ctrl+D - raise EOFError() - - if ch == "\x1a" and WIN: # Windows, Ctrl+Z - raise EOFError() - - return None - - -if WIN: - import msvcrt - - @contextlib.contextmanager - def raw_terminal() -> t.Iterator[int]: - yield -1 - - def getchar(echo: bool) -> str: - # 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`. - func: t.Callable[[], str] - - if echo: - func = msvcrt.getwche # type: ignore - else: - func = msvcrt.getwch # type: ignore - - rv = func() - - if rv in ("\x00", "\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() -> t.Iterator[int]: - f: t.Optional[t.TextIO] - fd: int - - 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: bool) -> str: - with raw_terminal() as fd: - ch = os.read(fd, 32).decode(get_best_encoding(sys.stdin), "replace") - - if echo and isatty(sys.stdout): - sys.stdout.write(ch) - - _translate_ch_to_exc(ch) - return ch diff --git a/venv/lib/python3.9/site-packages/click/_textwrap.py b/venv/lib/python3.9/site-packages/click/_textwrap.py deleted file mode 100644 index b47dcbd..0000000 --- a/venv/lib/python3.9/site-packages/click/_textwrap.py +++ /dev/null @@ -1,49 +0,0 @@ -import textwrap -import typing as t -from contextlib import contextmanager - - -class TextWrapper(textwrap.TextWrapper): - def _handle_long_word( - self, - reversed_chunks: t.List[str], - cur_line: t.List[str], - cur_len: int, - width: int, - ) -> None: - 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: str) -> t.Iterator[None]: - 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: str) -> str: - rv = [] - - for idx, line in enumerate(text.splitlines()): - indent = self.initial_indent - - if idx > 0: - indent = self.subsequent_indent - - rv.append(f"{indent}{line}") - - return "\n".join(rv) diff --git a/venv/lib/python3.9/site-packages/click/_unicodefun.py b/venv/lib/python3.9/site-packages/click/_unicodefun.py deleted file mode 100644 index 9cb30c3..0000000 --- a/venv/lib/python3.9/site-packages/click/_unicodefun.py +++ /dev/null @@ -1,100 +0,0 @@ -import codecs -import os -from gettext import gettext as _ - - -def _verify_python_env() -> None: - """Ensures that the environment is good for Unicode.""" - try: - from locale import getpreferredencoding - - fs_enc = codecs.lookup(getpreferredencoding()).name - except Exception: - fs_enc = "ascii" - - if fs_enc != "ascii": - return - - extra = [ - _( - "Click will abort further execution because Python was" - " configured to use ASCII as encoding for the environment." - " Consult https://click.palletsprojects.com/unicode-support/" - " for mitigation steps." - ) - ] - - if os.name == "posix": - import subprocess - - try: - rv = subprocess.Popen( - ["locale", "-a"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - encoding="ascii", - errors="replace", - ).communicate()[0] - except OSError: - rv = "" - - good_locales = set() - has_c_utf8 = False - - 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 - - if not good_locales: - extra.append( - _( - "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.append( - _( - "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:" - ) - ) - extra.append(" export LC_ALL=C.UTF-8\n export LANG=C.UTF-8") - else: - extra.append( - _( - "This system lists some UTF-8 supporting locales" - " that you can pick from. The following suitable" - " locales were discovered: {locales}" - ).format(locales=", ".join(sorted(good_locales))) - ) - - bad_locale = None - - for env_locale in os.environ.get("LC_ALL"), os.environ.get("LANG"): - if env_locale and env_locale.lower().endswith((".utf-8", ".utf8")): - bad_locale = env_locale - - if env_locale is not None: - break - - if bad_locale is not None: - extra.append( - _( - "Click 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" - " {locale!r} but it is not supported." - ).format(locale=bad_locale) - ) - - raise RuntimeError("\n\n".join(extra)) diff --git a/venv/lib/python3.9/site-packages/click/_winconsole.py b/venv/lib/python3.9/site-packages/click/_winconsole.py deleted file mode 100644 index 6b20df3..0000000 --- a/venv/lib/python3.9/site-packages/click/_winconsole.py +++ /dev/null @@ -1,279 +0,0 @@ -# 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 prompt. -import io -import sys -import time -import typing as t -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 Structure -from ctypes.wintypes import DWORD -from ctypes.wintypes import HANDLE -from ctypes.wintypes import LPCWSTR -from ctypes.wintypes import LPWSTR - -from ._compat import _NonClosingTextIOWrapper - -assert sys.platform == "win32" -import msvcrt # noqa: E402 -from ctypes import windll # noqa: E402 -from ctypes import WINFUNCTYPE # noqa: E402 - -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(c_void_p, 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 - -try: - from ctypes import pythonapi -except ImportError: - # On PyPy we cannot get buffers so our ability to operate here is - # severely limited. - get_buffer = None -else: - - class Py_buffer(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), - ] - - PyObject_GetBuffer = pythonapi.PyObject_GetBuffer - PyBuffer_Release = pythonapi.PyBuffer_Release - - 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): - super().isatty() - 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(f"Windows error: {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 f"Windows error {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: - def __init__(self, text_stream: t.TextIO, byte_stream: t.BinaryIO) -> None: - self._text_stream = text_stream - self.buffer = byte_stream - - @property - def name(self) -> str: - return self.buffer.name - - def write(self, x: t.AnyStr) -> int: - if isinstance(x, str): - return self._text_stream.write(x) - try: - self.flush() - except Exception: - pass - return self.buffer.write(x) - - def writelines(self, lines: t.Iterable[t.AnyStr]) -> None: - for line in lines: - self.write(line) - - def __getattr__(self, name: str) -> t.Any: - return getattr(self._text_stream, name) - - def isatty(self) -> bool: - return self.buffer.isatty() - - def __repr__(self): - return f"" - - -def _get_text_stdin(buffer_stream: t.BinaryIO) -> t.TextIO: - text_stream = _NonClosingTextIOWrapper( - io.BufferedReader(_WindowsConsoleReader(STDIN_HANDLE)), - "utf-16-le", - "strict", - line_buffering=True, - ) - return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) - - -def _get_text_stdout(buffer_stream: t.BinaryIO) -> t.TextIO: - text_stream = _NonClosingTextIOWrapper( - io.BufferedWriter(_WindowsConsoleWriter(STDOUT_HANDLE)), - "utf-16-le", - "strict", - line_buffering=True, - ) - return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) - - -def _get_text_stderr(buffer_stream: t.BinaryIO) -> t.TextIO: - text_stream = _NonClosingTextIOWrapper( - io.BufferedWriter(_WindowsConsoleWriter(STDERR_HANDLE)), - "utf-16-le", - "strict", - line_buffering=True, - ) - return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) - - -_stream_factories: t.Mapping[int, t.Callable[[t.BinaryIO], t.TextIO]] = { - 0: _get_text_stdin, - 1: _get_text_stdout, - 2: _get_text_stderr, -} - - -def _is_console(f: t.TextIO) -> bool: - if not hasattr(f, "fileno"): - return False - - try: - fileno = f.fileno() - except (OSError, io.UnsupportedOperation): - return False - - handle = msvcrt.get_osfhandle(fileno) - return bool(GetConsoleMode(handle, byref(DWORD()))) - - -def _get_windows_console_stream( - f: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str] -) -> t.Optional[t.TextIO]: - 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: - b = getattr(f, "buffer", None) - - if b is None: - return None - - return func(b) diff --git a/venv/lib/python3.9/site-packages/click/core.py b/venv/lib/python3.9/site-packages/click/core.py deleted file mode 100644 index e2ccf59..0000000 --- a/venv/lib/python3.9/site-packages/click/core.py +++ /dev/null @@ -1,2957 +0,0 @@ -import enum -import errno -import os -import sys -import typing -import typing as t -from collections import abc -from contextlib import contextmanager -from contextlib import ExitStack -from functools import partial -from functools import update_wrapper -from gettext import gettext as _ -from gettext import ngettext -from itertools import repeat - -from . import types -from ._unicodefun import _verify_python_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 _flag_needs_value -from .parser import OptionParser -from .parser import split_opt -from .termui import confirm -from .termui import prompt -from .termui import style -from .utils import _detect_program_name -from .utils import _expand_args -from .utils import echo -from .utils import make_default_short_help -from .utils import make_str -from .utils import PacifyFlushWrapper - -if t.TYPE_CHECKING: - import typing_extensions as te - from .shell_completion import CompletionItem - -F = t.TypeVar("F", bound=t.Callable[..., t.Any]) -V = t.TypeVar("V") - - -def _fast_exit(code: int) -> "te.NoReturn": - """Low-level exit that skips Python's cleanup but speeds up exit by - about 10ms for things like shell completion. - - :param code: Exit code. - """ - sys.stdout.flush() - sys.stderr.flush() - os._exit(code) - - -def _complete_visible_commands( - ctx: "Context", incomplete: str -) -> t.Iterator[t.Tuple[str, "Command"]]: - """List all the subcommands of a group that start with the - incomplete value and aren't hidden. - - :param ctx: Invocation context for the group. - :param incomplete: Value being completed. May be empty. - """ - multi = t.cast(MultiCommand, ctx.command) - - for name in multi.list_commands(ctx): - if name.startswith(incomplete): - command = multi.get_command(ctx, name) - - if command is not None and not command.hidden: - yield name, command - - -def _check_multicommand( - base_command: "MultiCommand", cmd_name: str, cmd: "Command", register: bool = False -) -> None: - 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( - f"{hint}. Command {base_command.name!r} is set to chain and" - f" {cmd_name!r} was added as a subcommand but it in itself is a" - f" multi command. ({cmd_name!r} is a {type(cmd).__name__}" - f" within a chained {type(base_command).__name__} named" - f" {base_command.name!r})." - ) - - -def batch(iterable: t.Iterable[V], batch_size: int) -> t.List[t.Tuple[V, ...]]: - return list(zip(*repeat(iter(iterable), batch_size))) - - -@contextmanager -def augment_usage_errors( - ctx: "Context", param: t.Optional["Parameter"] = None -) -> t.Iterator[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: t.Sequence["Parameter"], - declaration_order: t.Sequence["Parameter"], -) -> t.List["Parameter"]: - """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: "Parameter") -> t.Tuple[bool, float]: - try: - idx: float = invocation_order.index(item) - except ValueError: - idx = float("inf") - - return not item.is_eager, idx - - return sorted(declaration_order, key=sort_key) - - -class ParameterSource(enum.Enum): - """This is an :class:`~enum.Enum` that indicates the source of a - parameter's value. - - Use :meth:`click.Context.get_parameter_source` to get the - source for a parameter by name. - - .. versionchanged:: 8.0 - Use :class:`~enum.Enum` and drop the ``validate`` method. - - .. versionchanged:: 8.0 - Added the ``PROMPT`` value. - """ - - COMMANDLINE = enum.auto() - """The value was provided by the command line args.""" - ENVIRONMENT = enum.auto() - """The value was provided with an environment variable.""" - DEFAULT = enum.auto() - """Used the default specified by the parameter.""" - DEFAULT_MAP = enum.auto() - """Used a default provided by :attr:`Context.default_map`.""" - PROMPT = enum.auto() - """Used a prompt to confirm a default or provide a value.""" - - -class Context: - """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. - - :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: Show defaults for all options. If not set, - defaults to the value from a parent context. Overrides an - option's ``show_default`` argument. - - .. versionchanged:: 8.0 - The ``show_default`` parameter defaults to the value from the - parent context. - - .. versionchanged:: 7.1 - Added the ``show_default`` parameter. - - .. versionchanged:: 4.0 - Added the ``color``, ``ignore_unknown_options``, and - ``max_content_width`` parameters. - - .. versionchanged:: 3.0 - Added the ``allow_extra_args`` and ``allow_interspersed_args`` - parameters. - - .. versionchanged:: 2.0 - Added the ``resilient_parsing``, ``help_option_names``, and - ``token_normalize_func`` parameters. - """ - - #: The formatter class to create with :meth:`make_formatter`. - #: - #: .. versionadded:: 8.0 - formatter_class: t.Type["HelpFormatter"] = HelpFormatter - - def __init__( - self, - command: "Command", - parent: t.Optional["Context"] = None, - info_name: t.Optional[str] = None, - obj: t.Optional[t.Any] = None, - auto_envvar_prefix: t.Optional[str] = None, - default_map: t.Optional[t.Dict[str, t.Any]] = None, - terminal_width: t.Optional[int] = None, - max_content_width: t.Optional[int] = None, - resilient_parsing: bool = False, - allow_extra_args: t.Optional[bool] = None, - allow_interspersed_args: t.Optional[bool] = None, - ignore_unknown_options: t.Optional[bool] = None, - help_option_names: t.Optional[t.List[str]] = None, - token_normalize_func: t.Optional[t.Callable[[str], str]] = None, - color: t.Optional[bool] = None, - show_default: t.Optional[bool] = None, - ) -> 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 - #: Map of parameter names to their parsed values. Parameters - #: with ``expose_value=False`` are not stored. - self.params: t.Dict[str, t.Any] = {} - #: the leftover arguments. - self.args: t.List[str] = [] - #: 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: t.List[str] = [] - - if obj is None and parent is not None: - obj = parent.obj - - #: the user object stored. - self.obj: t.Any = obj - self._meta: t.Dict[str, t.Any] = getattr(parent, "meta", {}) - - #: A dictionary (-like object) with defaults for parameters. - if ( - default_map is None - and info_name is not None - and parent is not None - and parent.default_map is not None - ): - default_map = parent.default_map.get(info_name) - - self.default_map: t.Optional[t.Dict[str, t.Any]] = 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:`result_callback`. - self.invoked_subcommand: t.Optional[str] = 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: t.Optional[int] = 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: t.Optional[int] = 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: bool = 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: bool = 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: t.List[str] = 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: t.Optional[ - t.Callable[[str], str] - ] = 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: bool = 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 = ( - f"{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: t.Optional[str] = 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: t.Optional[bool] = color - - if show_default is None and parent is not None: - show_default = parent.show_default - - #: Show option default values when formatting help text. - self.show_default: t.Optional[bool] = show_default - - self._close_callbacks: t.List[t.Callable[[], t.Any]] = [] - self._depth = 0 - self._parameter_source: t.Dict[str, ParameterSource] = {} - self._exit_stack = ExitStack() - - def to_info_dict(self) -> t.Dict[str, t.Any]: - """Gather information that could be useful for a tool generating - user-facing documentation. This traverses the entire CLI - structure. - - .. code-block:: python - - with Context(cli) as ctx: - info = ctx.to_info_dict() - - .. versionadded:: 8.0 - """ - return { - "command": self.command.to_info_dict(self), - "info_name": self.info_name, - "allow_extra_args": self.allow_extra_args, - "allow_interspersed_args": self.allow_interspersed_args, - "ignore_unknown_options": self.ignore_unknown_options, - "auto_envvar_prefix": self.auto_envvar_prefix, - } - - def __enter__(self) -> "Context": - self._depth += 1 - push_context(self) - return self - - def __exit__(self, exc_type, exc_value, tb): # type: ignore - self._depth -= 1 - if self._depth == 0: - self.close() - pop_context() - - @contextmanager - def scope(self, cleanup: bool = True) -> t.Iterator["Context"]: - """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) -> t.Dict[str, t.Any]: - """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) -> HelpFormatter: - """Creates the :class:`~click.HelpFormatter` for the help and - usage output. - - To quickly customize the formatter class used without overriding - this method, set the :attr:`formatter_class` attribute. - - .. versionchanged:: 8.0 - Added the :attr:`formatter_class` attribute. - """ - return self.formatter_class( - width=self.terminal_width, max_width=self.max_content_width - ) - - def with_resource(self, context_manager: t.ContextManager[V]) -> V: - """Register a resource as if it were used in a ``with`` - statement. The resource will be cleaned up when the context is - popped. - - Uses :meth:`contextlib.ExitStack.enter_context`. It calls the - resource's ``__enter__()`` method and returns the result. When - the context is popped, it closes the stack, which calls the - resource's ``__exit__()`` method. - - To register a cleanup function for something that isn't a - context manager, use :meth:`call_on_close`. Or use something - from :mod:`contextlib` to turn it into a context manager first. - - .. code-block:: python - - @click.group() - @click.option("--name") - @click.pass_context - def cli(ctx): - ctx.obj = ctx.with_resource(connect_db(name)) - - :param context_manager: The context manager to enter. - :return: Whatever ``context_manager.__enter__()`` returns. - - .. versionadded:: 8.0 - """ - return self._exit_stack.enter_context(context_manager) - - def call_on_close(self, f: t.Callable[..., t.Any]) -> t.Callable[..., t.Any]: - """Register a function to be called when the context tears down. - - This can be used to close resources opened during the script - execution. Resources that support Python's context manager - protocol which would be used in a ``with`` statement should be - registered with :meth:`with_resource` instead. - - :param f: The function to execute on teardown. - """ - return self._exit_stack.callback(f) - - def close(self) -> None: - """Invoke all close callbacks registered with - :meth:`call_on_close`, and exit all context managers entered - with :meth:`with_resource`. - """ - self._exit_stack.close() - # In case the context is reused, create a new exit stack. - self._exit_stack = ExitStack() - - @property - def command_path(self) -> str: - """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: - parent_command_path = [self.parent.command_path] - - if isinstance(self.parent.command, Command): - for param in self.parent.command.get_params(self): - parent_command_path.extend(param.get_usage_pieces(self)) - - rv = f"{' '.join(parent_command_path)} {rv}" - return rv.lstrip() - - def find_root(self) -> "Context": - """Finds the outermost context.""" - node = self - while node.parent is not None: - node = node.parent - return node - - def find_object(self, object_type: t.Type[V]) -> t.Optional[V]: - """Finds the closest object of a given type.""" - node: t.Optional["Context"] = self - - while node is not None: - if isinstance(node.obj, object_type): - return node.obj - - node = node.parent - - return None - - def ensure_object(self, object_type: t.Type[V]) -> V: - """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 - - @typing.overload - def lookup_default( - self, name: str, call: "te.Literal[True]" = True - ) -> t.Optional[t.Any]: - ... - - @typing.overload - def lookup_default( - self, name: str, call: "te.Literal[False]" = ... - ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: - ... - - def lookup_default(self, name: str, call: bool = True) -> t.Optional[t.Any]: - """Get the default for a parameter from :attr:`default_map`. - - :param name: Name of the parameter. - :param call: If the default is a callable, call it. Disable to - return the callable instead. - - .. versionchanged:: 8.0 - Added the ``call`` parameter. - """ - if self.default_map is not None: - value = self.default_map.get(name) - - if call and callable(value): - return value() - - return value - - return None - - def fail(self, message: str) -> "te.NoReturn": - """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) -> "te.NoReturn": - """Aborts the script.""" - raise Abort() - - def exit(self, code: int = 0) -> "te.NoReturn": - """Exits the application with a given exit code.""" - raise Exit(code) - - def get_usage(self) -> str: - """Helper method to get formatted usage string for the current - context and command. - """ - return self.command.get_usage(self) - - def get_help(self) -> str: - """Helper method to get formatted help page for the current - context and command. - """ - return self.command.get_help(self) - - def _make_sub_context(self, command: "Command") -> "Context": - """Create a new context of the same type as this context, but - for a new command. - - :meta private: - """ - return type(self)(command, info_name=command.name, parent=self) - - def invoke( - __self, # noqa: B902 - __callback: t.Union["Command", t.Callable[..., t.Any]], - *args: t.Any, - **kwargs: t.Any, - ) -> t.Any: - """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`. - - .. versionchanged:: 8.0 - All ``kwargs`` are tracked in :attr:`params` so they will be - passed if :meth:`forward` is called at multiple levels. - """ - if isinstance(__callback, Command): - other_cmd = __callback - - if other_cmd.callback is None: - raise TypeError( - "The given command does not have a callback that can be invoked." - ) - else: - __callback = other_cmd.callback - - ctx = __self._make_sub_context(other_cmd) - - for param in other_cmd.params: - if param.name not in kwargs and param.expose_value: - kwargs[param.name] = param.get_default(ctx) # type: ignore - - # Track all kwargs as params, so that forward() will pass - # them on in subsequent calls. - ctx.params.update(kwargs) - else: - ctx = __self - - with augment_usage_errors(__self): - with ctx: - return __callback(*args, **kwargs) - - def forward( - __self, __cmd: "Command", *args: t.Any, **kwargs: t.Any # noqa: B902 - ) -> t.Any: - """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. - - .. versionchanged:: 8.0 - All ``kwargs`` are tracked in :attr:`params` so they will be - passed if ``forward`` is called at multiple levels. - """ - # Can only forward to other commands, not direct callbacks. - 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, *args, **kwargs) - - def set_parameter_source(self, name: str, source: ParameterSource) -> None: - """Set the source of a parameter. This indicates the location - from which the value of the parameter was obtained. - - :param name: The name of the parameter. - :param source: A member of :class:`~click.core.ParameterSource`. - """ - self._parameter_source[name] = source - - def get_parameter_source(self, name: str) -> t.Optional[ParameterSource]: - """Get the source of a parameter. This indicates the location - from which the value of the parameter was obtained. - - This can be useful for determining when a user specified a value - on the command line that is the same as the default value. It - will be :attr:`~click.core.ParameterSource.DEFAULT` only if the - value was actually taken from the default. - - :param name: The name of the parameter. - :rtype: ParameterSource - - .. versionchanged:: 8.0 - Returns ``None`` if the parameter was not provided from any - source. - """ - return self._parameter_source.get(name) - - -class BaseCommand: - """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 context class to create with :meth:`make_context`. - #: - #: .. versionadded:: 8.0 - context_class: t.Type[Context] = Context - #: 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: t.Optional[str], - context_settings: t.Optional[t.Dict[str, t.Any]] = None, - ) -> 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: t.Dict[str, t.Any] = context_settings - - def to_info_dict(self, ctx: Context) -> t.Dict[str, t.Any]: - """Gather information that could be useful for a tool generating - user-facing documentation. This traverses the entire structure - below this command. - - Use :meth:`click.Context.to_info_dict` to traverse the entire - CLI structure. - - :param ctx: A :class:`Context` representing this command. - - .. versionadded:: 8.0 - """ - return {"name": self.name} - - def __repr__(self) -> str: - return f"<{self.__class__.__name__} {self.name}>" - - def get_usage(self, ctx: Context) -> str: - raise NotImplementedError("Base commands cannot get usage") - - def get_help(self, ctx: Context) -> str: - raise NotImplementedError("Base commands cannot get help") - - def make_context( - self, - info_name: t.Optional[str], - args: t.List[str], - parent: t.Optional[Context] = None, - **extra: t.Any, - ) -> Context: - """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. - - To quickly customize the context class used without overriding - this method, set the :attr:`context_class` attribute. - - :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's usually - the name of the script, for commands below it it's - the name of the command. - :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. - - .. versionchanged:: 8.0 - Added the :attr:`context_class` attribute. - """ - for key, value in self.context_settings.items(): - if key not in extra: - extra[key] = value - - ctx = self.context_class( - self, info_name=info_name, parent=parent, **extra # type: ignore - ) - - with ctx.scope(cleanup=False): - self.parse_args(ctx, args) - return ctx - - def parse_args(self, ctx: Context, args: t.List[str]) -> t.List[str]: - """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: Context) -> t.Any: - """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 shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: - """Return a list of completions for the incomplete value. Looks - at the names of chained multi-commands. - - Any command could be part of a chained multi-command, so sibling - commands are valid at any point during command completion. Other - command classes will return more completions. - - :param ctx: Invocation context for this command. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - results: t.List["CompletionItem"] = [] - - while ctx.parent is not None: - ctx = ctx.parent - - if isinstance(ctx.command, MultiCommand) and ctx.command.chain: - results.extend( - CompletionItem(name, help=command.get_short_help_str()) - for name, command in _complete_visible_commands(ctx, incomplete) - if name not in ctx.protected_args - ) - - return results - - @typing.overload - def main( - self, - args: t.Optional[t.Sequence[str]] = None, - prog_name: t.Optional[str] = None, - complete_var: t.Optional[str] = None, - standalone_mode: "te.Literal[True]" = True, - **extra: t.Any, - ) -> "te.NoReturn": - ... - - @typing.overload - def main( - self, - args: t.Optional[t.Sequence[str]] = None, - prog_name: t.Optional[str] = None, - complete_var: t.Optional[str] = None, - standalone_mode: bool = ..., - **extra: t.Any, - ) -> t.Any: - ... - - def main( - self, - args: t.Optional[t.Sequence[str]] = None, - prog_name: t.Optional[str] = None, - complete_var: t.Optional[str] = None, - standalone_mode: bool = True, - windows_expand_args: bool = True, - **extra: t.Any, - ) -> t.Any: - """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`. - - :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 windows_expand_args: Expand glob patterns, user dir, and - env vars in command line args on Windows. - :param extra: extra keyword arguments are forwarded to the context - constructor. See :class:`Context` for more information. - - .. versionchanged:: 8.0.1 - Added the ``windows_expand_args`` parameter to allow - disabling command line arg expansion on Windows. - - .. versionchanged:: 8.0 - When taking arguments from ``sys.argv`` on Windows, glob - patterns, user dir, and env vars are expanded. - - .. versionchanged:: 3.0 - Added the ``standalone_mode`` parameter. - """ - # Verify that the environment is configured correctly, or reject - # further execution to avoid a broken script. - _verify_python_env() - - if args is None: - args = sys.argv[1:] - - if os.name == "nt" and windows_expand_args: - args = _expand_args(args) - else: - args = list(args) - - if prog_name is None: - prog_name = _detect_program_name() - - # Process shell completion requests and exit early. - self._main_shell_completion(extra, 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 OSError as e: - if e.errno == errno.EPIPE: - sys.stdout = t.cast(t.TextIO, PacifyFlushWrapper(sys.stdout)) - sys.stderr = t.cast(t.TextIO, 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 _main_shell_completion( - self, - ctx_args: t.Dict[str, t.Any], - prog_name: str, - complete_var: t.Optional[str] = None, - ) -> None: - """Check if the shell is asking for tab completion, process - that, then exit early. Called from :meth:`main` before the - program is invoked. - - :param prog_name: Name of the executable in the shell. - :param complete_var: Name of the environment variable that holds - the completion instruction. Defaults to - ``_{PROG_NAME}_COMPLETE``. - """ - if complete_var is None: - complete_var = f"_{prog_name}_COMPLETE".replace("-", "_").upper() - - instruction = os.environ.get(complete_var) - - if not instruction: - return - - from .shell_completion import shell_complete - - rv = shell_complete(self, ctx_args, prog_name, complete_var, instruction) - _fast_exit(rv) - - def __call__(self, *args: t.Any, **kwargs: t.Any) -> t.Any: - """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:: 8.0 - Added repr showing the command name - .. 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: t.Optional[str], - context_settings: t.Optional[t.Dict[str, t.Any]] = None, - callback: t.Optional[t.Callable[..., t.Any]] = None, - params: t.Optional[t.List["Parameter"]] = None, - help: t.Optional[str] = None, - epilog: t.Optional[str] = None, - short_help: t.Optional[str] = None, - options_metavar: t.Optional[str] = "[OPTIONS]", - add_help_option: bool = True, - no_args_is_help: bool = False, - hidden: bool = False, - deprecated: bool = False, - ) -> None: - super().__init__(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: t.List["Parameter"] = 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 to_info_dict(self, ctx: Context) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict(ctx) - info_dict.update( - params=[param.to_info_dict() for param in self.get_params(ctx)], - help=self.help, - epilog=self.epilog, - short_help=self.short_help, - hidden=self.hidden, - deprecated=self.deprecated, - ) - return info_dict - - def get_usage(self, ctx: Context) -> str: - """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: Context) -> t.List["Parameter"]: - 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: Context, formatter: HelpFormatter) -> None: - """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: Context) -> t.List[str]: - """Returns all the pieces that go into the usage line and returns - it as a list of strings. - """ - rv = [self.options_metavar] if self.options_metavar else [] - - for param in self.get_params(ctx): - rv.extend(param.get_usage_pieces(ctx)) - - return rv - - def get_help_option_names(self, ctx: Context) -> t.List[str]: - """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 list(all_names) - - def get_help_option(self, ctx: Context) -> t.Optional["Option"]: - """Returns the help option object.""" - help_options = self.get_help_option_names(ctx) - - if not help_options or not self.add_help_option: - return None - - def show_help(ctx: Context, param: "Parameter", value: str) -> None: - 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: Context) -> OptionParser: - """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: Context) -> str: - """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: int = 45) -> str: - """Gets short help for the command or makes it by shortening the - long help string. - """ - text = self.short_help or "" - - if not text and self.help: - text = make_default_short_help(self.help, limit) - - if self.deprecated: - text = _("(Deprecated) {text}").format(text=text) - - return text.strip() - - def format_help(self, ctx: Context, formatter: HelpFormatter) -> None: - """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: Context, formatter: HelpFormatter) -> None: - """Writes the help text to the formatter if it exists.""" - text = self.help or "" - - if self.deprecated: - text = _("(Deprecated) {text}").format(text=text) - - if text: - formatter.write_paragraph() - - with formatter.indentation(): - formatter.write_text(text) - - def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: - """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: Context, formatter: HelpFormatter) -> None: - """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: Context, args: t.List[str]) -> t.List[str]: - 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( - ngettext( - "Got unexpected extra argument ({args})", - "Got unexpected extra arguments ({args})", - len(args), - ).format(args=" ".join(map(str, args))) - ) - - ctx.args = args - return args - - def invoke(self, ctx: Context) -> t.Any: - """Given a context, this invokes the attached callback (if it exists) - in the right way. - """ - if self.deprecated: - message = _( - "DeprecationWarning: The command {name!r} is deprecated." - ).format(name=self.name) - echo(style(message, fg="red"), err=True) - - if self.callback is not None: - return ctx.invoke(self.callback, **ctx.params) - - def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: - """Return a list of completions for the incomplete value. Looks - at the names of options and chained multi-commands. - - :param ctx: Invocation context for this command. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - results: t.List["CompletionItem"] = [] - - if incomplete and not incomplete[0].isalnum(): - for param in self.get_params(ctx): - if ( - not isinstance(param, Option) - or param.hidden - or ( - not param.multiple - and ctx.get_parameter_source(param.name) # type: ignore - is ParameterSource.COMMANDLINE - ) - ): - continue - - results.extend( - CompletionItem(name, help=param.help) - for name in [*param.opts, *param.secondary_opts] - if name.startswith(incomplete) - ) - - results.extend(super().shell_complete(ctx, incomplete)) - return results - - -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. This can be set or changed later with the - :meth:`result_callback` decorator. - """ - - allow_extra_args = True - allow_interspersed_args = False - - def __init__( - self, - name: t.Optional[str] = None, - invoke_without_command: bool = False, - no_args_is_help: t.Optional[bool] = None, - subcommand_metavar: t.Optional[str] = None, - chain: bool = False, - result_callback: t.Optional[t.Callable[..., t.Any]] = None, - **attrs: t.Any, - ) -> None: - super().__init__(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 = "COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]..." - else: - subcommand_metavar = "COMMAND [ARGS]..." - - self.subcommand_metavar = subcommand_metavar - self.chain = chain - # The result callback that is stored. This can be set or - # overridden with the :func:`result_callback` 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 to_info_dict(self, ctx: Context) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict(ctx) - commands = {} - - for name in self.list_commands(ctx): - command = self.get_command(ctx, name) - - if command is None: - continue - - sub_ctx = ctx._make_sub_context(command) - - with sub_ctx.scope(cleanup=False): - commands[name] = command.to_info_dict(sub_ctx) - - info_dict.update(commands=commands, chain=self.chain) - return info_dict - - def collect_usage_pieces(self, ctx: Context) -> t.List[str]: - rv = super().collect_usage_pieces(ctx) - rv.append(self.subcommand_metavar) - return rv - - def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: - super().format_options(ctx, formatter) - self.format_commands(ctx, formatter) - - def result_callback(self, replace: bool = False) -> t.Callable[[F], F]: - """Adds a result callback to the 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.result_callback() - def process_result(result, input): - return result + input - - :param replace: if set to `True` an already existing result - callback will be removed. - - .. versionchanged:: 8.0 - Renamed from ``resultcallback``. - - .. versionadded:: 3.0 - """ - - def decorator(f: F) -> F: - old_callback = self._result_callback - - if old_callback is None or replace: - self._result_callback = f - return f - - def function(__value, *args, **kwargs): # type: ignore - inner = old_callback(__value, *args, **kwargs) # type: ignore - return f(inner, *args, **kwargs) - - self._result_callback = rv = update_wrapper(t.cast(F, function), f) - return rv - - return decorator - - def resultcallback(self, replace: bool = False) -> t.Callable[[F], F]: - import warnings - - warnings.warn( - "'resultcallback' has been renamed to 'result_callback'." - " The old name will be removed in Click 8.1.", - DeprecationWarning, - stacklevel=2, - ) - return self.result_callback(replace=replace) - - def format_commands(self, ctx: Context, formatter: HelpFormatter) -> None: - """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: Context, args: t.List[str]) -> t.List[str]: - if not args and self.no_args_is_help and not ctx.resilient_parsing: - echo(ctx.get_help(), color=ctx.color) - ctx.exit() - - rest = super().parse_args(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: Context) -> t.Any: - def _process_result(value: t.Any) -> t.Any: - if self._result_callback is not None: - value = ctx.invoke(self._result_callback, value, **ctx.params) - return value - - if not ctx.protected_args: - if self.invoke_without_command: - # No subcommand was invoked, so the result callback is - # invoked with None for regular groups, or an empty list - # for chained groups. - with ctx: - super().invoke(ctx) - return _process_result([] if self.chain else None) - 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) - assert cmd is not None - ctx.invoked_subcommand = cmd_name - super().invoke(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 - super().invoke(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) - assert cmd is not None - 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: Context, args: t.List[str] - ) -> t.Tuple[t.Optional[str], t.Optional[Command], t.List[str]]: - 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 {name!r}.").format(name=original_cmd_name)) - return cmd_name if cmd else None, cmd, args[1:] - - def get_command(self, ctx: Context, cmd_name: str) -> t.Optional[Command]: - """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: Context) -> t.List[str]: - """Returns a list of subcommand names in the order they should - appear. - """ - return [] - - def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: - """Return a list of completions for the incomplete value. Looks - at the names of options, subcommands, and chained - multi-commands. - - :param ctx: Invocation context for this command. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - results = [ - CompletionItem(name, help=command.get_short_help_str()) - for name, command in _complete_visible_commands(ctx, incomplete) - ] - results.extend(super().shell_complete(ctx, incomplete)) - return results - - -class Group(MultiCommand): - """A group allows a command to have subcommands attached. This is - the most common way to implement nesting in Click. - - :param name: The name of the group command. - :param commands: A dict mapping names to :class:`Command` objects. - Can also be a list of :class:`Command`, which will use - :attr:`Command.name` to create the dict. - :param attrs: Other command arguments described in - :class:`MultiCommand`, :class:`Command`, and - :class:`BaseCommand`. - - .. versionchanged:: 8.0 - The ``commmands`` argument can be a list of command objects. - """ - - #: If set, this is used by the group's :meth:`command` decorator - #: as the default :class:`Command` class. This is useful to make all - #: subcommands use a custom command class. - #: - #: .. versionadded:: 8.0 - command_class: t.Optional[t.Type[Command]] = None - - #: If set, this is used by the group's :meth:`group` decorator - #: as the default :class:`Group` class. This is useful to make all - #: subgroups use a custom group class. - #: - #: If set to the special value :class:`type` (literally - #: ``group_class = type``), this group's class will be used as the - #: default class. This makes a custom group class continue to make - #: custom groups. - #: - #: .. versionadded:: 8.0 - group_class: t.Optional[t.Union[t.Type["Group"], t.Type[type]]] = None - # Literal[type] isn't valid, so use Type[type] - - def __init__( - self, - name: t.Optional[str] = None, - commands: t.Optional[t.Union[t.Dict[str, Command], t.Sequence[Command]]] = None, - **attrs: t.Any, - ) -> None: - super().__init__(name, **attrs) - - if commands is None: - commands = {} - elif isinstance(commands, abc.Sequence): - commands = {c.name: c for c in commands if c.name is not None} - - #: The registered subcommands by their exported names. - self.commands: t.Dict[str, Command] = commands - - def add_command(self, cmd: Command, name: t.Optional[str] = None) -> 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: t.Any, **kwargs: t.Any - ) -> t.Callable[[t.Callable[..., t.Any]], Command]: - """A shortcut decorator for declaring and attaching a command to - the group. This takes the same arguments as :func:`command` and - immediately registers the created command with this group by - calling :meth:`add_command`. - - To customize the command class used, set the - :attr:`command_class` attribute. - - .. versionchanged:: 8.0 - Added the :attr:`command_class` attribute. - """ - from .decorators import command - - if self.command_class is not None and "cls" not in kwargs: - kwargs["cls"] = self.command_class - - def decorator(f: t.Callable[..., t.Any]) -> Command: - cmd = command(*args, **kwargs)(f) - self.add_command(cmd) - return cmd - - return decorator - - def group( - self, *args: t.Any, **kwargs: t.Any - ) -> t.Callable[[t.Callable[..., t.Any]], "Group"]: - """A shortcut decorator for declaring and attaching a group to - the group. This takes the same arguments as :func:`group` and - immediately registers the created group with this group by - calling :meth:`add_command`. - - To customize the group class used, set the :attr:`group_class` - attribute. - - .. versionchanged:: 8.0 - Added the :attr:`group_class` attribute. - """ - from .decorators import group - - if self.group_class is not None and "cls" not in kwargs: - if self.group_class is type: - kwargs["cls"] = type(self) - else: - kwargs["cls"] = self.group_class - - def decorator(f: t.Callable[..., t.Any]) -> "Group": - cmd = group(*args, **kwargs)(f) - self.add_command(cmd) - return cmd - - return decorator - - def get_command(self, ctx: Context, cmd_name: str) -> t.Optional[Command]: - return self.commands.get(cmd_name) - - def list_commands(self, ctx: Context) -> t.List[str]: - 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: t.Optional[str] = None, - sources: t.Optional[t.List[MultiCommand]] = None, - **attrs: t.Any, - ) -> None: - super().__init__(name, **attrs) - #: The list of registered multi commands. - self.sources: t.List[MultiCommand] = sources or [] - - def add_source(self, multi_cmd: MultiCommand) -> None: - """Adds a new multi command to the chain dispatcher.""" - self.sources.append(multi_cmd) - - def get_command(self, ctx: Context, cmd_name: str) -> t.Optional[Command]: - 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 - - return None - - def list_commands(self, ctx: Context) -> t.List[str]: - rv: t.Set[str] = set() - - for source in self.sources: - rv.update(source.list_commands(ctx)) - - return sorted(rv) - - -def _check_iter(value: t.Any) -> t.Iterator[t.Any]: - """Check if the value is iterable but not a string. Raises a type - error, or return an iterator over the value. - """ - if isinstance(value, str): - raise TypeError - - return iter(value) - - -class Parameter: - 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 function to further process or validate the value - after type conversion. It is called as ``f(ctx, param, value)`` - and must return the value. It is called for all sources, - including prompts. - :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). If ``nargs=-1``, all remaining - parameters are collected. - :param metavar: how the value is represented in the help page. - :param expose_value: if this is `True` then the value is passed onwards - to the command callback and stored on the context, - otherwise it's skipped. - :param is_eager: eager values are processed before non eager ones. This - should not be set for arguments or it will inverse the - order of processing. - :param envvar: a string or list of strings that are environment variables - that should be checked. - :param shell_complete: A function that returns custom shell - completions. Used instead of the param's type completion if - given. Takes ``ctx, param, incomplete`` and must return a list - of :class:`~click.shell_completion.CompletionItem` or a list of - strings. - - .. versionchanged:: 8.0 - ``process_value`` validates required parameters and bounded - ``nargs``, and invokes the parameter callback before returning - the value. This allows the callback to validate prompts. - ``full_process_value`` is removed. - - .. versionchanged:: 8.0 - ``autocompletion`` is renamed to ``shell_complete`` and has new - semantics described above. The old name is deprecated and will - be removed in 8.1, until then it will be wrapped to match the - new requirements. - - .. versionchanged:: 8.0 - For ``multiple=True, nargs>1``, the default must be a list of - tuples. - - .. versionchanged:: 8.0 - Setting a default is no longer required for ``nargs>1``, it will - default to ``None``. ``multiple=True`` or ``nargs=-1`` will - default to ``()``. - - .. 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: t.Optional[t.Sequence[str]] = None, - type: t.Optional[t.Union[types.ParamType, t.Any]] = None, - required: bool = False, - default: t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]] = None, - callback: t.Optional[t.Callable[[Context, "Parameter", t.Any], t.Any]] = None, - nargs: t.Optional[int] = None, - multiple: bool = False, - metavar: t.Optional[str] = None, - expose_value: bool = True, - is_eager: bool = False, - envvar: t.Optional[t.Union[str, t.Sequence[str]]] = None, - shell_complete: t.Optional[ - t.Callable[ - [Context, "Parameter", str], - t.Union[t.List["CompletionItem"], t.List[str]], - ] - ] = None, - autocompletion: t.Optional[ - t.Callable[ - [Context, t.List[str], str], t.List[t.Union[t.Tuple[str, str], str]] - ] - ] = None, - ) -> None: - self.name, self.opts, self.secondary_opts = self._parse_decls( - param_decls or (), expose_value - ) - self.type = types.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 = multiple - self.expose_value = expose_value - self.default = default - self.is_eager = is_eager - self.metavar = metavar - self.envvar = envvar - - if autocompletion is not None: - import warnings - - warnings.warn( - "'autocompletion' is renamed to 'shell_complete'. The old name is" - " deprecated and will be removed in Click 8.1. See the docs about" - " 'Parameter' for information about new behavior.", - DeprecationWarning, - stacklevel=2, - ) - - def shell_complete( - ctx: Context, param: "Parameter", incomplete: str - ) -> t.List["CompletionItem"]: - from click.shell_completion import CompletionItem - - out = [] - - for c in autocompletion(ctx, [], incomplete): # type: ignore - if isinstance(c, tuple): - c = CompletionItem(c[0], help=c[1]) - elif isinstance(c, str): - c = CompletionItem(c) - - if c.value.startswith(incomplete): - out.append(c) - - return out - - self._custom_shell_complete = shell_complete - - if __debug__: - if self.type.is_composite and nargs != self.type.arity: - raise ValueError( - f"'nargs' must be {self.type.arity} (or None) for" - f" type {self.type!r}, but it was {nargs}." - ) - - # Skip no default or callable default. - check_default = default if not callable(default) else None - - if check_default is not None: - if multiple: - try: - # Only check the first value against nargs. - check_default = next(_check_iter(check_default), None) - except TypeError: - raise ValueError( - "'default' must be a list when 'multiple' is true." - ) from None - - # Can be None for multiple with empty default. - if nargs != 1 and check_default is not None: - try: - _check_iter(check_default) - except TypeError: - if multiple: - message = ( - "'default' must be a list of lists when 'multiple' is" - " true and 'nargs' != 1." - ) - else: - message = "'default' must be a list when 'nargs' != 1." - - raise ValueError(message) from None - - if nargs > 1 and len(check_default) != nargs: - subject = "item length" if multiple else "length" - raise ValueError( - f"'default' {subject} must match nargs={nargs}." - ) - - def to_info_dict(self) -> t.Dict[str, t.Any]: - """Gather information that could be useful for a tool generating - user-facing documentation. - - Use :meth:`click.Context.to_info_dict` to traverse the entire - CLI structure. - - .. versionadded:: 8.0 - """ - return { - "name": self.name, - "param_type_name": self.param_type_name, - "opts": self.opts, - "secondary_opts": self.secondary_opts, - "type": self.type.to_info_dict(), - "required": self.required, - "nargs": self.nargs, - "multiple": self.multiple, - "default": self.default, - "envvar": self.envvar, - } - - def __repr__(self) -> str: - return f"<{self.__class__.__name__} {self.name}>" - - def _parse_decls( - self, decls: t.Sequence[str], expose_value: bool - ) -> t.Tuple[t.Optional[str], t.List[str], t.List[str]]: - raise NotImplementedError() - - @property - def human_readable_name(self) -> str: - """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 # type: ignore - - def make_metavar(self) -> str: - 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 - - @typing.overload - def get_default( - self, ctx: Context, call: "te.Literal[True]" = True - ) -> t.Optional[t.Any]: - ... - - @typing.overload - def get_default( - self, ctx: Context, call: bool = ... - ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: - ... - - def get_default( - self, ctx: Context, call: bool = True - ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: - """Get the default for the parameter. Tries - :meth:`Context.lookup_value` first, then the local default. - - :param ctx: Current context. - :param call: If the default is a callable, call it. Disable to - return the callable instead. - - .. versionchanged:: 8.0.1 - Type casting can fail in resilient parsing mode. Invalid - defaults will not prevent showing help text. - - .. versionchanged:: 8.0 - Looks at ``ctx.default_map`` first. - - .. versionchanged:: 8.0 - Added the ``call`` parameter. - """ - value = ctx.lookup_default(self.name, call=False) # type: ignore - - if value is None: - value = self.default - - if callable(value): - if not call: - # Don't type cast the callable. - return value - - value = value() - - try: - return self.type_cast_value(ctx, value) - except BadParameter: - if ctx.resilient_parsing: - return value - - raise - - def add_to_parser(self, parser: OptionParser, ctx: Context) -> None: - raise NotImplementedError() - - def consume_value( - self, ctx: Context, opts: t.Mapping[str, t.Any] - ) -> t.Tuple[t.Any, ParameterSource]: - value = opts.get(self.name) # type: ignore - source = ParameterSource.COMMANDLINE - - if value is None: - value = self.value_from_envvar(ctx) - source = ParameterSource.ENVIRONMENT - - if value is None: - value = ctx.lookup_default(self.name) # type: ignore - source = ParameterSource.DEFAULT_MAP - - if value is None: - value = self.get_default(ctx) - source = ParameterSource.DEFAULT - - return value, source - - def type_cast_value(self, ctx: Context, value: t.Any) -> t.Any: - """Convert and validate a value against the option's - :attr:`type`, :attr:`multiple`, and :attr:`nargs`. - """ - if value is None: - return () if self.multiple or self.nargs == -1 else None - - def check_iter(value: t.Any) -> t.Iterator: - try: - return _check_iter(value) - except TypeError: - # This should only happen when passing in args manually, - # the parser should construct an iterable when parsing - # the command line. - raise BadParameter( - _("Value must be an iterable."), ctx=ctx, param=self - ) from None - - if self.nargs == 1 or self.type.is_composite: - convert: t.Callable[[t.Any], t.Any] = partial( - self.type, param=self, ctx=ctx - ) - elif self.nargs == -1: - - def convert(value: t.Any) -> t.Tuple: - return tuple(self.type(x, self, ctx) for x in check_iter(value)) - - else: # nargs > 1 - - def convert(value: t.Any) -> t.Tuple: - value = tuple(check_iter(value)) - - if len(value) != self.nargs: - raise BadParameter( - ngettext( - "Takes {nargs} values but 1 was given.", - "Takes {nargs} values but {len} were given.", - len(value), - ).format(nargs=self.nargs, len=len(value)), - ctx=ctx, - param=self, - ) - - return tuple(self.type(x, self, ctx) for x in value) - - if self.multiple: - return tuple(convert(x) for x in check_iter(value)) - - return convert(value) - - def value_is_missing(self, value: t.Any) -> bool: - if value is None: - return True - - if (self.nargs != 1 or self.multiple) and value == (): - return True - - return False - - def process_value(self, ctx: Context, value: t.Any) -> t.Any: - if value is not None: - value = self.type_cast_value(ctx, value) - - if self.required and self.value_is_missing(value): - raise MissingParameter(ctx=ctx, param=self) - - if self.callback is not None: - value = self.callback(ctx, self, value) - - return value - - def resolve_envvar_value(self, ctx: Context) -> t.Optional[str]: - if self.envvar is None: - return None - - if isinstance(self.envvar, str): - rv = os.environ.get(self.envvar) - - if rv: - return rv - else: - for envvar in self.envvar: - rv = os.environ.get(envvar) - - if rv: - return rv - - return None - - def value_from_envvar(self, ctx: Context) -> t.Optional[t.Any]: - rv: t.Optional[t.Any] = 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: Context, opts: t.Mapping[str, t.Any], args: t.List[str] - ) -> t.Tuple[t.Any, t.List[str]]: - with augment_usage_errors(ctx, param=self): - value, source = self.consume_value(ctx, opts) - ctx.set_parameter_source(self.name, source) # type: ignore - - try: - value = self.process_value(ctx, value) - except Exception: - if not ctx.resilient_parsing: - raise - - value = None - - if self.expose_value: - ctx.params[self.name] = value # type: ignore - - return value, args - - def get_help_record(self, ctx: Context) -> t.Optional[t.Tuple[str, str]]: - pass - - def get_usage_pieces(self, ctx: Context) -> t.List[str]: - return [] - - def get_error_hint(self, ctx: Context) -> str: - """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(f"'{x}'" for x in hint_list) - - def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: - """Return a list of completions for the incomplete value. If a - ``shell_complete`` function was given during init, it is used. - Otherwise, the :attr:`type` - :meth:`~click.types.ParamType.shell_complete` function is used. - - :param ctx: Invocation context for this command. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - if self._custom_shell_complete is not None: - results = self._custom_shell_complete(ctx, self, incomplete) - - if results and isinstance(results[0], str): - from click.shell_completion import CompletionItem - - results = [CompletionItem(c) for c in results] - - return t.cast(t.List["CompletionItem"], results) - - return self.type.shell_complete(ctx, self, incomplete) - - -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: Prompt a second time to confirm the - value if it was prompted for. Can be set to a string instead of - ``True`` to customize the message. - :param prompt_required: If set to ``False``, the user will be - prompted for input only when the option was specified as a flag - without a value. - :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. - - .. versionchanged:: 8.0.1 - ``type`` is detected from ``flag_value`` if given. - """ - - param_type_name = "option" - - def __init__( - self, - param_decls: t.Optional[t.Sequence[str]] = None, - show_default: bool = False, - prompt: t.Union[bool, str] = False, - confirmation_prompt: t.Union[bool, str] = False, - prompt_required: bool = True, - hide_input: bool = False, - is_flag: t.Optional[bool] = None, - flag_value: t.Optional[t.Any] = None, - multiple: bool = False, - count: bool = False, - allow_from_autoenv: bool = True, - type: t.Optional[t.Union[types.ParamType, t.Any]] = None, - help: t.Optional[str] = None, - hidden: bool = False, - show_choices: bool = True, - show_envvar: bool = False, - **attrs: t.Any, - ) -> None: - default_is_missing = "default" not in attrs - super().__init__(param_decls, type=type, multiple=multiple, **attrs) - - if prompt is True: - if self.name is None: - raise TypeError("'name' is required with 'prompt=True'.") - - prompt_text: t.Optional[str] = self.name.replace("_", " ").capitalize() - elif prompt is False: - prompt_text = None - else: - prompt_text = t.cast(str, prompt) - - self.prompt = prompt_text - self.confirmation_prompt = confirmation_prompt - self.prompt_required = prompt_required - self.hide_input = hide_input - self.hidden = hidden - - # If prompt is enabled but not required, then the option can be - # used as a flag to indicate using prompt or flag_value. - self._flag_needs_value = self.prompt is not None and not self.prompt_required - - if is_flag is None: - if flag_value is not None: - # Implicitly a flag because flag_value was set. - is_flag = True - elif self._flag_needs_value: - # Not a flag, but when used as a flag it shows a prompt. - is_flag = False - else: - # Implicitly a flag because flag options were given. - is_flag = bool(self.secondary_opts) - elif is_flag is False and not self._flag_needs_value: - # Not a flag, and prompt is not enabled, can be used as a - # flag if flag_value is set. - self._flag_needs_value = flag_value is not None - - if is_flag and default_is_missing: - self.default: t.Union[t.Any, t.Callable[[], t.Any]] = False - - if flag_value is None: - flag_value = not self.default - - if is_flag and type is None: - # Re-guess the type from the flag value instead of the - # default. - self.type = types.convert_type(None, flag_value) - - self.is_flag: bool = is_flag - self.is_bool_flag = isinstance(self.type, types.BoolParamType) - self.flag_value: t.Any = flag_value - - # Counting - self.count = count - if count: - if type is None: - self.type = types.IntRange(min=0) - if default_is_missing: - self.default = 0 - - 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 - - if __debug__: - if self.nargs == -1: - raise TypeError("nargs=-1 is not supported for options.") - - if self.prompt and self.is_flag and not self.is_bool_flag: - raise TypeError("'prompt' is not valid for non-boolean flag.") - - if not self.is_bool_flag and self.secondary_opts: - raise TypeError("Secondary flag is not valid for non-boolean flag.") - - if self.is_bool_flag and self.hide_input and self.prompt is not None: - raise TypeError( - "'prompt' with 'hide_input' is not valid for boolean flag." - ) - - if self.count: - if self.multiple: - raise TypeError("'count' is not valid with 'multiple'.") - - if self.is_flag: - raise TypeError("'count' is not valid with 'is_flag'.") - - def to_info_dict(self) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict.update( - help=self.help, - prompt=self.prompt, - is_flag=self.is_flag, - flag_value=self.flag_value, - count=self.count, - hidden=self.hidden, - ) - return info_dict - - def _parse_decls( - self, decls: t.Sequence[str], expose_value: bool - ) -> t.Tuple[t.Optional[str], t.List[str], t.List[str]]: - opts = [] - secondary_opts = [] - name = None - possible_names = [] - - for decl in decls: - if decl.isidentifier(): - 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()) - if first == second: - raise ValueError( - f"Boolean option {decl!r} cannot use the" - " same flag for true/false." - ) - 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 name.isidentifier(): - 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( - f"No options defined but a name was passed ({name})." - " Did you mean to declare an argument instead? Did" - f" you mean to pass '--{name}'?" - ) - - return name, opts, secondary_opts - - def add_to_parser(self, parser: OptionParser, ctx: Context) -> None: - if self.multiple: - action = "append" - elif self.count: - action = "count" - else: - action = "store" - - if self.is_flag: - action = f"{action}_const" - - if self.is_bool_flag and self.secondary_opts: - parser.add_option( - obj=self, opts=self.opts, dest=self.name, action=action, const=True - ) - parser.add_option( - obj=self, - opts=self.secondary_opts, - dest=self.name, - action=action, - const=False, - ) - else: - parser.add_option( - obj=self, - opts=self.opts, - dest=self.name, - action=action, - const=self.flag_value, - ) - else: - parser.add_option( - obj=self, - opts=self.opts, - dest=self.name, - action=action, - nargs=self.nargs, - ) - - def get_help_record(self, ctx: Context) -> t.Optional[t.Tuple[str, str]]: - if self.hidden: - return None - - any_prefix_is_slash = False - - def _write_opts(opts: t.Sequence[str]) -> str: - nonlocal any_prefix_is_slash - - rv, any_slashes = join_options(opts) - - if any_slashes: - any_prefix_is_slash = True - - if not self.is_flag and not self.count: - rv += f" {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 - and self.name is not None - ): - envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" - - if envvar is not None: - var_str = ( - envvar - if isinstance(envvar, str) - else ", ".join(str(d) for d in envvar) - ) - extra.append(_("env var: {var}").format(var=var_str)) - - # Temporarily enable resilient parsing to avoid type casting - # failing for the default. Might be possible to extend this to - # help formatting in general. - resilient = ctx.resilient_parsing - ctx.resilient_parsing = True - - try: - default_value = self.get_default(ctx, call=False) - finally: - ctx.resilient_parsing = resilient - - show_default_is_str = isinstance(self.show_default, str) - - if show_default_is_str or ( - default_value is not None and (self.show_default or ctx.show_default) - ): - if show_default_is_str: - default_string = f"({self.show_default})" - elif isinstance(default_value, (list, tuple)): - default_string = ", ".join(str(d) for d in default_value) - elif callable(default_value): - default_string = _("(dynamic)") - elif self.is_bool_flag and self.secondary_opts: - # For boolean flags that have distinct True/False opts, - # use the opt without prefix instead of the value. - default_string = split_opt( - (self.opts if self.default else self.secondary_opts)[0] - )[1] - else: - default_string = str(default_value) - - extra.append(_("default: {default}").format(default=default_string)) - - if isinstance(self.type, types._NumberRangeBase): - range_str = self.type._describe_range() - - if range_str: - extra.append(range_str) - - if self.required: - extra.append(_("required")) - - if extra: - extra_str = ";".join(extra) - help = f"{help} [{extra_str}]" if help else f"[{extra_str}]" - - return ("; " if any_prefix_is_slash else " / ").join(rv), help - - @typing.overload - def get_default( - self, ctx: Context, call: "te.Literal[True]" = True - ) -> t.Optional[t.Any]: - ... - - @typing.overload - def get_default( - self, ctx: Context, call: bool = ... - ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: - ... - - def get_default( - self, ctx: Context, call: bool = True - ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: - # 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 # type: ignore - - return None - - return super().get_default(ctx, call=call) - - def prompt_for_value(self, ctx: Context) -> t.Any: - """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. - """ - assert self.prompt is not None - - # 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: Context) -> t.Optional[str]: - rv = super().resolve_envvar_value(ctx) - - if rv is not None: - return rv - - if ( - self.allow_from_autoenv - and ctx.auto_envvar_prefix is not None - and self.name is not None - ): - envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" - rv = os.environ.get(envvar) - - return rv - - def value_from_envvar(self, ctx: Context) -> t.Optional[t.Any]: - rv: t.Optional[t.Any] = self.resolve_envvar_value(ctx) - - if rv is None: - return None - - value_depth = (self.nargs != 1) + bool(self.multiple) - - if value_depth > 0: - rv = self.type.split_envvar_value(rv) - - if self.multiple and self.nargs != 1: - rv = batch(rv, self.nargs) - - return rv - - def consume_value( - self, ctx: Context, opts: t.Mapping[str, "Parameter"] - ) -> t.Tuple[t.Any, ParameterSource]: - value, source = super().consume_value(ctx, opts) - - # The parser will emit a sentinel value if the option can be - # given as a flag without a value. This is different from None - # to distinguish from the flag not being given at all. - if value is _flag_needs_value: - if self.prompt is not None and not ctx.resilient_parsing: - value = self.prompt_for_value(ctx) - source = ParameterSource.PROMPT - else: - value = self.flag_value - source = ParameterSource.COMMANDLINE - - # The value wasn't set, or used the param's default, prompt if - # prompting is enabled. - elif ( - source in {None, ParameterSource.DEFAULT} - and self.prompt is not None - and (self.required or self.prompt_required) - and not ctx.resilient_parsing - ): - value = self.prompt_for_value(ctx) - source = ParameterSource.PROMPT - - return value, source - - -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: t.Sequence[str], - required: t.Optional[bool] = None, - **attrs: t.Any, - ) -> None: - if required is None: - if attrs.get("default") is not None: - required = False - else: - required = attrs.get("nargs", 1) > 0 - - if "multiple" in attrs: - raise TypeError("__init__() got an unexpected keyword argument 'multiple'.") - - super().__init__(param_decls, required=required, **attrs) - - if __debug__: - if self.default is not None and self.nargs == -1: - raise TypeError("'default' is not supported for nargs=-1.") - - @property - def human_readable_name(self) -> str: - if self.metavar is not None: - return self.metavar - return self.name.upper() # type: ignore - - def make_metavar(self) -> str: - if self.metavar is not None: - return self.metavar - var = self.type.get_metavar(self) - if not var: - var = self.name.upper() # type: ignore - if not self.required: - var = f"[{var}]" - if self.nargs != 1: - var += "..." - return var - - def _parse_decls( - self, decls: t.Sequence[str], expose_value: bool - ) -> t.Tuple[t.Optional[str], t.List[str], t.List[str]]: - 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" - f" {len(decls)}." - ) - return name, [arg], [] - - def get_usage_pieces(self, ctx: Context) -> t.List[str]: - return [self.make_metavar()] - - def get_error_hint(self, ctx: Context) -> str: - return f"'{self.make_metavar()}'" - - def add_to_parser(self, parser: OptionParser, ctx: Context) -> None: - parser.add_argument(dest=self.name, nargs=self.nargs, obj=self) diff --git a/venv/lib/python3.9/site-packages/click/decorators.py b/venv/lib/python3.9/site-packages/click/decorators.py deleted file mode 100644 index 5940e69..0000000 --- a/venv/lib/python3.9/site-packages/click/decorators.py +++ /dev/null @@ -1,437 +0,0 @@ -import inspect -import types -import typing as t -from functools import update_wrapper -from gettext import gettext as _ - -from .core import Argument -from .core import Command -from .core import Context -from .core import Group -from .core import Option -from .core import Parameter -from .globals import get_current_context -from .utils import echo - -F = t.TypeVar("F", bound=t.Callable[..., t.Any]) -FC = t.TypeVar("FC", t.Callable[..., t.Any], Command) - - -def pass_context(f: F) -> F: - """Marks a callback as wanting to receive the current context - object as first argument. - """ - - def new_func(*args, **kwargs): # type: ignore - return f(get_current_context(), *args, **kwargs) - - return update_wrapper(t.cast(F, new_func), f) - - -def pass_obj(f: F) -> 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): # type: ignore - return f(get_current_context().obj, *args, **kwargs) - - return update_wrapper(t.cast(F, new_func), f) - - -def make_pass_decorator( - object_type: t.Type, ensure: bool = False -) -> "t.Callable[[F], F]": - """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: F) -> F: - def new_func(*args, **kwargs): # type: ignore - 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" - f" object of type {object_type.__name__!r}" - " existing." - ) - - return ctx.invoke(f, obj, *args, **kwargs) - - return update_wrapper(t.cast(F, new_func), f) - - return decorator - - -def pass_meta_key( - key: str, *, doc_description: t.Optional[str] = None -) -> "t.Callable[[F], F]": - """Create a decorator that passes a key from - :attr:`click.Context.meta` as the first argument to the decorated - function. - - :param key: Key in ``Context.meta`` to pass. - :param doc_description: Description of the object being passed, - inserted into the decorator's docstring. Defaults to "the 'key' - key from Context.meta". - - .. versionadded:: 8.0 - """ - - def decorator(f: F) -> F: - def new_func(*args, **kwargs): # type: ignore - ctx = get_current_context() - obj = ctx.meta[key] - return ctx.invoke(f, obj, *args, **kwargs) - - return update_wrapper(t.cast(F, new_func), f) - - if doc_description is None: - doc_description = f"the {key!r} key from :attr:`click.Context.meta`" - - decorator.__doc__ = ( - f"Decorator that passes {doc_description} as the first argument" - " to the decorated function." - ) - return decorator - - -def _make_command( - f: F, - name: t.Optional[str], - attrs: t.MutableMapping[str, t.Any], - cls: t.Type[Command], -) -> Command: - if isinstance(f, Command): - raise TypeError("Attempted to convert a callback into a command twice.") - - try: - params = f.__click_params__ # type: ignore - params.reverse() - del f.__click_params__ # type: ignore - except AttributeError: - params = [] - - help = attrs.get("help") - - if help is None: - help = inspect.getdoc(f) - else: - help = inspect.cleandoc(help) - - attrs["help"] = help - return cls( - name=name or f.__name__.lower().replace("_", "-"), - callback=f, - params=params, - **attrs, - ) - - -def command( - name: t.Optional[str] = None, - cls: t.Optional[t.Type[Command]] = None, - **attrs: t.Any, -) -> t.Callable[[F], Command]: - 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: t.Callable[..., t.Any]) -> Command: - cmd = _make_command(f, name, attrs, cls) # type: ignore - cmd.__doc__ = f.__doc__ - return cmd - - return decorator - - -def group(name: t.Optional[str] = None, **attrs: t.Any) -> t.Callable[[F], Group]: - """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 t.cast(Group, command(name, **attrs)) - - -def _param_memo(f: FC, param: Parameter) -> None: - if isinstance(f, Command): - f.params.append(param) - else: - if not hasattr(f, "__click_params__"): - f.__click_params__ = [] # type: ignore - - f.__click_params__.append(param) # type: ignore - - -def argument(*param_decls: str, **attrs: t.Any) -> t.Callable[[FC], FC]: - """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: FC) -> FC: - ArgumentClass = attrs.pop("cls", Argument) - _param_memo(f, ArgumentClass(param_decls, **attrs)) - return f - - return decorator - - -def option(*param_decls: str, **attrs: t.Any) -> t.Callable[[FC], FC]: - """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: FC) -> FC: - # 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: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: - """Add a ``--yes`` option which shows a prompt before continuing if - not passed. If the prompt is declined, the program will exit. - - :param param_decls: One or more option names. Defaults to the single - value ``"--yes"``. - :param kwargs: Extra arguments are passed to :func:`option`. - """ - - def callback(ctx: Context, param: Parameter, value: bool) -> None: - if not value: - ctx.abort() - - if not param_decls: - param_decls = ("--yes",) - - kwargs.setdefault("is_flag", True) - kwargs.setdefault("callback", callback) - kwargs.setdefault("expose_value", False) - kwargs.setdefault("prompt", "Do you want to continue?") - kwargs.setdefault("help", "Confirm the action without prompting.") - return option(*param_decls, **kwargs) - - -def password_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: - """Add a ``--password`` option which prompts for a password, hiding - input and asking to enter the value again for confirmation. - - :param param_decls: One or more option names. Defaults to the single - value ``"--password"``. - :param kwargs: Extra arguments are passed to :func:`option`. - """ - if not param_decls: - param_decls = ("--password",) - - kwargs.setdefault("prompt", True) - kwargs.setdefault("confirmation_prompt", True) - kwargs.setdefault("hide_input", True) - return option(*param_decls, **kwargs) - - -def version_option( - version: t.Optional[str] = None, - *param_decls: str, - package_name: t.Optional[str] = None, - prog_name: t.Optional[str] = None, - message: t.Optional[str] = None, - **kwargs: t.Any, -) -> t.Callable[[FC], FC]: - """Add a ``--version`` option which immediately prints the version - number and exits the program. - - If ``version`` is not provided, Click will try to detect it using - :func:`importlib.metadata.version` to get the version for the - ``package_name``. On Python < 3.8, the ``importlib_metadata`` - backport must be installed. - - If ``package_name`` is not provided, Click will try to detect it by - inspecting the stack frames. This will be used to detect the - version, so it must match the name of the installed package. - - :param version: The version number to show. If not provided, Click - will try to detect it. - :param param_decls: One or more option names. Defaults to the single - value ``"--version"``. - :param package_name: The package name to detect the version from. If - not provided, Click will try to detect it. - :param prog_name: The name of the CLI to show in the message. If not - provided, it will be detected from the command. - :param message: The message to show. The values ``%(prog)s``, - ``%(package)s``, and ``%(version)s`` are available. Defaults to - ``"%(prog)s, version %(version)s"``. - :param kwargs: Extra arguments are passed to :func:`option`. - :raise RuntimeError: ``version`` could not be detected. - - .. versionchanged:: 8.0 - Add the ``package_name`` parameter, and the ``%(package)s`` - value for messages. - - .. versionchanged:: 8.0 - Use :mod:`importlib.metadata` instead of ``pkg_resources``. The - version is detected based on the package name, not the entry - point name. The Python package name must match the installed - package name, or be passed with ``package_name=``. - """ - if message is None: - message = _("%(prog)s, version %(version)s") - - if version is None and package_name is None: - frame = inspect.currentframe() - assert frame is not None - assert frame.f_back is not None - f_globals = frame.f_back.f_globals if frame is not None else None - # break reference cycle - # https://docs.python.org/3/library/inspect.html#the-interpreter-stack - del frame - - if f_globals is not None: - package_name = f_globals.get("__name__") - - if package_name == "__main__": - package_name = f_globals.get("__package__") - - if package_name: - package_name = package_name.partition(".")[0] - - def callback(ctx: Context, param: Parameter, value: bool) -> None: - if not value or ctx.resilient_parsing: - return - - nonlocal prog_name - nonlocal version - - if prog_name is None: - prog_name = ctx.find_root().info_name - - if version is None and package_name is not None: - metadata: t.Optional[types.ModuleType] - - try: - from importlib import metadata # type: ignore - except ImportError: - # Python < 3.8 - import importlib_metadata as metadata # type: ignore - - try: - version = metadata.version(package_name) # type: ignore - except metadata.PackageNotFoundError: # type: ignore - raise RuntimeError( - f"{package_name!r} is not installed. Try passing" - " 'package_name' instead." - ) - - if version is None: - raise RuntimeError( - f"Could not determine the version for {package_name!r} automatically." - ) - - echo( - t.cast(str, message) - % {"prog": prog_name, "package": package_name, "version": version}, - color=ctx.color, - ) - ctx.exit() - - if not param_decls: - param_decls = ("--version",) - - kwargs.setdefault("is_flag", True) - kwargs.setdefault("expose_value", False) - kwargs.setdefault("is_eager", True) - kwargs.setdefault("help", _("Show the version and exit.")) - kwargs["callback"] = callback - return option(*param_decls, **kwargs) - - -def help_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: - """Add a ``--help`` option which immediately prints the help page - and exits the program. - - This is usually unnecessary, as the ``--help`` option is added to - each command automatically unless ``add_help_option=False`` is - passed. - - :param param_decls: One or more option names. Defaults to the single - value ``"--help"``. - :param kwargs: Extra arguments are passed to :func:`option`. - """ - - def callback(ctx: Context, param: Parameter, value: bool) -> None: - if not value or ctx.resilient_parsing: - return - - echo(ctx.get_help(), color=ctx.color) - ctx.exit() - - if not param_decls: - param_decls = ("--help",) - - kwargs.setdefault("is_flag", True) - kwargs.setdefault("expose_value", False) - kwargs.setdefault("is_eager", True) - kwargs.setdefault("help", _("Show this message and exit.")) - kwargs["callback"] = callback - return option(*param_decls, **kwargs) diff --git a/venv/lib/python3.9/site-packages/click/exceptions.py b/venv/lib/python3.9/site-packages/click/exceptions.py deleted file mode 100644 index 9e20b3e..0000000 --- a/venv/lib/python3.9/site-packages/click/exceptions.py +++ /dev/null @@ -1,287 +0,0 @@ -import os -import typing as t -from gettext import gettext as _ -from gettext import ngettext - -from ._compat import get_text_stderr -from .utils import echo - -if t.TYPE_CHECKING: - from .core import Context - from .core import Parameter - - -def _join_param_hints( - param_hint: t.Optional[t.Union[t.Sequence[str], str]] -) -> t.Optional[str]: - if param_hint is not None and not isinstance(param_hint, str): - 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: str) -> None: - super().__init__(message) - self.message = message - - def format_message(self) -> str: - return self.message - - def __str__(self) -> str: - return self.message - - def show(self, file: t.Optional[t.IO] = None) -> None: - if file is None: - file = get_text_stderr() - - echo(_("Error: {message}").format(message=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: str, ctx: t.Optional["Context"] = None) -> None: - super().__init__(message) - self.ctx = ctx - self.cmd = self.ctx.command if self.ctx else None - - def show(self, file: t.Optional[t.IO] = None) -> None: - if file is None: - file = get_text_stderr() - color = None - hint = "" - if ( - self.ctx is not None - and self.ctx.command.get_help_option(self.ctx) is not None - ): - hint = _("Try '{command} {option}' for help.").format( - command=self.ctx.command_path, option=self.ctx.help_option_names[0] - ) - hint = f"{hint}\n" - if self.ctx is not None: - color = self.ctx.color - echo(f"{self.ctx.get_usage()}\n{hint}", file=file, color=color) - echo( - _("Error: {message}").format(message=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: str, - ctx: t.Optional["Context"] = None, - param: t.Optional["Parameter"] = None, - param_hint: t.Optional[str] = None, - ) -> None: - super().__init__(message, ctx) - self.param = param - self.param_hint = param_hint - - def format_message(self) -> str: - 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) # type: ignore - else: - return _("Invalid value: {message}").format(message=self.message) - - return _("Invalid value for {param_hint}: {message}").format( - param_hint=_join_param_hints(param_hint), message=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: t.Optional[str] = None, - ctx: t.Optional["Context"] = None, - param: t.Optional["Parameter"] = None, - param_hint: t.Optional[str] = None, - param_type: t.Optional[str] = None, - ) -> None: - super().__init__(message or "", ctx, param, param_hint) - self.param_type = param_type - - def format_message(self) -> str: - if self.param_hint is not None: - param_hint: t.Optional[str] = self.param_hint - elif self.param is not None: - param_hint = self.param.get_error_hint(self.ctx) # type: ignore - else: - param_hint = None - - param_hint = _join_param_hints(param_hint) - param_hint = f" {param_hint}" if param_hint else "" - - 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 += f". {msg_extra}" - else: - msg = msg_extra - - msg = f" {msg}" if msg else "" - - # Translate param_type for known types. - if param_type == "argument": - missing = _("Missing argument") - elif param_type == "option": - missing = _("Missing option") - elif param_type == "parameter": - missing = _("Missing parameter") - else: - missing = _("Missing {param_type}").format(param_type=param_type) - - return f"{missing}{param_hint}.{msg}" - - def __str__(self) -> str: - if not self.message: - param_name = self.param.name if self.param else None - return _("Missing parameter: {param_name}").format(param_name=param_name) - else: - return self.message - - -class NoSuchOption(UsageError): - """Raised if click attempted to handle an option that does not - exist. - - .. versionadded:: 4.0 - """ - - def __init__( - self, - option_name: str, - message: t.Optional[str] = None, - possibilities: t.Optional[t.Sequence[str]] = None, - ctx: t.Optional["Context"] = None, - ) -> None: - if message is None: - message = _("No such option: {name}").format(name=option_name) - - super().__init__(message, ctx) - self.option_name = option_name - self.possibilities = possibilities - - def format_message(self) -> str: - if not self.possibilities: - return self.message - - possibility_str = ", ".join(sorted(self.possibilities)) - suggest = ngettext( - "Did you mean {possibility}?", - "(Possible options: {possibilities})", - len(self.possibilities), - ).format(possibility=possibility_str, possibilities=possibility_str) - return f"{self.message} {suggest}" - - -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: str, message: str, ctx: t.Optional["Context"] = None - ) -> None: - super().__init__(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 - """ - - -class FileError(ClickException): - """Raised if a file cannot be opened.""" - - def __init__(self, filename: str, hint: t.Optional[str] = None) -> None: - if hint is None: - hint = _("unknown error") - - super().__init__(hint) - self.ui_filename = os.fsdecode(filename) - self.filename = filename - - def format_message(self) -> str: - return _("Could not open file {filename!r}: {message}").format( - filename=self.ui_filename, message=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: int = 0) -> None: - self.exit_code = code diff --git a/venv/lib/python3.9/site-packages/click/formatting.py b/venv/lib/python3.9/site-packages/click/formatting.py deleted file mode 100644 index ddd2a2f..0000000 --- a/venv/lib/python3.9/site-packages/click/formatting.py +++ /dev/null @@ -1,301 +0,0 @@ -import typing as t -from contextlib import contextmanager -from gettext import gettext as _ - -from ._compat import term_len -from .parser import split_opt - -# Can force a width. This is used by the test system -FORCED_WIDTH: t.Optional[int] = None - - -def measure_table(rows: t.Iterable[t.Tuple[str, str]]) -> t.Tuple[int, ...]: - widths: t.Dict[int, int] = {} - - 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: t.Iterable[t.Tuple[str, str]], col_count: int -) -> t.Iterator[t.Tuple[str, ...]]: - for row in rows: - yield row + ("",) * (col_count - len(row)) - - -def wrap_text( - text: str, - width: int = 78, - initial_indent: str = "", - subsequent_indent: str = "", - preserve_paragraphs: bool = False, -) -> str: - """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: t.List[t.Tuple[int, bool, str]] = [] - buf: t.List[str] = [] - indent = None - - def _flush_par() -> None: - 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: - """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: int = 2, - width: t.Optional[int] = None, - max_width: t.Optional[int] = None, - ) -> None: - import shutil - - 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(shutil.get_terminal_size().columns, max_width) - 2, 50) - self.width = width - self.current_indent = 0 - self.buffer: t.List[str] = [] - - def write(self, string: str) -> None: - """Writes a unicode string into the internal buffer.""" - self.buffer.append(string) - - def indent(self) -> None: - """Increases the indentation.""" - self.current_indent += self.indent_increment - - def dedent(self) -> None: - """Decreases the indentation.""" - self.current_indent -= self.indent_increment - - def write_usage( - self, prog: str, args: str = "", prefix: t.Optional[str] = None - ) -> None: - """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. Defaults to - ``"Usage: "``. - """ - if prefix is None: - prefix = f"{_('Usage:')} " - - usage_prefix = f"{prefix:>{self.current_indent}}{prog} " - text_width = self.width - self.current_indent - - if text_width >= (term_len(usage_prefix) + 20): - # The arguments will fit to the right of the prefix. - indent = " " * term_len(usage_prefix) - self.write( - wrap_text( - args, - text_width, - initial_indent=usage_prefix, - subsequent_indent=indent, - ) - ) - else: - # The prefix is too long, put the arguments on the next line. - self.write(usage_prefix) - self.write("\n") - indent = " " * (max(self.current_indent, term_len(prefix)) + 4) - self.write( - wrap_text( - args, text_width, initial_indent=indent, subsequent_indent=indent - ) - ) - - self.write("\n") - - def write_heading(self, heading: str) -> None: - """Writes a heading into the buffer.""" - self.write(f"{'':>{self.current_indent}}{heading}:\n") - - def write_paragraph(self) -> None: - """Writes a paragraph into the buffer.""" - if self.buffer: - self.write("\n") - - def write_text(self, text: str) -> None: - """Writes re-indented text into the buffer. This rewraps and - preserves paragraphs. - """ - indent = " " * self.current_indent - self.write( - wrap_text( - text, - self.width, - initial_indent=indent, - subsequent_indent=indent, - preserve_paragraphs=True, - ) - ) - self.write("\n") - - def write_dl( - self, - rows: t.Sequence[t.Tuple[str, str]], - col_max: int = 30, - col_spacing: int = 2, - ) -> None: - """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(f"{'':>{self.current_indent}}{first}") - if not second: - self.write("\n") - continue - if term_len(first) <= first_col - col_spacing: - self.write(" " * (first_col - term_len(first))) - else: - self.write("\n") - self.write(" " * (first_col + self.current_indent)) - - text_width = max(self.width - first_col - 2, 10) - wrapped_text = wrap_text(second, text_width, preserve_paragraphs=True) - lines = wrapped_text.splitlines() - - if lines: - self.write(f"{lines[0]}\n") - - for line in lines[1:]: - self.write(f"{'':>{first_col + self.current_indent}}{line}\n") - else: - self.write("\n") - - @contextmanager - def section(self, name: str) -> t.Iterator[None]: - """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) -> t.Iterator[None]: - """A context manager that increases the indentation.""" - self.indent() - try: - yield - finally: - self.dedent() - - def getvalue(self) -> str: - """Returns the buffer contents.""" - return "".join(self.buffer) - - -def join_options(options: t.Sequence[str]) -> t.Tuple[str, bool]: - """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]) - return ", ".join(x[1] for x in rv), any_prefix_is_slash diff --git a/venv/lib/python3.9/site-packages/click/globals.py b/venv/lib/python3.9/site-packages/click/globals.py deleted file mode 100644 index cfcade1..0000000 --- a/venv/lib/python3.9/site-packages/click/globals.py +++ /dev/null @@ -1,69 +0,0 @@ -import typing -import typing as t -from threading import local - -if t.TYPE_CHECKING: - import typing_extensions as te - from .core import Context - -_local = local() - - -@typing.overload -def get_current_context(silent: "te.Literal[False]" = False) -> "Context": - ... - - -@typing.overload -def get_current_context(silent: bool = ...) -> t.Optional["Context"]: - ... - - -def get_current_context(silent: bool = False) -> t.Optional["Context"]: - """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 t.cast("Context", _local.stack[-1]) - except (AttributeError, IndexError): - if not silent: - raise RuntimeError("There is no active click context.") - - return None - - -def push_context(ctx: "Context") -> None: - """Pushes a new context to the current stack.""" - _local.__dict__.setdefault("stack", []).append(ctx) - - -def pop_context() -> None: - """Removes the top level from the stack.""" - _local.stack.pop() - - -def resolve_color_default(color: t.Optional[bool] = None) -> t.Optional[bool]: - """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 - - return None diff --git a/venv/lib/python3.9/site-packages/click/parser.py b/venv/lib/python3.9/site-packages/click/parser.py deleted file mode 100644 index 7d995f7..0000000 --- a/venv/lib/python3.9/site-packages/click/parser.py +++ /dev/null @@ -1,529 +0,0 @@ -""" -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. -""" -# This code uses parts of optparse written by Gregory P. Ward and -# maintained by the Python Software Foundation. -# Copyright 2001-2006 Gregory P. Ward -# Copyright 2002-2006 Python Software Foundation -import typing as t -from collections import deque -from gettext import gettext as _ -from gettext import ngettext - -from .exceptions import BadArgumentUsage -from .exceptions import BadOptionUsage -from .exceptions import NoSuchOption -from .exceptions import UsageError - -if t.TYPE_CHECKING: - import typing_extensions as te - from .core import Argument as CoreArgument - from .core import Context - from .core import Option as CoreOption - from .core import Parameter as CoreParameter - -V = t.TypeVar("V") - -# Sentinel value that indicates an option was passed as a flag without a -# value but is not a flag option. Option.consume_value uses this to -# prompt or use the flag_value. -_flag_needs_value = object() - - -def _unpack_args( - args: t.Sequence[str], nargs_spec: t.Sequence[int] -) -> t.Tuple[t.Sequence[t.Union[str, t.Sequence[t.Optional[str]], None]], t.List[str]]: - """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: t.List[t.Union[str, t.Tuple[t.Optional[str], ...], None]] = [] - spos: t.Optional[int] = None - - def _fetch(c: "te.Deque[V]") -> t.Optional[V]: - 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 is None: - continue - - 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 split_opt(opt: str) -> t.Tuple[str, str]: - 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: str, ctx: t.Optional["Context"]) -> str: - if ctx is None or ctx.token_normalize_func is None: - return opt - prefix, opt = split_opt(opt) - return f"{prefix}{ctx.token_normalize_func(opt)}" - - -def split_arg_string(string: str) -> t.List[str]: - """Split an argument string as with :func:`shlex.split`, but don't - fail if the string is incomplete. Ignores a missing closing quote or - incomplete escape sequence and uses the partial token as-is. - - .. code-block:: python - - split_arg_string("example 'my file") - ["example", "my file"] - - split_arg_string("example my\\") - ["example", "my"] - - :param string: String to split. - """ - import shlex - - lex = shlex.shlex(string, posix=True) - lex.whitespace_split = True - lex.commenters = "" - out = [] - - try: - for token in lex: - out.append(token) - except ValueError: - # Raised when end-of-string is reached in an invalid state. Use - # the partial token as-is. The quote or escape character is in - # lex.state, not lex.token. - out.append(lex.token) - - return out - - -class Option: - def __init__( - self, - obj: "CoreOption", - opts: t.Sequence[str], - dest: t.Optional[str], - action: t.Optional[str] = None, - nargs: int = 1, - const: t.Optional[t.Any] = None, - ): - self._short_opts = [] - self._long_opts = [] - self.prefixes = set() - - for opt in opts: - prefix, value = split_opt(opt) - if not prefix: - raise ValueError(f"Invalid start character for option ({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) -> bool: - return self.action in ("store", "append") - - def process(self, value: str, state: "ParsingState") -> None: - if self.action == "store": - state.opts[self.dest] = value # type: ignore - elif self.action == "store_const": - state.opts[self.dest] = self.const # type: ignore - elif self.action == "append": - state.opts.setdefault(self.dest, []).append(value) # type: ignore - elif self.action == "append_const": - state.opts.setdefault(self.dest, []).append(self.const) # type: ignore - elif self.action == "count": - state.opts[self.dest] = state.opts.get(self.dest, 0) + 1 # type: ignore - else: - raise ValueError(f"unknown action '{self.action}'") - state.order.append(self.obj) - - -class Argument: - def __init__(self, obj: "CoreArgument", dest: t.Optional[str], nargs: int = 1): - self.dest = dest - self.nargs = nargs - self.obj = obj - - def process( - self, - value: t.Union[t.Optional[str], t.Sequence[t.Optional[str]]], - state: "ParsingState", - ) -> None: - if self.nargs > 1: - assert value is not None - holes = sum(1 for x in value if x is None) - if holes == len(value): - value = None - elif holes != 0: - raise BadArgumentUsage( - _("Argument {name!r} takes {nargs} values.").format( - name=self.dest, nargs=self.nargs - ) - ) - - if self.nargs == -1 and self.obj.envvar is not None and value == (): - # Replace empty tuple with None so that a value from the - # environment may be tried. - value = None - - state.opts[self.dest] = value # type: ignore - state.order.append(self.obj) - - -class ParsingState: - def __init__(self, rargs: t.List[str]) -> None: - self.opts: t.Dict[str, t.Any] = {} - self.largs: t.List[str] = [] - self.rargs = rargs - self.order: t.List["CoreParameter"] = [] - - -class OptionParser: - """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: t.Optional["Context"] = None) -> 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: t.Dict[str, Option] = {} - self._long_opt: t.Dict[str, Option] = {} - self._opt_prefixes = {"-", "--"} - self._args: t.List[Argument] = [] - - def add_option( - self, - obj: "CoreOption", - opts: t.Sequence[str], - dest: t.Optional[str], - action: t.Optional[str] = None, - nargs: int = 1, - const: t.Optional[t.Any] = None, - ) -> 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. - """ - opts = [normalize_opt(opt, self.ctx) for opt in opts] - option = Option(obj, opts, dest, action=action, nargs=nargs, const=const) - 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, obj: "CoreArgument", dest: t.Optional[str], nargs: int = 1 - ) -> 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. - """ - self._args.append(Argument(obj, dest=dest, nargs=nargs)) - - def parse_args( - self, args: t.List[str] - ) -> t.Tuple[t.Dict[str, t.Any], t.List[str], t.List["CoreParameter"]]: - """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: ParsingState) -> None: - 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: ParsingState) -> None: - 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: str, explicit_value: t.Optional[str], state: ParsingState - ) -> None: - if opt not in self._long_opt: - from difflib import get_close_matches - - possibilities = get_close_matches(opt, self._long_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) - - value = self._get_value_from_state(opt, option, state) - - elif explicit_value is not None: - raise BadOptionUsage( - opt, _("Option {name!r} does not take a value.").format(name=opt) - ) - - else: - value = None - - option.process(value, state) - - def _match_short_opt(self, arg: str, state: ParsingState) -> None: - stop = False - i = 1 - prefix = arg[0] - unknown_options = [] - - for ch in arg[1:]: - opt = normalize_opt(f"{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 - - value = self._get_value_from_state(opt, option, state) - - 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(f"{prefix}{''.join(unknown_options)}") - - def _get_value_from_state( - self, option_name: str, option: Option, state: ParsingState - ) -> t.Any: - nargs = option.nargs - - if len(state.rargs) < nargs: - if option.obj._flag_needs_value: - # Option allows omitting the value. - value = _flag_needs_value - else: - raise BadOptionUsage( - option_name, - ngettext( - "Option {name!r} requires an argument.", - "Option {name!r} requires {nargs} arguments.", - nargs, - ).format(name=option_name, nargs=nargs), - ) - elif nargs == 1: - next_rarg = state.rargs[0] - - if ( - option.obj._flag_needs_value - and isinstance(next_rarg, str) - and next_rarg[:1] in self._opt_prefixes - and len(next_rarg) > 1 - ): - # The next arg looks like the start of an option, don't - # use it as the value if omitting the value is allowed. - value = _flag_needs_value - else: - value = state.rargs.pop(0) - else: - value = tuple(state.rargs[:nargs]) - del state.rargs[:nargs] - - return value - - def _process_opts(self, arg: str, state: ParsingState) -> None: - 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: - self._match_short_opt(arg, state) - return - - if not self.ignore_unknown_options: - raise - - state.largs.append(arg) diff --git a/venv/lib/python3.9/site-packages/click/py.typed b/venv/lib/python3.9/site-packages/click/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.9/site-packages/click/shell_completion.py b/venv/lib/python3.9/site-packages/click/shell_completion.py deleted file mode 100644 index 706fb69..0000000 --- a/venv/lib/python3.9/site-packages/click/shell_completion.py +++ /dev/null @@ -1,574 +0,0 @@ -import os -import re -import typing as t -from gettext import gettext as _ - -from .core import Argument -from .core import BaseCommand -from .core import Context -from .core import MultiCommand -from .core import Option -from .core import Parameter -from .core import ParameterSource -from .parser import split_arg_string -from .utils import echo - - -def shell_complete( - cli: BaseCommand, - ctx_args: t.Dict[str, t.Any], - prog_name: str, - complete_var: str, - instruction: str, -) -> int: - """Perform shell completion for the given CLI program. - - :param cli: Command being called. - :param ctx_args: Extra arguments to pass to - ``cli.make_context``. - :param prog_name: Name of the executable in the shell. - :param complete_var: Name of the environment variable that holds - the completion instruction. - :param instruction: Value of ``complete_var`` with the completion - instruction and shell, in the form ``instruction_shell``. - :return: Status code to exit with. - """ - shell, _, instruction = instruction.partition("_") - comp_cls = get_completion_class(shell) - - if comp_cls is None: - return 1 - - comp = comp_cls(cli, ctx_args, prog_name, complete_var) - - if instruction == "source": - echo(comp.source()) - return 0 - - if instruction == "complete": - echo(comp.complete()) - return 0 - - return 1 - - -class CompletionItem: - """Represents a completion value and metadata about the value. The - default metadata is ``type`` to indicate special shell handling, - and ``help`` if a shell supports showing a help string next to the - value. - - Arbitrary parameters can be passed when creating the object, and - accessed using ``item.attr``. If an attribute wasn't passed, - accessing it returns ``None``. - - :param value: The completion suggestion. - :param type: Tells the shell script to provide special completion - support for the type. Click uses ``"dir"`` and ``"file"``. - :param help: String shown next to the value if supported. - :param kwargs: Arbitrary metadata. The built-in implementations - don't use this, but custom type completions paired with custom - shell support could use it. - """ - - __slots__ = ("value", "type", "help", "_info") - - def __init__( - self, - value: t.Any, - type: str = "plain", - help: t.Optional[str] = None, - **kwargs: t.Any, - ) -> None: - self.value = value - self.type = type - self.help = help - self._info = kwargs - - def __getattr__(self, name: str) -> t.Any: - return self._info.get(name) - - -# Only Bash >= 4.4 has the nosort option. -_SOURCE_BASH = """\ -%(complete_func)s() { - local IFS=$'\\n' - local response - - response=$(env COMP_WORDS="${COMP_WORDS[*]}" COMP_CWORD=$COMP_CWORD \ -%(complete_var)s=bash_complete $1) - - for completion in $response; do - IFS=',' read type value <<< "$completion" - - if [[ $type == 'dir' ]]; then - COMREPLY=() - compopt -o dirnames - elif [[ $type == 'file' ]]; then - COMREPLY=() - compopt -o default - elif [[ $type == 'plain' ]]; then - COMPREPLY+=($value) - fi - done - - return 0 -} - -%(complete_func)s_setup() { - complete -o nosort -F %(complete_func)s %(prog_name)s -} - -%(complete_func)s_setup; -""" - -_SOURCE_ZSH = """\ -#compdef %(prog_name)s - -%(complete_func)s() { - local -a completions - local -a completions_with_descriptions - local -a response - (( ! $+commands[%(prog_name)s] )) && return 1 - - response=("${(@f)$(env COMP_WORDS="${words[*]}" COMP_CWORD=$((CURRENT-1)) \ -%(complete_var)s=zsh_complete %(prog_name)s)}") - - for type key descr in ${response}; do - if [[ "$type" == "plain" ]]; then - if [[ "$descr" == "_" ]]; then - completions+=("$key") - else - completions_with_descriptions+=("$key":"$descr") - fi - elif [[ "$type" == "dir" ]]; then - _path_files -/ - elif [[ "$type" == "file" ]]; then - _path_files -f - 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 -} - -compdef %(complete_func)s %(prog_name)s; -""" - -_SOURCE_FISH = """\ -function %(complete_func)s; - set -l response; - - for value in (env %(complete_var)s=fish_complete COMP_WORDS=(commandline -cp) \ -COMP_CWORD=(commandline -t) %(prog_name)s); - set response $response $value; - end; - - for completion in $response; - set -l metadata (string split "," $completion); - - if test $metadata[1] = "dir"; - __fish_complete_directories $metadata[2]; - else if test $metadata[1] = "file"; - __fish_complete_path $metadata[2]; - else if test $metadata[1] = "plain"; - echo $metadata[2]; - end; - end; -end; - -complete --no-files --command %(prog_name)s --arguments \ -"(%(complete_func)s)"; -""" - - -class ShellComplete: - """Base class for providing shell completion support. A subclass for - a given shell will override attributes and methods to implement the - completion instructions (``source`` and ``complete``). - - :param cli: Command being called. - :param prog_name: Name of the executable in the shell. - :param complete_var: Name of the environment variable that holds - the completion instruction. - - .. versionadded:: 8.0 - """ - - name: t.ClassVar[str] - """Name to register the shell as with :func:`add_completion_class`. - This is used in completion instructions (``{name}_source`` and - ``{name}_complete``). - """ - - source_template: t.ClassVar[str] - """Completion script template formatted by :meth:`source`. This must - be provided by subclasses. - """ - - def __init__( - self, - cli: BaseCommand, - ctx_args: t.Dict[str, t.Any], - prog_name: str, - complete_var: str, - ) -> None: - self.cli = cli - self.ctx_args = ctx_args - self.prog_name = prog_name - self.complete_var = complete_var - - @property - def func_name(self) -> str: - """The name of the shell function defined by the completion - script. - """ - safe_name = re.sub(r"\W*", "", self.prog_name.replace("-", "_"), re.ASCII) - return f"_{safe_name}_completion" - - def source_vars(self) -> t.Dict[str, t.Any]: - """Vars for formatting :attr:`source_template`. - - By default this provides ``complete_func``, ``complete_var``, - and ``prog_name``. - """ - return { - "complete_func": self.func_name, - "complete_var": self.complete_var, - "prog_name": self.prog_name, - } - - def source(self) -> str: - """Produce the shell script that defines the completion - function. By default this ``%``-style formats - :attr:`source_template` with the dict returned by - :meth:`source_vars`. - """ - return self.source_template % self.source_vars() - - def get_completion_args(self) -> t.Tuple[t.List[str], str]: - """Use the env vars defined by the shell script to return a - tuple of ``args, incomplete``. This must be implemented by - subclasses. - """ - raise NotImplementedError - - def get_completions( - self, args: t.List[str], incomplete: str - ) -> t.List[CompletionItem]: - """Determine the context and last complete command or parameter - from the complete args. Call that object's ``shell_complete`` - method to get the completions for the incomplete value. - - :param args: List of complete args before the incomplete value. - :param incomplete: Value being completed. May be empty. - """ - ctx = _resolve_context(self.cli, self.ctx_args, self.prog_name, args) - obj, incomplete = _resolve_incomplete(ctx, args, incomplete) - return obj.shell_complete(ctx, incomplete) - - def format_completion(self, item: CompletionItem) -> str: - """Format a completion item into the form recognized by the - shell script. This must be implemented by subclasses. - - :param item: Completion item to format. - """ - raise NotImplementedError - - def complete(self) -> str: - """Produce the completion data to send back to the shell. - - By default this calls :meth:`get_completion_args`, gets the - completions, then calls :meth:`format_completion` for each - completion. - """ - args, incomplete = self.get_completion_args() - completions = self.get_completions(args, incomplete) - out = [self.format_completion(item) for item in completions] - return "\n".join(out) - - -class BashComplete(ShellComplete): - """Shell completion for Bash.""" - - name = "bash" - source_template = _SOURCE_BASH - - def _check_version(self) -> None: - import subprocess - - output = subprocess.run(["bash", "--version"], stdout=subprocess.PIPE) - match = re.search(r"version (\d)\.(\d)\.\d", output.stdout.decode()) - - if match is not None: - major, minor = match.groups() - - if major < "4" or major == "4" and minor < "4": - raise RuntimeError( - _( - "Shell completion is not supported for Bash" - " versions older than 4.4." - ) - ) - else: - raise RuntimeError( - _("Couldn't detect Bash version, shell completion is not supported.") - ) - - def source(self) -> str: - self._check_version() - return super().source() - - def get_completion_args(self) -> t.Tuple[t.List[str], str]: - 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 = "" - - return args, incomplete - - def format_completion(self, item: CompletionItem) -> str: - return f"{item.type},{item.value}" - - -class ZshComplete(ShellComplete): - """Shell completion for Zsh.""" - - name = "zsh" - source_template = _SOURCE_ZSH - - def get_completion_args(self) -> t.Tuple[t.List[str], str]: - 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 = "" - - return args, incomplete - - def format_completion(self, item: CompletionItem) -> str: - return f"{item.type}\n{item.value}\n{item.help if item.help else '_'}" - - -class FishComplete(ShellComplete): - """Shell completion for Fish.""" - - name = "fish" - source_template = _SOURCE_FISH - - def get_completion_args(self) -> t.Tuple[t.List[str], str]: - cwords = split_arg_string(os.environ["COMP_WORDS"]) - incomplete = os.environ["COMP_CWORD"] - args = cwords[1:] - - # Fish stores the partial word in both COMP_WORDS and - # COMP_CWORD, remove it from complete args. - if incomplete and args and args[-1] == incomplete: - args.pop() - - return args, incomplete - - def format_completion(self, item: CompletionItem) -> str: - if item.help: - return f"{item.type},{item.value}\t{item.help}" - - return f"{item.type},{item.value}" - - -_available_shells: t.Dict[str, t.Type[ShellComplete]] = { - "bash": BashComplete, - "fish": FishComplete, - "zsh": ZshComplete, -} - - -def add_completion_class( - cls: t.Type[ShellComplete], name: t.Optional[str] = None -) -> None: - """Register a :class:`ShellComplete` subclass under the given name. - The name will be provided by the completion instruction environment - variable during completion. - - :param cls: The completion class that will handle completion for the - shell. - :param name: Name to register the class under. Defaults to the - class's ``name`` attribute. - """ - if name is None: - name = cls.name - - _available_shells[name] = cls - - -def get_completion_class(shell: str) -> t.Optional[t.Type[ShellComplete]]: - """Look up a registered :class:`ShellComplete` subclass by the name - provided by the completion instruction environment variable. If the - name isn't registered, returns ``None``. - - :param shell: Name the class is registered under. - """ - return _available_shells.get(shell) - - -def _is_incomplete_argument(ctx: Context, param: Parameter) -> bool: - """Determine if the given parameter is an argument that can still - accept values. - - :param ctx: Invocation context for the command represented by the - parsed complete args. - :param param: Argument object being checked. - """ - if not isinstance(param, Argument): - return False - - assert param.name is not None - value = ctx.params[param.name] - return ( - param.nargs == -1 - or ctx.get_parameter_source(param.name) is not ParameterSource.COMMANDLINE - or ( - param.nargs > 1 - and isinstance(value, (tuple, list)) - and len(value) < param.nargs - ) - ) - - -def _start_of_option(value: str) -> bool: - """Check if the value looks like the start of an option.""" - return not value[0].isalnum() if value else False - - -def _is_incomplete_option(args: t.List[str], param: Parameter) -> bool: - """Determine if the given parameter is an option that needs a value. - - :param args: List of complete args before the incomplete value. - :param param: Option object being checked. - """ - if not isinstance(param, Option): - return False - - if param.is_flag: - return False - - last_option = None - - for index, arg in enumerate(reversed(args)): - if index + 1 > param.nargs: - break - - if _start_of_option(arg): - last_option = arg - - return last_option is not None and last_option in param.opts - - -def _resolve_context( - cli: BaseCommand, ctx_args: t.Dict[str, t.Any], prog_name: str, args: t.List[str] -) -> Context: - """Produce the context hierarchy starting with the command and - traversing the complete arguments. This only follows the commands, - it doesn't trigger input prompts or callbacks. - - :param cli: Command being called. - :param prog_name: Name of the executable in the shell. - :param args: List of complete args before the incomplete value. - """ - ctx_args["resilient_parsing"] = True - ctx = cli.make_context(prog_name, args.copy(), **ctx_args) - args = ctx.protected_args + ctx.args - - while args: - command = ctx.command - - if isinstance(command, MultiCommand): - if not command.chain: - name, cmd, args = command.resolve_command(ctx, args) - - if cmd is None: - return ctx - - ctx = cmd.make_context(name, args, parent=ctx, resilient_parsing=True) - args = ctx.protected_args + ctx.args - else: - while args: - name, cmd, args = command.resolve_command(ctx, args) - - if cmd is None: - return ctx - - sub_ctx = cmd.make_context( - 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 _resolve_incomplete( - ctx: Context, args: t.List[str], incomplete: str -) -> t.Tuple[t.Union[BaseCommand, Parameter], str]: - """Find the Click object that will handle the completion of the - incomplete value. Return the object and the incomplete value. - - :param ctx: Invocation context for the command represented by - the parsed complete args. - :param args: List of complete args before the incomplete value. - :param incomplete: Value being completed. May be empty. - """ - # Different shells treat an "=" between a long option name and - # value differently. Might keep the value joined, return the "=" - # as a separate item, or return the split name and value. Always - # split and discard the "=" to make completion easier. - if incomplete == "=": - incomplete = "" - elif "=" in incomplete and _start_of_option(incomplete): - name, _, incomplete = incomplete.partition("=") - args.append(name) - - # The "--" marker tells Click to stop treating values as options - # even if they start with the option character. If it hasn't been - # given and the incomplete arg looks like an option, the current - # command will provide option name completions. - if "--" not in args and _start_of_option(incomplete): - return ctx.command, incomplete - - params = ctx.command.get_params(ctx) - - # If the last complete arg is an option name with an incomplete - # value, the option will provide value completions. - for param in params: - if _is_incomplete_option(args, param): - return param, incomplete - - # It's not an option name or value. The first argument without a - # parsed value will provide value completions. - for param in params: - if _is_incomplete_argument(ctx, param): - return param, incomplete - - # There were no unparsed arguments, the command may be a group that - # will provide command name completions. - return ctx.command, incomplete diff --git a/venv/lib/python3.9/site-packages/click/termui.py b/venv/lib/python3.9/site-packages/click/termui.py deleted file mode 100644 index 034fe6e..0000000 --- a/venv/lib/python3.9/site-packages/click/termui.py +++ /dev/null @@ -1,807 +0,0 @@ -import inspect -import io -import itertools -import os -import sys -import typing -import typing as t -from gettext import gettext as _ - -from ._compat import isatty -from ._compat import strip_ansi -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 ParamType -from .utils import echo -from .utils import LazyFile - -if t.TYPE_CHECKING: - from ._termui_impl import ProgressBar - -V = t.TypeVar("V") - -# The prompt functions to use. The doc tools currently override these -# functions to customize how they work. -visible_prompt_func: t.Callable[[str], str] = 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: str) -> str: - import getpass - - return getpass.getpass(prompt) - - -def _build_prompt( - text: str, - suffix: str, - show_default: bool = False, - default: t.Optional[t.Any] = None, - show_choices: bool = True, - type: t.Optional[ParamType] = None, -) -> str: - prompt = text - if type is not None and show_choices and isinstance(type, Choice): - prompt += f" ({', '.join(map(str, type.choices))})" - if default is not None and show_default: - prompt = f"{prompt} [{_format_default(default)}]" - return f"{prompt}{suffix}" - - -def _format_default(default: t.Any) -> t.Any: - if isinstance(default, (io.IOBase, LazyFile)) and hasattr(default, "name"): - return default.name # type: ignore - - return default - - -def prompt( - text: str, - default: t.Optional[t.Any] = None, - hide_input: bool = False, - confirmation_prompt: t.Union[bool, str] = False, - type: t.Optional[ParamType] = None, - value_proc: t.Optional[t.Callable[[str], t.Any]] = None, - prompt_suffix: str = ": ", - show_default: bool = True, - err: bool = False, - show_choices: bool = True, -) -> t.Any: - """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. - - :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: Prompt a second time to confirm the - value. Can be set to a string instead of ``True`` to customize - the message. - :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): ". - - .. versionadded:: 8.0 - ``confirmation_prompt`` can be a custom string. - - .. 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. - - """ - - def prompt_func(text: str) -> str: - 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.rstrip(" "), nl=False, err=err) - # Echo a space to stdout to work around an issue where - # readline causes backspace to clear the whole line. - 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 - ) - - if confirmation_prompt: - if confirmation_prompt is True: - confirmation_prompt = _("Repeat for confirmation") - - confirmation_prompt = t.cast(str, confirmation_prompt) - confirmation_prompt = _build_prompt(confirmation_prompt, prompt_suffix) - - while True: - while True: - value = prompt_func(prompt) - if value: - break - elif default is not None: - value = default - break - try: - result = value_proc(value) - except UsageError as e: - if hide_input: - echo(_("Error: The value you entered was invalid."), err=err) - else: - echo(_("Error: {e.message}").format(e=e), err=err) # noqa: B306 - continue - if not confirmation_prompt: - return result - while True: - confirmation_prompt = t.cast(str, confirmation_prompt) - value2 = prompt_func(confirmation_prompt) - if value2: - break - if value == value2: - return result - echo(_("Error: The two entered values do not match."), err=err) - - -def confirm( - text: str, - default: t.Optional[bool] = False, - abort: bool = False, - prompt_suffix: str = ": ", - show_default: bool = True, - err: bool = False, -) -> bool: - """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. - - :param text: the question to ask. - :param default: The default value to use when no input is given. If - ``None``, repeat until input is given. - :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. - - .. versionchanged:: 8.0 - Repeat until input is given if ``default`` is ``None``. - - .. versionadded:: 4.0 - Added the ``err`` parameter. - """ - prompt = _build_prompt( - text, - prompt_suffix, - show_default, - "y/n" if default is None else ("Y/n" if default else "y/N"), - ) - - while True: - 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 default is not None and 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() -> os.terminal_size: - """Returns the current size of the terminal as tuple in the form - ``(width, height)`` in columns and rows. - - .. deprecated:: 8.0 - Will be removed in Click 8.1. Use - :func:`shutil.get_terminal_size` instead. - """ - import shutil - import warnings - - warnings.warn( - "'click.get_terminal_size()' is deprecated and will be removed" - " in Click 8.1. Use 'shutil.get_terminal_size()' instead.", - DeprecationWarning, - stacklevel=2, - ) - return shutil.get_terminal_size() - - -def echo_via_pager( - text_or_generator: t.Union[t.Iterable[str], t.Callable[[], t.Iterable[str]], str], - color: t.Optional[bool] = None, -) -> 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 = t.cast(t.Callable[[], t.Iterable[str]], text_or_generator)() - elif isinstance(text_or_generator, str): - i = [text_or_generator] - else: - i = iter(t.cast(t.Iterable[str], text_or_generator)) - - # convert every element of i to a text type if necessary - text_generator = (el if isinstance(el, str) else str(el) for el in i) - - from ._termui_impl import pager - - return pager(itertools.chain(text_generator, "\n"), color) - - -def progressbar( - iterable: t.Optional[t.Iterable[V]] = None, - length: t.Optional[int] = None, - label: t.Optional[str] = None, - show_eta: bool = True, - show_percent: t.Optional[bool] = None, - show_pos: bool = False, - item_show_func: t.Optional[t.Callable[[t.Optional[V]], t.Optional[str]]] = None, - fill_char: str = "#", - empty_char: str = "-", - bar_template: str = "%(label)s [%(bar)s] %(info)s", - info_sep: str = " ", - width: int = 36, - file: t.Optional[t.TextIO] = None, - color: t.Optional[bool] = None, - update_min_steps: int = 1, -) -> "ProgressBar[V]": - """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) - - The ``update()`` method also takes an optional value specifying the - ``current_item`` at the new position. This is useful when used - together with ``item_show_func`` to customize the output for each - manual step:: - - with click.progressbar( - length=total_size, - label='Unzipping archive', - item_show_func=lambda a: a.filename - ) as bar: - for archive in zip_file: - archive.extract() - bar.update(archive.size, archive) - - :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 next to the progress bar. If the - function returns ``None`` nothing is shown. The current item can - be ``None``, such as when entering and exiting the bar. - :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. - :param update_min_steps: Render only when this many updates have - completed. This allows tuning for very fast iterators. - - .. versionchanged:: 8.0 - Output is shown even if execution time is less than 0.5 seconds. - - .. versionchanged:: 8.0 - ``item_show_func`` shows the current item, not the previous one. - - .. versionchanged:: 8.0 - Labels are echoed if the output is not a TTY. Reverts a change - in 7.0 that removed all output. - - .. versionadded:: 8.0 - Added the ``update_min_steps`` parameter. - - .. versionchanged:: 4.0 - Added the ``color`` parameter. Added the ``update`` method to - the object. - - .. versionadded:: 2.0 - """ - 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, - update_min_steps=update_min_steps, - ) - - -def clear() -> None: - """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 WIN: - os.system("cls") - else: - sys.stdout.write("\033[2J\033[1;1H") - - -def _interpret_color( - color: t.Union[int, t.Tuple[int, int, int], str], offset: int = 0 -) -> str: - if isinstance(color, int): - return f"{38 + offset};5;{color:d}" - - if isinstance(color, (tuple, list)): - r, g, b = color - return f"{38 + offset};2;{r:d};{g:d};{b:d}" - - return str(_ansi_colors[color] + offset) - - -def style( - text: t.Any, - fg: t.Optional[t.Union[int, t.Tuple[int, int, int], str]] = None, - bg: t.Optional[t.Union[int, t.Tuple[int, int, int], str]] = None, - bold: t.Optional[bool] = None, - dim: t.Optional[bool] = None, - underline: t.Optional[bool] = None, - overline: t.Optional[bool] = None, - italic: t.Optional[bool] = None, - blink: t.Optional[bool] = None, - reverse: t.Optional[bool] = None, - strikethrough: t.Optional[bool] = None, - reset: bool = True, -) -> str: - """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')) - click.echo(click.style('More colors', fg=(255, 12, 128), bg=117)) - - 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) - - If the terminal supports it, color may also be specified as: - - - An integer in the interval [0, 255]. The terminal must support - 8-bit/256-color mode. - - An RGB tuple of three integers in [0, 255]. The terminal must - support 24-bit/true-color mode. - - See https://en.wikipedia.org/wiki/ANSI_color and - https://gist.github.com/XVilka/8346728 for more information. - - :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 overline: if provided this will enable or disable overline. - :param italic: if provided this will enable or disable italic. - :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 strikethrough: if provided this will enable or disable - striking through text. - :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. - - .. versionchanged:: 8.0 - A non-string ``message`` is converted to a string. - - .. versionchanged:: 8.0 - Added support for 256 and RGB color codes. - - .. versionchanged:: 8.0 - Added the ``strikethrough``, ``italic``, and ``overline`` - parameters. - - .. versionchanged:: 7.0 - Added support for bright colors. - - .. versionadded:: 2.0 - """ - if not isinstance(text, str): - text = str(text) - - bits = [] - - if fg: - try: - bits.append(f"\033[{_interpret_color(fg)}m") - except KeyError: - raise TypeError(f"Unknown color {fg!r}") - - if bg: - try: - bits.append(f"\033[{_interpret_color(bg, 10)}m") - except KeyError: - raise TypeError(f"Unknown color {bg!r}") - - if bold is not None: - bits.append(f"\033[{1 if bold else 22}m") - if dim is not None: - bits.append(f"\033[{2 if dim else 22}m") - if underline is not None: - bits.append(f"\033[{4 if underline else 24}m") - if overline is not None: - bits.append(f"\033[{53 if underline else 55}m") - if italic is not None: - bits.append(f"\033[{5 if underline else 23}m") - if blink is not None: - bits.append(f"\033[{5 if blink else 25}m") - if reverse is not None: - bits.append(f"\033[{7 if reverse else 27}m") - if strikethrough is not None: - bits.append(f"\033[{9 if strikethrough else 29}m") - bits.append(text) - if reset: - bits.append(_ansi_reset_all) - return "".join(bits) - - -def unstyle(text: str) -> str: - """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: t.Optional[t.Any] = None, - file: t.Optional[t.IO] = None, - nl: bool = True, - err: bool = False, - color: t.Optional[bool] = None, - **styles: t.Any, -) -> None: - """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. - - Non-string types will be converted to :class:`str`. However, - :class:`bytes` are passed directly to :meth:`echo` without applying - style. If you want to style bytes that represent text, call - :meth:`bytes.decode` first. - - .. versionchanged:: 8.0 - A non-string ``message`` is converted to a string. Bytes are - passed through without style applied. - - .. versionadded:: 2.0 - """ - if message is not None and not isinstance(message, (bytes, bytearray)): - message = style(message, **styles) - - return echo(message, file=file, nl=nl, err=err, color=color) - - -def edit( - text: t.Optional[t.AnyStr] = None, - editor: t.Optional[str] = None, - env: t.Optional[t.Mapping[str, str]] = None, - require_save: bool = True, - extension: str = ".txt", - filename: t.Optional[str] = None, -) -> t.Optional[t.AnyStr]: - 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 - - ed = Editor(editor=editor, env=env, require_save=require_save, extension=extension) - - if filename is None: - return ed.edit(text) - - ed.edit_file(filename) - return None - - -def launch(url: str, wait: bool = False, locate: bool = False) -> int: - """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: Wait for the program to exit before returning. This - only works if the launched program blocks. In particular, - ``xdg-open`` on Linux does not block. - :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: t.Optional[t.Callable[[bool], str]] = None - - -def getchar(echo: bool = False) -> str: - """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. - """ - global _getchar - - if _getchar is None: - from ._termui_impl import getchar as f - - _getchar = f - - return _getchar(echo) - - -def raw_terminal() -> t.ContextManager[int]: - from ._termui_impl import raw_terminal as f - - return f() - - -def pause(info: t.Optional[str] = None, err: bool = False) -> None: - """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 message to print before pausing. Defaults to - ``"Press any key to continue..."``. - :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 - - if info is None: - info = _("Press any key to continue...") - - try: - if info: - echo(info, nl=False, err=err) - try: - getchar() - except (KeyboardInterrupt, EOFError): - pass - finally: - if info: - echo(err=err) diff --git a/venv/lib/python3.9/site-packages/click/testing.py b/venv/lib/python3.9/site-packages/click/testing.py deleted file mode 100644 index d19b850..0000000 --- a/venv/lib/python3.9/site-packages/click/testing.py +++ /dev/null @@ -1,479 +0,0 @@ -import contextlib -import io -import os -import shlex -import shutil -import sys -import tempfile -import typing as t -from types import TracebackType - -from . import formatting -from . import termui -from . import utils -from ._compat import _find_binary_reader - -if t.TYPE_CHECKING: - from .core import BaseCommand - - -class EchoingStdin: - def __init__(self, input: t.BinaryIO, output: t.BinaryIO) -> None: - self._input = input - self._output = output - self._paused = False - - def __getattr__(self, x: str) -> t.Any: - return getattr(self._input, x) - - def _echo(self, rv: bytes) -> bytes: - if not self._paused: - self._output.write(rv) - - return rv - - def read(self, n: int = -1) -> bytes: - return self._echo(self._input.read(n)) - - def read1(self, n: int = -1) -> bytes: - return self._echo(self._input.read1(n)) # type: ignore - - def readline(self, n: int = -1) -> bytes: - return self._echo(self._input.readline(n)) - - def readlines(self) -> t.List[bytes]: - return [self._echo(x) for x in self._input.readlines()] - - def __iter__(self) -> t.Iterator[bytes]: - return iter(self._echo(x) for x in self._input) - - def __repr__(self) -> str: - return repr(self._input) - - -@contextlib.contextmanager -def _pause_echo(stream: t.Optional[EchoingStdin]) -> t.Iterator[None]: - if stream is None: - yield - else: - stream._paused = True - yield - stream._paused = False - - -class _NamedTextIOWrapper(io.TextIOWrapper): - def __init__( - self, buffer: t.BinaryIO, name: str, mode: str, **kwargs: t.Any - ) -> None: - super().__init__(buffer, **kwargs) - self._name = name - self._mode = mode - - @property - def name(self) -> str: - return self._name - - @property - def mode(self) -> str: - return self._mode - - -def make_input_stream( - input: t.Optional[t.Union[str, bytes, t.IO]], charset: str -) -> t.BinaryIO: - # Is already an input stream. - if hasattr(input, "read"): - rv = _find_binary_reader(t.cast(t.IO, 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 isinstance(input, str): - input = input.encode(charset) - - return io.BytesIO(t.cast(bytes, input)) - - -class Result: - """Holds the captured result of an invoked CLI script.""" - - def __init__( - self, - runner: "CliRunner", - stdout_bytes: bytes, - stderr_bytes: t.Optional[bytes], - return_value: t.Any, - exit_code: int, - exception: t.Optional[BaseException], - exc_info: t.Optional[ - t.Tuple[t.Type[BaseException], BaseException, TracebackType] - ] = 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 value returned from the invoked command. - #: - #: .. versionadded:: 8.0 - self.return_value = return_value - #: 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) -> str: - """The (standard) output as unicode string.""" - return self.stdout - - @property - def stdout(self) -> str: - """The standard output as unicode string.""" - return self.stdout_bytes.decode(self.runner.charset, "replace").replace( - "\r\n", "\n" - ) - - @property - def stderr(self) -> str: - """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) -> str: - exc_str = repr(self.exception) if self.exception else "okay" - return f"<{type(self).__name__} {exc_str}>" - - -class CliRunner: - """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. - :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: str = "utf-8", - env: t.Optional[t.Mapping[str, t.Optional[str]]] = None, - echo_stdin: bool = False, - mix_stderr: bool = True, - ) -> None: - self.charset = charset - self.env = env or {} - self.echo_stdin = echo_stdin - self.mix_stderr = mix_stderr - - def get_default_prog_name(self, cli: "BaseCommand") -> str: - """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: t.Optional[t.Mapping[str, t.Optional[str]]] = None - ) -> t.Mapping[str, t.Optional[str]]: - """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: t.Optional[t.Union[str, bytes, t.IO]] = None, - env: t.Optional[t.Mapping[str, t.Optional[str]]] = None, - color: bool = False, - ) -> t.Iterator[t.Tuple[io.BytesIO, t.Optional[io.BytesIO]]]: - """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. - - :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. - - .. versionchanged:: 8.0 - ``stderr`` is opened with ``errors="backslashreplace"`` - instead of the default ``"strict"``. - - .. versionchanged:: 4.0 - Added the ``color`` parameter. - """ - bytes_input = make_input_stream(input, self.charset) - echo_input = None - - 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) - - bytes_output = io.BytesIO() - - if self.echo_stdin: - bytes_input = echo_input = t.cast( - t.BinaryIO, EchoingStdin(bytes_input, bytes_output) - ) - - sys.stdin = text_input = _NamedTextIOWrapper( - bytes_input, encoding=self.charset, name="", mode="r" - ) - - if self.echo_stdin: - # Force unbuffered reads, otherwise TextIOWrapper reads a - # large chunk which is echoed early. - text_input._CHUNK_SIZE = 1 # type: ignore - - sys.stdout = _NamedTextIOWrapper( - bytes_output, encoding=self.charset, name="", mode="w" - ) - - bytes_error = None - if self.mix_stderr: - sys.stderr = sys.stdout - else: - bytes_error = io.BytesIO() - sys.stderr = _NamedTextIOWrapper( - bytes_error, - encoding=self.charset, - name="", - mode="w", - errors="backslashreplace", - ) - - @_pause_echo(echo_input) # type: ignore - def visible_input(prompt: t.Optional[str] = None) -> str: - sys.stdout.write(prompt or "") - val = text_input.readline().rstrip("\r\n") - sys.stdout.write(f"{val}\n") - sys.stdout.flush() - return val - - @_pause_echo(echo_input) # type: ignore - def hidden_input(prompt: t.Optional[str] = None) -> str: - sys.stdout.write(f"{prompt or ''}\n") - sys.stdout.flush() - return text_input.readline().rstrip("\r\n") - - @_pause_echo(echo_input) # type: ignore - def _getchar(echo: bool) -> str: - char = sys.stdin.read(1) - - if echo: - sys.stdout.write(char) - - sys.stdout.flush() - return char - - default_color = color - - def should_strip_ansi( - stream: t.Optional[t.IO] = None, color: t.Optional[bool] = None - ) -> bool: - 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 # type: ignore - termui.visible_prompt_func = visible_input - termui.hidden_prompt_func = hidden_input - termui._getchar = _getchar - utils.should_strip_ansi = should_strip_ansi # type: ignore - - old_env = {} - try: - for key, value in env.items(): - 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, bytes_error) - finally: - for key, value in old_env.items(): - 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 # type: ignore - formatting.FORCED_WIDTH = old_forced_width - - def invoke( - self, - cli: "BaseCommand", - args: t.Optional[t.Union[str, t.Sequence[str]]] = None, - input: t.Optional[t.Union[str, bytes, t.IO]] = None, - env: t.Optional[t.Mapping[str, t.Optional[str]]] = None, - catch_exceptions: bool = True, - color: bool = False, - **extra: t.Any, - ) -> Result: - """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. - - :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. - - .. versionchanged:: 8.0 - The result object has the ``return_value`` attribute with - the value returned from the invoked command. - - .. versionchanged:: 4.0 - Added the ``color`` parameter. - - .. versionchanged:: 3.0 - Added the ``catch_exceptions`` parameter. - - .. versionchanged:: 3.0 - The result object has the ``exc_info`` attribute with the - traceback if available. - """ - exc_info = None - with self.isolation(input=input, env=env, color=color) as outstreams: - return_value = None - exception: t.Optional[BaseException] = None - exit_code = 0 - - if isinstance(args, str): - args = shlex.split(args) - - try: - prog_name = extra.pop("prog_name") - except KeyError: - prog_name = self.get_default_prog_name(cli) - - try: - return_value = cli.main(args=args or (), prog_name=prog_name, **extra) - except SystemExit as e: - exc_info = sys.exc_info() - e_code = t.cast(t.Optional[t.Union[int, t.Any]], e.code) - - if e_code is None: - e_code = 0 - - if e_code != 0: - exception = e - - if not isinstance(e_code, int): - sys.stdout.write(str(e_code)) - sys.stdout.write("\n") - e_code = 1 - - exit_code = e_code - - 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() # type: ignore - - return Result( - runner=self, - stdout_bytes=stdout, - stderr_bytes=stderr, - return_value=return_value, - exit_code=exit_code, - exception=exception, - exc_info=exc_info, # type: ignore - ) - - @contextlib.contextmanager - def isolated_filesystem( - self, temp_dir: t.Optional[t.Union[str, os.PathLike]] = None - ) -> t.Iterator[str]: - """A context manager that creates a temporary directory and - changes the current working directory to it. This isolates tests - that affect the contents of the CWD to prevent them from - interfering with each other. - - :param temp_dir: Create the temporary directory under this - directory. If given, the created directory is not removed - when exiting. - - .. versionchanged:: 8.0 - Added the ``temp_dir`` parameter. - """ - cwd = os.getcwd() - t = tempfile.mkdtemp(dir=temp_dir) - os.chdir(t) - - try: - yield t - finally: - os.chdir(cwd) - - if temp_dir is None: - try: - shutil.rmtree(t) - except OSError: # noqa: B014 - pass diff --git a/venv/lib/python3.9/site-packages/click/types.py b/venv/lib/python3.9/site-packages/click/types.py deleted file mode 100644 index 21f0e4f..0000000 --- a/venv/lib/python3.9/site-packages/click/types.py +++ /dev/null @@ -1,1052 +0,0 @@ -import os -import stat -import typing as t -from datetime import datetime -from gettext import gettext as _ -from gettext import ngettext - -from ._compat import _get_argv_encoding -from ._compat import get_filesystem_encoding -from ._compat import open_stream -from .exceptions import BadParameter -from .utils import LazyFile -from .utils import safecall - -if t.TYPE_CHECKING: - import typing_extensions as te - from .core import Context - from .core import Parameter - from .shell_completion import CompletionItem - - -class ParamType: - """Represents the type of a parameter. Validates and converts values - from the command line or Python into the correct type. - - To implement a custom type, subclass and implement at least the - following: - - - The :attr:`name` class attribute must be set. - - Calling an instance of the type with ``None`` must return - ``None``. This is already implemented by default. - - :meth:`convert` must convert string values to the correct type. - - :meth:`convert` must accept values that are already the correct - type. - - It must be able to convert a value if the ``ctx`` and ``param`` - arguments are ``None``. This can occur when converting prompt - input. - """ - - is_composite: t.ClassVar[bool] = False - arity: t.ClassVar[int] = 1 - - #: the descriptive name of this type - name: str - - #: 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: t.ClassVar[t.Optional[str]] = None - - def to_info_dict(self) -> t.Dict[str, t.Any]: - """Gather information that could be useful for a tool generating - user-facing documentation. - - Use :meth:`click.Context.to_info_dict` to traverse the entire - CLI structure. - - .. versionadded:: 8.0 - """ - # The class name without the "ParamType" suffix. - param_type = type(self).__name__.partition("ParamType")[0] - param_type = param_type.partition("ParameterType")[0] - return {"param_type": param_type, "name": self.name} - - def __call__( - self, - value: t.Any, - param: t.Optional["Parameter"] = None, - ctx: t.Optional["Context"] = None, - ) -> t.Any: - if value is not None: - return self.convert(value, param, ctx) - - def get_metavar(self, param: "Parameter") -> t.Optional[str]: - """Returns the metavar default for this param if it provides one.""" - - def get_missing_message(self, param: "Parameter") -> t.Optional[str]: - """Optionally might return extra information about a missing - parameter. - - .. versionadded:: 2.0 - """ - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - """Convert the value to the correct type. This is not called if - the value is ``None`` (the missing value). - - This must accept string values from the command line, as well as - values that are already the correct type. It may also convert - other compatible types. - - The ``param`` and ``ctx`` arguments may be ``None`` in certain - situations, such as when converting prompt input. - - If the value cannot be converted, call :meth:`fail` with a - descriptive message. - - :param value: The value to convert. - :param param: The parameter that is using this type to convert - its value. May be ``None``. - :param ctx: The current context that arrived at this value. May - be ``None``. - """ - return value - - def split_envvar_value(self, rv: str) -> t.Sequence[str]: - """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: str, - param: t.Optional["Parameter"] = None, - ctx: t.Optional["Context"] = None, - ) -> "t.NoReturn": - """Helper method to fail with an invalid value message.""" - raise BadParameter(message, ctx=ctx, param=param) - - def shell_complete( - self, ctx: "Context", param: "Parameter", incomplete: str - ) -> t.List["CompletionItem"]: - """Return a list of - :class:`~click.shell_completion.CompletionItem` objects for the - incomplete value. Most types do not provide completions, but - some do, and this allows custom types to provide custom - completions as well. - - :param ctx: Invocation context for this command. - :param param: The parameter that is requesting completion. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - return [] - - -class CompositeParamType(ParamType): - is_composite = True - - @property - def arity(self) -> int: # type: ignore - raise NotImplementedError() - - -class FuncParamType(ParamType): - def __init__(self, func: t.Callable[[t.Any], t.Any]) -> None: - self.name = func.__name__ - self.func = func - - def to_info_dict(self) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict["func"] = self.func - return info_dict - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - try: - return self.func(value) - except ValueError: - try: - value = str(value) - except UnicodeError: - value = value.decode("utf-8", "replace") - - self.fail(value, param, ctx) - - -class UnprocessedParamType(ParamType): - name = "text" - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - return value - - def __repr__(self) -> str: - return "UNPROCESSED" - - -class StringParamType(ParamType): - name = "text" - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - 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 str(value) - - def __repr__(self) -> str: - 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: t.Sequence[str], case_sensitive: bool = True) -> None: - self.choices = choices - self.case_sensitive = case_sensitive - - def to_info_dict(self) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict["choices"] = self.choices - info_dict["case_sensitive"] = self.case_sensitive - return info_dict - - def get_metavar(self, param: "Parameter") -> str: - choices_str = "|".join(self.choices) - - # Use curly braces to indicate a required argument. - if param.required and param.param_type_name == "argument": - return f"{{{choices_str}}}" - - # Use square braces to indicate an option or optional argument. - return f"[{choices_str}]" - - def get_missing_message(self, param: "Parameter") -> str: - return _("Choose from:\n\t{choices}").format(choices=",\n\t".join(self.choices)) - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - # 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: - normed_value = normed_value.casefold() - normed_choices = { - normed_choice.casefold(): original - for normed_choice, original in normed_choices.items() - } - - if normed_value in normed_choices: - return normed_choices[normed_value] - - choices_str = ", ".join(map(repr, self.choices)) - self.fail( - ngettext( - "{value!r} is not {choice}.", - "{value!r} is not one of {choices}.", - len(self.choices), - ).format(value=value, choice=choices_str, choices=choices_str), - param, - ctx, - ) - - def __repr__(self) -> str: - return f"Choice({list(self.choices)})" - - def shell_complete( - self, ctx: "Context", param: "Parameter", incomplete: str - ) -> t.List["CompletionItem"]: - """Complete choices that start with the incomplete value. - - :param ctx: Invocation context for this command. - :param param: The parameter that is requesting completion. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - str_choices = map(str, self.choices) - - if self.case_sensitive: - matched = (c for c in str_choices if c.startswith(incomplete)) - else: - incomplete = incomplete.lower() - matched = (c for c in str_choices if c.lower().startswith(incomplete)) - - return [CompletionItem(c) for c in matched] - - -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: t.Optional[t.Sequence[str]] = None): - self.formats = formats or ["%Y-%m-%d", "%Y-%m-%dT%H:%M:%S", "%Y-%m-%d %H:%M:%S"] - - def to_info_dict(self) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict["formats"] = self.formats - return info_dict - - def get_metavar(self, param: "Parameter") -> str: - return f"[{'|'.join(self.formats)}]" - - def _try_to_convert_date(self, value: t.Any, format: str) -> t.Optional[datetime]: - try: - return datetime.strptime(value, format) - except ValueError: - return None - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - if isinstance(value, datetime): - return value - - for format in self.formats: - converted = self._try_to_convert_date(value, format) - - if converted is not None: - return converted - - formats_str = ", ".join(map(repr, self.formats)) - self.fail( - ngettext( - "{value!r} does not match the format {format}.", - "{value!r} does not match the formats {formats}.", - len(self.formats), - ).format(value=value, format=formats_str, formats=formats_str), - param, - ctx, - ) - - def __repr__(self) -> str: - return "DateTime" - - -class _NumberParamTypeBase(ParamType): - _number_class: t.ClassVar[t.Type] - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - try: - return self._number_class(value) - except ValueError: - self.fail( - _("{value!r} is not a valid {number_type}.").format( - value=value, number_type=self.name - ), - param, - ctx, - ) - - -class _NumberRangeBase(_NumberParamTypeBase): - def __init__( - self, - min: t.Optional[float] = None, - max: t.Optional[float] = None, - min_open: bool = False, - max_open: bool = False, - clamp: bool = False, - ) -> None: - self.min = min - self.max = max - self.min_open = min_open - self.max_open = max_open - self.clamp = clamp - - def to_info_dict(self) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict.update( - min=self.min, - max=self.max, - min_open=self.min_open, - max_open=self.max_open, - clamp=self.clamp, - ) - return info_dict - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - import operator - - rv = super().convert(value, param, ctx) - lt_min: bool = self.min is not None and ( - operator.le if self.min_open else operator.lt - )(rv, self.min) - gt_max: bool = self.max is not None and ( - operator.ge if self.max_open else operator.gt - )(rv, self.max) - - if self.clamp: - if lt_min: - return self._clamp(self.min, 1, self.min_open) # type: ignore - - if gt_max: - return self._clamp(self.max, -1, self.max_open) # type: ignore - - if lt_min or gt_max: - self.fail( - _("{value} is not in the range {range}.").format( - value=rv, range=self._describe_range() - ), - param, - ctx, - ) - - return rv - - def _clamp(self, bound: float, dir: "te.Literal[1, -1]", open: bool) -> float: - """Find the valid value to clamp to bound in the given - direction. - - :param bound: The boundary value. - :param dir: 1 or -1 indicating the direction to move. - :param open: If true, the range does not include the bound. - """ - raise NotImplementedError - - def _describe_range(self) -> str: - """Describe the range for use in help text.""" - if self.min is None: - op = "<" if self.max_open else "<=" - return f"x{op}{self.max}" - - if self.max is None: - op = ">" if self.min_open else ">=" - return f"x{op}{self.min}" - - lop = "<" if self.min_open else "<=" - rop = "<" if self.max_open else "<=" - return f"{self.min}{lop}x{rop}{self.max}" - - def __repr__(self) -> str: - clamp = " clamped" if self.clamp else "" - return f"<{type(self).__name__} {self._describe_range()}{clamp}>" - - -class IntParamType(_NumberParamTypeBase): - name = "integer" - _number_class = int - - def __repr__(self) -> str: - return "INT" - - -class IntRange(_NumberRangeBase, IntParamType): - """Restrict an :data:`click.INT` value to a range of accepted - values. See :ref:`ranges`. - - If ``min`` or ``max`` are not passed, any value is accepted in that - direction. If ``min_open`` or ``max_open`` are enabled, the - corresponding boundary is not included in the range. - - If ``clamp`` is enabled, a value outside the range is clamped to the - boundary instead of failing. - - .. versionchanged:: 8.0 - Added the ``min_open`` and ``max_open`` parameters. - """ - - name = "integer range" - - def _clamp( # type: ignore - self, bound: int, dir: "te.Literal[1, -1]", open: bool - ) -> int: - if not open: - return bound - - return bound + dir - - -class FloatParamType(_NumberParamTypeBase): - name = "float" - _number_class = float - - def __repr__(self) -> str: - return "FLOAT" - - -class FloatRange(_NumberRangeBase, FloatParamType): - """Restrict a :data:`click.FLOAT` value to a range of accepted - values. See :ref:`ranges`. - - If ``min`` or ``max`` are not passed, any value is accepted in that - direction. If ``min_open`` or ``max_open`` are enabled, the - corresponding boundary is not included in the range. - - If ``clamp`` is enabled, a value outside the range is clamped to the - boundary instead of failing. This is not supported if either - boundary is marked ``open``. - - .. versionchanged:: 8.0 - Added the ``min_open`` and ``max_open`` parameters. - """ - - name = "float range" - - def __init__( - self, - min: t.Optional[float] = None, - max: t.Optional[float] = None, - min_open: bool = False, - max_open: bool = False, - clamp: bool = False, - ) -> None: - super().__init__( - min=min, max=max, min_open=min_open, max_open=max_open, clamp=clamp - ) - - if (min_open or max_open) and clamp: - raise TypeError("Clamping is not supported for open bounds.") - - def _clamp(self, bound: float, dir: "te.Literal[1, -1]", open: bool) -> float: - if not open: - return bound - - # Could use Python 3.9's math.nextafter here, but clamping an - # open float range doesn't seem to be particularly useful. It's - # left up to the user to write a callback to do it if needed. - raise RuntimeError("Clamping is not supported for open bounds.") - - -class BoolParamType(ParamType): - name = "boolean" - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - if value in {False, True}: - return bool(value) - - norm = value.strip().lower() - - if norm in {"1", "true", "t", "yes", "y", "on"}: - return True - - if norm in {"0", "false", "f", "no", "n", "off"}: - return False - - self.fail( - _("{value!r} is not a valid boolean.").format(value=value), param, ctx - ) - - def __repr__(self) -> str: - return "BOOL" - - -class UUIDParameterType(ParamType): - name = "uuid" - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - import uuid - - if isinstance(value, uuid.UUID): - return value - - value = value.strip() - - try: - return uuid.UUID(value) - except ValueError: - self.fail( - _("{value!r} is not a valid UUID.").format(value=value), param, ctx - ) - - def __repr__(self) -> str: - 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: str = "r", - encoding: t.Optional[str] = None, - errors: t.Optional[str] = "strict", - lazy: t.Optional[bool] = None, - atomic: bool = False, - ) -> None: - self.mode = mode - self.encoding = encoding - self.errors = errors - self.lazy = lazy - self.atomic = atomic - - def to_info_dict(self) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict.update(mode=self.mode, encoding=self.encoding) - return info_dict - - def resolve_lazy_flag(self, value: t.Any) -> bool: - 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: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - try: - if hasattr(value, "read") or hasattr(value, "write"): - return value - - lazy = self.resolve_lazy_flag(value) - - if lazy: - f: t.IO = t.cast( - t.IO, - LazyFile( - value, self.mode, self.encoding, self.errors, atomic=self.atomic - ), - ) - - if ctx is not None: - ctx.call_on_close(f.close_intelligently) # type: ignore - - 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 OSError as e: # noqa: B014 - self.fail(f"{os.fsdecode(value)!r}: {e.strerror}", param, ctx) - - def shell_complete( - self, ctx: "Context", param: "Parameter", incomplete: str - ) -> t.List["CompletionItem"]: - """Return a special completion marker that tells the completion - system to use the shell to provide file path completions. - - :param ctx: Invocation context for this command. - :param param: The parameter that is requesting completion. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - return [CompletionItem(incomplete, type="file")] - - -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. - - :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: Convert the incoming path value to this type. If - ``None``, keep Python's default, which is ``str``. Useful to - convert to :class:`pathlib.Path`. - - .. versionchanged:: 8.0 - Allow passing ``type=pathlib.Path``. - - .. versionchanged:: 6.0 - Added the ``allow_dash`` parameter. - """ - - envvar_list_splitter = os.path.pathsep - - def __init__( - self, - exists: bool = False, - file_okay: bool = True, - dir_okay: bool = True, - writable: bool = False, - readable: bool = True, - resolve_path: bool = False, - allow_dash: bool = False, - path_type: t.Optional[t.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") - elif self.dir_okay and not self.file_okay: - self.name = _("directory") - else: - self.name = _("path") - - def to_info_dict(self) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict.update( - exists=self.exists, - file_okay=self.file_okay, - dir_okay=self.dir_okay, - writable=self.writable, - readable=self.readable, - allow_dash=self.allow_dash, - ) - return info_dict - - def coerce_path_result(self, rv: t.Any) -> t.Any: - if self.type is not None and not isinstance(rv, self.type): - if self.type is str: - rv = os.fsdecode(rv) - elif self.type is bytes: - rv = os.fsencode(rv) - else: - rv = self.type(rv) - - return rv - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - rv = value - - is_dash = self.file_okay and self.allow_dash and rv in (b"-", "-") - - if not is_dash: - if self.resolve_path: - # realpath on Windows Python < 3.8 doesn't resolve symlinks - if os.path.islink(rv): - rv = os.readlink(rv) - - rv = os.path.realpath(rv) - - try: - st = os.stat(rv) - except OSError: - if not self.exists: - return self.coerce_path_result(rv) - self.fail( - _("{name} {filename!r} does not exist.").format( - name=self.name.title(), filename=os.fsdecode(value) - ), - param, - ctx, - ) - - if not self.file_okay and stat.S_ISREG(st.st_mode): - self.fail( - _("{name} {filename!r} is a file.").format( - name=self.name.title(), filename=os.fsdecode(value) - ), - param, - ctx, - ) - if not self.dir_okay and stat.S_ISDIR(st.st_mode): - self.fail( - _("{name} {filename!r} is a directory.").format( - name=self.name.title(), filename=os.fsdecode(value) - ), - param, - ctx, - ) - if self.writable and not os.access(value, os.W_OK): - self.fail( - _("{name} {filename!r} is not writable.").format( - name=self.name.title(), filename=os.fsdecode(value) - ), - param, - ctx, - ) - if self.readable and not os.access(value, os.R_OK): - self.fail( - _("{name} {filename!r} is not readable.").format( - name=self.name.title(), filename=os.fsdecode(value) - ), - param, - ctx, - ) - - return self.coerce_path_result(rv) - - def shell_complete( - self, ctx: "Context", param: "Parameter", incomplete: str - ) -> t.List["CompletionItem"]: - """Return a special completion marker that tells the completion - system to use the shell to provide path completions for only - directories or any paths. - - :param ctx: Invocation context for this command. - :param param: The parameter that is requesting completion. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - type = "dir" if self.dir_okay and not self.file_okay else "file" - return [CompletionItem(incomplete, type=type)] - - -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: t.Sequence[t.Union[t.Type, ParamType]]) -> None: - self.types = [convert_type(ty) for ty in types] - - def to_info_dict(self) -> t.Dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict["types"] = [t.to_info_dict() for t in self.types] - return info_dict - - @property - def name(self) -> str: # type: ignore - return f"<{' '.join(ty.name for ty in self.types)}>" - - @property - def arity(self) -> int: # type: ignore - return len(self.types) - - def convert( - self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] - ) -> t.Any: - len_type = len(self.types) - len_value = len(value) - - if len_value != len_type: - self.fail( - ngettext( - "{len_type} values are required, but {len_value} was given.", - "{len_type} values are required, but {len_value} were given.", - len_value, - ).format(len_type=len_type, len_value=len_value), - param=param, - ctx=ctx, - ) - - return tuple(ty(x, param, ctx) for ty, x in zip(self.types, value)) - - -def convert_type(ty: t.Optional[t.Any], default: t.Optional[t.Any] = None) -> ParamType: - """Find the most appropriate :class:`ParamType` for the given Python - type. If the type isn't provided, it can be inferred from a default - value. - """ - guessed_type = False - - if ty is None and default is not None: - if isinstance(default, (tuple, list)): - # If the default is empty, ty will remain None and will - # return STRING. - if default: - item = default[0] - - # A tuple of tuples needs to detect the inner types. - # Can't call convert recursively because that would - # incorrectly unwind the tuple to a single type. - if isinstance(item, (tuple, list)): - ty = tuple(map(type, item)) - else: - ty = type(item) - else: - ty = type(default) - - guessed_type = True - - if isinstance(ty, tuple): - return Tuple(ty) - - if isinstance(ty, ParamType): - return ty - - if ty is str or ty is None: - return STRING - - if ty is int: - return INT - - if ty is float: - return FLOAT - - if ty is bool: - return BOOL - - if guessed_type: - return STRING - - if __debug__: - try: - if issubclass(ty, ParamType): - raise AssertionError( - f"Attempted to use an uninstantiated parameter type ({ty})." - ) - except TypeError: - # ty is an instance (correct), so issubclass fails. - 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 if the input was bytes. -#: This is usually useful when working with file paths as they can -#: appear in bytes and unicode. -#: -#: For path related uses the :class:`Path` type is a better choice but -#: there are situations where an unprocessed type is useful which is why -#: it is is provided. -#: -#: .. versionadded:: 4.0 -UNPROCESSED = UnprocessedParamType() - -#: A unicode string parameter type which is the implicit default. This -#: can also be selected by using ``str`` as type. -STRING = StringParamType() - -#: An integer parameter. This can also be selected by using ``int`` as -#: type. -INT = IntParamType() - -#: A floating point value parameter. This can also be selected by using -#: ``float`` as type. -FLOAT = FloatParamType() - -#: A boolean parameter. This is the default for boolean flags. This can -#: also be selected by using ``bool`` as a type. -BOOL = BoolParamType() - -#: A UUID parameter. -UUID = UUIDParameterType() diff --git a/venv/lib/python3.9/site-packages/click/utils.py b/venv/lib/python3.9/site-packages/click/utils.py deleted file mode 100644 index 91a372d..0000000 --- a/venv/lib/python3.9/site-packages/click/utils.py +++ /dev/null @@ -1,579 +0,0 @@ -import os -import sys -import typing as t -from functools import update_wrapper -from types import ModuleType - -from ._compat import _default_text_stderr -from ._compat import _default_text_stdout -from ._compat import _find_binary_writer -from ._compat import auto_wrap_for_ansi -from ._compat import binary_streams -from ._compat import get_filesystem_encoding -from ._compat import open_stream -from ._compat import should_strip_ansi -from ._compat import strip_ansi -from ._compat import text_streams -from ._compat import WIN -from .globals import resolve_color_default - -if t.TYPE_CHECKING: - import typing_extensions as te - -F = t.TypeVar("F", bound=t.Callable[..., t.Any]) - - -def _posixify(name: str) -> str: - return "-".join(name.split()).lower() - - -def safecall(func: F) -> F: - """Wraps a function so that it swallows exceptions.""" - - def wrapper(*args, **kwargs): # type: ignore - try: - return func(*args, **kwargs) - except Exception: - pass - - return update_wrapper(t.cast(F, wrapper), func) - - -def make_str(value: t.Any) -> str: - """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 str(value) - - -def make_default_short_help(help: str, max_length: int = 45) -> str: - """Returns a condensed version of help string.""" - # Consider only the first paragraph. - paragraph_end = help.find("\n\n") - - if paragraph_end != -1: - help = help[:paragraph_end] - - # Collapse newlines, tabs, and spaces. - words = help.split() - - if not words: - return "" - - # The first paragraph started with a "no rewrap" marker, ignore it. - if words[0] == "\b": - words = words[1:] - - total_length = 0 - last_index = len(words) - 1 - - for i, word in enumerate(words): - total_length += len(word) + (i > 0) - - if total_length > max_length: # too long, truncate - break - - if word[-1] == ".": # sentence end, truncate without "..." - return " ".join(words[: i + 1]) - - if total_length == max_length and i != last_index: - break # not at sentence end, truncate with "..." - else: - return " ".join(words) # no truncation needed - - # Account for the length of the suffix. - total_length += len("...") - - # remove words until the length is short enough - while i > 0: - total_length -= len(words[i]) + (i > 0) - - if total_length <= max_length: - break - - i -= 1 - - return " ".join(words[:i]) + "..." - - -class LazyFile: - """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: str, - mode: str = "r", - encoding: t.Optional[str] = None, - errors: t.Optional[str] = "strict", - atomic: bool = False, - ): - self.name = filename - self.mode = mode - self.encoding = encoding - self.errors = errors - self.atomic = atomic - self._f: t.Optional[t.IO] - - 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: str) -> t.Any: - return getattr(self.open(), name) - - def __repr__(self) -> str: - if self._f is not None: - return repr(self._f) - return f"" - - def open(self) -> t.IO: - """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 OSError as e: # noqa: E402 - from .exceptions import FileError - - raise FileError(self.name, hint=e.strerror) - self._f = rv - return rv - - def close(self) -> None: - """Closes the underlying file, no matter what.""" - if self._f is not None: - self._f.close() - - def close_intelligently(self) -> None: - """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) -> "LazyFile": - return self - - def __exit__(self, exc_type, exc_value, tb): # type: ignore - self.close_intelligently() - - def __iter__(self) -> t.Iterator[t.AnyStr]: - self.open() - return iter(self._f) # type: ignore - - -class KeepOpenFile: - def __init__(self, file: t.IO) -> None: - self._file = file - - def __getattr__(self, name: str) -> t.Any: - return getattr(self._file, name) - - def __enter__(self) -> "KeepOpenFile": - return self - - def __exit__(self, exc_type, exc_value, tb): # type: ignore - pass - - def __repr__(self) -> str: - return repr(self._file) - - def __iter__(self) -> t.Iterator[t.AnyStr]: - return iter(self._file) - - -def echo( - message: t.Optional[t.Any] = None, - file: t.Optional[t.IO] = None, - nl: bool = True, - err: bool = False, - color: t.Optional[bool] = None, -) -> None: - """Print a message and newline to stdout or a file. This should be - used instead of :func:`print` because it provides better support - for different data, files, and environments. - - Compared to :func:`print`, this does the following: - - - Ensures that the output encoding is not misconfigured on Linux. - - Supports Unicode in the Windows console. - - Supports writing to binary outputs, and supports writing bytes - to text outputs. - - Supports colors and styles on Windows. - - Removes ANSI color and style codes if the output does not look - like an interactive terminal. - - Always flushes the output. - - :param message: The string or bytes to output. Other objects are - converted to strings. - :param file: The file to write to. Defaults to ``stdout``. - :param err: Write to ``stderr`` instead of ``stdout``. - :param nl: Print a newline after the message. Enabled by default. - :param color: Force showing or hiding colors and other styles. By - default Click will remove color if the output does not look like - an interactive terminal. - - .. versionchanged:: 6.0 - Support Unicode output on the Windows console. Click does not - modify ``sys.stdout``, so ``sys.stdout.write()`` and ``print()`` - will still not support Unicode. - - .. versionchanged:: 4.0 - Added the ``color`` parameter. - - .. versionadded:: 3.0 - Added the ``err`` parameter. - - .. versionchanged:: 2.0 - Support colors on Windows if colorama is installed. - """ - 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, (str, bytes, bytearray)): - out: t.Optional[t.Union[str, bytes]] = str(message) - else: - out = message - - if nl: - out = out or "" - if isinstance(out, str): - out += "\n" - else: - out += b"\n" - - if not out: - file.flush() - return - - # If there is a message 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 isinstance(out, (bytes, bytearray)): - binary_file = _find_binary_writer(file) - - if binary_file is not None: - file.flush() - binary_file.write(out) - binary_file.flush() - return - - # ANSI style code support. For no message or bytes, nothing happens. - # When outputting to a file instead of a terminal, strip codes. - else: - color = resolve_color_default(color) - - if should_strip_ansi(file, color): - out = strip_ansi(out) - elif WIN: - if auto_wrap_for_ansi is not None: - file = auto_wrap_for_ansi(file) # type: ignore - elif not color: - out = strip_ansi(out) - - file.write(out) # type: ignore - file.flush() - - -def get_binary_stream(name: "te.Literal['stdin', 'stdout', 'stderr']") -> t.BinaryIO: - """Returns a system stream for byte processing. - - :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(f"Unknown standard stream '{name}'") - return opener() - - -def get_text_stream( - name: "te.Literal['stdin', 'stdout', 'stderr']", - encoding: t.Optional[str] = None, - errors: t.Optional[str] = "strict", -) -> t.TextIO: - """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 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(f"Unknown standard stream '{name}'") - return opener(encoding, errors) - - -def open_file( - filename: str, - mode: str = "r", - encoding: t.Optional[str] = None, - errors: t.Optional[str] = "strict", - lazy: bool = False, - atomic: bool = False, -) -> t.IO: - """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 t.cast(t.IO, LazyFile(filename, mode, encoding, errors, atomic=atomic)) - f, should_close = open_stream(filename, mode, encoding, errors, atomic=atomic) - if not should_close: - f = t.cast(t.IO, KeepOpenFile(f)) - return f - - -def get_os_args() -> t.Sequence[str]: - """Returns the argument part of ``sys.argv``, removing the first - value which is the name of the script. - - .. deprecated:: 8.0 - Will be removed in Click 8.1. Access ``sys.argv[1:]`` directly - instead. - """ - import warnings - - warnings.warn( - "'get_os_args' is deprecated and will be removed in Click 8.1." - " Access 'sys.argv[1:]' directly instead.", - DeprecationWarning, - stacklevel=2, - ) - return sys.argv[1:] - - -def format_filename( - filename: t.Union[str, bytes, os.PathLike], shorten: bool = False -) -> str: - """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 os.fsdecode(filename) - - -def get_app_dir(app_name: str, roaming: bool = True, force_posix: bool = False) -> str: - 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`` - Windows (roaming): - ``C:\Users\\AppData\Roaming\Foo Bar`` - Windows (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(f"~/.{_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: - """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: t.IO) -> None: - self.wrapped = wrapped - - def flush(self) -> None: - try: - self.wrapped.flush() - except OSError as e: - import errno - - if e.errno != errno.EPIPE: - raise - - def __getattr__(self, attr: str) -> t.Any: - return getattr(self.wrapped, attr) - - -def _detect_program_name( - path: t.Optional[str] = None, _main: ModuleType = sys.modules["__main__"] -) -> str: - """Determine the command used to run the program, for use in help - text. If a file or entry point was executed, the file name is - returned. If ``python -m`` was used to execute a module or package, - ``python -m name`` is returned. - - This doesn't try to be too precise, the goal is to give a concise - name for help text. Files are only shown as their name without the - path. ``python`` is only shown for modules, and the full path to - ``sys.executable`` is not shown. - - :param path: The Python file being executed. Python puts this in - ``sys.argv[0]``, which is used by default. - :param _main: The ``__main__`` module. This should only be passed - during internal testing. - - .. versionadded:: 8.0 - Based on command args detection in the Werkzeug reloader. - - :meta private: - """ - if not path: - path = sys.argv[0] - - # The value of __package__ indicates how Python was called. It may - # not exist if a setuptools script is installed as an egg. It may be - # set incorrectly for entry points created with pip on Windows. - if getattr(_main, "__package__", None) is None or ( - os.name == "nt" - and _main.__package__ == "" - and not os.path.exists(path) - and os.path.exists(f"{path}.exe") - ): - # Executed a file, like "python app.py". - return os.path.basename(path) - - # Executed a module, like "python -m example". - # Rewritten by Python from "-m script" to "/path/to/script.py". - # Need to look at main module to determine how it was executed. - py_module = t.cast(str, _main.__package__) - name = os.path.splitext(os.path.basename(path))[0] - - # A submodule like "example.cli". - if name != "__main__": - py_module = f"{py_module}.{name}" - - return f"python -m {py_module.lstrip('.')}" - - -def _expand_args( - args: t.Iterable[str], - *, - user: bool = True, - env: bool = True, - glob_recursive: bool = True, -) -> t.List[str]: - """Simulate Unix shell expansion with Python functions. - - See :func:`glob.glob`, :func:`os.path.expanduser`, and - :func:`os.path.expandvars`. - - This intended for use on Windows, where the shell does not do any - expansion. It may not exactly match what a Unix shell would do. - - :param args: List of command line arguments to expand. - :param user: Expand user home directory. - :param env: Expand environment variables. - :param glob_recursive: ``**`` matches directories recursively. - - .. versionadded:: 8.0 - - :meta private: - """ - from glob import glob - - out = [] - - for arg in args: - if user: - arg = os.path.expanduser(arg) - - if env: - arg = os.path.expandvars(arg) - - matches = glob(arg, recursive=glob_recursive) - - if not matches: - out.append(arg) - else: - out.extend(matches) - - return out diff --git a/venv/lib/python3.9/site-packages/easy_install.py b/venv/lib/python3.9/site-packages/easy_install.py deleted file mode 100644 index d87e984..0000000 --- a/venv/lib/python3.9/site-packages/easy_install.py +++ /dev/null @@ -1,5 +0,0 @@ -"""Run the EasyInstall command""" - -if __name__ == '__main__': - from setuptools.command.easy_install import main - main() diff --git a/venv/lib/python3.9/site-packages/flask/__init__.py b/venv/lib/python3.9/site-packages/flask/__init__.py deleted file mode 100644 index c5da045..0000000 --- a/venv/lib/python3.9/site-packages/flask/__init__.py +++ /dev/null @@ -1,46 +0,0 @@ -from markupsafe import escape -from markupsafe import Markup -from werkzeug.exceptions import abort as abort -from werkzeug.utils import redirect as redirect - -from . import json as json -from .app import Flask as Flask -from .app import Request as Request -from .app import Response as Response -from .blueprints import Blueprint as Blueprint -from .config import Config as Config -from .ctx import after_this_request as after_this_request -from .ctx import copy_current_request_context as copy_current_request_context -from .ctx import has_app_context as has_app_context -from .ctx import has_request_context as has_request_context -from .globals import _app_ctx_stack as _app_ctx_stack -from .globals import _request_ctx_stack as _request_ctx_stack -from .globals import current_app as current_app -from .globals import g as g -from .globals import request as request -from .globals import session as session -from .helpers import flash as flash -from .helpers import get_flashed_messages as get_flashed_messages -from .helpers import get_template_attribute as get_template_attribute -from .helpers import make_response as make_response -from .helpers import safe_join as safe_join -from .helpers import send_file as send_file -from .helpers import send_from_directory as send_from_directory -from .helpers import stream_with_context as stream_with_context -from .helpers import url_for as url_for -from .json import jsonify as jsonify -from .signals import appcontext_popped as appcontext_popped -from .signals import appcontext_pushed as appcontext_pushed -from .signals import appcontext_tearing_down as appcontext_tearing_down -from .signals import before_render_template as before_render_template -from .signals import got_request_exception as got_request_exception -from .signals import message_flashed as message_flashed -from .signals import request_finished as request_finished -from .signals import request_started as request_started -from .signals import request_tearing_down as request_tearing_down -from .signals import signals_available as signals_available -from .signals import template_rendered as template_rendered -from .templating import render_template as render_template -from .templating import render_template_string as render_template_string - -__version__ = "2.0.1" diff --git a/venv/lib/python3.9/site-packages/flask/__main__.py b/venv/lib/python3.9/site-packages/flask/__main__.py deleted file mode 100644 index 4e28416..0000000 --- a/venv/lib/python3.9/site-packages/flask/__main__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .cli import main - -main() diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/__init__.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index f28046cb4199139c01866f5dc0e0190241cd2bfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1897 zcmbu9NpCAf5XWsN@i<=NCC|!dw_%xf+skE&_m)-muBo~+w?56aKgN+PQwy+;EZ`6`5exf50Ee5g82~n5-ypK zklWB^K1O!IWj;Z^f-B}zZT6XQH^f-F{gNY-G_+EKth~T`JzmKHh z;P=ubab#$%#c$O}COU{{BKut&^@2W9&FfjIg&hP&=;t49cH`txbVpjt$WDFHjUy`` z==YU@XM~p|Ggh6f$qF-ec^qaRgt1&A5f>!*Ep$N>gsmOG1v3#suSy_Hd&E zoNn}`6+Do>2yx!)OM`xsd@I95c~%O~S{-yomTFK6y`jX%zZAuIJt;oK0ab9($jBGH zKv8IYJkW6{#`TW%BimL>FBJEI9n9>~8EGYYvBn68`VsUfxQct3)J!CCl1TrxIWhw_ zS7suu^sq~P;m7xsRkI^;Vahu4sZo=C;mmSBe(8;T=*q;7D^!^jV_F=HU7B{L7evA2 zp_QqJoza%_XiTkFNmNbHk35Avzw-j+b+|;;X)cr8cm-Vab)L;v7M=v!;KzlV_Er1( zr`8vc5BZ!^Gc;Y0dJYBZ_fii(%2B`lyg8%iX{P)Y>ha^WN$0R2trz9)@ z$WK~;<kh3@bd4|H0UFme~@6-;oKw;LkugV@eyOh@eN_b$N?q2Ck|nPyS}Ef+9jmx zot3O(^^WR(kRN?02%|Z8sf`z{m5e&U8`yAHdShWLy}0JEH?=Q}k_H-HHK1e;w)MhP p^K=1DdOoxCT+$17P$=q3$g=o0%Tn8RgQYg?s`x4{a&f_kd;w0=J7xd? diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/app.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/app.cpython-39.pyc deleted file mode 100644 index 0e6e08b49780a8acb131ff705d65a13f9bd09742..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63588 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 z 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 diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/blueprints.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/blueprints.cpython-39.pyc deleted file mode 100644 index 89c5eda8b0abab245e13a48511d33ff54f22a847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21752 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 diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/config.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/config.cpython-39.pyc deleted file mode 100644 index 0e469aee64035f7dae4ada3f15b9e0128e6a9808..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11509 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 Hl)Uu6WGe;3 diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/debughelpers.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/debughelpers.cpython-39.pyc deleted file mode 100644 index edc86eba4e5074628d98f2fe75f1ba8e010499cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6473 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 diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/globals.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/globals.cpython-39.pyc deleted file mode 100644 index ecc0f0bdbb795669538088d88af7dab161911cf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1847 zcmcIl&2J+$6u0x8X+FAbnttqp%mIm@C3E0}R3T6)T?ACsrf9`nW}UHcfcb^SU2F6G+1`uT-a^Dv$gnHn83PUM8B!bbub8-8Vmj&nW>H8IO1 z1OQ@5B2Hsi&!{0wnG$LYj}pTfF_NU3lSvu}2C`8Rnq?6ebIv$(XiO-$7MwggKR>(6 zG$iCm#yS-Sf;nL_NFyE_YWE=UX8@_iIFZT;V~|ndqGLc!X7bV|rVAMY0*f?Jax8c> zr0)PT|56}L5&@;;+y4(m0+sQh2L_^vmJ!6#<&d09 zScnC8Y$;EP=7yvRvBdoob+J1*hA{k9Denz{&k^S~tMiacppHaRamcu4aTwU+bN7@$ zDZ@B|p$Q0sF7WsG8osv_slF+h@(un0o60r5MmMDqy2Yo1YPRLC4vim}D_`4FnU#%9 zvexr7Hetk%m69s!JqY7U`H`Mx^(lv58+BXCDlv_?YC+yxq_$xC9xq%Gj@@KwW-|V8_>rqa!#_v>5}k7GPV7hG zPK!@tm@EOikaC_T7MovmI3-*VYcfk_CSU4_U{v?ch_0J_NLHw}Lw!WgDxn!Nz6v)!9)^>#FPG zs#2E!3{O=Z=E0M!X78VPnqiYQ^9x2wp_MJi>s)d*f5p@3P}nO{*#oTX??%=>|Mu+I zKYDh2^yL?)Cu+|+asXvGr}@rVW0g-A2^*IRFma`GG^%6&!`7Ui0A(pvc^Mm4%egrK zE$jL|jbmBdS=#s2W9zpZtGBFp!&0v0O>7)SlBI%wZ2O|$2jSpWsRg5kLE5)esaKpv T9o|L_j^ZZn;}UNC*((19AS(6I diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/helpers.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/helpers.cpython-39.pyc deleted file mode 100644 index 450d4409e95450043eeb869e749da1b3bf9c9337..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27329 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 BbEN

{p zw^_AOAnYujGB1w&U@%n@XNtv#5o>#Z zTDM&YJ_w>g^N~&N9*;yQ6$D4OF`uzR9vRr(M#F8)5Hg!XND;GqU;~UQ0wp~Y&eF}{cPNN2p;$2spq|>gxvqR-+O3w4 zht`~DkCo}AmFcBPVF|E~M+@hw*2t?ooMBRu(Ltc%D9J(1l44r4S41K0?eMqT8pdPU zGQk+CJevf9>!Cbo-IaRJ#FN%`V20Cv>mlUs$6*k+4j^JH4En9f%nak`X7lrw4vhSG z!o58{kUGt`HP3f4OI9xCTt|{2+elT_U~D)^5j_A{5vCq;cYdK6V#&d+Z^Lj*PRJ?w z5uQ)!F;yKyzb8J>R5&ln$8_Y}CC}+|s@4P$7Untq>3#>E`KNThCh|by!qG1qL+S0Y zz(;<L)LjVFUXFyY!0N^oZIZ6$$EB-7qBDln~43Y#s2sbq8^bS$R7QgP_pj`XwL?H z@Cq8-ZU)74nx7=443Am_zx2Qt;4P_i1~QUQCTjgdnEnMfIl4CFx@VnxnOCzDqLk?M z=9&5KR-=$CUr0R3@o1KmGe4bFP!0G1)F3HNpiv^za1=V>xFEt}Euh27r+ zbG?G8<;yhh6xLZhg0UgKMbpST^)ywtB-RA90-G0j}N{$6^}7tc~wd zYv5)>D-?97PYyNff0>5W-hf-TVKC%`9+Q!CN}=XtlvCG`M;gYH0!U*KHQAJofo=L0 ztd&g#SB_DWDgPBnye+ZgC9}edItUC&seMCC zGXPm4w#svnYzuDq8(qD-dFQKb@b)bj&7#<#`x||R#M4%b;uVYxs`H=5Sz}xX z#%7Al$+BO$rvjWoJ@_r0=C_k}L`7^J!@2jRno{K6u)Wcq7Bg zHbUKl@1~Kxv>Klw4N)CQz2?+t%_-BWqprccaYcOq4+a0SkfdlpwWC2oO?UB7s=XsQ z9l+-TnpdH8CZ$0b_o0*14?=zS+lQOIjeDCLU)+DNou-0Kkra2~b94VoE5}K34!9r3 zVT!5#R<+ef=u-pqTefUQs-$xEYLh$%&VFqy!g43=%XL(EjUdVt{u}@Z{awpBbfva( MrAqU({7=5{FYg+|%>V!Z diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/scaffold.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/scaffold.cpython-39.pyc deleted file mode 100644 index 190f931b06fb2a8261fcb66b83c39593fd56c640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24692 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 diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/sessions.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/sessions.cpython-39.pyc deleted file mode 100644 index e1db424f336ee65f7a4c0e3c42bf6c4c1bf1e5de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13111 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 diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/signals.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/signals.cpython-39.pyc deleted file mode 100644 index 36bf1ecb28731ecdf384f8e5029927fccd3549fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2378 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 diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/views.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/views.cpython-39.pyc deleted file mode 100644 index 34d2ee6c36639cd6c65563b5f68e6b0be3af470a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4922 zcma)A&5s+m6(?s#A1iBZ$4QzvNmJVW*j1WH=?98-;TT!i`D&9*nm8${z#YvFsnx7U zGct$Tjka=8WDVFkw5Q(c0(McL@S*?ETzfLmL(e_5{XNd?NM1W_1|T&g-#k9@{rG#2 z3RYKJ49`EzKL-!K#@OGfvHaB0cpW9%MkSf#G3#^bNH=!IZr|k$?_SKtUf<(P)pnSy z{h1%~e*G;b>#}i^$;P46Z=ltbD`>5#=AqkPLAxbSpnXC$)QW8X&g-`%|A=)~A7CD~ z^?;-9@Vueb^{L7XUZ4C>Ws@|?)Q8GUb@E9NPgSRxyF1F{-XzUXk5nM@MmjMOy zu`()mCsUKxj1EGT*Cv4pMO2>tL?ke>3gcSTSsZA=2>=@!Cvzip*zyQ{XZc7dsrvVMolhHT#S`lr-s)r7I5U9mYYHiBXV| zSTvr*YOE5|5_mSo%8WJ!GRo}g{c=wSVt*8cBN1gH4B}Wxu^*X{Fr#vcK<`XRM<#|k z9a~K__VI`B3Y|_(lj)%m$=(qSL)dLNR?;4p==h6-jDf zEmj6|x0RT{dJ;^nY-#athFH|K?whs_r1Ymc_VqMY1FNObDAZ?@I0_>Z&o(w%c7PUL z?8kdE+Rb&UIvdp(jhE(#*Tko5Z@qD4?dsxF8kTA(j&Im{rsCntA_>Oom@@i8TUd(W z`L|UZr{dQncH`Xnh1y^;=`Jr~eXTbl(cT3Ty}0(W^{h{xeXX#&8)QCtdwp#@qu;eo zr%?BckxIlYodOn#p-q!2Om$$C2*f0w?(78Hap^@X6~%G2*$PfpTEGQn6chm2Cv}zI zkDz6Np%t`BvA#VM`x+}CuajiC+C4gjA|2YTExlG6J?My3TO-3DvB0J8N|coLrW!yY z+(g?`qaJnNM=HcbU)_b|hofgP1^GCePL#&!(H8xYR`RPl{4uWXcDsciu3$w=^JFH4 zVi6Uaxik<*nGu18dnUjtMA8KBLmY1r;2^*sb_4&fA8^vPQh1p>S8eS}(C|{V!4~&c z+jc-FYRQT$N<#WJ1&QpZ)3_R>&Jr%gu?Z4s4=B2=svVUmf|q=le9qayt-Mhlru=Mq z;{9N1(lMAT^pDuMwJ-!^UN7(y63rhy^iJgxN=8x1utWAaw_(9K_}fP%$0=gDf;ZAV zr8Ni!=7ViYI#{MZT9>tvKoNvy8pIE;K!mAO*wrgb3Xbt1sIgK(+w?Fk+MTnM2wLh^ zf?E`@;Hr0yh*-%tv`#g;Jz|mjOh1Jc{_9u0Q94#V6ODm_*(8!dHd1@N%PPBO(n;?v zoYm=e?}JpEVH!tiZ%-wAy*S$LO=j?8@`LVAdRb)DE0Z9+7VN03XBo3cWRZ0zv;6dN z4ttF@*FnW<2T#+%>K>Qqc)3S}l(#Gve5^Oi+r|5}eQN0^@OfyJkRm)a6a*}G3MJb^ zW!Nsa#gY7udyC!Tx11qjsdR6)zi{Sk*VS*%`EAGd@Lt1jjruOLtL+=!+`H`@@-Lk0 zKb|v;)GN6LT8$<7CfZH3SMZC1=;;N&1%fW634npPMeZs99VLJTXy~yRu&0Sg3ULS& zAuBId@$k`jm)Ou8$B4=VoudPifq*OiOf3&o+J+D=BJMu%ag<~R>>Uwnlc5{d(v1N* zWdMQ@DnM{9V>N7-HcD68>?Z{I#|8HCC_qVMN~)q0aOENRE<)}x;*y9EG@4LBYQBz;W3s6x#F5U<)-$2O(s@u*kyUikYoBxIXp5Jih z&Mu#$J-2OmmTz^OyhXV7?LKKFtE}Vd=kcRopz29f_g(!gy`M#udn9d-nSPo&X|kWA zWHdA5r}@Ei_5hUes(T?$kq2cLyYyYBm2;E3o5@U*xIT?4Z~8u+4ByXNzCTVSj=b;d zuhUS&_hlNQb&{m%9CT{A8^)P_hB_8jtyDZ%nD!zKlYM!kG~_ZG*>kAa>Wf~T*Ljn- zc&kyoHPLGFgZ8rJohS8qNb7H+%GeuMp=O^E@ zc_(elmDxlc{1WY;IQu|yb+{H%10WYcRN{u9$5Dc)vQO<|MFn*b4lL}E43b2F@X*4i zu#PqGOXNr9W)oBtv+nXapF4B+9$k<4+}-0kHqIdfwK<@;7jD#yJFiJxG7epRe(v4% z=C$40JIOtNuOB-4GRB+p`rVa#%u1lG<2h*4uStfbJ6qPjz-!IsI0Vut zi3~vMX1E$Pa6h69E3Z!{5?o`Y^Cw2eO#EW8Hsj3l2JQ}4&_$A(*QOIBOr3`QHWpmC{3sV^|C*YSA)Wm1{1mXn3Zo{uK9vtA@QJN2u0i%{%YZ*tGm)bj|+$d#{? z*mqDZqfB|bHCyV^x#LP#dbqzeBw?+dw-z=B3}JAy2r{n}2^XQJ#8!FX0=AB5yn2{4c{c!9 zGB8S)B-g@1EiO5)mUkGEq=%Hz_5I7Vm1;h%R9r?%2fWO_ZYpd`eRf(&rUeSP*;XL|!+@nUftY zFb1ZJ(`^KByHXpf@)i7ZaiH*@ko6bdqHh{F_dj Rw_S(V|Krt8UOoN%e*uYsO=kcA diff --git a/venv/lib/python3.9/site-packages/flask/__pycache__/wrappers.cpython-39.pyc b/venv/lib/python3.9/site-packages/flask/__pycache__/wrappers.cpython-39.pyc deleted file mode 100644 index c741282d0a1dbee561211cc9ac384e6c041186c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5037 zcmai1OOxBi5e7gk$>nn2k}Nri3Q3eGtg=YiPO6kGB^6m-OB>6Svs#xETtE;rB(aMJ zJs9qathG~Rsp4DyK$MDobX9&!jyd3(TwKW^=Tu%_4<7rX9ByG27z}!PzV80I+g)C6 zX!!kI{-gKT%bNBVdN}1A>-cX3Mp&^cI?YuAGhDE%>fXeC&938q zfmMUWuwggUeJxlDn|4#(*MsG7#a_`huJ5mkeI<3xUdR8%U?beLH+AiS#u{wtxyF`w z^;yMUz;lx=<9V6a@myp26RoxK6?D?NEj?|#<+5G=(S#=wPqmZV`Yun#ag^|{bS%X? zb3chA{9p1WLhwjB?s$yH%T6*5eChOq2_Fj|^J7UsT| z#%eEgR%eUP&1bs3k0z&(fi;aM){zULGKP}l!1c0CvH4u3X}#x0Rx;@;vCtA* zl12%aN{KC3N>T2X9V_3{QJ?f^FUS$4kX-#aK#}Z|0~~R2FyoV9`$)j?fKfa5)m|xz zR8eY-MSSQpj_-rOiU)+IMVk5jiNx%OxhOJ$A7Nq~OlYqGU{yLRA<39~{=oOF7)#n} zsw);@*t9+ofg|AE=^~lJfhm%7UBnaVM?;4{_4ru&arC90Rt1+65qT6s#gFa{T=#J$ zS1?FTtVnHNXZkhm3H&{~T9w(IUGB15aTH85ljkSt_1?SpOXvRM?%sBH&v~@neX#ei z*R#Ah8u&x&fKS`@#>ExgmLY1`Ev;q?p`DrVVDP0THZc89w=;@E-jRM7%h7b~GdCIW z!_M10Igs(V^T3y*Nx$=cEaV^#{J3+-qr*<%_dDaM9L3R_?H_j%U-DaH*E?{BJn1Np z>y*|SPt%Ried=I$N$e5uXedWNA`q$=w2G-WjM=NXQQH@nem#iC+CE5RqKgf>+Xu-h zqBC3&t%|}jf+U4V5m%>O{e#^{xieDa?U8RE`EZ~$CZAXl#7Qttc%+z|dB>&I|sSmOpWj`c%L+&I=h*O~E!PQ;$u#&q{f zh8+5dms|G4 zqNSKQmSr&rg*J`2$CJbrKEhW?R<=^-BOOZ(K*32V&=cI1fPoyMZGqE6cMA79#CrG^ zWCA9pbQZkCOnJ}A*;PB$w3^f&G2tjjk<0c zvyBV*Cl?G*M(168F163~W9T^i4{Pf_-hgLh}w-^p?YiXa9OXWaVvlgHh>GTgFS z6_ujJbqEx+MG=Z*+5jCUWp@zN^+$=6&_hW`ZeBV?5#H_La!I6oWHzvEv-8a z`JLmW4aY(DKw*RXrsI4xafAF#&2d=lIgX%Qoi3?;v!z*9(PdhHtg0S2fMFds0tKqv zmf)i$`pA46K9E+Bx6;bJXeydCxwu_aOKBZd8*D45X$6I@xP;dk9Z{I1<|D+YAPP~o z6@>XIL=-kEgORsWW=jafhHf^^=7xE_x?vdll^U)UTpPI7R#sJ+?qS)PA2~Dqk~c6E z9SZd)=tNA8ZjIMC`jZ#>XWBq#CR=#kM8B~3nPzHs17@xY>T%pZ!hRW_Wo=YZ{;To> zdFgA~fDdDFkbsm9I5Co<43Rfug_MDa!;?A|Wi7E5s&Fc=Rk{GTJ=}W_IV}$(bR0@h z-gTe>_{9X}8rT)pnCb*r9Nm=J#}JYwBJ2;jdE-K5J5`KGMV<@wmAoxP>F8X=AG!zJ zDKze7MU=!G>KV|hO71AZ5cjli&Y3%N+YvfHGQwE|6>=}_MU+;A#Qa_)6ZL30 z5;G)2;^Z`Cd4W&qtVDsRl3F`rjvTy~>054ak8)6fNLE_M2R?Taf5v-Rg)m!`{Hg4W zWEhBLIPjS?LRACt5e3(ro`pzmzoK&ZALjQgTcq_?-ncw|cW2vqvSV+bXx}59a@gOMlP|Ey}mM97&{`n2AgbIF?3G1d|g8mdQwJxPqq*XYY zpkm$LECDY2)t{XWx1g?4C1~UBnnl#RwQgHbJFF# zU%kKW+<&-z|J|ML1A9GF1RXOth)Sg-H6*v!%8m1uT6Nv?$Ud##&63bh$w8H4){Ul) OzkICfb-h_xJNzFx{%?!` diff --git a/venv/lib/python3.9/site-packages/flask/app.py b/venv/lib/python3.9/site-packages/flask/app.py deleted file mode 100644 index 3abce3c..0000000 --- a/venv/lib/python3.9/site-packages/flask/app.py +++ /dev/null @@ -1,2088 +0,0 @@ -import functools -import inspect -import logging -import os -import sys -import typing as t -import weakref -from datetime import timedelta -from itertools import chain -from threading import Lock -from types import TracebackType - -from werkzeug.datastructures import Headers -from werkzeug.datastructures import ImmutableDict -from werkzeug.exceptions import BadRequest -from werkzeug.exceptions import BadRequestKeyError -from werkzeug.exceptions import HTTPException -from werkzeug.exceptions import InternalServerError -from werkzeug.local import ContextVar -from werkzeug.routing import BuildError -from werkzeug.routing import Map -from werkzeug.routing import MapAdapter -from werkzeug.routing import RequestRedirect -from werkzeug.routing import RoutingException -from werkzeug.routing import Rule -from werkzeug.wrappers import Response as BaseResponse - -from . import cli -from . import json -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 _split_blueprint_path -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 .scaffold import _endpoint_from_view_func -from .scaffold import _sentinel -from .scaffold import find_package -from .scaffold import Scaffold -from .scaffold import setupmethod -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 DispatchingJinjaLoader -from .templating import Environment -from .typing import AfterRequestCallable -from .typing import BeforeRequestCallable -from .typing import ErrorHandlerCallable -from .typing import ResponseReturnValue -from .typing import TeardownCallable -from .typing import TemplateContextProcessorCallable -from .typing import TemplateFilterCallable -from .typing import TemplateGlobalCallable -from .typing import TemplateTestCallable -from .typing import URLDefaultCallable -from .typing import URLValuePreprocessorCallable -from .wrappers import Request -from .wrappers import Response - -if t.TYPE_CHECKING: - import typing_extensions as te - from .blueprints import Blueprint - from .testing import FlaskClient - from .testing import FlaskCliRunner - -if sys.version_info >= (3, 8): - iscoroutinefunction = inspect.iscoroutinefunction -else: - - def iscoroutinefunction(func: t.Any) -> bool: - while inspect.ismethod(func): - func = func.__func__ - - while isinstance(func, functools.partial): - func = func.func - - return inspect.iscoroutinefunction(func) - - -def _make_timedelta(value: t.Optional[timedelta]) -> t.Optional[timedelta]: - if value is None or isinstance(value, timedelta): - return value - - return timedelta(seconds=value) - - -class Flask(Scaffold): - """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: The path to the root of the application files. - This should only be set manually when it can't be detected - automatically, such as for namespace packages. - """ - - #: 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` or number of seconds which is used - #: as the default ``max_age`` for :func:`send_file`. The default is - #: ``None``, which tells the browser to use conditional requests - #: instead of a timed cache. - #: - #: Configured with the :data:`SEND_FILE_MAX_AGE_DEFAULT` - #: configuration key. - #: - #: .. versionchanged:: 2.0 - #: Defaults to ``None`` instead of 12 hours. - 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: dict = {} - - #: 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": None, - "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: t.Optional[t.Type["FlaskClient"]] = 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: t.Optional[t.Type["FlaskCliRunner"]] = None - - #: the session interface to use. By default an instance of - #: :class:`~flask.sessions.SecureCookieSessionInterface` is used here. - #: - #: .. versionadded:: 0.8 - session_interface = SecureCookieSessionInterface() - - def __init__( - self, - import_name: str, - static_url_path: t.Optional[str] = None, - static_folder: t.Optional[str] = "static", - static_host: t.Optional[str] = None, - host_matching: bool = False, - subdomain_matching: bool = False, - template_folder: t.Optional[str] = "templates", - instance_path: t.Optional[str] = None, - instance_relative_config: bool = False, - root_path: t.Optional[str] = None, - ): - super().__init__( - import_name=import_name, - static_folder=static_folder, - static_url_path=static_url_path, - template_folder=template_folder, - root_path=root_path, - ) - - 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 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: t.List[ - t.Callable[[Exception, str, dict], str] - ] = [] - - #: 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: t.List[BeforeRequestCallable] = [] - - #: 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: t.List[TeardownCallable] = [] - - #: A list of shell context processor functions that should be run - #: when a shell context is created. - #: - #: .. versionadded:: 0.11 - self.shell_context_processors: t.List[t.Callable[[], t.Dict[str, t.Any]]] = [] - - #: Maps registered blueprint names to blueprint objects. The - #: dict retains the order the blueprints were registered in. - #: Blueprints can be registered multiple times, this dict does - #: not track how often they were attached. - #: - #: .. versionadded:: 0.7 - self.blueprints: t.Dict[str, "Blueprint"] = {} - - #: a place where extensions can store application specific state. For - #: example this is where an extension could store database engines and - #: similar things. - #: - #: 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: dict = {} - - #: 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" - # Use a weakref to avoid creating a reference cycle between the app - # and the view function (see #3761). - self_ref = weakref.ref(self) - self.add_url_rule( - f"{self.static_url_path}/", - endpoint="static", - host=static_host, - view_func=lambda **kw: self_ref().send_static_file(**kw), # type: ignore # noqa: B950 - ) - - # 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 - - def _is_setup_finished(self) -> bool: - return self.debug and self._got_first_request - - @locked_cached_property - def name(self) -> str: # type: ignore - """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) -> bool: - """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) -> bool: - """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) -> logging.Logger: - """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) -> Environment: - """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) -> bool: - """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: bool = False) -> Config: - """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) -> str: - """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", f"{self.name}-instance") - - def open_instance_resource(self, resource: str, mode: str = "rb") -> t.IO[t.AnyStr]: - """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) -> bool: - """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: bool) -> None: - self.config["TEMPLATES_AUTO_RELOAD"] = value - - def create_jinja_environment(self) -> Environment: - """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.policies["json.dumps_function"] = json.dumps - return rv - - def create_global_jinja_loader(self) -> DispatchingJinjaLoader: - """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: str) -> bool: - """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: dict) -> None: - """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: t.Iterable[ - TemplateContextProcessorCallable - ] = self.template_context_processors[None] - reqctx = _request_ctx_stack.top - if reqctx is not None: - for bp in request.blueprints: - if 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) -> dict: - """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) -> bool: - """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: bool) -> None: - self.config["DEBUG"] = value - self.jinja_env.auto_reload = self.templates_auto_reload - - def run( - self, - host: t.Optional[str] = None, - port: t.Optional[int] = None, - debug: t.Optional[bool] = None, - load_dotenv: bool = True, - **options: t.Any, - ) -> None: - """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 :doc:`/deploying/index` 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) - - server_name = self.config.get("SERVER_NAME") - sn_host = sn_port = None - - if server_name: - sn_host, _, sn_port = server_name.partition(":") - - if not host: - if sn_host: - host = sn_host - else: - host = "127.0.0.1" - - if port or port == 0: - port = int(port) - elif sn_port: - port = int(sn_port) - else: - port = 5000 - - 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(t.cast(str, 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: bool = True, **kwargs: t.Any) -> "FlaskClient": - """Creates a test client for this application. For information - about unit testing head over to :doc:`/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 # type: ignore - return cls( # type: ignore - self, self.response_class, use_cookies=use_cookies, **kwargs - ) - - def test_cli_runner(self, **kwargs: t.Any) -> "FlaskCliRunner": - """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 # type: ignore - - return cls(self, **kwargs) # type: ignore - - @setupmethod - def register_blueprint(self, blueprint: "Blueprint", **options: t.Any) -> None: - """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. - - .. versionchanged:: 2.0.1 - The ``name`` option can be used to change the (pre-dotted) - name the blueprint is registered with. This allows the same - blueprint to be registered multiple times with unique names - for ``url_for``. - - .. versionadded:: 0.7 - """ - blueprint.register(self, options) - - def iter_blueprints(self) -> t.ValuesView["Blueprint"]: - """Iterates over all blueprints by the order they were registered. - - .. versionadded:: 0.11 - """ - return self.blueprints.values() - - @setupmethod - def add_url_rule( - self, - rule: str, - endpoint: t.Optional[str] = None, - view_func: t.Optional[t.Callable] = None, - provide_automatic_options: t.Optional[bool] = None, - **options: t.Any, - ) -> None: - if endpoint is None: - endpoint = _endpoint_from_view_func(view_func) # type: ignore - 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, str): - raise TypeError( - "Allowed methods must be a list of strings, for" - ' example: @app.route(..., methods=["POST"])' - ) - methods = {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 # type: ignore - - 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" - f" endpoint function: {endpoint}" - ) - self.view_functions[endpoint] = view_func - - @setupmethod - def template_filter( - self, name: t.Optional[str] = None - ) -> t.Callable[[TemplateFilterCallable], TemplateFilterCallable]: - """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: TemplateFilterCallable) -> TemplateFilterCallable: - self.add_template_filter(f, name=name) - return f - - return decorator - - @setupmethod - def add_template_filter( - self, f: TemplateFilterCallable, name: t.Optional[str] = None - ) -> 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: t.Optional[str] = None - ) -> t.Callable[[TemplateTestCallable], TemplateTestCallable]: - """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: TemplateTestCallable) -> TemplateTestCallable: - self.add_template_test(f, name=name) - return f - - return decorator - - @setupmethod - def add_template_test( - self, f: TemplateTestCallable, name: t.Optional[str] = None - ) -> 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: t.Optional[str] = None - ) -> t.Callable[[TemplateGlobalCallable], TemplateGlobalCallable]: - """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: TemplateGlobalCallable) -> TemplateGlobalCallable: - self.add_template_global(f, name=name) - return f - - return decorator - - @setupmethod - def add_template_global( - self, f: TemplateGlobalCallable, name: t.Optional[str] = None - ) -> 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_first_request(self, f: BeforeRequestCallable) -> BeforeRequestCallable: - """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 teardown_appcontext(self, f: TeardownCallable) -> TeardownCallable: - """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 shell_context_processor(self, f: t.Callable) -> t.Callable: - """Registers a shell context processor function. - - .. versionadded:: 0.11 - """ - self.shell_context_processors.append(f) - return f - - def _find_error_handler(self, e: Exception) -> t.Optional[ErrorHandlerCallable]: - """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 c in [code, None]: - for name in chain(request.blueprints, [None]): - handler_map = self.error_handler_spec[name][c] - - if not handler_map: - continue - - for cls in exc_class.__mro__: - handler = handler_map.get(cls) - - if handler is not None: - return handler - return None - - def handle_http_exception( - self, e: HTTPException - ) -> t.Union[HTTPException, ResponseReturnValue]: - """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 self.ensure_sync(handler)(e) - - def trap_http_exception(self, e: Exception) -> bool: - """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: Exception - ) -> t.Union[HTTPException, ResponseReturnValue]: - """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 - """ - if isinstance(e, BadRequestKeyError) and ( - self.debug or self.config["TRAP_BAD_REQUEST_ERRORS"] - ): - e.show_exception = True - - 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: - raise - - return self.ensure_sync(handler)(e) - - def handle_exception(self, e: Exception) -> Response: - """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``. - - .. 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_info = sys.exc_info() - got_request_exception.send(self, exception=e) - - if self.propagate_exceptions: - # Re-raise if called with an active exception, otherwise - # raise the passed in exception. - if exc_info[1] is e: - raise - - raise e - - self.log_exception(exc_info) - server_error: t.Union[InternalServerError, ResponseReturnValue] - server_error = InternalServerError(original_exception=e) - handler = self._find_error_handler(server_error) - - if handler is not None: - server_error = self.ensure_sync(handler)(server_error) - - return self.finalize_request(server_error, from_error_handler=True) - - def log_exception( - self, - exc_info: t.Union[ - t.Tuple[type, BaseException, TracebackType], t.Tuple[None, None, None] - ], - ) -> None: - """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( - f"Exception on {request.path} [{request.method}]", exc_info=exc_info - ) - - def raise_routing_exception(self, request: Request) -> "te.NoReturn": - """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 # type: ignore - - from .debughelpers import FormDataRoutingRedirect - - raise FormDataRoutingRedirect(request) - - def dispatch_request(self) -> ResponseReturnValue: - """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.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args) - - def full_dispatch_request(self) -> Response: - """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: t.Union[ResponseReturnValue, HTTPException], - from_error_handler: bool = False, - ) -> Response: - """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) -> None: - """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: - self.ensure_sync(func)() - self._got_first_request = True - - def make_default_options_response(self) -> Response: - """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 - methods = adapter.allowed_methods() - rv = self.response_class() - rv.allow.update(methods) - return rv - - def should_ignore_error(self, error: t.Optional[BaseException]) -> bool: - """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 ensure_sync(self, func: t.Callable) -> t.Callable: - """Ensure that the function is synchronous for WSGI workers. - Plain ``def`` functions are returned as-is. ``async def`` - functions are wrapped to run and wait for the response. - - Override this method to change how the app runs async views. - - .. versionadded:: 2.0 - """ - if iscoroutinefunction(func): - return self.async_to_sync(func) - - return func - - def async_to_sync( - self, func: t.Callable[..., t.Coroutine] - ) -> t.Callable[..., t.Any]: - """Return a sync function that will run the coroutine function. - - .. code-block:: python - - result = app.async_to_sync(func)(*args, **kwargs) - - Override this method to change how the app converts async code - to be synchronously callable. - - .. versionadded:: 2.0 - """ - try: - from asgiref.sync import async_to_sync as asgiref_async_to_sync - except ImportError: - raise RuntimeError( - "Install Flask with the 'async' extra in order to use async views." - ) - - # Check that Werkzeug isn't using its fallback ContextVar class. - if ContextVar.__module__ == "werkzeug.local": - raise RuntimeError( - "Async cannot be used with this combination of Python " - "and Greenlet versions." - ) - - return asgiref_async_to_sync(func) - - def make_response(self, rv: ResponseReturnValue) -> Response: - """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`` - A response object is created with the string encoded to UTF-8 - as the body. - - ``bytes`` - 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( - f"The view function for {request.endpoint!r} 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, (str, 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) # type: ignore # noqa: B950 - except TypeError as e: - raise TypeError( - f"{e}\nThe view function did not return a valid" - " response. The return type must be a string," - " dict, tuple, Response instance, or WSGI" - f" callable, but it was a {type(rv).__name__}." - ).with_traceback(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" - f" callable, but it was a {type(rv).__name__}." - ) - - rv = t.cast(Response, rv) - # prefer the status if it was provided - if status is not None: - if isinstance(status, (str, bytes, bytearray)): - rv.status = status # type: ignore - else: - rv.status_code = status - - # extend existing headers with provided headers - if headers: - rv.headers.update(headers) - - return rv - - def create_url_adapter( - self, request: t.Optional[Request] - ) -> t.Optional[MapAdapter]: - """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. - if not self.subdomain_matching: - subdomain = self.url_map.default_subdomain or None - else: - subdomain = 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"], - ) - - return None - - def inject_url_defaults(self, endpoint: str, values: dict) -> None: - """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: t.Iterable[URLDefaultCallable] = self.url_default_functions[None] - - if "." in endpoint: - # This is called by url_for, which can be called outside a - # request, can't use request.blueprints. - bps = _split_blueprint_path(endpoint.rpartition(".")[0]) - bp_funcs = chain.from_iterable(self.url_default_functions[bp] for bp in bps) - funcs = chain(funcs, bp_funcs) - - for func in funcs: - func(endpoint, values) - - def handle_url_build_error( - self, error: Exception, endpoint: str, values: dict - ) -> str: - """Handle :class:`~werkzeug.routing.BuildError` on - :meth:`url_for`. - """ - for handler in self.url_build_error_handlers: - try: - rv = handler(error, endpoint, values) - except BuildError as e: - # make error available outside except block - error = e - else: - if rv is not None: - return rv - - # Re-raise if called with an active exception, otherwise raise - # the passed in exception. - if error is sys.exc_info()[1]: - raise - - raise error - - def preprocess_request(self) -> t.Optional[ResponseReturnValue]: - """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. - """ - - funcs: t.Iterable[URLValuePreprocessorCallable] = self.url_value_preprocessors[ - None - ] - for bp in request.blueprints: - if 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: t.Iterable[BeforeRequestCallable] = self.before_request_funcs[None] - for bp in request.blueprints: - if bp in self.before_request_funcs: - funcs = chain(funcs, self.before_request_funcs[bp]) - for func in funcs: - rv = self.ensure_sync(func)() - if rv is not None: - return rv - - return None - - def process_response(self, response: Response) -> 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 - funcs: t.Iterable[AfterRequestCallable] = ctx._after_request_functions - for bp in request.blueprints: - if 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 = self.ensure_sync(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: t.Optional[BaseException] = _sentinel # type: ignore - ) -> None: - """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: t.Iterable[TeardownCallable] = reversed( - self.teardown_request_funcs[None] - ) - for bp in request.blueprints: - if bp in self.teardown_request_funcs: - funcs = chain(funcs, reversed(self.teardown_request_funcs[bp])) - for func in funcs: - self.ensure_sync(func)(exc) - request_tearing_down.send(self, exc=exc) - - def do_teardown_appcontext( - self, exc: t.Optional[BaseException] = _sentinel # type: ignore - ) -> None: - """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): - self.ensure_sync(func)(exc) - appcontext_tearing_down.send(self, exc=exc) - - def app_context(self) -> AppContext: - """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: dict) -> RequestContext: - """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: t.Any, **kwargs: t.Any) -> RequestContext: - """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: dict, start_response: t.Callable) -> t.Any: - """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: t.Optional[BaseException] = 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: dict, start_response: t.Callable) -> t.Any: - """The WSGI server calls the Flask application object as the - WSGI application. This calls :meth:`wsgi_app`, which can be - wrapped to apply middleware. - """ - return self.wsgi_app(environ, start_response) diff --git a/venv/lib/python3.9/site-packages/flask/blueprints.py b/venv/lib/python3.9/site-packages/flask/blueprints.py deleted file mode 100644 index f3913b3..0000000 --- a/venv/lib/python3.9/site-packages/flask/blueprints.py +++ /dev/null @@ -1,603 +0,0 @@ -import typing as t -from collections import defaultdict -from functools import update_wrapper - -from .scaffold import _endpoint_from_view_func -from .scaffold import _sentinel -from .scaffold import Scaffold -from .typing import AfterRequestCallable -from .typing import BeforeRequestCallable -from .typing import ErrorHandlerCallable -from .typing import TeardownCallable -from .typing import TemplateContextProcessorCallable -from .typing import TemplateFilterCallable -from .typing import TemplateGlobalCallable -from .typing import TemplateTestCallable -from .typing import URLDefaultCallable -from .typing import URLValuePreprocessorCallable - -if t.TYPE_CHECKING: - from .app import Flask - -DeferredSetupFunction = t.Callable[["BlueprintSetupState"], t.Callable] - - -class BlueprintSetupState: - """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: "Blueprint", - app: "Flask", - options: t.Any, - first_registration: bool, - ) -> None: - #: 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 - - self.name = self.options.get("name", blueprint.name) - self.name_prefix = self.options.get("name_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: str, - endpoint: t.Optional[str] = None, - view_func: t.Optional[t.Callable] = None, - **options: t.Any, - ) -> None: - """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) # type: ignore - defaults = self.url_defaults - if "defaults" in options: - defaults = dict(defaults, **options.pop("defaults")) - - self.app.add_url_rule( - rule, - f"{self.name_prefix}.{self.name}.{endpoint}".lstrip("."), - view_func, - defaults=defaults, - **options, - ) - - -class Blueprint(Scaffold): - """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 :doc:`/blueprints` for more information. - - :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 set - this based on ``import_name``. In certain situations this - automatic detection can fail, so the path can be specified - manually instead. - - .. 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 - """ - - warn_on_modifications = False - _got_registered_once = False - - #: Blueprint local JSON encoder class to use. Set to ``None`` to use - #: the app's :class:`~flask.Flask.json_encoder`. - json_encoder = None - #: Blueprint local JSON decoder class to use. Set to ``None`` to use - #: the app's :class:`~flask.Flask.json_decoder`. - json_decoder = None - - def __init__( - self, - name: str, - import_name: str, - static_folder: t.Optional[str] = None, - static_url_path: t.Optional[str] = None, - template_folder: t.Optional[str] = None, - url_prefix: t.Optional[str] = None, - subdomain: t.Optional[str] = None, - url_defaults: t.Optional[dict] = None, - root_path: t.Optional[str] = None, - cli_group: t.Optional[str] = _sentinel, # type: ignore - ): - super().__init__( - import_name=import_name, - static_folder=static_folder, - static_url_path=static_url_path, - template_folder=template_folder, - root_path=root_path, - ) - - if "." in name: - raise ValueError("'name' may not contain a dot '.' character.") - - self.name = name - self.url_prefix = url_prefix - self.subdomain = subdomain - self.deferred_functions: t.List[DeferredSetupFunction] = [] - - if url_defaults is None: - url_defaults = {} - - self.url_values_defaults = url_defaults - self.cli_group = cli_group - self._blueprints: t.List[t.Tuple["Blueprint", dict]] = [] - - def _is_setup_finished(self) -> bool: - return self.warn_on_modifications and self._got_registered_once - - def record(self, func: t.Callable) -> None: - """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: t.Callable) -> None: - """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: BlueprintSetupState) -> None: - if state.first_registration: - func(state) - - return self.record(update_wrapper(wrapper, func)) - - def make_setup_state( - self, app: "Flask", options: dict, first_registration: bool = False - ) -> BlueprintSetupState: - """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_blueprint(self, blueprint: "Blueprint", **options: t.Any) -> None: - """Register a :class:`~flask.Blueprint` on this blueprint. Keyword - arguments passed to this method will override the defaults set - on the blueprint. - - .. versionchanged:: 2.0.1 - The ``name`` option can be used to change the (pre-dotted) - name the blueprint is registered with. This allows the same - blueprint to be registered multiple times with unique names - for ``url_for``. - - .. versionadded:: 2.0 - """ - if blueprint is self: - raise ValueError("Cannot register a blueprint on itself") - self._blueprints.append((blueprint, options)) - - def register(self, app: "Flask", options: dict) -> None: - """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`. - - .. versionchanged:: 2.0.1 - Nested blueprints are registered with their dotted name. - This allows different blueprints with the same name to be - nested at different locations. - - .. versionchanged:: 2.0.1 - The ``name`` option can be used to change the (pre-dotted) - name the blueprint is registered with. This allows the same - blueprint to be registered multiple times with unique names - for ``url_for``. - - .. versionchanged:: 2.0.1 - Registering the same blueprint with the same name multiple - times is deprecated and will become an error in Flask 2.1. - """ - first_registration = not any(bp is self for bp in app.blueprints.values()) - name_prefix = options.get("name_prefix", "") - self_name = options.get("name", self.name) - name = f"{name_prefix}.{self_name}".lstrip(".") - - if name in app.blueprints: - existing_at = f" '{name}'" if self_name != name else "" - - if app.blueprints[name] is not self: - raise ValueError( - f"The name '{self_name}' is already registered for" - f" a different blueprint{existing_at}. Use 'name='" - " to provide a unique name." - ) - else: - import warnings - - warnings.warn( - f"The name '{self_name}' is already registered for" - f" this blueprint{existing_at}. Use 'name=' to" - " provide a unique name. This will become an error" - " in Flask 2.1.", - stacklevel=4, - ) - - app.blueprints[name] = self - self._got_registered_once = True - state = self.make_setup_state(app, options, first_registration) - - if self.has_static_folder: - state.add_url_rule( - f"{self.static_url_path}/", - view_func=self.send_static_file, - endpoint="static", - ) - - # Merge blueprint data into parent. - if first_registration: - - def extend(bp_dict, parent_dict): - for key, values in bp_dict.items(): - key = name if key is None else f"{name}.{key}" - parent_dict[key].extend(values) - - for key, value in self.error_handler_spec.items(): - key = name if key is None else f"{name}.{key}" - value = defaultdict( - dict, - { - code: { - exc_class: func for exc_class, func in code_values.items() - } - for code, code_values in value.items() - }, - ) - app.error_handler_spec[key] = value - - for endpoint, func in self.view_functions.items(): - app.view_functions[endpoint] = func - - extend(self.before_request_funcs, app.before_request_funcs) - extend(self.after_request_funcs, app.after_request_funcs) - extend( - self.teardown_request_funcs, - app.teardown_request_funcs, - ) - extend(self.url_default_functions, app.url_default_functions) - extend(self.url_value_preprocessors, app.url_value_preprocessors) - extend(self.template_context_processors, app.template_context_processors) - - for deferred in self.deferred_functions: - deferred(state) - - cli_resolved_group = options.get("cli_group", self.cli_group) - - if self.cli.commands: - if cli_resolved_group is None: - app.cli.commands.update(self.cli.commands) - elif cli_resolved_group is _sentinel: - self.cli.name = name - app.cli.add_command(self.cli) - else: - self.cli.name = cli_resolved_group - app.cli.add_command(self.cli) - - for blueprint, bp_options in self._blueprints: - bp_options = bp_options.copy() - bp_url_prefix = bp_options.get("url_prefix") - - if bp_url_prefix is None: - bp_url_prefix = blueprint.url_prefix - - if state.url_prefix is not None and bp_url_prefix is not None: - bp_options["url_prefix"] = ( - state.url_prefix.rstrip("/") + "/" + bp_url_prefix.lstrip("/") - ) - elif bp_url_prefix is not None: - bp_options["url_prefix"] = bp_url_prefix - elif state.url_prefix is not None: - bp_options["url_prefix"] = state.url_prefix - - bp_options["name_prefix"] = name - blueprint.register(app, bp_options) - - def add_url_rule( - self, - rule: str, - endpoint: t.Optional[str] = None, - view_func: t.Optional[t.Callable] = None, - provide_automatic_options: t.Optional[bool] = None, - **options: t.Any, - ) -> None: - """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 and "." in endpoint: - raise ValueError("'endpoint' may not contain a dot '.' character.") - - if view_func and hasattr(view_func, "__name__") and "." in view_func.__name__: - raise ValueError("'view_func' name may not contain a dot '.' character.") - - self.record( - lambda s: s.add_url_rule( - rule, - endpoint, - view_func, - provide_automatic_options=provide_automatic_options, - **options, - ) - ) - - def app_template_filter( - self, name: t.Optional[str] = None - ) -> t.Callable[[TemplateFilterCallable], TemplateFilterCallable]: - """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: TemplateFilterCallable) -> TemplateFilterCallable: - self.add_app_template_filter(f, name=name) - return f - - return decorator - - def add_app_template_filter( - self, f: TemplateFilterCallable, name: t.Optional[str] = None - ) -> 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: BlueprintSetupState) -> None: - state.app.jinja_env.filters[name or f.__name__] = f - - self.record_once(register_template) - - def app_template_test( - self, name: t.Optional[str] = None - ) -> t.Callable[[TemplateTestCallable], TemplateTestCallable]: - """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: TemplateTestCallable) -> TemplateTestCallable: - self.add_app_template_test(f, name=name) - return f - - return decorator - - def add_app_template_test( - self, f: TemplateTestCallable, name: t.Optional[str] = None - ) -> 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: BlueprintSetupState) -> None: - state.app.jinja_env.tests[name or f.__name__] = f - - self.record_once(register_template) - - def app_template_global( - self, name: t.Optional[str] = None - ) -> t.Callable[[TemplateGlobalCallable], TemplateGlobalCallable]: - """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: TemplateGlobalCallable) -> TemplateGlobalCallable: - self.add_app_template_global(f, name=name) - return f - - return decorator - - def add_app_template_global( - self, f: TemplateGlobalCallable, name: t.Optional[str] = None - ) -> 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: BlueprintSetupState) -> None: - state.app.jinja_env.globals[name or f.__name__] = f - - self.record_once(register_template) - - def before_app_request(self, f: BeforeRequestCallable) -> BeforeRequestCallable: - """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: BeforeRequestCallable - ) -> BeforeRequestCallable: - """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_app_request(self, f: AfterRequestCallable) -> AfterRequestCallable: - """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_app_request(self, f: TeardownCallable) -> TeardownCallable: - """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 app_context_processor( - self, f: TemplateContextProcessorCallable - ) -> TemplateContextProcessorCallable: - """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: t.Union[t.Type[Exception], int]) -> t.Callable: - """Like :meth:`Flask.errorhandler` but for a blueprint. This - handler is used for all requests, even if outside of the blueprint. - """ - - def decorator(f: ErrorHandlerCallable) -> ErrorHandlerCallable: - self.record_once(lambda s: s.app.errorhandler(code)(f)) - return f - - return decorator - - def app_url_value_preprocessor( - self, f: URLValuePreprocessorCallable - ) -> URLValuePreprocessorCallable: - """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: URLDefaultCallable) -> URLDefaultCallable: - """Same as :meth:`url_defaults` but application wide.""" - self.record_once( - lambda s: s.app.url_default_functions.setdefault(None, []).append(f) - ) - return f diff --git a/venv/lib/python3.9/site-packages/flask/cli.py b/venv/lib/python3.9/site-packages/flask/cli.py deleted file mode 100644 index d9e810d..0000000 --- a/venv/lib/python3.9/site-packages/flask/cli.py +++ /dev/null @@ -1,994 +0,0 @@ -import ast -import inspect -import os -import platform -import re -import sys -import traceback -import warnings -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 .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 # type: ignore - - -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 module.__dict__.values() if isinstance(v, Flask)] - - if len(matches) == 1: - return matches[0] - elif len(matches) > 1: - raise NoAppException( - "Detected multiple Flask applications in module" - f" {module.__name__!r}. Use 'FLASK_APP={module.__name__}:name'" - f" to specify the correct one." - ) - - # 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( - f"Detected factory {attr_name!r} in module {module.__name__!r}," - " but could not call it without arguments. Use" - f" \"FLASK_APP='{module.__name__}:{attr_name}(args)'\"" - " to specify arguments." - ) - - raise NoAppException( - "Failed to find Flask application or factory in module" - f" {module.__name__!r}. Use 'FLASK_APP={module.__name__}:name'" - " to specify one." - ) - - -def call_factory(script_info, app_factory, args=None, kwargs=None): - """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. - """ - sig = inspect.signature(app_factory) - args = [] if args is None else args - kwargs = {} if kwargs is None else kwargs - - if "script_info" in sig.parameters: - warnings.warn( - "The 'script_info' argument is deprecated and will not be" - " passed to the app factory function in Flask 2.1.", - DeprecationWarning, - ) - kwargs["script_info"] = script_info - - if ( - not args - and len(sig.parameters) == 1 - and next(iter(sig.parameters.values())).default is inspect.Parameter.empty - ): - warnings.warn( - "Script info is deprecated and will not be passed as the" - " single argument to the app factory function in Flask" - " 2.1.", - DeprecationWarning, - ) - args.append(script_info) - - return app_factory(*args, **kwargs) - - -def _called_with_wrong_args(f): - """Check whether calling a function raised a ``TypeError`` because - the call failed or because something in the factory raised the - error. - - :param f: The 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 f.__code__: - # In the function, it was called successfully. - return False - - tb = tb.tb_next - - # Didn't reach the function. - return True - finally: - # Delete tb to break a circular reference. - # https://docs.python.org/2/library/sys.html#sys.exc_info - del tb - - -def find_app_by_string(script_info, module, app_name): - """Check if the given string is a variable name or a function. Call - a function to get the app instance, or return the variable directly. - """ - from . import Flask - - # Parse app_name as a single expression to determine if it's a valid - # attribute name or function call. - try: - expr = ast.parse(app_name.strip(), mode="eval").body - except SyntaxError: - raise NoAppException( - f"Failed to parse {app_name!r} as an attribute name or function call." - ) - - if isinstance(expr, ast.Name): - name = expr.id - args = kwargs = None - elif isinstance(expr, ast.Call): - # Ensure the function name is an attribute name only. - if not isinstance(expr.func, ast.Name): - raise NoAppException( - f"Function reference must be a simple name: {app_name!r}." - ) - - name = expr.func.id - - # Parse the positional and keyword arguments as literals. - try: - args = [ast.literal_eval(arg) for arg in expr.args] - kwargs = {kw.arg: ast.literal_eval(kw.value) for kw in expr.keywords} - except ValueError: - # literal_eval gives cryptic error messages, show a generic - # message with the full expression instead. - raise NoAppException( - f"Failed to parse arguments as literal values: {app_name!r}." - ) - else: - raise NoAppException( - f"Failed to parse {app_name!r} as an attribute name or function call." - ) - - try: - attr = getattr(module, name) - except AttributeError: - raise NoAppException( - f"Failed to find attribute {name!r} in {module.__name__!r}." - ) - - # If the attribute is a function, call it with any args and kwargs - # to get the real application. - if inspect.isfunction(attr): - try: - app = call_factory(script_info, attr, args, kwargs) - except TypeError: - if not _called_with_wrong_args(attr): - raise - - raise NoAppException( - f"The factory {app_name!r} in module" - f" {module.__name__!r} could not be called with the" - " specified arguments." - ) - else: - app = attr - - if isinstance(app, Flask): - return app - - raise NoAppException( - "A valid Flask application was not obtained from" - f" '{module.__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()[2].tb_next: - raise NoAppException( - f"While importing {module_name!r}, an ImportError was" - f" raised:\n\n{traceback.format_exc()}" - ) - elif raise_if_not_found: - raise NoAppException(f"Could not import {module_name!r}.") - 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__ - - click.echo( - f"Python {platform.python_version()}\n" - f"Flask {__version__}\n" - f"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: - """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=None): - self.loader = loader - self._app = None - self._lock = Lock() - self._bg_loading_exc_info = None - - if use_eager_loading is None: - use_eager_loading = os.environ.get("WERKZEUG_RUN_MAIN") != "true" - - 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 - raise 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: - """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 - - 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. 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() - # Look up built-in and plugin commands, which should be - # available even if the app fails to load. - rv = super().get_command(ctx, name) - - if rv is not None: - return rv - - info = ctx.ensure_object(ScriptInfo) - - # Look up commands provided by the app, showing an error and - # continuing if the app couldn't be loaded. - try: - return info.load_app().cli.get_command(ctx, name) - except NoAppException as e: - click.secho(f"Error: {e.format_message()}\n", err=True, fg="red") - - def list_commands(self, ctx): - self._load_plugin_commands() - # Start with the built-in and plugin commands. - rv = set(super().list_commands(ctx)) - info = ctx.ensure_object(ScriptInfo) - - # Add commands provided by the app, showing an error and - # continuing if the app couldn't be loaded. - try: - rv.update(info.load_app().cli.list_commands(ctx)) - except NoAppException as e: - # When an app couldn't be loaded, show the error message - # without the traceback. - click.secho(f"Error: {e.format_message()}\n", err=True, fg="red") - except Exception: - # When any other errors occurred during loading, show the - # full traceback. - click.secho(f"{traceback.format_exc()}\n", err=True, fg="red") - - 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().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. - - 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. - - .. versionchanged:: 2.0 - When loading the env files, set the default encoding to UTF-8. - - .. 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, encoding="utf-8") - - 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, encoding="utf-8") - - 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 = f" * Serving Flask app {app_import_path!r}" - - if not eager_loading: - message += " (lazy loading)" - - click.echo(message) - - click.echo(f" * Environment: {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(f" * Debug mode: {'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 cryptography # noqa: F401 - except ImportError: - raise click.BadParameter( - "Using ad-hoc certificates requires the cryptography library.", - ctx, - param, - ) - - return value - - obj = import_string(value, silent=True) - - 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" - is_context = ssl and 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().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-loading", - 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" - f" are separated by {os.path.pathsep!r}." - ), -) -@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 - - 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() -> None: - """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 its 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 = ( - f"Python {sys.version} on {sys.platform}\n" - f"App: {app.import_name} [{app.env}]\n" - f"Instance: {app.instance_path}" - ) - ctx: dict = {} - - # 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) as f: - eval(compile(f.read(), startup, "exec"), ctx) - - ctx.update(app.make_shell_context()) - - # Site, customize, or startup script can set a hook to call when - # entering interactive mode. The default one sets up readline with - # tab and history completion. - interactive_hook = getattr(sys, "__interactivehook__", None) - - if interactive_hook is not None: - try: - import readline - from rlcompleter import Completer - except ImportError: - pass - else: - # rlcompleter uses __main__.__dict__ by default, which is - # flask.__main__. Use the shell context instead. - readline.set_completer(Completer(ctx).complete) - - interactive_hook() - - 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: str, all_methods: bool) -> None: - """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)) # type: ignore - - rule_methods = [ - ", ".join(sorted(rule.methods - ignored_methods)) # type: ignore - 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() -> None: - if int(click.__version__[0]) < 8: - warnings.warn( - "Using the `flask` cli with Click 7 is deprecated and" - " will not be supported starting with Flask 2.1." - " Please upgrade to Click 8 as soon as possible.", - DeprecationWarning, - ) - # TODO omit sys.argv once https://github.com/pallets/click/issues/536 is fixed - cli.main(args=sys.argv[1:]) - - -if __name__ == "__main__": - main() diff --git a/venv/lib/python3.9/site-packages/flask/config.py b/venv/lib/python3.9/site-packages/flask/config.py deleted file mode 100644 index c79a558..0000000 --- a/venv/lib/python3.9/site-packages/flask/config.py +++ /dev/null @@ -1,291 +0,0 @@ -import errno -import os -import types -import typing as t - -from werkzeug.utils import import_string - - -class ConfigAttribute: - """Makes an attribute forward to the config""" - - def __init__(self, name: str, get_converter: t.Optional[t.Callable] = None) -> None: - self.__name__ = name - self.get_converter = get_converter - - def __get__(self, obj: t.Any, owner: t.Any = None) -> t.Any: - 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: t.Any, value: t.Any) -> None: - 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: str, defaults: t.Optional[dict] = None) -> None: - dict.__init__(self, defaults or {}) - self.root_path = root_path - - def from_envvar(self, variable_name: str, silent: bool = False) -> bool: - """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( - f"The environment variable {variable_name!r} is not set" - " and as such configuration could not be loaded. Set" - " this variable and make it point to a configuration" - " file" - ) - return self.from_pyfile(rv, silent=silent) - - def from_pyfile(self, filename: str, silent: bool = False) -> bool: - """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 OSError as e: - if silent and e.errno in (errno.ENOENT, errno.EISDIR, errno.ENOTDIR): - return False - e.strerror = f"Unable to load configuration file ({e.strerror})" - raise - self.from_object(d) - return True - - def from_object(self, obj: t.Union[object, str]) -> None: - """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, str): - obj = import_string(obj) - for key in dir(obj): - if key.isupper(): - self[key] = getattr(obj, key) - - def from_file( - self, - filename: str, - load: t.Callable[[t.IO[t.Any]], t.Mapping], - silent: bool = False, - ) -> bool: - """Update the values in the config from a file that is loaded - using the ``load`` parameter. The loaded data is passed to the - :meth:`from_mapping` method. - - .. code-block:: python - - import toml - app.config.from_file("config.toml", load=toml.load) - - :param filename: The path to the data file. This can be an - absolute path or relative to the config root path. - :param load: A callable that takes a file handle and returns a - mapping of loaded data from the file. - :type load: ``Callable[[Reader], Mapping]`` where ``Reader`` - implements a ``read`` method. - :param silent: Ignore the file if it doesn't exist. - - .. versionadded:: 2.0 - """ - filename = os.path.join(self.root_path, filename) - - try: - with open(filename) as f: - obj = load(f) - except OSError as e: - if silent and e.errno in (errno.ENOENT, errno.EISDIR): - return False - - e.strerror = f"Unable to load configuration file ({e.strerror})" - raise - - return self.from_mapping(obj) - - def from_json(self, filename: str, silent: bool = False) -> bool: - """Update the values in the config from a JSON file. The loaded - data is passed to the :meth:`from_mapping` method. - - :param filename: The path to the JSON file. This can be an - absolute path or relative to the config root path. - :param silent: Ignore the file if it doesn't exist. - - .. deprecated:: 2.0.0 - Will be removed in Flask 2.1. Use :meth:`from_file` instead. - This was removed early in 2.0.0, was added back in 2.0.1. - - .. versionadded:: 0.11 - """ - import warnings - from . import json - - warnings.warn( - "'from_json' is deprecated and will be removed in Flask" - " 2.1. Use 'from_file(path, json.load)' instead.", - DeprecationWarning, - stacklevel=2, - ) - return self.from_file(filename, json.load, silent=silent) - - def from_mapping( - self, mapping: t.Optional[t.Mapping[str, t.Any]] = None, **kwargs: t.Any - ) -> bool: - """Updates the config like :meth:`update` ignoring items with non-upper - keys. - - .. versionadded:: 0.11 - """ - mappings: t.Dict[str, t.Any] = {} - if mapping is not None: - mappings.update(mapping) - mappings.update(kwargs) - for key, value in mappings.items(): - if key.isupper(): - self[key] = value - return True - - def get_namespace( - self, namespace: str, lowercase: bool = True, trim_namespace: bool = True - ) -> t.Dict[str, t.Any]: - """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 self.items(): - 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) -> str: - return f"<{type(self).__name__} {dict.__repr__(self)}>" diff --git a/venv/lib/python3.9/site-packages/flask/ctx.py b/venv/lib/python3.9/site-packages/flask/ctx.py deleted file mode 100644 index 5c06463..0000000 --- a/venv/lib/python3.9/site-packages/flask/ctx.py +++ /dev/null @@ -1,480 +0,0 @@ -import sys -import typing as t -from functools import update_wrapper -from types import TracebackType - -from werkzeug.exceptions import HTTPException - -from .globals import _app_ctx_stack -from .globals import _request_ctx_stack -from .signals import appcontext_popped -from .signals import appcontext_pushed -from .typing import AfterRequestCallable - -if t.TYPE_CHECKING: - from .app import Flask - from .sessions import SessionMixin - from .wrappers import Request - - -# a singleton sentinel value for parameter defaults -_sentinel = object() - - -class _AppCtxGlobals: - """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 - """ - - # Define attr methods to let mypy know this is a namespace object - # that has arbitrary attributes. - - def __getattr__(self, name: str) -> t.Any: - try: - return self.__dict__[name] - except KeyError: - raise AttributeError(name) from None - - def __setattr__(self, name: str, value: t.Any) -> None: - self.__dict__[name] = value - - def __delattr__(self, name: str) -> None: - try: - del self.__dict__[name] - except KeyError: - raise AttributeError(name) from None - - def get(self, name: str, default: t.Optional[t.Any] = None) -> t.Any: - """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: str, default: t.Any = _sentinel) -> t.Any: - """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 raising 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: str, default: t.Any = None) -> t.Any: - """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: str) -> bool: - return item in self.__dict__ - - def __iter__(self) -> t.Iterator[str]: - return iter(self.__dict__) - - def __repr__(self) -> str: - top = _app_ctx_stack.top - if top is not None: - return f"" - return object.__repr__(self) - - -def after_this_request(f: AfterRequestCallable) -> AfterRequestCallable: - """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: t.Callable) -> t.Callable: - """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() -> bool: - """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() -> bool: - """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: - """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: "Flask") -> None: - 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) -> None: - """Binds the app context to the current context.""" - self._refcnt += 1 - _app_ctx_stack.push(self) - appcontext_pushed.send(self.app) - - def pop(self, exc: t.Optional[BaseException] = _sentinel) -> None: # type: ignore - """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, f"Popped wrong app context. ({rv!r} instead of {self!r})" - appcontext_popped.send(self.app) - - def __enter__(self) -> "AppContext": - self.push() - return self - - def __exit__( - self, exc_type: type, exc_value: BaseException, tb: TracebackType - ) -> None: - self.pop(exc_value) - - -class RequestContext: - """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: "Flask", - environ: dict, - request: t.Optional["Request"] = None, - session: t.Optional["SessionMixin"] = None, - ) -> 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: t.List[t.Optional["AppContext"]] = [] - - # 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: t.List[AfterRequestCallable] = [] - - @property - def g(self) -> AppContext: - return _app_ctx_stack.top.g - - @g.setter - def g(self, value: AppContext) -> None: - _app_ctx_stack.top.g = value - - def copy(self) -> "RequestContext": - """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) -> None: - """Can be overridden by a subclass to hook into the matching - of the request. - """ - try: - result = self.url_adapter.match(return_rule=True) # type: ignore - self.request.url_rule, self.request.view_args = result # type: ignore - except HTTPException as e: - self.request.routing_exception = e - - def push(self) -> None: - """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) - - _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) - - # Match the request URL after loading the session, so that the - # session is available in custom URL converters. - if self.url_adapter is not None: - self.match_request() - - def pop(self, exc: t.Optional[BaseException] = _sentinel) -> None: # type: ignore - """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() - clear_request = False - - try: - 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) - - 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 - ), f"Popped wrong request context. ({rv!r} instead of {self!r})" - - def auto_pop(self, exc: t.Optional[BaseException]) -> None: - 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 # type: ignore - else: - self.pop(exc) - - def __enter__(self) -> "RequestContext": - self.push() - return self - - def __exit__( - self, exc_type: type, exc_value: BaseException, tb: TracebackType - ) -> None: - # 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) - - def __repr__(self) -> str: - return ( - f"<{type(self).__name__} {self.request.url!r}" - f" [{self.request.method}] of {self.app.name}>" - ) diff --git a/venv/lib/python3.9/site-packages/flask/debughelpers.py b/venv/lib/python3.9/site-packages/flask/debughelpers.py deleted file mode 100644 index ce65c48..0000000 --- a/venv/lib/python3.9/site-packages/flask/debughelpers.py +++ /dev/null @@ -1,171 +0,0 @@ -import os -import typing as t -from warnings import warn - -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. - """ - - -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 = [ - f"You tried to access the file {key!r} in the request.files" - " dictionary but it does not exist. The mimetype for the" - f" request is {request.mimetype!r} 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.' - ] - if form_matches: - names = ", ".join(repr(x) for x in form_matches) - buf.append( - "\n\nThe browser instead transmitted some file names. " - f"This was submitted: {names}" - ) - 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 = [ - f"A request was sent to this URL ({request.url}) but a" - " redirect was issued automatically by the routing system" - f" to {exc.new_url!r}." - ] - - # In case just a slash was appended we can be extra helpful - if f"{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" - f" {request.method}-request to this URL since we can't make" - " browsers or HTTP clients redirect with form data reliably" - " or without user interaction." - ) - 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) -> t.Generator: - yield f"class: {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) for x in value): - continue - yield f"{key}:" - for item in value: - yield f" - {item}" - continue - elif not isinstance(value, (str, int, float, bool)): - continue - yield f"{key}: {value!r}" - - -def explain_template_loading_attempts(app: Flask, template, attempts) -> None: - """This should help developers understand what failed""" - info = [f"Locating template {template!r}:"] - 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 = f"application {srcobj.import_name!r}" - elif isinstance(srcobj, Blueprint): - src_info = f"blueprint {srcobj.name!r} ({srcobj.import_name})" - else: - src_info = repr(srcobj) - - info.append(f"{idx + 1:5}: trying loader of {src_info}") - - for line in _dump_loader_info(loader): - info.append(f" {line}") - - if triple is None: - detail = "no match" - else: - detail = f"found ({triple[1] or ''!r})" - total_found += 1 - info.append(f" -> {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" - f" to the blueprint {blueprint!r}." - ) - info.append(" Maybe you did not place a template in the right folder?") - info.append(" See https://flask.palletsprojects.com/blueprints/#templates") - - app.logger.info("\n".join(info)) - - -def explain_ignored_app_run() -> None: - if os.environ.get("WERKZEUG_RUN_MAIN") != "true": - warn( - Warning( - "Silently ignoring app.run() because the application is" - " run from the flask command line executable. Consider" - ' putting app.run() behind an if __name__ == "__main__"' - " guard to silence this warning." - ), - stacklevel=3, - ) diff --git a/venv/lib/python3.9/site-packages/flask/globals.py b/venv/lib/python3.9/site-packages/flask/globals.py deleted file mode 100644 index 6d91c75..0000000 --- a/venv/lib/python3.9/site-packages/flask/globals.py +++ /dev/null @@ -1,59 +0,0 @@ -import typing as t -from functools import partial - -from werkzeug.local import LocalProxy -from werkzeug.local import LocalStack - -if t.TYPE_CHECKING: - from .app import Flask - from .ctx import _AppCtxGlobals - from .sessions import SessionMixin - from .wrappers import Request - -_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: "Flask" = LocalProxy(_find_app) # type: ignore -request: "Request" = LocalProxy(partial(_lookup_req_object, "request")) # type: ignore -session: "SessionMixin" = LocalProxy( # type: ignore - partial(_lookup_req_object, "session") -) -g: "_AppCtxGlobals" = LocalProxy(partial(_lookup_app_object, "g")) # type: ignore diff --git a/venv/lib/python3.9/site-packages/flask/helpers.py b/venv/lib/python3.9/site-packages/flask/helpers.py deleted file mode 100644 index 7b8b087..0000000 --- a/venv/lib/python3.9/site-packages/flask/helpers.py +++ /dev/null @@ -1,836 +0,0 @@ -import os -import pkgutil -import socket -import sys -import typing as t -import warnings -from datetime import datetime -from datetime import timedelta -from functools import lru_cache -from functools import update_wrapper -from threading import RLock - -import werkzeug.utils -from werkzeug.exceptions import NotFound -from werkzeug.routing import BuildError -from werkzeug.urls import url_quote - -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 - -if t.TYPE_CHECKING: - from .wrappers import Response - - -def get_env() -> str: - """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() -> bool: - """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: bool = True) -> bool: - """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 stream_with_context( - generator_or_function: t.Union[ - t.Iterator[t.AnyStr], t.Callable[..., t.Iterator[t.AnyStr]] - ] -) -> t.Iterator[t.AnyStr]: - """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) # type: ignore - except TypeError: - - def decorator(*args: t.Any, **kwargs: t.Any) -> t.Any: - gen = generator_or_function(*args, **kwargs) # type: ignore - return stream_with_context(gen) - - return update_wrapper(decorator, generator_or_function) # type: ignore - - def generator() -> t.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: - yield from gen - finally: - if hasattr(gen, "close"): - gen.close() # type: ignore - - # 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: t.Any) -> "Response": - """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: str, **values: t.Any) -> str: - """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') - - See :ref:`url-building`. - - 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).with_traceback(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 - :data:`PREFERRED_URL_SCHEME` if no request context is available. - 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 = f"{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 += f"#{url_quote(anchor)}" - return rv - - -def get_template_attribute(template_name: str, attribute: str) -> t.Any: - """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: str, category: str = "message") -> None: - """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(), # type: ignore - message=message, - category=category, - ) - - -def get_flashed_messages( - with_categories: bool = False, category_filter: t.Iterable[str] = () -) -> t.Union[t.List[str], t.List[t.Tuple[str, str]]]: - """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 :doc:`/patterns/flashing` 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: filter of categories to limit return values. Only - categories in the list will be returned. - """ - 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 _prepare_send_file_kwargs( - download_name: t.Optional[str] = None, - attachment_filename: t.Optional[str] = None, - etag: t.Optional[t.Union[bool, str]] = None, - add_etags: t.Optional[t.Union[bool]] = None, - max_age: t.Optional[ - t.Union[int, t.Callable[[t.Optional[str]], t.Optional[int]]] - ] = None, - cache_timeout: t.Optional[int] = None, - **kwargs: t.Any, -) -> t.Dict[str, t.Any]: - if attachment_filename is not None: - warnings.warn( - "The 'attachment_filename' parameter has been renamed to" - " 'download_name'. The old name will be removed in Flask" - " 2.1.", - DeprecationWarning, - stacklevel=3, - ) - download_name = attachment_filename - - if cache_timeout is not None: - warnings.warn( - "The 'cache_timeout' parameter has been renamed to" - " 'max_age'. The old name will be removed in Flask 2.1.", - DeprecationWarning, - stacklevel=3, - ) - max_age = cache_timeout - - if add_etags is not None: - warnings.warn( - "The 'add_etags' parameter has been renamed to 'etag'. The" - " old name will be removed in Flask 2.1.", - DeprecationWarning, - stacklevel=3, - ) - etag = add_etags - - if max_age is None: - max_age = current_app.get_send_file_max_age - - kwargs.update( - environ=request.environ, - download_name=download_name, - etag=etag, - max_age=max_age, - use_x_sendfile=current_app.use_x_sendfile, - response_class=current_app.response_class, - _root_path=current_app.root_path, # type: ignore - ) - return kwargs - - -def send_file( - path_or_file: t.Union[os.PathLike, str, t.BinaryIO], - mimetype: t.Optional[str] = None, - as_attachment: bool = False, - download_name: t.Optional[str] = None, - attachment_filename: t.Optional[str] = None, - conditional: bool = True, - etag: t.Union[bool, str] = True, - add_etags: t.Optional[bool] = None, - last_modified: t.Optional[t.Union[datetime, int, float]] = None, - max_age: t.Optional[ - t.Union[int, t.Callable[[t.Optional[str]], t.Optional[int]]] - ] = None, - cache_timeout: t.Optional[int] = None, -): - """Send the contents of a file to the client. - - The first argument can be a file path or a file-like object. Paths - are preferred in most cases because Werkzeug can manage the file and - get extra information from the path. Passing a file-like object - requires that the file is opened in binary mode, and is mostly - useful when building a file in memory with :class:`io.BytesIO`. - - Never pass file paths provided by a user. The path is assumed to be - trusted, so a user could craft a path to access a file you didn't - intend. Use :func:`send_from_directory` to safely serve - user-requested paths from within a directory. - - If the WSGI server sets a ``file_wrapper`` in ``environ``, it is - used, otherwise Werkzeug's built-in wrapper is used. Alternatively, - if the HTTP server supports ``X-Sendfile``, configuring Flask with - ``USE_X_SENDFILE = True`` will tell the server to send the given - path, which is much more efficient than reading it in Python. - - :param path_or_file: The path to the file to send, relative to the - current working directory if a relative path is given. - Alternatively, a file-like object opened in binary mode. Make - sure the file pointer is seeked to the start of the data. - :param mimetype: The MIME type to send for the file. If not - provided, it will try to detect it from the file name. - :param as_attachment: Indicate to a browser that it should offer to - save the file instead of displaying it. - :param download_name: The default name browsers will use when saving - the file. Defaults to the passed file name. - :param conditional: Enable conditional and range responses based on - request headers. Requires passing a file path and ``environ``. - :param etag: Calculate an ETag for the file, which requires passing - a file path. Can also be a string to use instead. - :param last_modified: The last modified time to send for the file, - in seconds. If not provided, it will try to detect it from the - file path. - :param max_age: How long the client should cache the file, in - seconds. If set, ``Cache-Control`` will be ``public``, otherwise - it will be ``no-cache`` to prefer conditional caching. - - .. versionchanged:: 2.0 - ``download_name`` replaces the ``attachment_filename`` - parameter. If ``as_attachment=False``, it is passed with - ``Content-Disposition: inline`` instead. - - .. versionchanged:: 2.0 - ``max_age`` replaces the ``cache_timeout`` parameter. - ``conditional`` is enabled and ``max_age`` is not set by - default. - - .. versionchanged:: 2.0 - ``etag`` replaces the ``add_etags`` parameter. It can be a - string to use instead of generating one. - - .. versionchanged:: 2.0 - Passing a file-like object that inherits from - :class:`~io.TextIOBase` will raise a :exc:`ValueError` rather - than sending an empty file. - - .. versionadded:: 2.0 - Moved the implementation to Werkzeug. This is now a wrapper to - pass some Flask-specific arguments. - - .. versionchanged:: 1.1 - ``filename`` may be a :class:`~os.PathLike` object. - - .. versionchanged:: 1.1 - Passing a :class:`~io.BytesIO` object supports range requests. - - .. versionchanged:: 1.0.3 - Filenames are encoded with ASCII instead of Latin-1 for broader - compatibility with WSGI servers. - - .. versionchanged:: 1.0 - UTF-8 filenames as specified in :rfc:`2231` are supported. - - .. versionchanged:: 0.12 - The filename is no longer automatically inferred from file - objects. If you want to use automatic MIME and etag support, - pass a filename via ``filename_or_fp`` or - ``attachment_filename``. - - .. versionchanged:: 0.12 - ``attachment_filename`` is preferred over ``filename`` for MIME - detection. - - .. versionchanged:: 0.9 - ``cache_timeout`` defaults to - :meth:`Flask.get_send_file_max_age`. - - .. versionchanged:: 0.7 - MIME guessing and etag support for file-like objects was - deprecated because it was unreliable. Pass a filename if you are - able to, otherwise attach an etag yourself. - - .. versionchanged:: 0.5 - The ``add_etags``, ``cache_timeout`` and ``conditional`` - parameters were added. The default behavior is to add etags. - - .. versionadded:: 0.2 - """ - return werkzeug.utils.send_file( - **_prepare_send_file_kwargs( - path_or_file=path_or_file, - environ=request.environ, - mimetype=mimetype, - as_attachment=as_attachment, - download_name=download_name, - attachment_filename=attachment_filename, - conditional=conditional, - etag=etag, - add_etags=add_etags, - last_modified=last_modified, - max_age=max_age, - cache_timeout=cache_timeout, - ) - ) - - -def safe_join(directory: str, *pathnames: str) -> str: - """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``. - """ - warnings.warn( - "'flask.helpers.safe_join' is deprecated and will be removed in" - " Flask 2.1. Use 'werkzeug.utils.safe_join' instead.", - DeprecationWarning, - stacklevel=2, - ) - path = werkzeug.utils.safe_join(directory, *pathnames) - - if path is None: - raise NotFound() - - return path - - -def send_from_directory( - directory: t.Union[os.PathLike, str], - path: t.Union[os.PathLike, str], - filename: t.Optional[str] = None, - **kwargs: t.Any, -) -> "Response": - """Send a file from within a directory using :func:`send_file`. - - .. code-block:: python - - @app.route("/uploads/") - def download_file(name): - return send_from_directory( - app.config['UPLOAD_FOLDER'], name, as_attachment=True - ) - - This is a secure way to serve files from a folder, such as static - files or uploads. Uses :func:`~werkzeug.security.safe_join` to - ensure the path coming from the client is not maliciously crafted to - point outside the specified directory. - - If the final path does not point to an existing regular file, - raises a 404 :exc:`~werkzeug.exceptions.NotFound` error. - - :param directory: The directory that ``path`` must be located under. - :param path: The path to the file to send, relative to - ``directory``. - :param kwargs: Arguments to pass to :func:`send_file`. - - .. versionchanged:: 2.0 - ``path`` replaces the ``filename`` parameter. - - .. versionadded:: 2.0 - Moved the implementation to Werkzeug. This is now a wrapper to - pass some Flask-specific arguments. - - .. versionadded:: 0.5 - """ - if filename is not None: - warnings.warn( - "The 'filename' parameter has been renamed to 'path'. The" - " old name will be removed in Flask 2.1.", - DeprecationWarning, - stacklevel=2, - ) - path = filename - - return werkzeug.utils.send_from_directory( # type: ignore - directory, path, **_prepare_send_file_kwargs(**kwargs) - ) - - -def get_root_path(import_name: str) -> str: - """Find the root path of a package, or the path that contains a - module. If it cannot be found, returns the current working - directory. - - Not to be confused with the value returned by :func:`find_package`. - - :meta private: - """ - # 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() - - if hasattr(loader, "get_filename"): - filepath = loader.get_filename(import_name) # type: ignore - else: - # Fall back to imports. - __import__(import_name) - mod = sys.modules[import_name] - filepath = getattr(mod, "__file__", None) - - # If we don't have a file path it might be because it is a - # namespace package. In this case pick the root path from the - # first module that is contained in the package. - if filepath is None: - raise RuntimeError( - "No root path can be found for the provided module" - f" {import_name!r}. 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." - ) - - # filepath is import_name.py for a module, or __init__.py for a package. - return os.path.dirname(os.path.abspath(filepath)) - - -class locked_cached_property(werkzeug.utils.cached_property): - """A :func:`property` that is only evaluated once. Like - :class:`werkzeug.utils.cached_property` except access uses a lock - for thread safety. - - .. versionchanged:: 2.0 - Inherits from Werkzeug's ``cached_property`` (and ``property``). - """ - - def __init__( - self, - fget: t.Callable[[t.Any], t.Any], - name: t.Optional[str] = None, - doc: t.Optional[str] = None, - ) -> None: - super().__init__(fget, name=name, doc=doc) - self.lock = RLock() - - def __get__(self, obj: object, type: type = None) -> t.Any: # type: ignore - if obj is None: - return self - - with self.lock: - return super().__get__(obj, type=type) - - def __set__(self, obj: object, value: t.Any) -> None: - with self.lock: - super().__set__(obj, value) - - def __delete__(self, obj: object) -> None: - with self.lock: - super().__delete__(obj) - - -def total_seconds(td: timedelta) -> int: - """Returns the total seconds from a timedelta object. - - :param timedelta td: the timedelta to be converted in seconds - - :returns: number of seconds - :rtype: int - - .. deprecated:: 2.0 - Will be removed in Flask 2.1. Use - :meth:`timedelta.total_seconds` instead. - """ - warnings.warn( - "'total_seconds' is deprecated and will be removed in Flask" - " 2.1. Use 'timedelta.total_seconds' instead.", - DeprecationWarning, - stacklevel=2, - ) - return td.days * 60 * 60 * 24 + td.seconds - - -def is_ip(value: str) -> bool: - """Determine if the given string is an IP address. - - :param value: value to check - :type value: str - - :return: True if string is an IP address - :rtype: bool - """ - for family in (socket.AF_INET, socket.AF_INET6): - try: - socket.inet_pton(family, value) - except OSError: - pass - else: - return True - - return False - - -@lru_cache(maxsize=None) -def _split_blueprint_path(name: str) -> t.List[str]: - out: t.List[str] = [name] - - if "." in name: - out.extend(_split_blueprint_path(name.rpartition(".")[0])) - - return out diff --git a/venv/lib/python3.9/site-packages/flask/json/__init__.py b/venv/lib/python3.9/site-packages/flask/json/__init__.py deleted file mode 100644 index 5780e20..0000000 --- a/venv/lib/python3.9/site-packages/flask/json/__init__.py +++ /dev/null @@ -1,350 +0,0 @@ -import io -import json as _json -import typing as t -import uuid -import warnings -from datetime import date - -from jinja2.utils import htmlsafe_json_dumps as _jinja_htmlsafe_dumps -from werkzeug.http import http_date - -from ..globals import current_app -from ..globals import request - -if t.TYPE_CHECKING: - from ..app import Flask - from ..wrappers import Response - -try: - import dataclasses -except ImportError: - # Python < 3.7 - dataclasses = None # type: ignore - - -class JSONEncoder(_json.JSONEncoder): - """The default JSON encoder. Handles extra types compared to the - built-in :class:`json.JSONEncoder`. - - - :class:`datetime.datetime` and :class:`datetime.date` are - serialized to :rfc:`822` strings. This is the same as the HTTP - date format. - - :class:`uuid.UUID` is serialized to a string. - - :class:`dataclasses.dataclass` is passed to - :func:`dataclasses.asdict`. - - :class:`~markupsafe.Markup` (or any object with a ``__html__`` - method) will call the ``__html__`` method to get a string. - - Assign a subclass of this to :attr:`flask.Flask.json_encoder` or - :attr:`flask.Blueprint.json_encoder` to override the default. - """ - - def default(self, o: t.Any) -> t.Any: - """Convert ``o`` to a JSON serializable type. See - :meth:`json.JSONEncoder.default`. Python does not support - overriding how basic types like ``str`` or ``list`` are - serialized, they are handled before this method. - """ - if isinstance(o, date): - return http_date(o) - if isinstance(o, uuid.UUID): - return str(o) - if dataclasses and dataclasses.is_dataclass(o): - return dataclasses.asdict(o) - if hasattr(o, "__html__"): - return str(o.__html__()) - return super().default(o) - - -class JSONDecoder(_json.JSONDecoder): - """The default JSON decoder. - - This does not change any behavior from the built-in - :class:`json.JSONDecoder`. - - Assign a subclass of this to :attr:`flask.Flask.json_decoder` or - :attr:`flask.Blueprint.json_decoder` to override the default. - """ - - -def _dump_arg_defaults( - kwargs: t.Dict[str, t.Any], app: t.Optional["Flask"] = None -) -> None: - """Inject default arguments for dump functions.""" - if app is None: - app = current_app - - if app: - cls = app.json_encoder - bp = app.blueprints.get(request.blueprint) if request else None # type: ignore - if bp is not None and bp.json_encoder is not None: - cls = bp.json_encoder - - kwargs.setdefault("cls", cls) - kwargs.setdefault("ensure_ascii", app.config["JSON_AS_ASCII"]) - kwargs.setdefault("sort_keys", app.config["JSON_SORT_KEYS"]) - else: - kwargs.setdefault("sort_keys", True) - kwargs.setdefault("cls", JSONEncoder) - - -def _load_arg_defaults( - kwargs: t.Dict[str, t.Any], app: t.Optional["Flask"] = None -) -> None: - """Inject default arguments for load functions.""" - if app is None: - app = current_app - - if app: - cls = app.json_decoder - bp = app.blueprints.get(request.blueprint) if request else None # type: ignore - if bp is not None and bp.json_decoder is not None: - cls = bp.json_decoder - - kwargs.setdefault("cls", cls) - else: - kwargs.setdefault("cls", JSONDecoder) - - -def dumps(obj: t.Any, app: t.Optional["Flask"] = None, **kwargs: t.Any) -> str: - """Serialize an object to a string of JSON. - - Takes the same arguments as the built-in :func:`json.dumps`, with - some defaults from application configuration. - - :param obj: Object to serialize to JSON. - :param app: Use this app's config instead of the active app context - or defaults. - :param kwargs: Extra arguments passed to :func:`json.dumps`. - - .. versionchanged:: 2.0 - ``encoding`` is deprecated and will be removed in Flask 2.1. - - .. 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: - warnings.warn( - "'encoding' is deprecated and will be removed in Flask 2.1.", - DeprecationWarning, - stacklevel=2, - ) - - if isinstance(rv, str): - return rv.encode(encoding) # type: ignore - - return rv - - -def dump( - obj: t.Any, fp: t.IO[str], app: t.Optional["Flask"] = None, **kwargs: t.Any -) -> None: - """Serialize an object to JSON written to a file object. - - Takes the same arguments as the built-in :func:`json.dump`, with - some defaults from application configuration. - - :param obj: Object to serialize to JSON. - :param fp: File object to write JSON to. - :param app: Use this app's config instead of the active app context - or defaults. - :param kwargs: Extra arguments passed to :func:`json.dump`. - - .. versionchanged:: 2.0 - Writing to a binary file, and the ``encoding`` argument, is - deprecated and will be removed in Flask 2.1. - """ - _dump_arg_defaults(kwargs, app=app) - encoding = kwargs.pop("encoding", None) - show_warning = encoding is not None - - try: - fp.write("") - except TypeError: - show_warning = True - fp = io.TextIOWrapper(fp, encoding or "utf-8") # type: ignore - - if show_warning: - warnings.warn( - "Writing to a binary file, and the 'encoding' argument, is" - " deprecated and will be removed in Flask 2.1.", - DeprecationWarning, - stacklevel=2, - ) - - _json.dump(obj, fp, **kwargs) - - -def loads(s: str, app: t.Optional["Flask"] = None, **kwargs: t.Any) -> t.Any: - """Deserialize an object from a string of JSON. - - Takes the same arguments as the built-in :func:`json.loads`, with - some defaults from application configuration. - - :param s: JSON string to deserialize. - :param app: Use this app's config instead of the active app context - or defaults. - :param kwargs: Extra arguments passed to :func:`json.loads`. - - .. versionchanged:: 2.0 - ``encoding`` is deprecated and will be removed in Flask 2.1. The - data must be a string or UTF-8 bytes. - - .. versionchanged:: 1.0.3 - ``app`` can be passed directly, rather than requiring an app - context for configuration. - """ - _load_arg_defaults(kwargs, app=app) - encoding = kwargs.pop("encoding", None) - - if encoding is not None: - warnings.warn( - "'encoding' is deprecated and will be removed in Flask 2.1." - " The data must be a string or UTF-8 bytes.", - DeprecationWarning, - stacklevel=2, - ) - - if isinstance(s, bytes): - s = s.decode(encoding) - - return _json.loads(s, **kwargs) - - -def load(fp: t.IO[str], app: t.Optional["Flask"] = None, **kwargs: t.Any) -> t.Any: - """Deserialize an object from JSON read from a file object. - - Takes the same arguments as the built-in :func:`json.load`, with - some defaults from application configuration. - - :param fp: File object to read JSON from. - :param app: Use this app's config instead of the active app context - or defaults. - :param kwargs: Extra arguments passed to :func:`json.load`. - - .. versionchanged:: 2.0 - ``encoding`` is deprecated and will be removed in Flask 2.1. The - file must be text mode, or binary mode with UTF-8 bytes. - """ - _load_arg_defaults(kwargs, app=app) - encoding = kwargs.pop("encoding", None) - - if encoding is not None: - warnings.warn( - "'encoding' is deprecated and will be removed in Flask 2.1." - " The file must be text mode, or binary mode with UTF-8" - " bytes.", - DeprecationWarning, - stacklevel=2, - ) - - if isinstance(fp.read(0), bytes): - fp = io.TextIOWrapper(fp, encoding) # type: ignore - - return _json.load(fp, **kwargs) - - -def htmlsafe_dumps(obj: t.Any, **kwargs: t.Any) -> str: - """Serialize an object to a string of JSON with :func:`dumps`, then - replace HTML-unsafe characters with Unicode escapes and mark the - result safe with :class:`~markupsafe.Markup`. - - This is available in templates as the ``|tojson`` filter. - - The returned string is safe to render in HTML documents and - `` - - - -

- -
-
-

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 - + """\ -

%(exception_type)s

-
-

%(exception)s

-
-

Traceback (most recent call last)

-%(summary)s -
-

- This is the Copy/Paste friendly version of the traceback. -

- -
-
- 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 - + """\ -

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 = """\ -
- %(title)s -
    %(frames)s
- %(description)s -
-""" - -FRAME_HTML = """\ -
-

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

-
%(lines)s
-
-""" - -SOURCE_LINE_HTML = """\ - - %(lineno)s - %(code)s - -""" - - -def render_console_html(secret: str, evalex_trusted: bool = True) -> str: - 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: bool = False, - show_hidden_frames: bool = False, - skip: int = 0, -) -> "Traceback": - """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. - """ - info = t.cast( - t.Tuple[t.Type[BaseException], BaseException, TracebackType], sys.exc_info() - ) - exc_type, exc_value, tb = info - - if ignore_system_exceptions and exc_type in { - SystemExit, - KeyboardInterrupt, - GeneratorExit, - }: - raise - for _ in range(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: - """Helper for the source renderer.""" - - __slots__ = ("lineno", "code", "in_frame", "current") - - def __init__(self, lineno: int, code: str) -> None: - self.lineno = lineno - self.code = code - self.in_frame = False - self.current = False - - @property - def classes(self) -> t.List[str]: - rv = ["line"] - if self.in_frame: - rv.append("in-frame") - if self.current: - rv.append("current") - return rv - - def render(self) -> str: - return SOURCE_LINE_HTML % { - "classes": " ".join(self.classes), - "lineno": self.lineno, - "code": escape(self.code), - } - - -class Traceback: - """Wraps a traceback.""" - - def __init__( - self, - exc_type: t.Type[BaseException], - exc_value: BaseException, - tb: TracebackType, - ) -> None: - 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 = f"{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)) - exc_value = exc_value.__cause__ or exc_value.__context__ # type: ignore - if exc_value is None or id(exc_value) in memo: - break - exc_type = type(exc_value) - tb = exc_value.__traceback__ # type: ignore - self.groups.reverse() - self.frames = [frame for group in self.groups for frame in group.frames] - - def filter_hidden_frames(self) -> None: - """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) -> bool: - """Is it a syntax error?""" - return isinstance(self.exc_value, SyntaxError) - - @property - def exception(self) -> str: - """String representation of the final exception.""" - return self.groups[-1].exception - - def log(self, logfile: t.Optional[t.TextIO] = None) -> None: - """Log the ASCII traceback into a file object.""" - if logfile is None: - logfile = sys.stderr - tb = f"{self.plaintext.rstrip()}\n" - logfile.write(tb) - - def render_summary(self, include_title: bool = True) -> str: - """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 = "Syntax Error" - else: - title = "Traceback (most recent call last):" - - if self.is_syntax_error: - description = f"
{escape(self.exception)}
" - else: - description = f"
{escape(self.exception)}
" - - return SUMMARY_HTML % { - "classes": " ".join(classes), - "title": f"

{title if title else ''}

", - "frames": "\n".join(frames), - "description": description, - } - - def render_full( - self, - evalex: bool = False, - secret: t.Optional[str] = None, - evalex_trusted: bool = True, - ) -> str: - """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) -> str: - return "\n".join([group.render_text() for group in self.groups]) - - @property - def id(self) -> int: - return id(self) - - -class Group: - """A group of frames for an exception in a traceback. If the - exception has a ``__cause__`` or ``__context__``, there are multiple - exception groups. - """ - - def __init__( - self, - exc_type: t.Type[BaseException], - exc_value: BaseException, - tb: TracebackType, - ) -> None: - self.exc_type = exc_type - self.exc_value = exc_value - self.info = None - if exc_value.__cause__ is not None: - self.info = ( - "The above exception was the direct cause of the following exception" - ) - elif exc_value.__context__ is not None: - self.info = ( - "During handling of the above exception, another exception occurred" - ) - - self.frames = [] - while tb is not None: - self.frames.append(Frame(exc_type, exc_value, tb)) - tb = tb.tb_next # type: ignore - - def filter_hidden_frames(self) -> None: - new_frames: t.List[Frame] = [] - 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) -> str: - """String representation of the exception.""" - buf = traceback.format_exception_only(self.exc_type, self.exc_value) - rv = "".join(buf).strip() - return _to_str(rv, "utf-8", "replace") - - def render(self, mark_lib: bool = True) -> str: - out = [] - if self.info is not None: - out.append(f'
  • {self.info}:
    ') - for frame in self.frames: - title = f' title="{escape(frame.info)}"' if frame.info else "" - out.append(f"{frame.render(mark_lib=mark_lib)}") - return "\n".join(out) - - def render_text(self) -> str: - out = [] - if self.info is not None: - out.append(f"\n{self.info}:\n") - out.append("Traceback (most recent call last):") - for frame in self.frames: - out.append(frame.render_text()) - out.append(self.exception) - return "\n".join(out) - - -class Frame: - """A single frame in a traceback.""" - - def __init__( - self, - exc_type: t.Type[BaseException], - exc_value: BaseException, - tb: TracebackType, - ) -> None: - 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_str(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_str(info, "utf-8", "replace") - self.info = info - - def render(self, mark_lib: bool = True) -> str: - """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) -> bool: - return any( - self.filename.startswith(os.path.realpath(path)) - for path in sysconfig.get_paths().values() - ) - - def render_text(self) -> str: - return ( - f' File "{self.filename}", line {self.lineno}, in {self.function_name}\n' - f" {self.current_line.strip()}" - ) - - def render_line_context(self) -> str: - before, current, after = self.get_context_lines() - rv = [] - - def render_line(line: str, cls: str) -> None: - line = line.expandtabs().rstrip() - stripped_line = line.strip() - prefix = len(line) - len(stripped_line) - rv.append( - f'
    {" " * prefix}'
    -                f"{escape(stripped_line) if stripped_line else ' '}
    " - ) - - 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) -> t.List[Line]: - """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([f"{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: t.Union[str, CodeType], mode: str = "single") -> t.Any: - """Evaluate code in the context of the frame.""" - if isinstance(code, str): - code = compile(code, "", mode) - return eval(code, self.globals, self.locals) - - @cached_property - def sourcelines(self) -> t.List[str]: - """The sourcecode of the file as list of 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(self.filename, mode="rb") as f: - source = f.read() - except OSError: - return [] - - # already str? return right away - if isinstance(source, str): - return source.splitlines() - - charset = "utf-8" - if source.startswith(codecs.BOM_UTF8): - source = source[3:] - else: - for idx, match in enumerate(_line_re.finditer(source)): - coding_match = _coding_re.search(match.group()) - if coding_match is not None: - charset = coding_match.group(1).decode("utf-8") - break - if idx > 1: - break - - # on broken cookies we fall back to utf-8 too - charset = _to_str(charset) - try: - codecs.lookup(charset) - except LookupError: - charset = "utf-8" - - return source.decode(charset, "replace").splitlines() - - def get_context_lines( - self, context: int = 5 - ) -> t.Tuple[t.List[str], str, t.List[str]]: - 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) -> str: - try: - return self.sourcelines[self.lineno - 1] - except IndexError: - return "" - - @cached_property - def console(self) -> Console: - return Console(self.globals, self.locals) - - @property - def id(self) -> int: - return id(self) diff --git a/venv/lib/python3.9/site-packages/werkzeug/exceptions.py b/venv/lib/python3.9/site-packages/werkzeug/exceptions.py deleted file mode 100644 index 16c3964..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/exceptions.py +++ /dev/null @@ -1,943 +0,0 @@ -"""Implements a number of Python exceptions which can be raised from within -a view to trigger a standard HTTP non-200 response. - -Usage Example -------------- - -.. code-block:: python - - from werkzeug.wrappers.request import Request - from werkzeug.exceptions import HTTPException, NotFound - - def view(request): - raise NotFound() - - @Request.application - def application(request): - try: - return view(request) - except HTTPException as e: - return e - -As you can see from this example those exceptions are callable WSGI -applications. However, they are not Werkzeug response objects. You -can get a response object by calling ``get_response()`` on a HTTP -exception. - -Keep in mind that you may have to pass an environ (WSGI) or scope -(ASGI) to ``get_response()`` because some errors fetch additional -information relating to the request. - -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: - -.. code-block:: python - - @Request.application - def application(request): - try: - return view(request) - except NotFound as e: - return not_found(request) - except HTTPException as e: - return e - -""" -import sys -import typing as t -import warnings -from datetime import datetime -from html import escape - -from ._internal import _get_environ - -if t.TYPE_CHECKING: - import typing_extensions as te - from _typeshed.wsgi import StartResponse - from _typeshed.wsgi import WSGIEnvironment - from .datastructures import WWWAuthenticate - from .sansio.response import Response - from .wrappers.response import Response as WSGIResponse # noqa: F401 - - -class HTTPException(Exception): - """The base class for all HTTP exceptions. This exception can be called as a WSGI - application to render a default error page or you can catch the subclasses - of it independently and render nicer error messages. - """ - - code: t.Optional[int] = None - description: t.Optional[str] = None - - def __init__( - self, - description: t.Optional[str] = None, - response: t.Optional["Response"] = None, - ) -> None: - super().__init__() - if description is not None: - self.description = description - self.response = response - - @classmethod - def wrap( - cls, exception: t.Type[BaseException], name: t.Optional[str] = None - ) -> t.Type["HTTPException"]: - """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. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Create a subclass manually - instead. - - .. 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. - """ - warnings.warn( - "'HTTPException.wrap' is deprecated and will be removed in" - " Werkzeug 2.1. Create a subclass manually instead.", - DeprecationWarning, - stacklevel=2, - ) - - class newcls(cls, exception): # type: ignore - _description = cls.description - show_exception = False - - def __init__( - self, arg: t.Optional[t.Any] = None, *args: t.Any, **kwargs: t.Any - ) -> None: - super().__init__(*args, **kwargs) - - if arg is None: - exception.__init__(self) - else: - exception.__init__(self, arg) - - @property - def description(self) -> str: - if self.show_exception: - return ( - f"{self._description}\n" - f"{exception.__name__}: {exception.__str__(self)}" - ) - - return self._description # type: ignore - - @description.setter - def description(self, value: str) -> None: - self._description = value - - newcls.__module__ = sys._getframe(1).f_globals["__name__"] - name = name or cls.__name__ + exception.__name__ - newcls.__name__ = newcls.__qualname__ = name - return newcls - - @property - def name(self) -> str: - """The status name.""" - from .http import HTTP_STATUS_CODES - - return HTTP_STATUS_CODES.get(self.code, "Unknown Error") # type: ignore - - def get_description( - self, - environ: t.Optional["WSGIEnvironment"] = None, - scope: t.Optional[dict] = None, - ) -> str: - """Get the description.""" - if self.description is None: - description = "" - elif not isinstance(self.description, str): - description = str(self.description) - else: - description = self.description - - description = escape(description).replace("\n", "
    ") - return f"

    {description}

    " - - def get_body( - self, - environ: t.Optional["WSGIEnvironment"] = None, - scope: t.Optional[dict] = None, - ) -> str: - """Get the HTML body.""" - return ( - '\n' - f"{self.code} {escape(self.name)}\n" - f"

    {escape(self.name)}

    \n" - f"{self.get_description(environ)}\n" - ) - - def get_headers( - self, - environ: t.Optional["WSGIEnvironment"] = None, - scope: t.Optional[dict] = None, - ) -> t.List[t.Tuple[str, str]]: - """Get a list of headers.""" - return [("Content-Type", "text/html; charset=utf-8")] - - def get_response( - self, - environ: t.Optional["WSGIEnvironment"] = None, - scope: t.Optional[dict] = None, - ) -> "Response": - """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 as WSGIResponse # noqa: F811 - - if self.response is not None: - return self.response - if environ is not None: - environ = _get_environ(environ) - headers = self.get_headers(environ, scope) - return WSGIResponse(self.get_body(environ, scope), self.code, headers) - - def __call__( - self, environ: "WSGIEnvironment", start_response: "StartResponse" - ) -> t.Iterable[bytes]: - """Call the exception as WSGI application. - - :param environ: the WSGI environment. - :param start_response: the response callable provided by the WSGI - server. - """ - response = t.cast("WSGIResponse", self.get_response(environ)) - return response(environ, start_response) - - def __str__(self) -> str: - code = self.code if self.code is not None else "???" - return f"{code} {self.name}: {self.description}" - - def __repr__(self) -> str: - code = self.code if self.code is not None else "???" - return f"<{type(self).__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 BadRequestKeyError(BadRequest, KeyError): - """An exception that is used to signal both a :exc:`KeyError` and a - :exc:`BadRequest`. Used by many of the datastructures. - """ - - _description = BadRequest.description - #: Show the KeyError along with the HTTP error message in the - #: response. This should be disabled in production, but can be - #: useful in a debug mode. - show_exception = False - - def __init__(self, arg: t.Optional[str] = None, *args: t.Any, **kwargs: t.Any): - super().__init__(*args, **kwargs) - - if arg is None: - KeyError.__init__(self) - else: - KeyError.__init__(self, arg) - - @property # type: ignore - def description(self) -> str: # type: ignore - if self.show_exception: - return ( - f"{self._description}\n" - f"{KeyError.__name__}: {KeyError.__str__(self)}" - ) - - return self._description - - @description.setter - def description(self, value: str) -> None: - self._description = value - - -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(s). - - .. versionchanged:: 2.0 - Serialize multiple ``www_authenticate`` items into multiple - ``WWW-Authenticate`` headers, rather than joining them - into a single value, for better interoperability. - - .. 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: t.Optional[str] = None, - response: t.Optional["Response"] = None, - www_authenticate: t.Optional[ - t.Union["WWWAuthenticate", t.Iterable["WWWAuthenticate"]] - ] = None, - ) -> None: - super().__init__(description, response) - - from .datastructures import WWWAuthenticate - - if isinstance(www_authenticate, WWWAuthenticate): - www_authenticate = (www_authenticate,) - - self.www_authenticate = www_authenticate - - def get_headers( - self, - environ: t.Optional["WSGIEnvironment"] = None, - scope: t.Optional[dict] = None, - ) -> t.List[t.Tuple[str, str]]: - headers = super().get_headers(environ, scope) - if self.www_authenticate: - headers.extend(("WWW-Authenticate", 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: t.Optional[t.Iterable[str]] = None, - description: t.Optional[str] = None, - response: t.Optional["Response"] = None, - ) -> None: - """Takes an optional list of valid http methods - starting with werkzeug 0.3 the list will be mandatory.""" - super().__init__(description=description, response=response) - self.valid_methods = valid_methods - - def get_headers( - self, - environ: t.Optional["WSGIEnvironment"] = None, - scope: t.Optional[dict] = None, - ) -> t.List[t.Tuple[str, str]]: - headers = super().get_headers(environ, scope) - 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: t.Optional[int] = None, - units: str = "bytes", - description: t.Optional[str] = None, - response: t.Optional["Response"] = None, - ) -> None: - """Takes an optional `Content-Range` header value based on ``length`` - parameter. - """ - super().__init__(description=description, response=response) - self.length = length - self.units = units - - def get_headers( - self, - environ: t.Optional["WSGIEnvironment"] = None, - scope: t.Optional[dict] = None, - ) -> t.List[t.Tuple[str, str]]: - headers = super().get_headers(environ, scope) - if self.length is not None: - headers.append(("Content-Range", f"{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: t.Optional[str] = None, - response: t.Optional["Response"] = None, - retry_after: t.Optional[t.Union[datetime, int]] = None, - ) -> None: - super().__init__(description, response) - self.retry_after = retry_after - - def get_headers( - self, - environ: t.Optional["WSGIEnvironment"] = None, - scope: t.Optional[dict] = None, - ) -> t.List[t.Tuple[str, str]]: - headers = super().get_headers(environ, scope) - - 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: t.Optional[str] = None, - response: t.Optional["Response"] = None, - original_exception: t.Optional[BaseException] = None, - ) -> 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().__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: t.Dict[int, t.Type[HTTPException]] = {} - - -def _find_exceptions() -> None: - for obj in globals().values(): - try: - is_http_exception = issubclass(obj, HTTPException) - except TypeError: - is_http_exception = False - if not is_http_exception or obj.code is None: - continue - 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: - """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: t.Optional[t.Dict[int, t.Type[HTTPException]]] = None, - extra: t.Optional[t.Dict[int, t.Type[HTTPException]]] = None, - ) -> 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: t.Union[int, "Response"], *args: t.Any, **kwargs: t.Any - ) -> "te.NoReturn": - from .sansio.response import Response - - if isinstance(code, Response): - raise HTTPException(response=code) - - if code not in self.mapping: - raise LookupError(f"no exception for {code!r}") - - raise self.mapping[code](*args, **kwargs) - - -def abort( - status: t.Union[int, "Response"], *args: t.Any, **kwargs: t.Any -) -> "te.NoReturn": - """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')) - - """ - _aborter(status, *args, **kwargs) - - -_aborter: Aborter = Aborter() diff --git a/venv/lib/python3.9/site-packages/werkzeug/filesystem.py b/venv/lib/python3.9/site-packages/werkzeug/filesystem.py deleted file mode 100644 index 36a3d12..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/filesystem.py +++ /dev/null @@ -1,55 +0,0 @@ -import codecs -import sys -import typing as t -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: t.Optional[str]) -> bool: - """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() -> str: - """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 string 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" - f" UTF-8 as filesystem encoding instead of {rv!r}", - BrokenFilesystemWarning, - ) - _warned_about_filesystem_encoding = True - return "utf-8" - return rv diff --git a/venv/lib/python3.9/site-packages/werkzeug/formparser.py b/venv/lib/python3.9/site-packages/werkzeug/formparser.py deleted file mode 100644 index 2dcb709..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/formparser.py +++ /dev/null @@ -1,495 +0,0 @@ -import typing as t -import warnings -from functools import update_wrapper -from io import BytesIO -from itertools import chain -from typing import Union - -from . import exceptions -from ._internal import _to_str -from .datastructures import FileStorage -from .datastructures import Headers -from .datastructures import MultiDict -from .http import parse_options_header -from .sansio.multipart import Data -from .sansio.multipart import Epilogue -from .sansio.multipart import Field -from .sansio.multipart import File -from .sansio.multipart import MultipartDecoder -from .sansio.multipart import NeedData -from .urls import url_decode_stream -from .wsgi import _make_chunk_iter -from .wsgi import get_content_length -from .wsgi import get_input_stream - -# 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 # type: ignore - -if t.TYPE_CHECKING: - import typing as te - from _typeshed.wsgi import WSGIEnvironment - - t_parse_result = t.Tuple[t.BinaryIO, MultiDict, MultiDict] - - class TStreamFactory(te.Protocol): - def __call__( - self, - total_content_length: t.Optional[int], - content_type: t.Optional[str], - filename: t.Optional[str], - content_length: t.Optional[int] = None, - ) -> t.BinaryIO: - ... - - -F = t.TypeVar("F", bound=t.Callable[..., t.Any]) - - -def _exhaust(stream: t.BinaryIO) -> None: - bts = stream.read(64 * 1024) - while bts: - bts = stream.read(64 * 1024) - - -def default_stream_factory( - total_content_length: t.Optional[int], - content_type: t.Optional[str], - filename: t.Optional[str], - content_length: t.Optional[int] = None, -) -> t.BinaryIO: - max_size = 1024 * 500 - - if SpooledTemporaryFile is not None: - return t.cast(t.BinaryIO, SpooledTemporaryFile(max_size=max_size, mode="rb+")) - elif total_content_length is None or total_content_length > max_size: - return t.cast(t.BinaryIO, TemporaryFile("rb+")) - - return BytesIO() - - -def parse_form_data( - environ: "WSGIEnvironment", - stream_factory: t.Optional["TStreamFactory"] = None, - charset: str = "utf-8", - errors: str = "replace", - max_form_memory_size: t.Optional[int] = None, - max_content_length: t.Optional[int] = None, - cls: t.Optional[t.Type[MultiDict]] = None, - silent: bool = True, -) -> "t_parse_result": - """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 :doc:`/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:`Response._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: F) -> F: - """Helper decorator for methods that exhausts the stream on return.""" - - def wrapper(self, stream, *args, **kwargs): # type: ignore - try: - return f(self, stream, *args, **kwargs) - finally: - exhaust = getattr(stream, "exhaust", None) - - if exhaust is not None: - exhaust() - else: - while True: - chunk = stream.read(1024 * 64) - - if not chunk: - break - - return update_wrapper(t.cast(F, wrapper), f) - - -class FormDataParser: - """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:`Response._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: t.Optional["TStreamFactory"] = None, - charset: str = "utf-8", - errors: str = "replace", - max_form_memory_size: t.Optional[int] = None, - max_content_length: t.Optional[int] = None, - cls: t.Optional[t.Type[MultiDict]] = None, - silent: bool = True, - ) -> None: - 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: str, options: t.Dict[str, str] - ) -> t.Optional[ - t.Callable[ - ["FormDataParser", t.BinaryIO, str, t.Optional[int], t.Dict[str, str]], - "t_parse_result", - ] - ]: - return self.parse_functions.get(mimetype) - - def parse_from_environ(self, environ: "WSGIEnvironment") -> "t_parse_result": - """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: t.BinaryIO, - mimetype: str, - content_length: t.Optional[int], - options: t.Optional[t.Dict[str, str]] = None, - ) -> "t_parse_result": - """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 - ): - # if the input stream is not exhausted, firefox reports Connection Reset - _exhaust(stream) - 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: t.BinaryIO, - mimetype: str, - content_length: t.Optional[int], - options: t.Dict[str, str], - ) -> "t_parse_result": - 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", "").encode("ascii") - - if not boundary: - raise ValueError("Missing boundary") - - form, files = parser.parse(stream, boundary, content_length) - return stream, form, files - - @exhaust_stream - def _parse_urlencoded( - self, - stream: t.BinaryIO, - mimetype: str, - content_length: t.Optional[int], - options: t.Dict[str, str], - ) -> "t_parse_result": - if ( - self.max_form_memory_size is not None - and content_length is not None - and content_length > self.max_form_memory_size - ): - # if the input stream is not exhausted, firefox reports Connection Reset - _exhaust(stream) - 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: t.Dict[ - str, - t.Callable[ - ["FormDataParser", t.BinaryIO, str, t.Optional[int], t.Dict[str, str]], - "t_parse_result", - ], - ] = { - "multipart/form-data": _parse_multipart, - "application/x-www-form-urlencoded": _parse_urlencoded, - "application/x-url-encoded": _parse_urlencoded, - } - - -def _line_parse(line: str) -> t.Tuple[str, bool]: - """Removes line ending characters and returns a tuple (`stripped_line`, - `is_terminated`). - """ - if line[-2:] == "\r\n": - return line[:-2], True - - elif line[-1:] in {"\r", "\n"}: - return line[:-1], True - - return line, False - - -def parse_multipart_headers(iterable: t.Iterable[bytes]) -> Headers: - """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 - """ - warnings.warn( - "'parse_multipart_headers' is deprecated and will be removed in" - " Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - result: t.List[t.Tuple[str, str]] = [] - - for b_line in iterable: - line = _to_str(b_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, f"{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) - - -class MultiPartParser: - def __init__( - self, - stream_factory: t.Optional["TStreamFactory"] = None, - charset: str = "utf-8", - errors: str = "replace", - max_form_memory_size: t.Optional[int] = None, - cls: t.Optional[t.Type[MultiDict]] = None, - buffer_size: int = 64 * 1024, - ) -> None: - self.charset = charset - self.errors = errors - self.max_form_memory_size = max_form_memory_size - - if stream_factory is None: - stream_factory = default_stream_factory - - self.stream_factory = stream_factory - - if cls is None: - cls = MultiDict - - self.cls = cls - - self.buffer_size = buffer_size - - def fail(self, message: str) -> "te.NoReturn": - raise ValueError(message) - - def get_part_charset(self, headers: Headers) -> str: - # 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, event: File, total_content_length: t.Optional[int] - ) -> t.BinaryIO: - content_type = event.headers.get("content-type") - - try: - content_length = int(event.headers["content-length"]) - except (KeyError, ValueError): - content_length = 0 - - container = self.stream_factory( - total_content_length=total_content_length, - filename=event.filename, - content_type=content_type, - content_length=content_length, - ) - return container - - def parse( - self, stream: t.BinaryIO, boundary: bytes, content_length: t.Optional[int] - ) -> t.Tuple[MultiDict, MultiDict]: - container: t.Union[t.BinaryIO, t.List[bytes]] - _write: t.Callable[[bytes], t.Any] - - iterator = chain( - _make_chunk_iter( - stream, - limit=content_length, - buffer_size=self.buffer_size, - ), - [None], - ) - - parser = MultipartDecoder(boundary, self.max_form_memory_size) - - fields = [] - files = [] - - current_part: Union[Field, File] - for data in iterator: - parser.receive_data(data) - event = parser.next_event() - while not isinstance(event, (Epilogue, NeedData)): - if isinstance(event, Field): - current_part = event - container = [] - _write = container.append - elif isinstance(event, File): - current_part = event - container = self.start_file_streaming(event, content_length) - _write = container.write - elif isinstance(event, Data): - _write(event.data) - if not event.more_data: - if isinstance(current_part, Field): - value = b"".join(container).decode( - self.get_part_charset(current_part.headers), self.errors - ) - fields.append((current_part.name, value)) - else: - container = t.cast(t.BinaryIO, container) - container.seek(0) - files.append( - ( - current_part.name, - FileStorage( - container, - current_part.filename, - current_part.name, - headers=current_part.headers, - ), - ) - ) - - event = parser.next_event() - - return self.cls(fields), self.cls(files) diff --git a/venv/lib/python3.9/site-packages/werkzeug/http.py b/venv/lib/python3.9/site-packages/werkzeug/http.py deleted file mode 100644 index ca48fe2..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/http.py +++ /dev/null @@ -1,1388 +0,0 @@ -import base64 -import email.utils -import re -import typing -import typing as t -import warnings -from datetime import date -from datetime import datetime -from datetime import time -from datetime import timedelta -from datetime import timezone -from enum import Enum -from hashlib import sha1 -from time import mktime -from time import struct_time -from urllib.parse import unquote_to_bytes as _unquote -from urllib.request import parse_http_list as _parse_list_header - -from ._internal import _cookie_parse_impl -from ._internal import _cookie_quote -from ._internal import _make_cookie_domain -from ._internal import _to_bytes -from ._internal import _to_str -from ._internal import _wsgi_decoding_dance -from werkzeug._internal import _dt_as_utc - -if t.TYPE_CHECKING: - import typing_extensions as te - from _typeshed.wsgi import WSGIEnvironment - -# 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*|$)') -_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", -} - - -class COEP(Enum): - """Cross Origin Embedder Policies""" - - UNSAFE_NONE = "unsafe-none" - REQUIRE_CORP = "require-corp" - - -class COOP(Enum): - """Cross Origin Opener Policies""" - - UNSAFE_NONE = "unsafe-none" - SAME_ORIGIN_ALLOW_POPUPS = "same-origin-allow-popups" - SAME_ORIGIN = "same-origin" - - -def quote_header_value( - value: t.Union[str, int], extra_chars: str = "", allow_token: bool = True -) -> str: - """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 = value.decode("latin1") - value = str(value) - if allow_token: - token_chars = _token_chars | set(extra_chars) - if set(value).issubset(token_chars): - return value - value = value.replace("\\", "\\\\").replace('"', '\\"') - return f'"{value}"' - - -def unquote_header_value(value: str, is_filename: bool = False) -> str: - 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. - :param is_filename: The value represents a filename or path. - """ - 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: t.Optional[str], options: t.Mapping[str, t.Optional[t.Union[str, int]]] -) -> str: - """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 options.items(): - if value is None: - segments.append(key) - else: - segments.append(f"{key}={quote_header_value(value)}") - return "; ".join(segments) - - -def dump_header( - iterable: t.Union[t.Dict[str, t.Union[str, int]], t.Iterable[str]], - allow_token: bool = True, -) -> str: - """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 iterable.items(): - if value is None: - items.append(key) - else: - items.append( - f"{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: "ds.ContentSecurityPolicy") -> str: - """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(f"{key} {value}" for key, value in header.items()) - - -def parse_list_header(value: str) -> t.List[str]: - """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: str, cls: t.Type[dict] = dict) -> t.Dict[str, str]: - """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 isinstance(value, bytes): - value = value.decode("latin1") - 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 - - -@typing.overload -def parse_options_header( - value: t.Optional[str], multiple: "te.Literal[False]" = False -) -> t.Tuple[str, t.Dict[str, str]]: - ... - - -@typing.overload -def parse_options_header( - value: t.Optional[str], multiple: "te.Literal[True]" -) -> t.Tuple[t.Any, ...]: - ... - - -def parse_options_header( - value: t.Optional[str], multiple: bool = False -) -> t.Union[t.Tuple[str, t.Dict[str, str]], t.Tuple[t.Any, ...]]: - """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: t.List[t.Any] = [] - - 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: t.Dict[str, str] = {} - # Parse options - rest = match.group(2) - encoding: t.Optional[str] - continued_encoding: t.Optional[str] = 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 ("", {}) - - -_TAnyAccept = t.TypeVar("_TAnyAccept", bound="ds.Accept") - - -@typing.overload -def parse_accept_header(value: t.Optional[str]) -> "ds.Accept": - ... - - -@typing.overload -def parse_accept_header( - value: t.Optional[str], cls: t.Type[_TAnyAccept] -) -> _TAnyAccept: - ... - - -def parse_accept_header( - value: t.Optional[str], cls: t.Optional[t.Type[_TAnyAccept]] = None -) -> _TAnyAccept: - """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 = t.cast(t.Type[_TAnyAccept], ds.Accept) - - if not value: - return cls(None) - - result = [] - for match in _accept_re.finditer(value): - quality_match = match.group(2) - if not quality_match: - quality: float = 1 - else: - quality = max(min(float(quality_match), 1), 0) - result.append((match.group(1), quality)) - return cls(result) - - -_TAnyCC = t.TypeVar("_TAnyCC", bound="ds._CacheControl") -_t_cc_update = t.Optional[t.Callable[[_TAnyCC], None]] - - -@typing.overload -def parse_cache_control_header( - value: t.Optional[str], on_update: _t_cc_update, cls: None = None -) -> "ds.RequestCacheControl": - ... - - -@typing.overload -def parse_cache_control_header( - value: t.Optional[str], on_update: _t_cc_update, cls: t.Type[_TAnyCC] -) -> _TAnyCC: - ... - - -def parse_cache_control_header( - value: t.Optional[str], - on_update: _t_cc_update = None, - cls: t.Optional[t.Type[_TAnyCC]] = None, -) -> _TAnyCC: - """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 = t.cast(t.Type[_TAnyCC], ds.RequestCacheControl) - - if not value: - return cls((), on_update) - - return cls(parse_dict_header(value), on_update) - - -_TAnyCSP = t.TypeVar("_TAnyCSP", bound="ds.ContentSecurityPolicy") -_t_csp_update = t.Optional[t.Callable[[_TAnyCSP], None]] - - -@typing.overload -def parse_csp_header( - value: t.Optional[str], on_update: _t_csp_update, cls: None = None -) -> "ds.ContentSecurityPolicy": - ... - - -@typing.overload -def parse_csp_header( - value: t.Optional[str], on_update: _t_csp_update, cls: t.Type[_TAnyCSP] -) -> _TAnyCSP: - ... - - -def parse_csp_header( - value: t.Optional[str], - on_update: _t_csp_update = None, - cls: t.Optional[t.Type[_TAnyCSP]] = None, -) -> _TAnyCSP: - """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 = t.cast(t.Type[_TAnyCSP], ds.ContentSecurityPolicy) - - if value is None: - return cls((), 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: t.Optional[str], - on_update: t.Optional[t.Callable[["ds.HeaderSet"], None]] = None, -) -> "ds.HeaderSet": - """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 ds.HeaderSet(None, on_update) - return ds.HeaderSet(parse_list_header(value), on_update) - - -def parse_authorization_header( - value: t.Optional[str], -) -> t.Optional["ds.Authorization"]: - """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 None - value = _wsgi_decoding_dance(value) - try: - auth_type, auth_info = value.split(None, 1) - auth_type = auth_type.lower() - except ValueError: - return None - if auth_type == "basic": - try: - username, password = base64.b64decode(auth_info).split(b":", 1) - except Exception: - return None - try: - return ds.Authorization( - "basic", - { - "username": _to_str(username, "utf-8"), - "password": _to_str(password, "utf-8"), - }, - ) - except UnicodeDecodeError: - return None - elif auth_type == "digest": - auth_map = parse_dict_header(auth_info) - for key in "username", "realm", "nonce", "uri", "response": - if key not in auth_map: - return None - if "qop" in auth_map: - if not auth_map.get("nc") or not auth_map.get("cnonce"): - return None - return ds.Authorization("digest", auth_map) - return None - - -def parse_www_authenticate_header( - value: t.Optional[str], - on_update: t.Optional[t.Callable[["ds.WWWAuthenticate"], None]] = None, -) -> "ds.WWWAuthenticate": - """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 ds.WWWAuthenticate(on_update=on_update) - try: - auth_type, auth_info = value.split(None, 1) - auth_type = auth_type.lower() - except (ValueError, AttributeError): - return ds.WWWAuthenticate(value.strip().lower(), on_update=on_update) - return ds.WWWAuthenticate(auth_type, parse_dict_header(auth_info), on_update) - - -def parse_if_range_header(value: t.Optional[str]) -> "ds.IfRange": - """Parses an if-range header which can be an etag or a date. Returns - a :class:`~werkzeug.datastructures.IfRange` object. - - .. versionchanged:: 2.0 - If the value represents a datetime, it is timezone-aware. - - .. versionadded:: 0.7 - """ - if not value: - return ds.IfRange() - date = parse_date(value) - if date is not None: - return ds.IfRange(date=date) - # drop weakness information - return ds.IfRange(unquote_etag(value)[0]) - - -def parse_range_header( - value: t.Optional[str], make_inclusive: bool = True -) -> t.Optional["ds.Range"]: - """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_str, end_str = item.split("-", 1) - begin_str = begin_str.strip() - end_str = end_str.strip() - if not begin_str.isdigit(): - return None - begin = int(begin_str) - if begin < last_end or last_end < 0: - return None - if end_str: - if not end_str.isdigit(): - return None - end = int(end_str) + 1 - if begin >= end: - return None - else: - end = None - last_end = end if end is not None else -1 - ranges.append((begin, end)) - - return ds.Range(units, ranges) - - -def parse_content_range_header( - value: t.Optional[str], - on_update: t.Optional[t.Callable[["ds.ContentRange"], None]] = None, -) -> t.Optional["ds.ContentRange"]: - """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_str = rangedef.split("/", 1) - if length_str == "*": - length = None - elif length_str.isdigit(): - length = int(length_str) - else: - return None - - if rng == "*": - return ds.ContentRange(units, None, None, length, on_update=on_update) - elif "-" not in rng: - return None - - start_str, stop_str = rng.split("-", 1) - try: - start = int(start_str) - stop = int(stop_str) + 1 - except ValueError: - return None - - if is_byte_range_valid(start, stop, length): - return ds.ContentRange(units, start, stop, length, on_update=on_update) - - return None - - -def quote_etag(etag: str, weak: bool = False) -> str: - """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 = f'"{etag}"' - if weak: - etag = f"W/{etag}" - return etag - - -def unquote_etag( - etag: t.Optional[str], -) -> t.Union[t.Tuple[str, bool], t.Tuple[None, None]]: - """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: t.Optional[str]) -> "ds.ETags": - """Parse an etag header. - - :param value: the tag header to parse - :return: an :class:`~werkzeug.datastructures.ETags` object. - """ - if not value: - return ds.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 ds.ETags(star_tag=True) - elif quoted: - raw = quoted - if is_weak: - weak.append(raw) - else: - strong.append(raw) - pos = match.end() - return ds.ETags(strong, weak) - - -def generate_etag(data: bytes) -> str: - """Generate an etag for some data. - - .. versionchanged:: 2.0 - Use SHA-1. MD5 may not be available in some environments. - """ - return sha1(data).hexdigest() - - -def parse_date(value: t.Optional[str]) -> t.Optional[datetime]: - """Parse an :rfc:`2822` date into a timezone-aware - :class:`datetime.datetime` object, or ``None`` if parsing fails. - - This is a wrapper for :func:`email.utils.parsedate_to_datetime`. It - returns ``None`` if parsing fails instead of raising an exception, - and always returns a timezone-aware datetime object. If the string - doesn't have timezone information, it is assumed to be UTC. - - :param value: A string with a supported date format. - - .. versionchanged:: 2.0 - Return a timezone-aware datetime object. Use - ``email.utils.parsedate_to_datetime``. - """ - if value is None: - return None - - try: - dt = email.utils.parsedate_to_datetime(value) - except (TypeError, ValueError): - return None - - if dt.tzinfo is None: - return dt.replace(tzinfo=timezone.utc) - - return dt - - -def cookie_date( - expires: t.Optional[t.Union[datetime, date, int, float, struct_time]] = None -) -> str: - """Format a datetime object or timestamp into an :rfc:`2822` date - string for ``Set-Cookie expires``. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use :func:`http_date` instead. - """ - warnings.warn( - "'cookie_date' is deprecated and will be removed in Werkzeug" - " 2.1. Use 'http_date' instead.", - DeprecationWarning, - stacklevel=2, - ) - return http_date(expires) - - -def http_date( - timestamp: t.Optional[t.Union[datetime, date, int, float, struct_time]] = None -) -> str: - """Format a datetime object or timestamp into an :rfc:`2822` date - string. - - This is a wrapper for :func:`email.utils.format_datetime`. It - assumes naive datetime objects are in UTC instead of raising an - exception. - - :param timestamp: The datetime or timestamp to format. Defaults to - the current time. - - .. versionchanged:: 2.0 - Use ``email.utils.format_datetime``. Accept ``date`` objects. - """ - if isinstance(timestamp, date): - if not isinstance(timestamp, datetime): - # Assume plain date is midnight UTC. - timestamp = datetime.combine(timestamp, time(), tzinfo=timezone.utc) - else: - # Ensure datetime is timezone-aware. - timestamp = _dt_as_utc(timestamp) - - return email.utils.format_datetime(timestamp, usegmt=True) - - if isinstance(timestamp, struct_time): - timestamp = mktime(timestamp) - - return email.utils.formatdate(timestamp, usegmt=True) - - -def parse_age(value: t.Optional[str] = None) -> t.Optional[timedelta]: - """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: t.Optional[t.Union[timedelta, int]] = None) -> t.Optional[str]: - """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 None - if isinstance(age, timedelta): - age = int(age.total_seconds()) - else: - age = int(age) - - if age < 0: - raise ValueError("age cannot be negative") - - return str(age) - - -def is_resource_modified( - environ: "WSGIEnvironment", - etag: t.Optional[str] = None, - data: t.Optional[bytes] = None, - last_modified: t.Optional[t.Union[datetime, str]] = None, - ignore_if_range: bool = True, -) -> bool: - """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:: 2.0 - SHA-1 is used to generate an etag value for the data. MD5 may - not be available in some environments. - - .. 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, str): - last_modified = parse_date(last_modified) - - # HTTP doesn't use microsecond, remove it to avoid false positive - # comparisons. Mark naive datetimes as UTC. - if last_modified is not None: - last_modified = _dt_as_utc(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: t.Optional[datetime] = 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) - etag = t.cast(str, 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: t.Union["ds.Headers", t.List[t.Tuple[str, str]]], - allowed: t.Iterable[str] = ("expires", "content-location"), -) -> None: - """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 = {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: t.Union["ds.Headers", t.List[t.Tuple[str, str]]] -) -> None: - """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: str) -> bool: - """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: str) -> bool: - """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: t.Union["WSGIEnvironment", str, bytes, None], - charset: str = "utf-8", - errors: str = "replace", - cls: t.Optional[t.Type["ds.MultiDict"]] = None, -) -> "ds.MultiDict[str, str]": - """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 = "" - - # PEP 3333 sends headers through the environ as latin1 decoded - # strings. Encode strings back to bytes for parsing. - if isinstance(header, str): - header = header.encode("latin1", "replace") - - if cls is None: - cls = ds.MultiDict - - def _parse_pairs() -> t.Iterator[t.Tuple[str, str]]: - for key, val in _cookie_parse_impl(header): # type: ignore - key_str = _to_str(key, charset, errors, allow_none_charset=True) - - if not key_str: - continue - - val_str = _to_str(val, charset, errors, allow_none_charset=True) - yield key_str, val_str - - return cls(_parse_pairs()) - - -def dump_cookie( - key: str, - value: t.Union[bytes, str] = "", - max_age: t.Optional[t.Union[timedelta, int]] = None, - expires: t.Optional[t.Union[str, datetime, int, float]] = None, - path: t.Optional[str] = "/", - domain: t.Optional[str] = None, - secure: bool = False, - httponly: bool = False, - charset: str = "utf-8", - sync_expires: bool = True, - max_size: int = 4093, - samesite: t.Optional[str] = None, -) -> str: - """Create a Set-Cookie header without the ``Set-Cookie`` prefix. - - The return value is usually restricted to ascii as the vast majority - of values are properly escaped, but that is no guarantee. 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 string 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 = int(max_age.total_seconds()) - - if expires is not None: - if not isinstance(expires, str): - expires = http_date(expires) - elif max_age is not None and sync_expires: - expires = http_date(datetime.now(tz=timezone.utc).timestamp() + 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(str(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 for - # consistency with the headers object. - rv = b"; ".join(buf) - 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( - f"The {key.decode(charset)!r} cookie is too large: the value was" - f" {value_size} bytes but the" - f" header required {cookie_size - value_size} extra bytes. The final size" - f" was {cookie_size} bytes but the limit is {max_size} bytes. Browsers may" - f" silently ignore cookies larger than this.", - stacklevel=2, - ) - - return rv - - -def is_byte_range_valid( - start: t.Optional[int], stop: t.Optional[int], length: t.Optional[int] -) -> bool: - """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 # type: ignore - elif start >= stop: # type: ignore - return False - return 0 <= start < length - - -# circular dependencies -from . import datastructures as ds diff --git a/venv/lib/python3.9/site-packages/werkzeug/local.py b/venv/lib/python3.9/site-packages/werkzeug/local.py deleted file mode 100644 index a5a7870..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/local.py +++ /dev/null @@ -1,666 +0,0 @@ -import copy -import math -import operator -import sys -import typing as t -import warnings -from functools import partial -from functools import update_wrapper - -from .wsgi import ClosingIterator - -if t.TYPE_CHECKING: - from _typeshed.wsgi import StartResponse - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - -F = t.TypeVar("F", bound=t.Callable[..., t.Any]) - -try: - from greenlet import getcurrent as _get_ident -except ImportError: - from threading import get_ident as _get_ident - - -def get_ident() -> int: - warnings.warn( - "'get_ident' is deprecated and will be removed in Werkzeug" - " 2.1. Use 'greenlet.getcurrent' or 'threading.get_ident' for" - " previous behavior.", - DeprecationWarning, - stacklevel=2, - ) - return _get_ident() # type: ignore - - -class _CannotUseContextVar(Exception): - pass - - -try: - from contextvars import ContextVar - - if "gevent" in sys.modules or "eventlet" in sys.modules: - # Both use greenlet, so first check it has patched - # ContextVars, Greenlet <0.4.17 does not. - import greenlet - - greenlet_patched = getattr(greenlet, "GREENLET_USE_CONTEXT_VARS", False) - - if not greenlet_patched: - # If Gevent is used, check it has patched ContextVars, - # <20.5 does not. - try: - from gevent.monkey import is_object_patched - except ImportError: - # Gevent isn't used, but Greenlet is and hasn't patched - raise _CannotUseContextVar() - else: - if is_object_patched("threading", "local") and not is_object_patched( - "contextvars", "ContextVar" - ): - raise _CannotUseContextVar() - - -except (ImportError, _CannotUseContextVar): - - class ContextVar: # type: ignore - """A fake ContextVar based on the previous greenlet/threading - ident function. Used on Python 3.6, eventlet, and old versions - of gevent. - """ - - def __init__(self, _name: str) -> None: - self.storage: t.Dict[int, t.Dict[str, t.Any]] = {} - - def get(self, default: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]: - return self.storage.get(_get_ident(), default) - - def set(self, value: t.Dict[str, t.Any]) -> None: - self.storage[_get_ident()] = value - - -def release_local(local: t.Union["Local", "LocalStack"]) -> None: - """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: - __slots__ = ("_storage",) - - def __init__(self) -> None: - object.__setattr__(self, "_storage", ContextVar("local_storage")) - - @property - def __storage__(self) -> t.Dict[str, t.Any]: - warnings.warn( - "'__storage__' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - return self._storage.get({}) # type: ignore - - @property - def __ident_func__(self) -> t.Callable[[], int]: - warnings.warn( - "'__ident_func__' is deprecated and will be removed in" - " Werkzeug 2.1. It should not be used in Python 3.7+.", - DeprecationWarning, - stacklevel=2, - ) - return _get_ident # type: ignore - - @__ident_func__.setter - def __ident_func__(self, func: t.Callable[[], int]) -> None: - warnings.warn( - "'__ident_func__' is deprecated and will be removed in" - " Werkzeug 2.1. Setting it no longer has any effect.", - DeprecationWarning, - stacklevel=2, - ) - - def __iter__(self) -> t.Iterator[t.Tuple[int, t.Any]]: - return iter(self._storage.get({}).items()) - - def __call__(self, proxy: str) -> "LocalProxy": - """Create a proxy for a name.""" - return LocalProxy(self, proxy) - - def __release_local__(self) -> None: - self._storage.set({}) - - def __getattr__(self, name: str) -> t.Any: - values = self._storage.get({}) - try: - return values[name] - except KeyError: - raise AttributeError(name) - - def __setattr__(self, name: str, value: t.Any) -> None: - values = self._storage.get({}).copy() - values[name] = value - self._storage.set(values) - - def __delattr__(self, name: str) -> None: - values = self._storage.get({}).copy() - try: - del values[name] - self._storage.set(values) - except KeyError: - raise AttributeError(name) - - -class LocalStack: - """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) -> None: - self._local = Local() - - def __release_local__(self) -> None: - self._local.__release_local__() - - @property - def __ident_func__(self) -> t.Callable[[], int]: - return self._local.__ident_func__ - - @__ident_func__.setter - def __ident_func__(self, value: t.Callable[[], int]) -> None: - object.__setattr__(self._local, "__ident_func__", value) - - def __call__(self) -> "LocalProxy": - def _lookup() -> t.Any: - rv = self.top - if rv is None: - raise RuntimeError("object unbound") - return rv - - return LocalProxy(_lookup) - - def push(self, obj: t.Any) -> t.List[t.Any]: - """Pushes a new item to the stack""" - rv = getattr(self._local, "stack", []).copy() - rv.append(obj) - self._local.stack = rv - return rv # type: ignore - - def pop(self) -> t.Any: - """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) -> t.Any: - """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: - """Local objects cannot manage themselves. For that you need a local - manager. You can pass a local manager multiple locals or add them - later y 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. - - .. versionchanged:: 2.0 - ``ident_func`` is deprecated and will be removed in Werkzeug - 2.1. - - .. versionchanged:: 0.6.1 - The :func:`release_local` function can be used instead of a - manager. - - .. versionchanged:: 0.7 - The ``ident_func`` parameter was added. - """ - - def __init__( - self, - locals: t.Optional[t.Iterable[t.Union[Local, LocalStack]]] = None, - ident_func: None = None, - ) -> 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: - warnings.warn( - "'ident_func' is deprecated and will be removed in" - " Werkzeug 2.1. Setting it no longer has any effect.", - DeprecationWarning, - stacklevel=2, - ) - - @property - def ident_func(self) -> t.Callable[[], int]: - warnings.warn( - "'ident_func' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - return _get_ident # type: ignore - - @ident_func.setter - def ident_func(self, func: t.Callable[[], int]) -> None: - warnings.warn( - "'ident_func' is deprecated and will be removedin Werkzeug" - " 2.1. Setting it no longer has any effect.", - DeprecationWarning, - stacklevel=2, - ) - - def get_ident(self) -> int: - """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. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. - - .. 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. - """ - warnings.warn( - "'get_ident' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - return self.ident_func() - - def cleanup(self) -> None: - """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: "WSGIApplication") -> "WSGIApplication": - """Wrap a WSGI application so that cleaning up happens after - request end. - """ - - def application( - environ: "WSGIEnvironment", start_response: "StartResponse" - ) -> t.Iterable[bytes]: - return ClosingIterator(app(environ, start_response), self.cleanup) - - return application - - def middleware(self, func: "WSGIApplication") -> "WSGIApplication": - """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) -> str: - return f"<{type(self).__name__} storages: {len(self.locals)}>" - - -class _ProxyLookup: - """Descriptor that handles proxied attribute lookup for - :class:`LocalProxy`. - - :param f: The built-in function this attribute is accessed through. - Instead of looking up the special method, the function call - is redone on the object. - :param fallback: Call this method if the proxy is unbound instead of - raising a :exc:`RuntimeError`. - :param class_value: Value to return when accessed from the class. - Used for ``__doc__`` so building docs still works. - """ - - __slots__ = ("bind_f", "fallback", "class_value", "name") - - def __init__( - self, - f: t.Optional[t.Callable] = None, - fallback: t.Optional[t.Callable] = None, - class_value: t.Optional[t.Any] = None, - ) -> None: - bind_f: t.Optional[t.Callable[["LocalProxy", t.Any], t.Callable]] - - if hasattr(f, "__get__"): - # A Python function, can be turned into a bound method. - - def bind_f(instance: "LocalProxy", obj: t.Any) -> t.Callable: - return f.__get__(obj, type(obj)) # type: ignore - - elif f is not None: - # A C function, use partial to bind the first argument. - - def bind_f(instance: "LocalProxy", obj: t.Any) -> t.Callable: - return partial(f, obj) # type: ignore - - else: - # Use getattr, which will produce a bound method. - bind_f = None - - self.bind_f = bind_f - self.fallback = fallback - self.class_value = class_value - - def __set_name__(self, owner: "LocalProxy", name: str) -> None: - self.name = name - - def __get__(self, instance: "LocalProxy", owner: t.Optional[type] = None) -> t.Any: - if instance is None: - if self.class_value is not None: - return self.class_value - - return self - - try: - obj = instance._get_current_object() - except RuntimeError: - if self.fallback is None: - raise - - return self.fallback.__get__(instance, owner) # type: ignore - - if self.bind_f is not None: - return self.bind_f(instance, obj) - - return getattr(obj, self.name) - - def __repr__(self) -> str: - return f"proxy {self.name}" - - def __call__(self, instance: "LocalProxy", *args: t.Any, **kwargs: t.Any) -> t.Any: - """Support calling unbound methods from the class. For example, - this happens with ``copy.copy``, which does - ``type(x).__copy__(x)``. ``type(x)`` can't be proxied, so it - returns the proxy type and descriptor. - """ - return self.__get__(instance, type(instance))(*args, **kwargs) - - -class _ProxyIOp(_ProxyLookup): - """Look up an augmented assignment method on a proxied object. The - method is wrapped to return the proxy instead of the object. - """ - - __slots__ = () - - def __init__( - self, f: t.Optional[t.Callable] = None, fallback: t.Optional[t.Callable] = None - ) -> None: - super().__init__(f, fallback) - - def bind_f(instance: "LocalProxy", obj: t.Any) -> t.Callable: - def i_op(self: t.Any, other: t.Any) -> "LocalProxy": - f(self, other) # type: ignore - return instance - - return i_op.__get__(obj, type(obj)) # type: ignore - - self.bind_f = bind_f - - -def _l_to_r_op(op: F) -> F: - """Swap the argument order to turn an l-op into an r-op.""" - - def r_op(obj: t.Any, other: t.Any) -> t.Any: - return op(other, obj) - - return t.cast(F, r_op) - - -class LocalProxy: - """A proxy to the object bound to a :class:`Local`. All operations - on the proxy are forwarded to the bound object. If no object is - bound, a :exc:`RuntimeError` is raised. - - .. code-block:: python - - from werkzeug.local import Local - l = Local() - - # a proxy to whatever l.user is set to - user = l("user") - - from werkzeug.local import LocalStack - _request_stack = LocalStack() - - # a proxy to _request_stack.top - request = _request_stack() - - # a proxy to the session attribute of the request proxy - session = LocalProxy(lambda: request.session) - - ``__repr__`` and ``__class__`` are forwarded, so ``repr(x)`` and - ``isinstance(x, cls)`` will look like the proxied object. Use - ``issubclass(type(x), LocalProxy)`` to check if an object is a - proxy. - - .. code-block:: python - - repr(user) # - isinstance(user, User) # True - issubclass(type(user), LocalProxy) # True - - :param local: The :class:`Local` or callable that provides the - proxied object. - :param name: The attribute name to look up on a :class:`Local`. Not - used if a callable is given. - - .. versionchanged:: 2.0 - Updated proxied attributes and methods to reflect the current - data model. - - .. versionchanged:: 0.6.1 - The class can be instantiated with a callable. - """ - - __slots__ = ("__local", "__name", "__wrapped__") - - def __init__( - self, - local: t.Union["Local", t.Callable[[], t.Any]], - name: t.Optional[str] = None, - ) -> None: - object.__setattr__(self, "_LocalProxy__local", local) - object.__setattr__(self, "_LocalProxy__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) -> t.Any: - """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__"): # type: ignore - return self.__local() # type: ignore - - try: - return getattr(self.__local, self.__name) # type: ignore - except AttributeError: - raise RuntimeError(f"no object bound to {self.__name}") # type: ignore - - __doc__ = _ProxyLookup( # type: ignore - class_value=__doc__, fallback=lambda self: type(self).__doc__ - ) - # __del__ should only delete the proxy - __repr__ = _ProxyLookup( # type: ignore - repr, fallback=lambda self: f"<{type(self).__name__} unbound>" - ) - __str__ = _ProxyLookup(str) # type: ignore - __bytes__ = _ProxyLookup(bytes) - __format__ = _ProxyLookup() # type: ignore - __lt__ = _ProxyLookup(operator.lt) - __le__ = _ProxyLookup(operator.le) - __eq__ = _ProxyLookup(operator.eq) # type: ignore - __ne__ = _ProxyLookup(operator.ne) # type: ignore - __gt__ = _ProxyLookup(operator.gt) - __ge__ = _ProxyLookup(operator.ge) - __hash__ = _ProxyLookup(hash) # type: ignore - __bool__ = _ProxyLookup(bool, fallback=lambda self: False) - __getattr__ = _ProxyLookup(getattr) - # __getattribute__ triggered through __getattr__ - __setattr__ = _ProxyLookup(setattr) # type: ignore - __delattr__ = _ProxyLookup(delattr) # type: ignore - __dir__ = _ProxyLookup(dir, fallback=lambda self: []) # type: ignore - # __get__ (proxying descriptor not supported) - # __set__ (descriptor) - # __delete__ (descriptor) - # __set_name__ (descriptor) - # __objclass__ (descriptor) - # __slots__ used by proxy itself - # __dict__ (__getattr__) - # __weakref__ (__getattr__) - # __init_subclass__ (proxying metaclass not supported) - # __prepare__ (metaclass) - __class__ = _ProxyLookup(fallback=lambda self: type(self)) # type: ignore - __instancecheck__ = _ProxyLookup(lambda self, other: isinstance(other, self)) - __subclasscheck__ = _ProxyLookup(lambda self, other: issubclass(other, self)) - # __class_getitem__ triggered through __getitem__ - __call__ = _ProxyLookup(lambda self, *args, **kwargs: self(*args, **kwargs)) - __len__ = _ProxyLookup(len) - __length_hint__ = _ProxyLookup(operator.length_hint) - __getitem__ = _ProxyLookup(operator.getitem) - __setitem__ = _ProxyLookup(operator.setitem) - __delitem__ = _ProxyLookup(operator.delitem) - # __missing__ triggered through __getitem__ - __iter__ = _ProxyLookup(iter) - __next__ = _ProxyLookup(next) - __reversed__ = _ProxyLookup(reversed) - __contains__ = _ProxyLookup(operator.contains) - __add__ = _ProxyLookup(operator.add) - __sub__ = _ProxyLookup(operator.sub) - __mul__ = _ProxyLookup(operator.mul) - __matmul__ = _ProxyLookup(operator.matmul) - __truediv__ = _ProxyLookup(operator.truediv) - __floordiv__ = _ProxyLookup(operator.floordiv) - __mod__ = _ProxyLookup(operator.mod) - __divmod__ = _ProxyLookup(divmod) - __pow__ = _ProxyLookup(pow) - __lshift__ = _ProxyLookup(operator.lshift) - __rshift__ = _ProxyLookup(operator.rshift) - __and__ = _ProxyLookup(operator.and_) - __xor__ = _ProxyLookup(operator.xor) - __or__ = _ProxyLookup(operator.or_) - __radd__ = _ProxyLookup(_l_to_r_op(operator.add)) - __rsub__ = _ProxyLookup(_l_to_r_op(operator.sub)) - __rmul__ = _ProxyLookup(_l_to_r_op(operator.mul)) - __rmatmul__ = _ProxyLookup(_l_to_r_op(operator.matmul)) - __rtruediv__ = _ProxyLookup(_l_to_r_op(operator.truediv)) - __rfloordiv__ = _ProxyLookup(_l_to_r_op(operator.floordiv)) - __rmod__ = _ProxyLookup(_l_to_r_op(operator.mod)) - __rdivmod__ = _ProxyLookup(_l_to_r_op(divmod)) - __rpow__ = _ProxyLookup(_l_to_r_op(pow)) - __rlshift__ = _ProxyLookup(_l_to_r_op(operator.lshift)) - __rrshift__ = _ProxyLookup(_l_to_r_op(operator.rshift)) - __rand__ = _ProxyLookup(_l_to_r_op(operator.and_)) - __rxor__ = _ProxyLookup(_l_to_r_op(operator.xor)) - __ror__ = _ProxyLookup(_l_to_r_op(operator.or_)) - __iadd__ = _ProxyIOp(operator.iadd) - __isub__ = _ProxyIOp(operator.isub) - __imul__ = _ProxyIOp(operator.imul) - __imatmul__ = _ProxyIOp(operator.imatmul) - __itruediv__ = _ProxyIOp(operator.itruediv) - __ifloordiv__ = _ProxyIOp(operator.ifloordiv) - __imod__ = _ProxyIOp(operator.imod) - __ipow__ = _ProxyIOp(operator.ipow) - __ilshift__ = _ProxyIOp(operator.ilshift) - __irshift__ = _ProxyIOp(operator.irshift) - __iand__ = _ProxyIOp(operator.iand) - __ixor__ = _ProxyIOp(operator.ixor) - __ior__ = _ProxyIOp(operator.ior) - __neg__ = _ProxyLookup(operator.neg) - __pos__ = _ProxyLookup(operator.pos) - __abs__ = _ProxyLookup(abs) - __invert__ = _ProxyLookup(operator.invert) - __complex__ = _ProxyLookup(complex) - __int__ = _ProxyLookup(int) - __float__ = _ProxyLookup(float) - __index__ = _ProxyLookup(operator.index) - __round__ = _ProxyLookup(round) - __trunc__ = _ProxyLookup(math.trunc) - __floor__ = _ProxyLookup(math.floor) - __ceil__ = _ProxyLookup(math.ceil) - __enter__ = _ProxyLookup() - __exit__ = _ProxyLookup() - __await__ = _ProxyLookup() - __aiter__ = _ProxyLookup() - __anext__ = _ProxyLookup() - __aenter__ = _ProxyLookup() - __aexit__ = _ProxyLookup() - __copy__ = _ProxyLookup(copy.copy) - __deepcopy__ = _ProxyLookup(copy.deepcopy) - # __getnewargs_ex__ (pickle through proxy not supported) - # __getnewargs__ (pickle) - # __getstate__ (pickle) - # __setstate__ (pickle) - # __reduce__ (pickle) - # __reduce_ex__ (pickle) diff --git a/venv/lib/python3.9/site-packages/werkzeug/middleware/__init__.py b/venv/lib/python3.9/site-packages/werkzeug/middleware/__init__.py deleted file mode 100644 index 6ddcf7f..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/middleware/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -""" -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 `. -""" diff --git a/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 4e1ccf19fd27b122653690bb635b49bab72b1059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmYjP!HN_y5bfEEOJM&Y*9Gk$o@~}ZL0CK}!U_vsda64$oiOPnB-K4T{*k}5SFZ{S zdh%p-W?82oq3XRhcVJF(E!$ ztsU+mp?LFTLcEi=H`gEJ_{2(^B^*JB(b*oz1~16~$$f&ztPf-`$rD;wFGJD{Qjnp` zm}X=^_6Gcb(o&Wk8klWJwY4iofbc`%LLGz>iKl`8IfQ$%w)uyQA36wP|@qQj$DsO1QL0_P6T zB{(u+8Vswmq|+g?*32v;YY7vDk)=OEdrL;J=#R~4oY93iq9<9jURqfk>xcEG7N0Ix z_s`mv8*kh1RXXGEP`1B88J1d+9r+2lpoVO4R_`(IC`5J5Wu{Jj4vDtG*`Q|hvvRgm x@xaacSM_U^E#Zp@{SF4qYXA6_>i^iPZLPP|wskz*pI?nZPY&11-~7$1`Uj+P=kWjl diff --git a/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-39.pyc deleted file mode 100644 index 68739747388e8c6e294eea975125926714f4e578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2769 zcmZ`*TW=f372X>!T2qcuxF}qpz`!rA0GSMGphelFh$^|3Tw4(=6-9`m+u_bo9D8q? z8B%6SJ;e|G4`~7Cv43e_`xKxLeGb~9-k~7E*X!< zJbfh#!S+sIG`^fobP3g%k~mD5D%ev#=clPwm1T`LB|L`dOqVlK8H0zGV_jYvIHX}E zKHx2wmKQT=oMA$(T&ZB0Ayv6Mhck1j`v|UF>xV}-K|MTs{><6;^ps5$+;wJ{X*tUT z8%yQ{2sSA-xE3)*3EM^qXt_V&mAa3Zxzw%V^-e-?sEI&Tu~{KtdUI%(2wdcF4;hVb zNVIdGhzOV?UE4!$IJcSzlBHOZQCZgHI=&8v84lx^;elNC@dogo-$3i9&Z%UTk6rc` zcYqE(AeSBtaabh~u)9eh+lWNpHSuaEj*kjf=~B#6!uqa5L9WiH78y2Hasf;ffHi!f z&{L`qj?gV5It+Og$3z;Ci@*q9qY8CcEArq22diH>g| zw~8+i?D8pjO4(yVR#~~g(MyGN0t>R@K-P7MHPUxuN&;DGENVEtwyF`d28K{trZ!u! z@#5QV0T}&0<1<^P88^twdy^5z!?dgxn&LHNKl|{*U$7G-Raz4d(LQ8hv1txD83xEp3>pXr;WuYc+E2m z(i{0`gMsizq3DTFMlV}<+p;6VNpR1*=ZQc>e+xxRwBNMQ?mD6i`j(7A*}{G-ZoP>{ zw_F?CuJ5kf-Wq-UsqcCFWjhf*#=c6+iF%Ftei!vky{}ZGDjG4zIz-}j!a9V>b-NK) zx3#o0U8F=?Jv0yS?&CFgF)aP1mw3yd>M0L1WFD87f4mcD0)_5ifZWK)Y_i_@ho|XI z{pMmYEps`rD#ul`sFdJlD(8a(XpO6;@)j+;TGZVnQH8Qe@(2bPT(O?lYWtu6NU#xD_%`}n*4?@9T-8CP~S#TYn$ln+RgP zkG9aWY=R8sqq`-#lPY+YG`vZ{bNrDZ5pK9ea*&)9eJe?Rg_Zd+1~2USQPA~c{DR<) zehs$$L*5Qyq6>wGoD>jI!PkR6x+V7yPsBc{qU@g z4peIE&{(Z|&a@*dH6LfPZjBfCOQnB^-3|M1oX{;0cJR9L==xF5`)?2g{tx`%KfSHU z@BXjh*wXh%ZrcL)#knSD>+Q48P97)whmZGvcXa$@bUOi2q9jEB(wr*?Kv$^^9!b&r YEU3F5HLm`ea%#x@h;@TD!iHb?e}D)w!vFvP diff --git a/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-39.pyc deleted file mode 100644 index e9b0c25c0c10036fec95a33d6f0d5cf83742f111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6814 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 diff --git a/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/lint.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/lint.cpython-39.pyc deleted file mode 100644 index 40725f6784f71c2723872b484bd628b01db17d54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12711 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 jAO}qn6gL9#nMb^thD?;w!92E diff --git a/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-39.pyc deleted file mode 100644 index 811b8fc165ad63a0bc5274e2c420d5802830a1e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4962 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 diff --git a/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-39.pyc deleted file mode 100644 index 1f53b0c09014aada55751c9ee811f82dbc5df9cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9865 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 U_#ys7urc None: - self.app = app - self.mounts = mounts or {} - - def __call__( - self, environ: "WSGIEnvironment", start_response: "StartResponse" - ) -> t.Iterable[bytes]: - 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 = f"/{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/venv/lib/python3.9/site-packages/werkzeug/middleware/http_proxy.py b/venv/lib/python3.9/site-packages/werkzeug/middleware/http_proxy.py deleted file mode 100644 index 1cde458..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/middleware/http_proxy.py +++ /dev/null @@ -1,230 +0,0 @@ -""" -Basic HTTP Proxy -================ - -.. autoclass:: ProxyMiddleware - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" -import typing as t -from http import client - -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 - -if t.TYPE_CHECKING: - from _typeshed.wsgi import StartResponse - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - - -class ProxyMiddleware: - """Proxy requests under a path to an external server, routing other - requests to the app. - - This middleware can only proxy HTTP requests, as HTTP 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 proxy server - should be used. - - The middleware takes a dict mapping 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: "WSGIApplication", - targets: t.Mapping[str, t.Dict[str, t.Any]], - chunk_size: int = 2 << 13, - timeout: int = 10, - ) -> None: - def _set_defaults(opts: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]: - opts.setdefault("remove_prefix", False) - opts.setdefault("host", "") - opts.setdefault("headers", {}) - opts.setdefault("ssl_context", None) - return opts - - self.app = app - self.targets = { - f"/{k.strip('/')}/": _set_defaults(v) for k, v in targets.items() - } - self.chunk_size = chunk_size - self.timeout = timeout - - def proxy_to( - self, opts: t.Dict[str, t.Any], path: str, prefix: str - ) -> "WSGIApplication": - target = url_parse(opts["target"]) - host = t.cast(str, target.ascii_host) - - def application( - environ: "WSGIEnvironment", start_response: "StartResponse" - ) -> t.Iterable[bytes]: - 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", 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 = remote_path[len(prefix) :].lstrip("/") - remote_path = f"{target.path.rstrip('/')}/{remote_path}" - - content_length = environ.get("CONTENT_LENGTH") - chunked = False - - if content_length not in ("", None): - headers.append(("Content-Length", content_length)) # type: ignore - elif content_length is not None: - headers.append(("Transfer-Encoding", "chunked")) - chunked = True - - try: - if target.scheme == "http": - con = client.HTTPConnection( - host, target.port or 80, timeout=self.timeout - ) - elif target.scheme == "https": - con = client.HTTPSConnection( - host, - target.port or 443, - timeout=self.timeout, - context=opts["ssl_context"], - ) - else: - raise RuntimeError( - "Target scheme must be 'http' or 'https', got" - f" {target.scheme!r}." - ) - - con.connect() - remote_url = url_quote(remote_path) - querystring = environ["QUERY_STRING"] - - if querystring: - remote_url = f"{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 True: - 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 OSError: - from ..exceptions import BadGateway - - return BadGateway()(environ, start_response) - - start_response( - f"{resp.status} {resp.reason}", - [ - (k.title(), v) - for k, v in resp.getheaders() - if not is_hop_by_hop_header(k) - ], - ) - - def read() -> t.Iterator[bytes]: - while True: - try: - data = resp.read(self.chunk_size) - except OSError: - break - - if not data: - break - - yield data - - return read() - - return application - - def __call__( - self, environ: "WSGIEnvironment", start_response: "StartResponse" - ) -> t.Iterable[bytes]: - 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/venv/lib/python3.9/site-packages/werkzeug/middleware/lint.py b/venv/lib/python3.9/site-packages/werkzeug/middleware/lint.py deleted file mode 100644 index 80c423d..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/middleware/lint.py +++ /dev/null @@ -1,420 +0,0 @@ -""" -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 -""" -import typing as t -from types import TracebackType -from urllib.parse import urlparse -from warnings import warn - -from ..datastructures import Headers -from ..http import is_entity_header -from ..wsgi import FileWrapper - -if t.TYPE_CHECKING: - from _typeshed.wsgi import StartResponse - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - - -class WSGIWarning(Warning): - """Warning class for WSGI warnings.""" - - -class HTTPWarning(Warning): - """Warning class for HTTP warnings.""" - - -def check_type(context: str, obj: object, need: t.Type = str) -> None: - if type(obj) is not need: - warn( - f"{context!r} requires {need.__name__!r}, got {type(obj).__name__!r}.", - WSGIWarning, - stacklevel=3, - ) - - -class InputStream: - def __init__(self, stream: t.BinaryIO) -> None: - self._stream = stream - - def read(self, *args: t.Any) -> bytes: - 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: t.Any) -> bytes: - 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) -> t.Iterator[bytes]: - try: - return iter(self._stream) - except TypeError: - warn("'wsgi.input' is not iterable.", WSGIWarning, stacklevel=2) - return iter(()) - - def close(self) -> None: - warn("The application closed the input stream!", WSGIWarning, stacklevel=2) - self._stream.close() - - -class ErrorStream: - def __init__(self, stream: t.TextIO) -> None: - self._stream = stream - - def write(self, s: str) -> None: - check_type("wsgi.error.write()", s, str) - self._stream.write(s) - - def flush(self) -> None: - self._stream.flush() - - def writelines(self, seq: t.Iterable[str]) -> None: - for line in seq: - self.write(line) - - def close(self) -> None: - warn("The application closed the error stream!", WSGIWarning, stacklevel=2) - self._stream.close() - - -class GuardedWrite: - def __init__(self, write: t.Callable[[bytes], None], chunks: t.List[int]) -> None: - self._write = write - self._chunks = chunks - - def __call__(self, s: bytes) -> None: - check_type("write()", s, bytes) - self._write(s) - self._chunks.append(len(s)) - - -class GuardedIterator: - def __init__( - self, - iterator: t.Iterable[bytes], - headers_set: t.Tuple[int, Headers], - chunks: t.List[int], - ) -> None: - self._iterator = iterator - self._next = iter(iterator).__next__ - self.closed = False - self.headers_set = headers_set - self.chunks = chunks - - def __iter__(self) -> "GuardedIterator": - return self - - def __next__(self) -> bytes: - 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_type("application iterator items", rv, bytes) - self.chunks.append(len(rv)) - return rv - - def close(self) -> None: - self.closed = True - - if hasattr(self._iterator, "close"): - self._iterator.close() # type: ignore - - 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( - f"Entity header {key!r} found in 304 response.", 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( - f"{status_code} responses must have an empty content length.", - HTTPWarning, - ) - if bytes_sent: - warn(f"{status_code} responses must not have a body.", 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) -> None: - if not self.closed: - try: - warn( - "Iterator was garbage collected before it was closed.", WSGIWarning - ) - except Exception: - pass - - -class LintMiddleware: - """Warns about common errors in the WSGI and HTTP behavior of the - server and wrapped application. Some of the issues it checks are: - - - invalid status codes - - non-bytes 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: "WSGIApplication") -> None: - self.app = app - - def check_environ(self, environ: "WSGIEnvironment") -> None: - 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( - f"Required environment key {key!r} not found", - 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( - f"'SCRIPT_NAME' does not start with a slash: {script_name!r}", - WSGIWarning, - stacklevel=3, - ) - - if path_info and path_info[0] != "/": - warn( - f"'PATH_INFO' does not start with a slash: {path_info!r}", - WSGIWarning, - stacklevel=3, - ) - - def check_start_response( - self, - status: str, - headers: t.List[t.Tuple[str, str]], - exc_info: t.Optional[ - t.Tuple[t.Type[BaseException], BaseException, TracebackType] - ], - ) -> t.Tuple[int, Headers]: - check_type("status", status, str) - status_code_str = status.split(None, 1)[0] - - if len(status_code_str) != 3 or not status_code_str.isdigit(): - warn("Status code must be three digits.", WSGIWarning, stacklevel=3) - - if len(status) < 4 or status[3] != " ": - warn( - f"Invalid value for status {status!r}. Valid status strings are three" - " digits, a space and a status explanation.", - WSGIWarning, - stacklevel=3, - ) - - status_code = int(status_code_str) - - if status_code < 100: - warn("Status code < 100 detected.", WSGIWarning, stacklevel=3) - - if type(headers) is not list: - warn("Header list is not a list.", WSGIWarning, stacklevel=3) - - for item in headers: - if type(item) is not tuple or len(item) != 2: - warn("Header items must be 2-item tuples.", WSGIWarning, stacklevel=3) - name, value = item - if type(name) is not str or type(value) is not str: - warn( - "Header keys and values must be strings.", WSGIWarning, stacklevel=3 - ) - if name.lower() == "status": - warn( - "The status header is not supported due to" - " conflicts with the CGI spec.", - WSGIWarning, - stacklevel=3, - ) - - if exc_info is not None and not isinstance(exc_info, tuple): - warn("Invalid value for exc_info.", WSGIWarning, stacklevel=3) - - headers = Headers(headers) - self.check_headers(headers) - - return status_code, headers - - def check_headers(self, headers: Headers) -> None: - etag = headers.get("etag") - - if etag is not None: - if etag.startswith(("W/", "w/")): - if etag.startswith("w/"): - warn( - "Weak etag indicator should be upper case.", - HTTPWarning, - stacklevel=4, - ) - - etag = etag[2:] - - if not (etag[:1] == etag[-1:] == '"'): - warn("Unquoted etag emitted.", HTTPWarning, stacklevel=4) - - location = headers.get("location") - - if location is not None: - if not urlparse(location).netloc: - warn( - "Absolute URLs required for location header.", - HTTPWarning, - stacklevel=4, - ) - - def check_iterator(self, app_iter: t.Iterable[bytes]) -> None: - if isinstance(app_iter, bytes): - warn( - "The application returned a bytestring. 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: t.Any, **kwargs: t.Any) -> t.Iterable[bytes]: - 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: "WSGIEnvironment" = args[0] - start_response: "StartResponse" = args[1] - - 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: t.List[t.Any] = [] - chunks: t.List[int] = [] - - def checking_start_response( - *args: t.Any, **kwargs: t.Any - ) -> t.Callable[[bytes], None]: - if len(args) not in {2, 3}: - warn( - f"Invalid number of arguments: {len(args)}, expected 2 or 3.", - WSGIWarning, - stacklevel=2, - ) - - if kwargs: - warn("'start_response' does not take keyword arguments.", WSGIWarning) - - status: str = args[0] - headers: t.List[t.Tuple[str, str]] = args[1] - exc_info: t.Optional[ - t.Tuple[t.Type[BaseException], BaseException, TracebackType] - ] = (args[2] if len(args) == 3 else 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, t.cast("StartResponse", checking_start_response)) - self.check_iterator(app_iter) - return GuardedIterator( - app_iter, t.cast(t.Tuple[int, Headers], headers_set), chunks - ) diff --git a/venv/lib/python3.9/site-packages/werkzeug/middleware/profiler.py b/venv/lib/python3.9/site-packages/werkzeug/middleware/profiler.py deleted file mode 100644 index 0992f8f..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/middleware/profiler.py +++ /dev/null @@ -1,139 +0,0 @@ -""" -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 -""" -import os.path -import sys -import time -import typing as t -from pstats import Stats - -try: - from cProfile import Profile -except ImportError: - from profile import Profile # type: ignore - -if t.TYPE_CHECKING: - from _typeshed.wsgi import StartResponse - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - - -class ProfilerMiddleware: - """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: "WSGIApplication", - stream: t.TextIO = sys.stdout, - sort_by: t.Iterable[str] = ("time", "calls"), - restrictions: t.Iterable[t.Union[str, int, float]] = (), - profile_dir: t.Optional[str] = None, - filename_format: str = "{method}.{path}.{elapsed:.0f}ms.{time:.0f}.prof", - ) -> None: - 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: "WSGIEnvironment", start_response: "StartResponse" - ) -> t.Iterable[bytes]: - response_body: t.List[bytes] = [] - - def catching_start_response(status, headers, exc_info=None): # type: ignore - start_response(status, headers, exc_info) - return response_body.append - - def runapp() -> None: - app_iter = self._app( - environ, t.cast("StartResponse", catching_start_response) - ) - response_body.extend(app_iter) - - if hasattr(app_iter, "close"): - app_iter.close() # type: ignore - - 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["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) - path_info = environ.get("PATH_INFO", "") - print(f"PATH: {path_info!r}", file=self._stream) - stats.print_stats(*self._restrictions) - print(f"{'-' * 80}\n", file=self._stream) - - return [body] diff --git a/venv/lib/python3.9/site-packages/werkzeug/middleware/proxy_fix.py b/venv/lib/python3.9/site-packages/werkzeug/middleware/proxy_fix.py deleted file mode 100644 index e90b1b3..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/middleware/proxy_fix.py +++ /dev/null @@ -1,187 +0,0 @@ -""" -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 used 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 -""" -import typing as t - -from ..http import parse_list_header - -if t.TYPE_CHECKING: - from _typeshed.wsgi import StartResponse - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - - -class ProxyFix: - """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: "WSGIApplication", - x_for: int = 1, - x_proto: int = 1, - x_host: int = 0, - x_port: int = 0, - x_prefix: int = 0, - ) -> None: - 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: int, value: t.Optional[str]) -> t.Optional[str]: - """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 None - values = parse_list_header(value) - if len(values) >= trusted: - return values[-trusted] - return None - - def __call__( - self, environ: "WSGIEnvironment", start_response: "StartResponse" - ) -> t.Iterable[bytes]: - """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"] = f"{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/venv/lib/python3.9/site-packages/werkzeug/middleware/shared_data.py b/venv/lib/python3.9/site-packages/werkzeug/middleware/shared_data.py deleted file mode 100644 index f11b43a..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/middleware/shared_data.py +++ /dev/null @@ -1,320 +0,0 @@ -""" -Serve Shared Static Files -========================= - -.. autoclass:: SharedDataMiddleware - :members: is_allowed - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" -import mimetypes -import os -import pkgutil -import posixpath -import typing as t -from datetime import datetime -from datetime import timezone -from io import BytesIO -from time import time -from zlib import adler32 - -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 - -_TOpener = t.Callable[[], t.Tuple[t.BinaryIO, datetime, int]] -_TLoader = t.Callable[[t.Optional[str]], t.Tuple[t.Optional[str], t.Optional[_TOpener]]] - -if t.TYPE_CHECKING: - from _typeshed.wsgi import StartResponse - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - - -class SharedDataMiddleware: - - """A WSGI middleware which provides static content for development - environments or simple server setups. Its usage is quite simple:: - - import os - from werkzeug.middleware.shared_data import SharedDataMiddleware - - app = SharedDataMiddleware(app, { - '/shared': os.path.join(os.path.dirname(__file__), 'shared') - }) - - 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. Files can also be - mounted 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 match 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: "WSGIApplication", - exports: t.Union[ - t.Dict[str, t.Union[str, t.Tuple[str, str]]], - t.Iterable[t.Tuple[str, t.Union[str, t.Tuple[str, str]]]], - ], - disallow: None = None, - cache: bool = True, - cache_timeout: int = 60 * 60 * 12, - fallback_mimetype: str = "application/octet-stream", - ) -> None: - self.app = app - self.exports: t.List[t.Tuple[str, _TLoader]] = [] - self.cache = cache - self.cache_timeout = cache_timeout - - if isinstance(exports, dict): - exports = exports.items() - - for key, value in exports: - if isinstance(value, tuple): - loader = self.get_package_loader(*value) - elif isinstance(value, str): - if os.path.isfile(value): - loader = self.get_file_loader(value) - else: - loader = self.get_directory_loader(value) - else: - raise TypeError(f"unknown def {value!r}") - - 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: str) -> bool: - """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: str) -> _TOpener: - return lambda: ( - open(filename, "rb"), - datetime.fromtimestamp(os.path.getmtime(filename), tz=timezone.utc), - int(os.path.getsize(filename)), - ) - - def get_file_loader(self, filename: str) -> _TLoader: - return lambda x: (os.path.basename(filename), self._opener(filename)) - - def get_package_loader(self, package: str, package_path: str) -> _TLoader: - load_time = datetime.now(timezone.utc) - provider = pkgutil.get_loader(package) - - if hasattr(provider, "get_resource_reader"): - # Python 3 - reader = provider.get_resource_reader(package) # type: ignore - - def loader( - path: t.Optional[str], - ) -> t.Tuple[t.Optional[str], t.Optional[_TOpener]]: - if path is None: - return None, None - - path = safe_join(package_path, path) - - if path is None: - return None, None - - basename = posixpath.basename(path) - - try: - resource = reader.open_resource(path) - except OSError: - return None, None - - if isinstance(resource, BytesIO): - return ( - basename, - lambda: (resource, load_time, len(resource.getvalue())), - ) - - return ( - basename, - lambda: ( - resource, - datetime.fromtimestamp( - os.path.getmtime(resource.name), tz=timezone.utc - ), - os.path.getsize(resource.name), - ), - ) - - else: - # Python 3.6 - package_filename = provider.get_filename(package) # type: ignore - is_filesystem = os.path.exists(package_filename) - root = os.path.join(os.path.dirname(package_filename), package_path) - - def loader( - path: t.Optional[str], - ) -> t.Tuple[t.Optional[str], t.Optional[_TOpener]]: - if path is None: - return None, None - - path = safe_join(root, path) - - if path is None: - return None, None - - 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) # type: ignore - except OSError: - return None, None - - return basename, lambda: (BytesIO(data), load_time, len(data)) - - return loader - - def get_directory_loader(self, directory: str) -> _TLoader: - def loader( - path: t.Optional[str], - ) -> t.Tuple[t.Optional[str], t.Optional[_TOpener]]: - if path is not None: - path = safe_join(directory, path) - - if path is None: - return None, None - 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: datetime, file_size: int, real_filename: str) -> str: - if not isinstance(real_filename, bytes): - real_filename = real_filename.encode( # type: ignore - get_filesystem_encoding() - ) - - timestamp = mtime.timestamp() - checksum = adler32(real_filename) & 0xFFFFFFFF # type: ignore - return f"wzsdm-{timestamp}-{file_size}-{checksum}" - - def __call__( - self, environ: "WSGIEnvironment", start_response: "StartResponse" - ) -> t.Iterable[bytes]: - path = get_path_info(environ) - 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): # type: ignore - return self.app(environ, start_response) - - guessed_type = mimetypes.guess_type(real_filename) # type: ignore - 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) # type: ignore - headers += [ - ("Etag", f'"{etag}"'), - ("Cache-Control", f"max-age={timeout}, public"), - ] - - 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/venv/lib/python3.9/site-packages/werkzeug/py.typed b/venv/lib/python3.9/site-packages/werkzeug/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.9/site-packages/werkzeug/routing.py b/venv/lib/python3.9/site-packages/werkzeug/routing.py deleted file mode 100644 index 1043875..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/routing.py +++ /dev/null @@ -1,2332 +0,0 @@ -"""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 a URL map for an application with -two subdomains (www and kb) and some URL rules: - -.. code-block:: python - - 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: - -.. code-block:: python - - 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: - -.. code-block:: python - - 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: - -.. code-block:: python - - 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 -``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`` but -routing tried to match a ``POST`` request) a ``MethodNotAllowed`` -exception is raised. -""" -import ast -import difflib -import posixpath -import re -import typing -import typing as t -import uuid -import warnings -from pprint import pformat -from string import Template -from threading import Lock -from types import CodeType - -from ._internal import _encode_idna -from ._internal import _get_environ -from ._internal import _to_bytes -from ._internal import _to_str -from ._internal import _wsgi_decoding_dance -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 redirect -from .wsgi import get_host - -if t.TYPE_CHECKING: - import typing_extensions as te - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - from .wrappers.response import Response - -_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, -) - - -_PYTHON_CONSTANTS = {"None": None, "True": True, "False": False} - - -def _pythonize(value: str) -> t.Union[None, bool, int, float, str]: - if value in _PYTHON_CONSTANTS: - return _PYTHON_CONSTANTS[value] - for convert in int, float: - try: - return convert(value) # type: ignore - except ValueError: - pass - if value[:1] == value[-1:] and value[0] in "\"'": - value = value[1:-1] - return str(value) - - -def parse_converter_args(argstr: str) -> t.Tuple[t.Tuple, t.Dict[str, t.Any]]: - 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: str) -> t.Iterator[t.Tuple[t.Optional[str], t.Optional[str], str]]: - """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(f"variable name {variable!r} used twice.") - 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(f"malformed url rule: {rule!r}") - 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: str) -> None: - super().__init__(new_url) - self.new_url = new_url - - def get_response( - self, - environ: t.Optional["WSGIEnvironment"] = None, - scope: t.Optional[dict] = None, - ) -> "Response": - return redirect(self.new_url, self.code) - - -class RequestPath(RoutingException): - """Internal exception.""" - - __slots__ = ("path_info",) - - def __init__(self, path_info: str) -> None: - super().__init__() - 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: t.Mapping[str, t.Any]) -> None: - super().__init__() - self.matched_values = matched_values - - -class BuildError(RoutingException, LookupError): - """Raised if the build system cannot find a URL for an endpoint with the - values provided. - """ - - def __init__( - self, - endpoint: str, - values: t.Mapping[str, t.Any], - method: t.Optional[str], - adapter: t.Optional["MapAdapter"] = None, - ) -> None: - super().__init__(endpoint, values, method) - self.endpoint = endpoint - self.values = values - self.method = method - self.adapter = adapter - - @cached_property - def suggested(self) -> t.Optional["Rule"]: - return self.closest_rule(self.adapter) - - def closest_rule(self, adapter: t.Optional["MapAdapter"]) -> t.Optional["Rule"]: - def _score_rule(rule: "Rule") -> float: - 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) - - return None - - def __str__(self) -> str: - message = [f"Could not build url for endpoint {self.endpoint!r}"] - if self.method: - message.append(f" ({self.method!r})") - if self.values: - message.append(f" with values {sorted(self.values)!r}") - message.append(".") - if self.suggested: - if self.endpoint == self.suggested.endpoint: - if ( - self.method - and self.suggested.methods is not None - and self.method not in self.suggested.methods - ): - message.append( - " Did you mean to use methods" - f" {sorted(self.suggested.methods)!r}?" - ) - missing_values = self.suggested.arguments.union( - set(self.suggested.defaults or ()) - ) - set(self.values.keys()) - if missing_values: - message.append( - f" Did you forget to specify values {sorted(missing_values)!r}?" - ) - else: - message.append(f" Did you mean {self.suggested.endpoint!r} instead?") - return "".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: - """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: "Map") -> t.Iterable["Rule"]: - """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: str, rules: t.Iterable["Rule"]) -> None: - self.subdomain = subdomain - self.rules = rules - - def get_rules(self, map: "Map") -> t.Iterator["Rule"]: - 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: str, rules: t.Iterable["Rule"]) -> None: - self.path = path.rstrip("/") - self.rules = rules - - def get_rules(self, map: "Map") -> t.Iterator["Rule"]: - 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: str, rules: t.Iterable["Rule"]) -> None: - self.prefix = prefix - self.rules = rules - - def get_rules(self, map: "Map") -> t.Iterator["Rule"]: - 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: - """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: t.Iterable["Rule"]) -> None: - self.rules = list(rules) - - def __call__(self, *args: t.Any, **kwargs: t.Any) -> "RuleTemplateFactory": - 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: t.Iterable["Rule"], context: t.Dict[str, t.Any]) -> None: - self.rules = rules - self.context = context - - def get_rules(self, map: "Map") -> t.Iterator["Rule"]: - 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 rule.defaults.items(): - if isinstance(value, str): - value = Template(value).substitute(self.context) - new_defaults[key] = value - if rule.subdomain is not None: - subdomain = Template(rule.subdomain).substitute(self.context) - new_endpoint = rule.endpoint - if isinstance(new_endpoint, str): - new_endpoint = Template(new_endpoint).substitute(self.context) - yield Rule( - Template(rule.rule).substitute(self.context), - new_defaults, - subdomain, - rule.methods, - rule.build_only, - new_endpoint, - rule.strict_slashes, - ) - - -def _prefix_names(src: str) -> ast.stmt: - """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 # type: ignore - for node in ast.walk(tree): - if isinstance(node, ast.Name): - node.id = f".{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")) - - -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 f'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: str, - defaults: t.Optional[t.Mapping[str, t.Any]] = None, - subdomain: t.Optional[str] = None, - methods: t.Optional[t.Iterable[str]] = None, - build_only: bool = False, - endpoint: t.Optional[str] = None, - strict_slashes: t.Optional[bool] = None, - merge_slashes: t.Optional[bool] = None, - redirect_to: t.Optional[t.Union[str, t.Callable[..., str]]] = None, - alias: bool = False, - host: t.Optional[str] = None, - websocket: bool = False, - ) -> None: - if not string.startswith("/"): - raise ValueError("urls must start with a leading slash") - self.rule = string - self.is_leaf = not string.endswith("/") - - self.map: "Map" = None # type: ignore - 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: str = endpoint # type: ignore - self.redirect_to = redirect_to - - if defaults: - self.arguments = set(map(str, defaults)) - else: - self.arguments = set() - - self._trace: t.List[t.Tuple[bool, str]] = [] - - def empty(self) -> "Rule": - """ - 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) -> t.Mapping[str, t.Any]: - """ - 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: "Map") -> t.Iterator["Rule"]: - yield self - - def refresh(self) -> None: - """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: "Map", rebind: bool = False) -> None: - """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(f"url rule {self!r} already bound to map {self.map!r}") - 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: str, - converter_name: str, - args: t.Tuple, - kwargs: t.Mapping[str, t.Any], - ) -> "BaseConverter": - """Looks up the converter for the given parameter. - - .. versionadded:: 0.9 - """ - if converter_name not in self.map.converters: - raise LookupError(f"the converter {converter_name!r} does not exist") - return self.map.converters[converter_name](self.map, *args, **kwargs) - - def _encode_query_vars(self, query_vars: t.Mapping[str, t.Any]) -> str: - return url_encode( - query_vars, - charset=self.map.charset, - sort=self.map.sort_parameters, - key=self.map.sort_key, - ) - - def compile(self) -> None: - """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: t.Dict[str, "BaseConverter"] = {} - self._static_weights: t.List[t.Tuple[int, int]] = [] - self._argument_weights: t.List[int] = [] - regex_parts = [] - - def _build_regex(rule: str) -> None: - 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(f"(?P<{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: t.Callable[..., t.Tuple[str, str]] - self._build = self._compile_builder(False).__get__(self, None) # type: ignore - self._build_unknown: t.Callable[..., t.Tuple[str, str]] - self._build_unknown = self._compile_builder(True).__get__( # type: ignore - self, None - ) - - if self.build_only: - return - - if not (self.is_leaf and self.strict_slashes): - reps = "*" if self.merge_slashes else "?" - tail = f"(?/{reps})" - else: - tail = "" - - regex = f"^{''.join(regex_parts)}{tail}$" - self._regex = re.compile(regex) - - def match( - self, path: str, method: t.Optional[str] = None - ) -> t.Optional[t.MutableMapping[str, t.Any]]: - """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 groups.items(): - try: - value = self._converters[name].to_python(value) - except ValidationError: - return None - result[str(name)] = value - if self.defaults: - result.update(self.defaults) - - if self.merge_slashes: - new_path = "|".join(self.build(result, False)) # type: ignore - 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 - - return None - - @staticmethod - def _get_func_code(code: CodeType, name: str) -> t.Callable[..., t.Tuple[str, str]]: - globs: t.Dict[str, t.Any] = {} - locs: t.Dict[str, t.Any] = {} - exec(code, globs, locs) - return locs[name] # type: ignore - - def _compile_builder( - self, append_unknown: bool = True - ) -> t.Callable[..., t.Tuple[str, str]]: - defaults = self.defaults or {} - dom_ops: t.List[t.Tuple[bool, str]] = [] - url_ops: t.List[t.Tuple[bool, str]] = [] - - 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: str) -> ast.stmt: - ret = _prefix_names(_CALL_CONVERTER_CODE_FMT.format(elem=elem)) - ret.args = [ast.Name(str(elem), ast.Load())] # type: ignore # str for py2 - return ret - - def _parts(ops: t.List[t.Tuple[bool, str]]) -> t.List[ast.AST]: - 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: t.List[ast.AST]) -> ast.AST: - if len(parts) == 1: # shortcut - return parts[0] - return ast.JoinedStr(parts) - - body.append( - ast.Return(ast.Tuple([_join(dom_parts), _join(url_parts)], ast.Load())) - ) - - pargs = [ - 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: ast.FunctionDef = _prefix_names("def _(): pass") # type: ignore - func_ast.name = f"" - 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) - for _ in kargs: - func_ast.args.defaults.append(ast.Str("")) - func_ast.body = body - - # use `ast.parse` instead of `ast.Module` for better portability - # Python 3.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: t.Mapping[str, t.Any], append_unknown: bool = True - ) -> t.Optional[t.Tuple[str, str]]: - """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: "Rule") -> bool: - """Check if this rule has defaults for a given rule. - - :internal: - """ - return bool( - 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: t.Mapping[str, t.Any], method: t.Optional[str] = None - ) -> bool: - """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 defaults.items(): - if key in values and value != values[key]: - return False - - return True - - def match_compare_key( - self, - ) -> t.Tuple[bool, int, t.Iterable[t.Tuple[int, int]], int, t.Iterable[int]]: - """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) -> t.Tuple[int, int, int]: - """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: object) -> bool: - return isinstance(other, type(self)) and self._trace == other._trace - - __hash__ = None # type: ignore - - def __str__(self) -> str: - return self.rule - - def __repr__(self) -> str: - if self.map is None: - return f"<{type(self).__name__} (unbound)>" - parts = [] - for is_dynamic, data in self._trace: - if is_dynamic: - parts.append(f"<{data}>") - else: - parts.append(data) - parts = "".join(parts).lstrip("|") - methods = f" ({', '.join(self.methods)})" if self.methods is not None else "" - return f"<{type(self).__name__} {parts!r}{methods} -> {self.endpoint}>" - - -class BaseConverter: - """Base class for all converters.""" - - regex = "[^/]+" - weight = 100 - - def __init__(self, map: "Map", *args: t.Any, **kwargs: t.Any) -> None: - self.map = map - - def to_python(self, value: str) -> t.Any: - return value - - def to_url(self, value: t.Any) -> str: - if isinstance(value, (bytes, bytearray)): - return _fast_url_quote(value) - return _fast_url_quote(str(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: "Map", - minlength: int = 1, - maxlength: t.Optional[int] = None, - length: t.Optional[int] = None, - ) -> None: - super().__init__(map) - if length is not None: - length_regex = f"{{{int(length)}}}" - else: - if maxlength is None: - maxlength_value = "" - else: - maxlength_value = str(int(maxlength)) - length_regex = f"{{{int(minlength)},{maxlength_value}}}" - self.regex = f"[^/]{length_regex}" - - -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: "Map", *items: str) -> None: - super().__init__(map) - self.regex = f"(?:{'|'.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 - num_convert: t.Callable = int - - def __init__( - self, - map: "Map", - fixed_digits: int = 0, - min: t.Optional[int] = None, - max: t.Optional[int] = None, - signed: bool = False, - ) -> None: - if signed: - self.regex = self.signed_regex - super().__init__(map) - self.fixed_digits = fixed_digits - self.min = min - self.max = max - self.signed = signed - - def to_python(self, value: str) -> t.Any: - 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: t.Any) -> str: - value = str(self.num_convert(value)) - if self.fixed_digits: - value = value.zfill(self.fixed_digits) - return value - - @property - def signed_regex(self) -> str: - return f"-?{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+" - - -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: "Map", - min: t.Optional[float] = None, - max: t.Optional[float] = None, - signed: bool = False, - ) -> None: - super().__init__(map, min=min, max=max, signed=signed) # type: ignore - - -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: str) -> uuid.UUID: - return uuid.UUID(value) - - def to_url(self, value: uuid.UUID) -> str: - return str(value) - - -#: the default converter mapping for the map. -DEFAULT_CONVERTERS: t.Mapping[str, t.Type[BaseConverter]] = { - "default": UnicodeConverter, - "string": UnicodeConverter, - "any": AnyConverter, - "path": PathConverter, - "int": IntegerConverter, - "float": FloatConverter, - "uuid": UUIDConverter, -} - - -class Map: - """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: t.Optional[t.Iterable[RuleFactory]] = None, - default_subdomain: str = "", - charset: str = "utf-8", - strict_slashes: bool = True, - merge_slashes: bool = True, - redirect_defaults: bool = True, - converters: t.Optional[t.Mapping[str, t.Type[BaseConverter]]] = None, - sort_parameters: bool = False, - sort_key: t.Optional[t.Callable[[t.Any], t.Any]] = None, - encoding_errors: str = "replace", - host_matching: bool = False, - ) -> None: - self._rules: t.List[Rule] = [] - self._rules_by_endpoint: t.Dict[str, t.List[Rule]] = {} - 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: str, *arguments: str) -> bool: - """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: t.Optional[str] = None) -> t.Iterator[Rule]: - """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: RuleFactory) -> None: - """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: str, - script_name: t.Optional[str] = None, - subdomain: t.Optional[str] = None, - url_scheme: str = "http", - default_method: str = "GET", - path_info: t.Optional[str] = None, - query_args: t.Optional[t.Union[t.Mapping[str, t.Any], str]] = None, - ) -> "MapAdapter": - """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) # type: ignore - 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: "WSGIEnvironment", - server_name: t.Optional[str] = None, - subdomain: t.Optional[str] = None, - ) -> "MapAdapter": - """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 ( - environ.get("HTTP_CONNECTION", "").lower() == "upgrade" - and environ.get("HTTP_UPGRADE", "").lower() == "websocket" - ): - scheme = "wss" if scheme == "https" else "ws" - - 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 in {"http", "ws"} and server_name.endswith(":80"): - server_name = server_name[:-3] - elif scheme in {"https", "wss"} 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( - f"Current server name {wsgi_server_name!r} doesn't match configured" - f" server name {server_name!r}", - stacklevel=2, - ) - subdomain = "" - else: - subdomain = ".".join(filter(None, cur_server_name[:offset])) - - def _get_wsgi_string(name: str) -> t.Optional[str]: - val = environ.get(name) - if val is not None: - return _wsgi_decoding_dance(val, self.charset) - return None - - 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) -> None: - """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 self._rules_by_endpoint.values(): - rules.sort(key=lambda x: x.build_compare_key()) - self._remap = False - - def __repr__(self) -> str: - rules = self.iter_rules() - return f"{type(self).__name__}({pformat(list(rules))})" - - -class MapAdapter: - - """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: Map, - server_name: str, - script_name: str, - subdomain: t.Optional[str], - url_scheme: str, - path_info: str, - default_method: str, - query_args: t.Optional[t.Union[t.Mapping[str, t.Any], str]] = None, - ): - self.map = map - self.server_name = _to_str(server_name) - script_name = _to_str(script_name) - if not script_name.endswith("/"): - script_name += "/" - self.script_name = script_name - self.subdomain = _to_str(subdomain) - self.url_scheme = _to_str(url_scheme) - self.path_info = _to_str(path_info) - self.default_method = _to_str(default_method) - self.query_args = query_args - self.websocket = self.url_scheme in {"ws", "wss"} - - def dispatch( - self, - view_func: t.Callable[[str, t.Mapping[str, t.Any]], "WSGIApplication"], - path_info: t.Optional[str] = None, - method: t.Optional[str] = None, - catch_http_exceptions: bool = False, - ) -> "WSGIApplication": - """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 - - @typing.overload - def match( # type: ignore - self, - path_info: t.Optional[str] = None, - method: t.Optional[str] = None, - return_rule: "te.Literal[False]" = False, - query_args: t.Optional[t.Union[t.Mapping[str, t.Any], str]] = None, - websocket: t.Optional[bool] = None, - ) -> t.Tuple[str, t.Mapping[str, t.Any]]: - ... - - @typing.overload - def match( - self, - path_info: t.Optional[str] = None, - method: t.Optional[str] = None, - return_rule: "te.Literal[True]" = True, - query_args: t.Optional[t.Union[t.Mapping[str, t.Any], str]] = None, - websocket: t.Optional[bool] = None, - ) -> t.Tuple[Rule, t.Mapping[str, t.Any]]: - ... - - def match( - self, - path_info: t.Optional[str] = None, - method: t.Optional[str] = None, - return_rule: bool = False, - query_args: t.Optional[t.Union[t.Mapping[str, t.Any], str]] = None, - websocket: t.Optional[bool] = None, - ) -> t.Tuple[t.Union[str, Rule], t.Mapping[str, t.Any]]: - """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_str(path_info, self.map.charset) - if query_args is None: - query_args = self.query_args or {} - method = (method or self.default_method).upper() - - if websocket is None: - websocket = self.websocket - - require_redirect = False - - domain_part = self.server_name if self.map.host_matching else self.subdomain - path_part = f"/{path_info.lstrip('/')}" if path_info else "" - path = f"{domain_part}|{path_part}" - - 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, str): - - def _handle_match(match: t.Match[str]) -> str: - value = rv[match.group(1)] # type: ignore - 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) - - if self.subdomain: - netloc = f"{self.subdomain}.{self.server_name}" - else: - netloc = self.server_name - - raise RequestRedirect( - url_join( - f"{self.url_scheme or 'http'}://{netloc}{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: t.Optional[str] = None, method: t.Optional[str] = None - ) -> bool: - """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: t.Optional[str] = None) -> t.Iterable[str]: - """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 # type: ignore - except HTTPException: - pass - return [] - - def get_host(self, domain_part: t.Optional[str]) -> str: - """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_str(domain_part, "ascii") - subdomain = domain_part - if subdomain is None: - subdomain = self.subdomain - else: - subdomain = _to_str(subdomain, "ascii") - - if subdomain: - return f"{subdomain}.{self.server_name}" - else: - return self.server_name - - def get_default_redirect( - self, - rule: Rule, - method: str, - values: t.MutableMapping[str, t.Any], - query_args: t.Union[t.Mapping[str, t.Any], str], - ) -> t.Optional[str]: - """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) # type: ignore - domain_part, path = r.build(values) # type: ignore - return self.make_redirect_url(path, query_args, domain_part=domain_part) - return None - - def encode_query_args(self, query_args: t.Union[t.Mapping[str, t.Any], str]) -> str: - if not isinstance(query_args, str): - return url_encode(query_args, self.map.charset) - return query_args - - def make_redirect_url( - self, - path_info: str, - query_args: t.Optional[t.Union[t.Mapping[str, t.Any], str]] = None, - domain_part: t.Optional[str] = None, - ) -> str: - """Creates a redirect URL. - - :internal: - """ - if query_args: - suffix = f"?{self.encode_query_args(query_args)}" - else: - suffix = "" - - scheme = self.url_scheme or "http" - host = self.get_host(domain_part) - path = posixpath.join(self.script_name.strip("/"), path_info.lstrip("/")) - return f"{scheme}://{host}/{path}{suffix}" - - def make_alias_redirect_url( - self, - path: str, - endpoint: str, - values: t.Mapping[str, t.Any], - method: str, - query_args: t.Union[t.Mapping[str, t.Any], str], - ) -> str: - """Internally called to make an alias redirect URL.""" - url = self.build( - endpoint, values, method, append_unknown=False, force_external=True - ) - if query_args: - url += f"?{self.encode_query_args(query_args)}" - assert url != path, "detected invalid alias setting. No canonical URL found" - return url - - def _partial_build( - self, - endpoint: str, - values: t.Mapping[str, t.Any], - method: t.Optional[str], - append_unknown: bool, - ) -> t.Optional[t.Tuple[str, str, bool]]: - """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): - build_rv = rule.build(values, append_unknown) - - if build_rv is not None: - rv = (build_rv[0], build_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: str, - values: t.Optional[t.Mapping[str, t.Any]] = None, - method: t.Optional[str] = None, - force_external: bool = False, - append_unknown: bool = True, - url_scheme: t.Optional[str] = None, - ) -> str: - """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 - bytes back. Non ASCII characters are urlencoded with the - charset defined on the map instance. - - Additional values are converted to strings 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. - - :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. - :param url_scheme: Scheme to use in place of the bound - :attr:`url_scheme`. - - .. versionchanged:: 2.0 - Added the ``url_scheme`` parameter. - - .. versionadded:: 0.6 - Added the ``append_unknown`` parameter. - """ - self.map.update() - - if values: - temp_values: t.Dict[str, t.Union[t.List[t.Any], t.Any]] = {} - always_list = isinstance(values, MultiDict) - key: str - value: t.Optional[t.Union[t.List[t.Any], t.Any]] - - # For MultiDict, dict.items(values) is like values.lists() - # without the call or list coercion overhead. - for key, value in dict.items(values): # type: ignore - if value is None: - continue - - if always_list or isinstance(value, (list, tuple)): - value = [v for v in value if v is not None] - - if not value: - continue - - if len(value) == 1: - value = value[0] - - temp_values[key] = value - - values = temp_values - 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) - - if url_scheme is None: - url_scheme = self.url_scheme - - # 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. - 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 f"{self.script_name.rstrip('/')}/{path.lstrip('/')}" - - scheme = f"{url_scheme}:" if url_scheme else "" - return f"{scheme}//{host}{self.script_name[:-1]}/{path.lstrip('/')}" diff --git a/venv/lib/python3.9/site-packages/werkzeug/sansio/__init__.py b/venv/lib/python3.9/site-packages/werkzeug/sansio/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 0ffd06327e2197a80867e273b29f9c66c349afca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 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 diff --git a/venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/request.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/request.cpython-39.pyc deleted file mode 100644 index 8f30fdf0a0d958f54351279b0515a3fd5224cc27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17194 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 diff --git a/venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/utils.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/sansio/__pycache__/utils.cpython-39.pyc deleted file mode 100644 index 2def1df83e72347a2ed0eeba879dcb236cf39d44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3902 zcmcInO>Y~=8Q$4lQY1~uiefZ&+6GfMiOp0cjW~ydNSy?B+Xx8Qz_L+PKufMTLvgL; zEPhDbXXXgEwnfK$F zm(lWa!^86r^UuMpRnPl74NgBb3_ixI|B6Og*4OzeB$#Y`qNg!&X{wUmPid9QlwiI@68C)y#ne&&tk$=g9 zgqye07}Z7NNkyC!%}153Rq+bAN%x5cT7$-~Sl;C)Rk0$@gLh4^O|P}~45#pV&wR8k zRyO-G9cDuIW06J}FK^0Wu3|I$xl)EF*YBU?dP8)w?2(L|O_ zqjGJe=qIr@WmQR&t8_?9ES@EF>UeMB)qg`%c)CU#GG4(9JM`7Xg6*&a^o=k4Cor!F zAB6}0ezWik?~ok?zxL7#p=W~Gr_7_@Z{Uhe?;7N9dB05$!Xi8hMdc||X%UL5So#Bu zcMyu&K_v|ZJE&MqAv9H?>3dewpBI|oET^kl1iQZa3ggWDGuu%y29dphHcK2nz)6r3ilXh|wC%QeIm5qLysR_)xFE3(cT}9)u8e8@Ee@uSv z$GSiFO8dhk8%Bw~(LRwWSzDchMDNbO=v3`iwQR&1wlz^Ylx3ieDl6MFBX!xlo5qxX zHr>jGa}{~2tjSbp>a~`fxe15Vc{E!qi^S_YC4rKot)|XLqxfOphQU@HQ;uqF=b9A= zm*-zP0C`cj(RlTcg?@uo{ne_^n)ucH8f)NN^+VsyG%!>3*FaI1AknInRgHiJ1e~*K z$1)O9VNxnYPr1AZT_S21Fcct*r-BZRZ{pQop+TO81p*~!YOO#&Z5KcTj6TMfLMOyG zyadR#bKzr8RNTyC@5=yGPgD_b17LwCmXNXN0iJ6P3(_}0uY>-Dr8huF5A<`6UIbR} z5yCSpf)0gIYN_}CZAUj~Ql_n1e}u0(GlI&WK$;|8fqr{kkc*}+bXxZ^g%r9lSG zbNnswq#ZR!mM&ai_4hqhcx(YDxO zH()b5OOqKNW~o6c+ZCor2LdRhe5|b!5syYvK{4o&W1_$mkrLc;FHSO5naPG(GC#qu zriRcUNoMN=4e@A33P{V`0@%_5?Q%r>j$N%g%F|)j9rGk>1{@1=6~$We$nnXCVEbZ` zl5Gs7T~N2rTuC_j{4ivrvw-SC(ZT6r^LBem-p?g0PZnDTe(p*>7+fA3Gu4-2b+>^N zQ0}`hc8UgrPvKrz+)Z+zZZ6M=IG+HSg@DJjMSa-BO}DYqRr1feHEwG#Sm&9tD-t$? zIE~DBo%ga-f@s4iPveJNXTx1-5I)2aG2Q(1aFi|ZB*6_r^xs3<5yGJWYk(ECC6{cF$u z{o=(7M+hEhT~@4P_QURb?_GcPEol1{+CAT2rKqROSS->C)N9aZu}Be+v?}U#n)p67 zKcMD^Xs{mSUk1Y3jx>EDybl)r1{&}6knjyaU-O%64LG;L)>zY`;Ht0Q21l#v7I+K& zvaYhs^vQo^Xxk>jOwIaO3*qnJjv#LF&^1D@g}Wnk07ndEPjEmW=I5Szr>Fq9f~Sn( zjuhdMU!b6&o08^DQ1~cuKs{u{al&hX%TvGmuQF7?oXCXgPgV|kod#&N<VdN=_Jlk)9NJBjA)Pn&9^-K6jQ*(qx&-t3lTmT+9C>p`okUZYeOX8;!WUdAm6m9N1N=W79 zk1jhT0Z?>0C>A@467@OzXusKg`>mh-A7Z@bt9L None: - self.buffer = bytearray() - self.complete = False - self.max_form_memory_size = max_form_memory_size - self.state = State.PREAMBLE - self.boundary = boundary - - # Note in the below \h i.e. horizontal whitespace is used - # as [^\S\n\r] as \h isn't supported in python. - - # The preamble must end with a boundary where the boundary is - # prefixed by a line break, RFC2046. Except that many - # implementations including Werkzeug's tests omit the line - # break prefix. In addition the first boundary could be the - # epilogue boundary (for empty form-data) hence the matching - # group to understand if it is an epilogue boundary. - self.preamble_re = re.compile( - br"%s?--%s(--[^\S\n\r]*%s?|[^\S\n\r]*%s)" - % (LINE_BREAK, re.escape(boundary), LINE_BREAK, LINE_BREAK), - re.MULTILINE, - ) - # A boundary must include a line break prefix and suffix, and - # may include trailing whitespace. In addition the boundary - # could be the epilogue boundary hence the matching group to - # understand if it is an epilogue boundary. - self.boundary_re = re.compile( - br"%s--%s(--[^\S\n\r]*%s?|[^\S\n\r]*%s)" - % (LINE_BREAK, re.escape(boundary), LINE_BREAK, LINE_BREAK), - re.MULTILINE, - ) - - def last_newline(self) -> int: - try: - last_nl = self.buffer.rindex(b"\n") - except ValueError: - last_nl = len(self.buffer) - try: - last_cr = self.buffer.rindex(b"\r") - except ValueError: - last_cr = len(self.buffer) - - return min(last_nl, last_cr) - - def receive_data(self, data: Optional[bytes]) -> None: - if data is None: - self.complete = True - elif ( - self.max_form_memory_size is not None - and len(self.buffer) + len(data) > self.max_form_memory_size - ): - raise RequestEntityTooLarge() - else: - self.buffer.extend(data) - - def next_event(self) -> Event: - event: Event = NEED_DATA - - if self.state == State.PREAMBLE: - match = self.preamble_re.search(self.buffer) - if match is not None: - if match.group(1).startswith(b"--"): - self.state = State.EPILOGUE - else: - self.state = State.PART - data = bytes(self.buffer[: match.start()]) - del self.buffer[: match.end()] - event = Preamble(data=data) - - elif self.state == State.PART: - match = BLANK_LINE_RE.search(self.buffer) - if match is not None: - headers = self._parse_headers(self.buffer[: match.start()]) - del self.buffer[: match.end()] - - if "content-disposition" not in headers: - raise ValueError("Missing Content-Disposition header") - - disposition, extra = parse_options_header( - headers["content-disposition"] - ) - name = cast(str, extra.get("name")) - filename = extra.get("filename") - if filename is not None: - event = File( - filename=filename, - headers=headers, - name=name, - ) - else: - event = Field( - headers=headers, - name=name, - ) - self.state = State.DATA - - elif self.state == State.DATA: - if self.buffer.find(b"--" + self.boundary) == -1: - # No complete boundary in the buffer, but there may be - # a partial boundary at the end. As the boundary - # starts with either a nl or cr find the earliest and - # return up to that as data. - data_length = del_index = self.last_newline() - more_data = True - else: - match = self.boundary_re.search(self.buffer) - if match is not None: - if match.group(1).startswith(b"--"): - self.state = State.EPILOGUE - else: - self.state = State.PART - data_length = match.start() - del_index = match.end() - else: - data_length = del_index = self.last_newline() - more_data = match is None - - data = bytes(self.buffer[:data_length]) - del self.buffer[:del_index] - if data or not more_data: - event = Data(data=data, more_data=more_data) - - elif self.state == State.EPILOGUE and self.complete: - event = Epilogue(data=bytes(self.buffer)) - del self.buffer[:] - self.state = State.COMPLETE - - if self.complete and isinstance(event, NeedData): - raise ValueError(f"Invalid form-data cannot parse beyond {self.state}") - - return event - - def _parse_headers(self, data: bytes) -> Headers: - headers: List[Tuple[str, str]] = [] - # Merge the continued headers into one line - data = HEADER_CONTINUATION_RE.sub(b" ", data) - # Now there is one header per line - for line in data.splitlines(): - if line.strip() != b"": - name, value = _to_str(line).strip().split(":", 1) - headers.append((name.strip(), value.strip())) - return Headers(headers) - - -class MultipartEncoder: - def __init__(self, boundary: bytes) -> None: - self.boundary = boundary - self.state = State.PREAMBLE - - def send_event(self, event: Event) -> bytes: - if isinstance(event, Preamble) and self.state == State.PREAMBLE: - self.state = State.PART - return event.data - elif isinstance(event, (Field, File)) and self.state in { - State.PREAMBLE, - State.PART, - State.DATA, - }: - self.state = State.DATA - data = b"\r\n--" + self.boundary + b"\r\n" - data += b'Content-Disposition: form-data; name="%s"' % _to_bytes(event.name) - if isinstance(event, File): - data += b'; filename="%s"' % _to_bytes(event.filename) - data += b"\r\n" - for name, value in cast(Field, event).headers: - if name.lower() != "content-disposition": - data += _to_bytes(f"{name}: {value}\r\n") - data += b"\r\n" - return data - elif isinstance(event, Data) and self.state == State.DATA: - return event.data - elif isinstance(event, Epilogue): - self.state = State.COMPLETE - return b"\r\n--" + self.boundary + b"--\r\n" + event.data - else: - raise ValueError(f"Cannot generate {event} in state: {self.state}") diff --git a/venv/lib/python3.9/site-packages/werkzeug/sansio/request.py b/venv/lib/python3.9/site-packages/werkzeug/sansio/request.py deleted file mode 100644 index 2c21a21..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/sansio/request.py +++ /dev/null @@ -1,548 +0,0 @@ -import typing as t -from datetime import datetime - -from .._internal import _to_str -from ..datastructures import Accept -from ..datastructures import Authorization -from ..datastructures import CharsetAccept -from ..datastructures import ETags -from ..datastructures import Headers -from ..datastructures import HeaderSet -from ..datastructures import IfRange -from ..datastructures import ImmutableList -from ..datastructures import ImmutableMultiDict -from ..datastructures import LanguageAccept -from ..datastructures import MIMEAccept -from ..datastructures import MultiDict -from ..datastructures import Range -from ..datastructures import RequestCacheControl -from ..http import parse_accept_header -from ..http import parse_authorization_header -from ..http import parse_cache_control_header -from ..http import parse_cookie -from ..http import parse_date -from ..http import parse_etags -from ..http import parse_if_range_header -from ..http import parse_list_header -from ..http import parse_options_header -from ..http import parse_range_header -from ..http import parse_set_header -from ..urls import url_decode -from ..user_agent import UserAgent -from ..useragents import _UserAgent as _DeprecatedUserAgent -from ..utils import cached_property -from ..utils import header_property -from .utils import get_current_url -from .utils import get_host - - -class Request: - """Represents the non-IO parts of a HTTP request, including the - method, URL info, and headers. - - This class is not meant for general use. It should only be used when - implementing WSGI, ASGI, or another HTTP application spec. Werkzeug - provides a WSGI implementation at :cls:`werkzeug.wrappers.Request`. - - :param method: The method the request was made with, such as - ``GET``. - :param scheme: The URL scheme of the protocol the request used, such - as ``https`` or ``wss``. - :param server: The address of the server. ``(host, port)``, - ``(path, None)`` for unix sockets, or ``None`` if not known. - :param root_path: The prefix that the application is mounted under. - This is prepended to generated URLs, but is not part of route - matching. - :param path: The path part of the URL after ``root_path``. - :param query_string: The part of the URL after the "?". - :param headers: The headers received with the request. - :param remote_addr: The address of the client sending the request. - - .. versionadded:: 2.0 - """ - - #: The charset used to decode most data in the request. - charset = "utf-8" - - #: the error handling procedure for errors, defaults to 'replace' - encoding_errors = "replace" - - #: 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: t.Type[MultiDict] = ImmutableMultiDict - - #: 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: t.Type[MultiDict] = 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: t.Type[t.List] = ImmutableList - - user_agent_class = _DeprecatedUserAgent - """The class used and returned by the :attr:`user_agent` property to - parse the header. Defaults to - :class:`~werkzeug.user_agent.UserAgent`, which does no parsing. An - extension can provide a subclass that uses a parser to provide other - data. - - .. versionadded:: 2.0 - """ - - #: Valid host names when handling requests. By default all hosts are - #: trusted, which means that whatever the client says 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 - #: the application is being run behind one). - #: - #: .. versionadded:: 0.9 - trusted_hosts: t.Optional[t.List[str]] = None - - def __init__( - self, - method: str, - scheme: str, - server: t.Optional[t.Tuple[str, t.Optional[int]]], - root_path: str, - path: str, - query_string: bytes, - headers: Headers, - remote_addr: t.Optional[str], - ) -> None: - #: The method the request was made with, such as ``GET``. - self.method = method.upper() - #: The URL scheme of the protocol the request used, such as - #: ``https`` or ``wss``. - self.scheme = scheme - #: The address of the server. ``(host, port)``, ``(path, None)`` - #: for unix sockets, or ``None`` if not known. - self.server = server - #: The prefix that the application is mounted under, without a - #: trailing slash. :attr:`path` comes after this. - self.root_path = root_path.rstrip("/") - #: The path part of the URL after :attr:`root_path`. This is the - #: path used for routing within the application. - self.path = "/" + path.lstrip("/") - #: The part of the URL after the "?". This is the raw value, use - #: :attr:`args` for the parsed values. - self.query_string = query_string - #: The headers received with the request. - self.headers = headers - #: The address of the client sending the request. - self.remote_addr = remote_addr - - def __repr__(self) -> str: - try: - url = self.url - except Exception as e: - url = f"(invalid URL: {e})" - - return f"<{type(self).__name__} {url!r} [{self.method}]>" - - @property - def url_charset(self) -> str: - """The charset that is assumed for URLs. Defaults to the value - of :attr:`charset`. - - .. versionadded:: 0.6 - """ - return self.charset - - @cached_property - def args(self) -> "MultiDict[str, str]": - """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( - self.query_string, - self.url_charset, - errors=self.encoding_errors, - cls=self.parameter_storage_class, - ) - - @cached_property - def access_route(self) -> t.List[str]: - """If a forwarded header exists this is a list of all ip addresses - from the client ip to the last proxy server. - """ - if "X-Forwarded-For" in self.headers: - return self.list_storage_class( - parse_list_header(self.headers["X-Forwarded-For"]) - ) - elif self.remote_addr is not None: - return self.list_storage_class([self.remote_addr]) - return self.list_storage_class() - - @cached_property - def full_path(self) -> str: - """Requested path, including the query string.""" - return f"{self.path}?{_to_str(self.query_string, self.url_charset)}" - - @property - def is_secure(self) -> bool: - """``True`` if the request was made with a secure protocol - (HTTPS or WSS). - """ - return self.scheme in {"https", "wss"} - - @cached_property - def url(self) -> str: - """The full request URL with the scheme, host, root path, path, - and query string.""" - return get_current_url( - self.scheme, self.host, self.root_path, self.path, self.query_string - ) - - @cached_property - def base_url(self) -> str: - """Like :attr:`url` but without the query string.""" - return get_current_url(self.scheme, self.host, self.root_path, self.path) - - @cached_property - def root_url(self) -> str: - """The request URL scheme, host, and root path. This is the root - that the application is accessed from. - """ - return get_current_url(self.scheme, self.host, self.root_path) - - @cached_property - def host_url(self) -> str: - """The request URL scheme and host only.""" - return get_current_url(self.scheme, self.host) - - @cached_property - def host(self) -> str: - """The host name the request was made to, including the port if - it's non-standard. Validated with :attr:`trusted_hosts`. - """ - return get_host( - self.scheme, self.headers.get("host"), self.server, self.trusted_hosts - ) - - @cached_property - def cookies(self) -> "ImmutableMultiDict[str, str]": - """A :class:`dict` with the contents of all cookies transmitted with - the request.""" - wsgi_combined_cookie = ";".join(self.headers.getlist("Cookie")) - return parse_cookie( # type: ignore - wsgi_combined_cookie, - self.charset, - self.encoding_errors, - cls=self.dict_storage_class, - ) - - # Common Descriptors - - content_type = header_property[str]( - "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.""", - read_only=True, - ) - - @cached_property - def content_length(self) -> t.Optional[int]: - """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. - """ - if self.headers.get("Transfer-Encoding", "") == "chunked": - return None - - content_length = self.headers.get("Content-Length") - if content_length is not None: - try: - return max(0, int(content_length)) - except (ValueError, TypeError): - pass - - return None - - content_encoding = header_property[str]( - "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""", - read_only=True, - ) - content_md5 = header_property[str]( - "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""", - read_only=True, - ) - referrer = header_property[str]( - "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).""", - read_only=True, - ) - date = header_property( - "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. - - .. versionchanged:: 2.0 - The datetime object is timezone-aware. - """, - read_only=True, - ) - max_forwards = header_property( - "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.""", - read_only=True, - ) - - def _parse_content_type(self) -> None: - if not hasattr(self, "_parsed_content_type"): - self._parsed_content_type = parse_options_header( - self.headers.get("Content-Type", "") - ) - - @property - def mimetype(self) -> str: - """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) -> t.Dict[str, str]: - """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) -> HeaderSet: - """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.headers.get("Pragma", "")) - - # Accept - - @cached_property - def accept_mimetypes(self) -> MIMEAccept: - """List of mimetypes this client supports as - :class:`~werkzeug.datastructures.MIMEAccept` object. - """ - return parse_accept_header(self.headers.get("Accept"), MIMEAccept) - - @cached_property - def accept_charsets(self) -> CharsetAccept: - """List of charsets this client supports as - :class:`~werkzeug.datastructures.CharsetAccept` object. - """ - return parse_accept_header(self.headers.get("Accept-Charset"), CharsetAccept) - - @cached_property - def accept_encodings(self) -> Accept: - """List of encodings this client accepts. Encodings in a HTTP term - are compression encodings such as gzip. For charsets have a look at - :attr:`accept_charset`. - """ - return parse_accept_header(self.headers.get("Accept-Encoding")) - - @cached_property - def accept_languages(self) -> LanguageAccept: - """List of languages this client accepts as - :class:`~werkzeug.datastructures.LanguageAccept` object. - - .. versionchanged 0.5 - In previous versions this was a regular - :class:`~werkzeug.datastructures.Accept` object. - """ - return parse_accept_header(self.headers.get("Accept-Language"), LanguageAccept) - - # ETag - - @cached_property - def cache_control(self) -> RequestCacheControl: - """A :class:`~werkzeug.datastructures.RequestCacheControl` object - for the incoming cache control headers. - """ - cache_control = self.headers.get("Cache-Control") - return parse_cache_control_header(cache_control, None, RequestCacheControl) - - @cached_property - def if_match(self) -> ETags: - """An object containing all the etags in the `If-Match` header. - - :rtype: :class:`~werkzeug.datastructures.ETags` - """ - return parse_etags(self.headers.get("If-Match")) - - @cached_property - def if_none_match(self) -> ETags: - """An object containing all the etags in the `If-None-Match` header. - - :rtype: :class:`~werkzeug.datastructures.ETags` - """ - return parse_etags(self.headers.get("If-None-Match")) - - @cached_property - def if_modified_since(self) -> t.Optional[datetime]: - """The parsed `If-Modified-Since` header as a datetime object. - - .. versionchanged:: 2.0 - The datetime object is timezone-aware. - """ - return parse_date(self.headers.get("If-Modified-Since")) - - @cached_property - def if_unmodified_since(self) -> t.Optional[datetime]: - """The parsed `If-Unmodified-Since` header as a datetime object. - - .. versionchanged:: 2.0 - The datetime object is timezone-aware. - """ - return parse_date(self.headers.get("If-Unmodified-Since")) - - @cached_property - def if_range(self) -> IfRange: - """The parsed ``If-Range`` header. - - .. versionchanged:: 2.0 - ``IfRange.date`` is timezone-aware. - - .. versionadded:: 0.7 - """ - return parse_if_range_header(self.headers.get("If-Range")) - - @cached_property - def range(self) -> t.Optional[Range]: - """The parsed `Range` header. - - .. versionadded:: 0.7 - - :rtype: :class:`~werkzeug.datastructures.Range` - """ - return parse_range_header(self.headers.get("Range")) - - # User Agent - - @cached_property - def user_agent(self) -> UserAgent: - """The user agent. Use ``user_agent.string`` to get the header - value. Set :attr:`user_agent_class` to a subclass of - :class:`~werkzeug.user_agent.UserAgent` to provide parsing for - the other properties or other extended data. - - .. versionchanged:: 2.0 - The built in parser is deprecated and will be removed in - Werkzeug 2.1. A ``UserAgent`` subclass must be set to parse - data from the string. - """ - return self.user_agent_class(self.headers.get("User-Agent", "")) - - # Authorization - - @cached_property - def authorization(self) -> t.Optional[Authorization]: - """The `Authorization` object in parsed form.""" - return parse_authorization_header(self.headers.get("Authorization")) - - # CORS - - origin = header_property[str]( - "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." - ), - read_only=True, - ) - - access_control_request_headers = header_property( - "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." - ), - read_only=True, - ) - - access_control_request_method = header_property[str]( - "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." - ), - read_only=True, - ) - - @property - def is_json(self) -> bool: - """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") - ) diff --git a/venv/lib/python3.9/site-packages/werkzeug/sansio/response.py b/venv/lib/python3.9/site-packages/werkzeug/sansio/response.py deleted file mode 100644 index aedfcb0..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/sansio/response.py +++ /dev/null @@ -1,656 +0,0 @@ -import typing -import typing as t -from datetime import datetime -from datetime import timedelta -from datetime import timezone -from http import HTTPStatus - -from .._internal import _to_str -from ..datastructures import Headers -from ..datastructures import HeaderSet -from ..http import dump_cookie -from ..http import HTTP_STATUS_CODES -from ..utils import get_content_type -from werkzeug.datastructures import CallbackDict -from werkzeug.datastructures import ContentRange -from werkzeug.datastructures import ResponseCacheControl -from werkzeug.datastructures import WWWAuthenticate -from werkzeug.http import COEP -from werkzeug.http import COOP -from werkzeug.http import dump_age -from werkzeug.http import dump_csp_header -from werkzeug.http import dump_header -from werkzeug.http import dump_options_header -from werkzeug.http import http_date -from werkzeug.http import parse_age -from werkzeug.http import parse_cache_control_header -from werkzeug.http import parse_content_range_header -from werkzeug.http import parse_csp_header -from werkzeug.http import parse_date -from werkzeug.http import parse_options_header -from werkzeug.http import parse_set_header -from werkzeug.http import parse_www_authenticate_header -from werkzeug.http import quote_etag -from werkzeug.http import unquote_etag -from werkzeug.utils import header_property - - -def _set_property(name: str, doc: t.Optional[str] = None) -> property: - def fget(self: "Response") -> HeaderSet: - def on_update(header_set: HeaderSet) -> None: - 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: "Response", - value: t.Optional[ - t.Union[str, t.Dict[str, t.Union[str, int]], t.Iterable[str]] - ], - ) -> None: - if not value: - del self.headers[name] - elif isinstance(value, str): - self.headers[name] = value - else: - self.headers[name] = dump_header(value) - - return property(fget, fset, doc=doc) - - -class Response: - """Represents the non-IO parts of an HTTP response, specifically the - status and headers but not the body. - - This class is not meant for general use. It should only be used when - implementing WSGI, ASGI, or another HTTP application spec. Werkzeug - provides a WSGI implementation at :cls:`werkzeug.wrappers.Response`. - - :param status: The status code for the response. Either an int, in - which case the default status message is added, or a string in - the form ``{code} {message}``, like ``404 Not Found``. Defaults - to 200. - :param headers: A :class:`~werkzeug.datastructures.Headers` object, - or a list of ``(key, value)`` tuples that will be converted to a - ``Headers`` object. - :param mimetype: The mime type (content type without charset or - other parameters) of the response. If the value starts with - ``text/`` (or matches some other special cases), the charset - will be added to create the ``content_type``. - :param content_type: The full content type of the response. - Overrides building the value from ``mimetype``. - - .. versionadded:: 2.0 - """ - - #: 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" - - #: 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 - - # A :class:`Headers` object representing the response headers. - headers: Headers - - def __init__( - self, - status: t.Optional[t.Union[int, str, HTTPStatus]] = None, - headers: t.Optional[ - t.Union[ - t.Mapping[str, t.Union[str, int, t.Iterable[t.Union[str, int]]]], - t.Iterable[t.Tuple[str, t.Union[str, int]]], - ] - ] = None, - mimetype: t.Optional[str] = None, - content_type: t.Optional[str] = None, - ) -> None: - 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 - self.status = status # type: ignore - - def __repr__(self) -> str: - return f"<{type(self).__name__} [{self.status}]>" - - @property - def status_code(self) -> int: - """The HTTP status code as a number.""" - return self._status_code - - @status_code.setter - def status_code(self, code: int) -> None: - self.status = code # type: ignore - - @property - def status(self) -> str: - """The HTTP status code as a string.""" - return self._status - - @status.setter - def status(self, value: t.Union[str, int, HTTPStatus]) -> None: - if not isinstance(value, (str, bytes, int, HTTPStatus)): - raise TypeError("Invalid status argument") - - self._status, self._status_code = self._clean_status(value) - - def _clean_status(self, value: t.Union[str, int, HTTPStatus]) -> t.Tuple[str, int]: - if isinstance(value, HTTPStatus): - value = int(value) - status = _to_str(value, self.charset) - split_status = status.split(None, 1) - - if len(split_status) == 0: - raise ValueError("Empty status argument") - - if len(split_status) > 1: - if split_status[0].isdigit(): - # code and message - return status, int(split_status[0]) - - # multi-word message - return f"0 {status}", 0 - - if split_status[0].isdigit(): - # code only - status_code = int(split_status[0]) - - try: - status = f"{status_code} {HTTP_STATUS_CODES[status_code].upper()}" - except KeyError: - status = f"{status_code} UNKNOWN" - - return status, status_code - - # one-word message - return f"0 {status}", 0 - - def set_cookie( - self, - key: str, - value: str = "", - max_age: t.Optional[t.Union[timedelta, int]] = None, - expires: t.Optional[t.Union[str, datetime, int, float]] = None, - path: t.Optional[str] = "/", - domain: t.Optional[str] = None, - secure: bool = False, - httponly: bool = False, - samesite: t.Optional[str] = None, - ) -> None: - """Sets a cookie. - - 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 access to the cookie. - :param samesite: Limit the scope of the cookie to only be - attached to requests that 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: str, - path: str = "/", - domain: t.Optional[str] = None, - secure: bool = False, - httponly: bool = False, - samesite: t.Optional[str] = None, - ) -> 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. - :param secure: If ``True``, the cookie will only be available - via HTTPS. - :param httponly: Disallow JavaScript access to the cookie. - :param samesite: Limit the scope of the cookie to only be - attached to requests that are "same-site". - """ - self.set_cookie( - key, - expires=0, - max_age=0, - path=path, - domain=domain, - secure=secure, - httponly=httponly, - samesite=samesite, - ) - - @property - def is_json(self) -> bool: - """Check if the mimetype indicates JSON data, either - :mimetype:`application/json` or :mimetype:`application/*+json`. - """ - mt = self.mimetype - return mt is not None and ( - mt == "application/json" - or mt.startswith("application/") - and mt.endswith("+json") - ) - - # Common Descriptors - - @property - def mimetype(self) -> t.Optional[str]: - """The mimetype (content type without charset etc.)""" - ct = self.headers.get("content-type") - - if ct: - return ct.split(";")[0].strip() - else: - return None - - @mimetype.setter - def mimetype(self, value: str) -> None: - self.headers["Content-Type"] = get_content_type(value, self.charset) - - @property - def mimetype_params(self) -> t.Dict[str, str]: - """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: t.Dict[str, str]) -> None: - 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[str]( - "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, # type: ignore - 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[str]( - "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[str]( - "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[str]( - "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[str]( - "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.)""", - ) - 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. - - .. versionchanged:: 2.0 - The datetime object is timezone-aware. - """, - ) - 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. - - .. versionchanged:: 2.0 - The datetime object is timezone-aware. - """, - ) - 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. - - .. versionchanged:: 2.0 - The datetime object is timezone-aware. - """, - ) - - @property - def retry_after(self) -> t.Optional[datetime]: - """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. - - .. versionchanged:: 2.0 - The datetime object is timezone-aware. - """ - value = self.headers.get("retry-after") - if value is None: - return None - elif value.isdigit(): - return datetime.now(timezone.utc) + timedelta(seconds=int(value)) - return parse_date(value) - - @retry_after.setter - def retry_after(self, value: t.Optional[t.Union[datetime, int, str]]) -> None: - 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 - - 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.""", - ) - - # ETag - - @property - def cache_control(self) -> ResponseCacheControl: - """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: ResponseCacheControl) -> None: - 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 set_etag(self, etag: str, weak: bool = False) -> None: - """Set the etag, and override the old one if there was one.""" - self.headers["ETag"] = quote_etag(etag, weak) - - def get_etag(self) -> t.Union[t.Tuple[str, bool], t.Tuple[None, None]]: - """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")) - - accept_ranges = header_property[str]( - "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) -> ContentRange: - """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: ContentRange) -> None: - 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: t.Optional[t.Union[ContentRange, str]]) -> None: - if not value: - del self.headers["content-range"] - elif isinstance(value, str): - self.headers["Content-Range"] = value - else: - self.headers["Content-Range"] = value.to_header() - - # Authorization - - @property - def www_authenticate(self) -> WWWAuthenticate: - """The ``WWW-Authenticate`` header in a parsed form.""" - - def on_update(www_auth: WWWAuthenticate) -> None: - if not www_auth and "www-authenticate" in self.headers: - del self.headers["www-authenticate"] - elif www_auth: - self.headers["WWW-Authenticate"] = www_auth.to_header() - - header = self.headers.get("www-authenticate") - return parse_www_authenticate_header(header, on_update) - - # CSP - - content_security_policy = header_property( - "Content-Security-Policy", - None, - parse_csp_header, # type: ignore - 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, # type: ignore - 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.""", - ) - - # CORS - - @property - def access_control_allow_credentials(self) -> bool: - """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: t.Optional[bool]) -> None: - 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[str]( - "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.", - ) - - cross_origin_opener_policy = header_property[COOP]( - "Cross-Origin-Opener-Policy", - load_func=lambda value: COOP(value), - dump_func=lambda value: value.value, - default=COOP.UNSAFE_NONE, - doc="""Allows control over sharing of browsing context group with cross-origin - documents. Values must be a member of the :class:`werkzeug.http.COOP` enum.""", - ) - - cross_origin_embedder_policy = header_property[COEP]( - "Cross-Origin-Embedder-Policy", - load_func=lambda value: COEP(value), - dump_func=lambda value: value.value, - default=COEP.UNSAFE_NONE, - doc="""Prevents a document from loading any cross-origin resources that do not - explicitly grant the document permission. Values must be a member of the - :class:`werkzeug.http.COEP` enum.""", - ) diff --git a/venv/lib/python3.9/site-packages/werkzeug/sansio/utils.py b/venv/lib/python3.9/site-packages/werkzeug/sansio/utils.py deleted file mode 100644 index 1b4d892..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/sansio/utils.py +++ /dev/null @@ -1,142 +0,0 @@ -import typing as t - -from .._internal import _encode_idna -from ..exceptions import SecurityError -from ..urls import uri_to_iri -from ..urls import url_quote - - -def host_is_trusted(hostname: str, trusted_list: t.Iterable[str]) -> bool: - """Check if a host matches a list of trusted names. - - :param hostname: The name to check. - :param trusted_list: A list of valid names to match. If a name - starts with a dot it will match all subdomains. - - .. versionadded:: 0.9 - """ - if not hostname: - return False - - if isinstance(trusted_list, str): - trusted_list = [trusted_list] - - def _normalize(hostname: str) -> bytes: - if ":" in hostname: - hostname = hostname.rsplit(":", 1)[0] - - return _encode_idna(hostname) - - try: - hostname_bytes = _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_bytes = _normalize(ref) - except UnicodeError: - return False - - if ref_bytes == hostname_bytes: - return True - - if suffix_match and hostname_bytes.endswith(b"." + ref_bytes): - return True - - return False - - -def get_host( - scheme: str, - host_header: t.Optional[str], - server: t.Optional[t.Tuple[str, t.Optional[int]]] = None, - trusted_hosts: t.Optional[t.Iterable[str]] = None, -) -> str: - """Return the host for the given parameters. - - This first checks the ``host_header``. If it's not present, then - ``server`` is 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 scheme: The protocol the request used, like ``"https"``. - :param host_header: The ``Host`` header value. - :param server: Address of the server. ``(host, port)``, or - ``(path, None)`` for unix sockets. - :param trusted_hosts: A list of trusted host names. - - :return: Host, with port if necessary. - :raise ~werkzeug.exceptions.SecurityError: If the host is not - trusted. - """ - host = "" - - if host_header is not None: - host = host_header - elif server is not None: - host = server[0] - - if server[1] is not None: - host = f"{host}:{server[1]}" - - if scheme in {"http", "ws"} and host.endswith(":80"): - host = host[:-3] - elif scheme in {"https", "wss"} and host.endswith(":443"): - host = host[:-4] - - if trusted_hosts is not None: - if not host_is_trusted(host, trusted_hosts): - raise SecurityError(f"Host {host!r} is not trusted.") - - return host - - -def get_current_url( - scheme: str, - host: str, - root_path: t.Optional[str] = None, - path: t.Optional[str] = None, - query_string: t.Optional[bytes] = None, -) -> str: - """Recreate the URL for a request. If an optional part isn't - provided, it and subsequent parts are not included in the URL. - - The URL is an IRI, not a URI, so it may contain Unicode characters. - Use :func:`~werkzeug.urls.iri_to_uri` to convert it to ASCII. - - :param scheme: The protocol the request used, like ``"https"``. - :param host: The host the request was made to. See :func:`get_host`. - :param root_path: Prefix that the application is mounted under. This - is prepended to ``path``. - :param path: The path part of the URL after ``root_path``. - :param query_string: The portion of the URL after the "?". - """ - url = [scheme, "://", host] - - if root_path is None: - url.append("/") - return uri_to_iri("".join(url)) - - url.append(url_quote(root_path.rstrip("/"))) - url.append("/") - - if path is None: - return uri_to_iri("".join(url)) - - url.append(url_quote(path.lstrip("/"))) - - if query_string: - url.append("?") - url.append(url_quote(query_string, safe=":&%=+$!*'(),")) - - return uri_to_iri("".join(url)) diff --git a/venv/lib/python3.9/site-packages/werkzeug/security.py b/venv/lib/python3.9/site-packages/werkzeug/security.py deleted file mode 100644 index e23040a..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/security.py +++ /dev/null @@ -1,247 +0,0 @@ -import hashlib -import hmac -import os -import posixpath -import secrets -import typing as t -import warnings - -if t.TYPE_CHECKING: - pass - -SALT_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" -DEFAULT_PBKDF2_ITERATIONS = 260000 - -_os_alt_seps: t.List[str] = list( - sep for sep in [os.path.sep, os.path.altsep] if sep is not None and sep != "/" -) - - -def pbkdf2_hex( - data: t.Union[str, bytes], - salt: t.Union[str, bytes], - iterations: int = DEFAULT_PBKDF2_ITERATIONS, - keylen: t.Optional[int] = None, - hashfunc: t.Optional[t.Union[str, t.Callable]] = None, -) -> str: - """Like :func:`pbkdf2_bin`, but returns a hex-encoded string. - - :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. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use :func:`hashlib.pbkdf2_hmac` - instead. - - .. versionadded:: 0.9 - """ - warnings.warn( - "'pbkdf2_hex' is deprecated and will be removed in Werkzeug" - " 2.1. Use 'hashlib.pbkdf2_hmac().hex()' instead.", - DeprecationWarning, - stacklevel=2, - ) - return pbkdf2_bin(data, salt, iterations, keylen, hashfunc).hex() - - -def pbkdf2_bin( - data: t.Union[str, bytes], - salt: t.Union[str, bytes], - iterations: int = DEFAULT_PBKDF2_ITERATIONS, - keylen: t.Optional[int] = None, - hashfunc: t.Optional[t.Union[str, t.Callable]] = None, -) -> bytes: - """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. - - :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. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use :func:`hashlib.pbkdf2_hmac` - instead. - - .. versionadded:: 0.9 - """ - warnings.warn( - "'pbkdf2_bin' is deprecated and will be removed in Werkzeug" - " 2.1. Use 'hashlib.pbkdf2_hmac()' instead.", - DeprecationWarning, - stacklevel=2, - ) - - if isinstance(data, str): - data = data.encode("utf8") - - if isinstance(salt, str): - salt = salt.encode("utf8") - - if not hashfunc: - hash_name = "sha256" - elif callable(hashfunc): - hash_name = hashfunc().name - else: - hash_name = hashfunc - - return hashlib.pbkdf2_hmac(hash_name, data, salt, iterations, keylen) - - -def safe_str_cmp(a: str, b: str) -> bool: - """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. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use - :func:`hmac.compare_digest` instead. - - .. versionadded:: 0.7 - """ - warnings.warn( - "'safe_str_cmp' is deprecated and will be removed in Werkzeug" - " 2.1. Use 'hmac.compare_digest' instead.", - DeprecationWarning, - stacklevel=2, - ) - - if isinstance(a, str): - a = a.encode("utf-8") # type: ignore - - if isinstance(b, str): - b = b.encode("utf-8") # type: ignore - - return hmac.compare_digest(a, b) - - -def gen_salt(length: int) -> str: - """Generate a random string of SALT_CHARS with specified ``length``.""" - if length <= 0: - raise ValueError("Salt length must be positive") - - return "".join(secrets.choice(SALT_CHARS) for _ in range(length)) - - -def _hash_internal(method: str, salt: str, password: str) -> t.Tuple[str, str]: - """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 - - salt = salt.encode("utf-8") - password = password.encode("utf-8") - - if method.startswith("pbkdf2:"): - if not salt: - raise ValueError("Salt is required for 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 = int(args[0] or 0) if args else DEFAULT_PBKDF2_ITERATIONS - return ( - hashlib.pbkdf2_hmac(method, password, salt, iterations).hex(), - f"pbkdf2:{method}:{iterations}", - ) - - if salt: - return hmac.new(salt, password, method).hexdigest(), method - - return hashlib.new(method, password).hexdigest(), method - - -def generate_password_hash( - password: str, method: str = "pbkdf2:sha256", salt_length: int = 16 -) -> str: - """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:method: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 f"{actual_method}${salt}${h}" - - -def check_password_hash(pwhash: str, password: str) -> bool: - """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 hmac.compare_digest(_hash_internal(method, salt, password)[0], hashval) - - -def safe_join(directory: str, *pathnames: str) -> t.Optional[str]: - """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/venv/lib/python3.9/site-packages/werkzeug/serving.py b/venv/lib/python3.9/site-packages/werkzeug/serving.py deleted file mode 100644 index 1be9949..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/serving.py +++ /dev/null @@ -1,1079 +0,0 @@ -"""A WSGI and HTTP server for use **during development only**. This -server is convenient to use, but is not designed to be particularly -stable, secure, or efficient. Use a dedicate WSGI server and HTTP -server when deploying to production. - -It provides features like interactive debugging and code reloading. Use -``run_simple`` to start the server. Put this in a ``run.py`` script: - -.. code-block:: python - - from myapp import create_app - from werkzeug import run_simple -""" -import io -import os -import platform -import signal -import socket -import socketserver -import sys -import typing as t -import warnings -from datetime import datetime as dt -from datetime import timedelta -from datetime import timezone -from http.server import BaseHTTPRequestHandler -from http.server import HTTPServer - -from ._internal import _log -from ._internal import _wsgi_encoding_dance -from .exceptions import InternalServerError -from .urls import uri_to_iri -from .urls import url_parse -from .urls import url_unquote - -try: - import ssl -except ImportError: - - class _SslDummy: - def __getattr__(self, name: str) -> t.Any: - raise RuntimeError("SSL support unavailable") - - ssl = _SslDummy() # type: ignore - -_log_add_style = True - -if os.name == "nt": - try: - __import__("colorama") - except ImportError: - _log_add_style = False - -can_fork = hasattr(os, "fork") - -if can_fork: - ForkingMixIn = socketserver.ForkingMixIn -else: - - class ForkingMixIn: # type: ignore - pass - - -try: - af_unix = socket.AF_UNIX -except AttributeError: - af_unix = None # type: ignore - -LISTEN_QUEUE = 128 -can_open_by_fd = not platform.system() == "Windows" and hasattr(socket, "fromfd") - -_TSSLContextArg = t.Optional[ - t.Union["ssl.SSLContext", t.Tuple[str, t.Optional[str]], "te.Literal['adhoc']"] -] - -if t.TYPE_CHECKING: - import typing_extensions as te # noqa: F401 - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - from cryptography.hazmat.primitives.asymmetric.rsa import ( - RSAPrivateKeyWithSerialization, - ) - from cryptography.x509 import Certificate - - -class DechunkedInput(io.RawIOBase): - """An input stream that handles Transfer-Encoding 'chunked'""" - - def __init__(self, rfile: t.BinaryIO) -> None: - self._rfile = rfile - self._done = False - self._len = 0 - - def readable(self) -> bool: - return True - - def read_chunk_len(self) -> int: - try: - line = self._rfile.readline().decode("latin1") - _len = int(line.strip(), 16) - except ValueError: - raise OSError("Invalid chunk header") - if _len < 0: - raise OSError("Negative chunk length not allowed") - return _len - - def readinto(self, buf: bytearray) -> int: # type: ignore - 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) - - # If (read + chunk size) becomes more than len(buf), buf will - # grow beyond the original size and read more data than - # required. So only read as much data as can fit in buf. - if read + n > len(buf): - buf[read:] = self._rfile.read(len(buf) - read) - self._len -= len(buf) - read - read = len(buf) - else: - 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 OSError("Missing chunk terminating newline") - - return read - - -class WSGIRequestHandler(BaseHTTPRequestHandler): - """A request handler that implements WSGI dispatching.""" - - server: "BaseWSGIServer" - - @property - def server_version(self) -> str: # type: ignore - from . import __version__ - - return f"Werkzeug/{__version__}" - - def make_environ(self) -> "WSGIEnvironment": - request_url = url_parse(self.path) - - def shutdown_server() -> None: - warnings.warn( - "The 'environ['werkzeug.server.shutdown']' function is" - " deprecated and will be removed in Werkzeug 2.1.", - stacklevel=2, - ) - 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 = ("", 0) - elif isinstance(self.client_address, str): - self.client_address = (self.client_address, 0) - - # 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 = f"/{request_url.netloc}{request_url.path}" - else: - path_info = request_url.path - - path_info = url_unquote(path_info) - - environ: "WSGIEnvironment" = { - "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, - "werkzeug.socket": self.connection, - "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.headers.items(): - key = key.upper().replace("-", "_") - value = value.replace("\r\n", "") - if key not in ("CONTENT_TYPE", "CONTENT_LENGTH"): - key = f"HTTP_{key}" - if key in environ: - value = f"{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) -> None: - 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() - status_set: t.Optional[str] = None - headers_set: t.Optional[t.List[t.Tuple[str, str]]] = None - status_sent: t.Optional[str] = None - headers_sent: t.Optional[t.List[t.Tuple[str, str]]] = None - - def write(data: bytes) -> None: - nonlocal status_sent, headers_sent - assert status_set is not None, "write() before start_response" - assert headers_set is not None, "write() before start_response" - if status_sent is None: - status_sent = status_set - headers_sent = headers_set - try: - code_str, msg = status_sent.split(None, 1) - except ValueError: - code_str, msg = status_sent, "" - code = int(code_str) - self.send_response(code, msg) - header_keys = set() - for key, value in headers_sent: - 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" - self.wfile.write(data) - self.wfile.flush() - - def start_response(status, headers, exc_info=None): # type: ignore - nonlocal status_set, headers_set - if exc_info: - try: - if headers_sent: - raise exc_info[1].with_traceback(exc_info[2]) - finally: - exc_info = None - elif headers_set: - raise AssertionError("Headers already set") - status_set = status - headers_set = headers - return write - - def execute(app: "WSGIApplication") -> None: - 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() # type: ignore - - 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 status_sent is None: - status_set = None - headers_set = None - execute(InternalServerError()) - except Exception: - pass - self.server.log("error", "Error on request:\n%s", traceback.plaintext) - - def handle(self) -> None: - """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 not None and is_ssl_error(e): - self.log_error("SSL error occurred: %s", e) - else: - raise - if self.server.shutdown_signal: - self.initiate_shutdown() - - def initiate_shutdown(self) -> None: - if is_running_from_reloader(): - # Windows does not provide SIGKILL, go with SIGTERM then. - sig = getattr(signal, "SIGKILL", signal.SIGTERM) - os.kill(os.getpid(), sig) - - self.server._BaseServer__shutdown_request = True # type: ignore - - def connection_dropped( - self, error: BaseException, environ: t.Optional["WSGIEnvironment"] = None - ) -> None: - """Called if the connection was closed by the client. By default - nothing happens. - """ - - def handle_one_request(self) -> None: - """Handle a single HTTP request.""" - self.raw_requestline = self.rfile.readline() - if not self.raw_requestline: - self.close_connection = True - elif self.parse_request(): - self.run_wsgi() - - def send_response(self, code: int, message: t.Optional[str] = None) -> None: - """Send the response header and log the response code.""" - self.log_request(code) - if message is None: - message = self.responses[code][0] if code in self.responses else "" - if self.request_version != "HTTP/0.9": - hdr = f"{self.protocol_version} {code} {message}\r\n" - self.wfile.write(hdr.encode("ascii")) - - def version_string(self) -> str: - return super().version_string().strip() - - def address_string(self) -> str: - if getattr(self, "environ", None): - return self.environ["REMOTE_ADDR"] # type: ignore - - if not self.client_address: - return "" - - return self.client_address[0] - - def port_integer(self) -> int: - return self.client_address[1] - - def log_request( - self, code: t.Union[int, str] = "-", size: t.Union[int, str] = "-" - ) -> None: - try: - path = uri_to_iri(self.path) - msg = f"{self.command} {path} {self.request_version}" - except AttributeError: - # path isn't set if the requestline was bad - msg = self.requestline - - code = str(code) - - if _log_add_style: - if code[0] == "1": # 1xx - Informational - msg = _ansi_style(msg, "bold") - elif code == "200": # 2xx - Success - pass - elif code == "304": # 304 - Resource Not Modified - msg = _ansi_style(msg, "cyan") - elif code[0] == "3": # 3xx - Redirection - msg = _ansi_style(msg, "green") - elif code == "404": # 404 - Resource Not Found - msg = _ansi_style(msg, "yellow") - elif code[0] == "4": # 4xx - Client Error - msg = _ansi_style(msg, "bold", "red") - else: # 5xx, or any other response - msg = _ansi_style(msg, "bold", "magenta") - - self.log("info", '"%s" %s %s', msg, code, size) - - def log_error(self, format: str, *args: t.Any) -> None: - self.log("error", format, *args) - - def log_message(self, format: str, *args: t.Any) -> None: - self.log("info", format, *args) - - def log(self, type: str, message: str, *args: t.Any) -> None: - _log( - type, - f"{self.address_string()} - - [{self.log_date_time_string()}] {message}\n", - *args, - ) - - -def _ansi_style(value: str, *styles: str) -> str: - codes = { - "bold": 1, - "red": 31, - "green": 32, - "yellow": 33, - "magenta": 35, - "cyan": 36, - } - - for style in styles: - value = f"\x1b[{codes[style]}m{value}" - - return f"{value}\x1b[0m" - - -def generate_adhoc_ssl_pair( - cn: t.Optional[str] = None, -) -> t.Tuple["Certificate", "RSAPrivateKeyWithSerialization"]: - 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.") - - backend = default_backend() - pkey = rsa.generate_private_key( - public_exponent=65537, key_size=2048, backend=backend - ) - - # pretty damn sure that this is not actually accepted by anyone - if cn is None: - cn = "*" - - subject = x509.Name( - [ - x509.NameAttribute(NameOID.ORGANIZATION_NAME, "Dummy Certificate"), - x509.NameAttribute(NameOID.COMMON_NAME, cn), - ] - ) - - backend = default_backend() - cert = ( - x509.CertificateBuilder() - .subject_name(subject) - .issuer_name(subject) - .public_key(pkey.public_key()) - .serial_number(x509.random_serial_number()) - .not_valid_before(dt.now(timezone.utc)) - .not_valid_after(dt.now(timezone.utc) + timedelta(days=365)) - .add_extension(x509.ExtendedKeyUsage([x509.OID_SERVER_AUTH]), critical=False) - .add_extension(x509.SubjectAlternativeName([x509.DNSName("*")]), critical=False) - .sign(pkey, hashes.SHA256(), backend) - ) - return cert, pkey - - -def make_ssl_devcert( - base_path: str, host: t.Optional[str] = None, cn: t.Optional[str] = None -) -> t.Tuple[str, str]: - """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 = f"*.{host}/CN={host}" - cert, pkey = generate_adhoc_ssl_pair(cn=cn) - - from cryptography.hazmat.primitives import serialization - - cert_file = f"{base_path}.crt" - pkey_file = f"{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() -> "ssl.SSLContext": - """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: str, pkey_file: t.Optional[str] = None, protocol: t.Optional[int] = None -) -> "ssl.SSLContext": - """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: A ``PROTOCOL`` constant from the :mod:`ssl` module. - Defaults to :data:`ssl.PROTOCOL_TLS_SERVER`. - """ - if protocol is None: - protocol = ssl.PROTOCOL_TLS_SERVER - - ctx = ssl.SSLContext(protocol) - ctx.load_cert_chain(cert_file, pkey_file) - return ctx - - -def is_ssl_error(error: t.Optional[Exception] = None) -> bool: - """Checks if the given error (or the current one) is an SSL error.""" - if error is None: - error = t.cast(Exception, sys.exc_info()[1]) - return isinstance(error, ssl.SSLError) - - -def select_address_family(host: str, port: int) -> socket.AddressFamily: - """Return ``AF_INET4``, ``AF_INET6``, or ``AF_UNIX`` depending on - the host and port.""" - 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: str, port: int, family: socket.AddressFamily -) -> t.Union[t.Tuple[str, int], str]: - """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] # type: ignore - - -def get_interface_ip(family: socket.AddressFamily) -> str: - """Get the IP address of an external interface. Used when binding to - 0.0.0.0 or ::1 to show a more useful URL. - - :meta private: - """ - # arbitrary private address - host = "fd31:f903:5ab5:1::1" if family == socket.AF_INET6 else "10.253.155.219" - - with socket.socket(family, socket.SOCK_DGRAM) as s: - try: - s.connect((host, 58162)) - except OSError: - return "::1" if family == socket.AF_INET6 else "127.0.0.1" - - return s.getsockname()[0] # type: ignore - - -class BaseWSGIServer(HTTPServer): - - """Simple single-threaded, single-process WSGI server.""" - - multithread = False - multiprocess = False - request_queue_size = LISTEN_QUEUE - - def __init__( - self, - host: str, - port: int, - app: "WSGIApplication", - handler: t.Optional[t.Type[WSGIRequestHandler]] = None, - passthrough_errors: bool = False, - ssl_context: t.Optional[_TSSLContextArg] = None, - fd: t.Optional[int] = None, - ) -> 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: - server_address = t.cast(str, server_address) - - if os.path.exists(server_address): - os.unlink(server_address) - - super().__init__(server_address, handler) # type: ignore - - 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() - - self.socket = ssl_context.wrap_socket(self.socket, server_side=True) - self.ssl_context: t.Optional["ssl.SSLContext"] = ssl_context - else: - self.ssl_context = None - - def log(self, type: str, message: str, *args: t.Any) -> None: - _log(type, message, *args) - - def serve_forever(self, poll_interval: float = 0.5) -> None: - self.shutdown_signal = False - try: - super().serve_forever(poll_interval=poll_interval) - except KeyboardInterrupt: - pass - finally: - self.server_close() - - def handle_error(self, request: t.Any, client_address: t.Tuple[str, int]) -> None: - if self.passthrough_errors: - raise - - return super().handle_error(request, client_address) - - -class ThreadedWSGIServer(socketserver.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: str, - port: int, - app: "WSGIApplication", - processes: int = 40, - handler: t.Optional[t.Type[WSGIRequestHandler]] = None, - passthrough_errors: bool = False, - ssl_context: t.Optional[_TSSLContextArg] = None, - fd: t.Optional[int] = None, - ) -> 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: str, - port: int, - app: "WSGIApplication", - threaded: bool = False, - processes: int = 1, - request_handler: t.Optional[t.Type[WSGIRequestHandler]] = None, - passthrough_errors: bool = False, - ssl_context: t.Optional[_TSSLContextArg] = None, - fd: t.Optional[int] = None, -) -> BaseWSGIServer: - """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() -> bool: - """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: str, - port: int, - application: "WSGIApplication", - use_reloader: bool = False, - use_debugger: bool = False, - use_evalex: bool = True, - extra_files: t.Optional[t.Iterable[str]] = None, - exclude_patterns: t.Optional[t.Iterable[str]] = None, - reloader_interval: int = 1, - reloader_type: str = "auto", - threaded: bool = False, - processes: int = 1, - request_handler: t.Optional[t.Type[WSGIRequestHandler]] = None, - static_files: t.Optional[t.Dict[str, t.Union[str, t.Tuple[str, str]]]] = None, - passthrough_errors: bool = False, - ssl_context: t.Optional[_TSSLContextArg] = None, -) -> 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 - - .. versionchanged:: 2.0 - Added ``exclude_patterns`` parameter. - - .. 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 exclude_patterns: List of :mod:`fnmatch` patterns to ignore - when running the reloader. For example, ignore cache files that - shouldn't reload when updated. - :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: socket.socket) -> None: - all_addresses_message = ( - " * Running on all addresses.\n" - " WARNING: This is a development server. Do not use it in" - " a production deployment." - ) - - if sock.family == af_unix: - _log("info", " * Running on %s (Press CTRL+C to quit)", hostname) - else: - if hostname == "0.0.0.0": - _log("warning", all_addresses_message) - display_hostname = get_interface_ip(socket.AF_INET) - elif hostname == "::": - _log("warning", all_addresses_message) - display_hostname = get_interface_ip(socket.AF_INET6) - else: - display_hostname = hostname - - if ":" in display_hostname: - display_hostname = f"[{display_hostname}]" - - _log( - "info", - " * Running on %s://%s:%d/ (Press CTRL+C to quit)", - "http" if ssl_context is None else "https", - display_hostname, - sock.getsockname()[1], - ) - - def inner() -> None: - try: - fd: t.Optional[int] = 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) - 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: - server_address = t.cast(str, server_address) - _log("info", "Unlinking %s", server_address) - os.unlink(server_address) - - from ._reloader import run_with_reloader as _rwr - - _rwr( - inner, - extra_files=extra_files, - exclude_patterns=exclude_patterns, - interval=reloader_interval, - reloader_type=reloader_type, - ) - else: - inner() - - -def run_with_reloader(*args: t.Any, **kwargs: t.Any) -> None: - """Run a process with the reloader. This is not a public API, do - not use this function. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. - """ - from ._reloader import run_with_reloader as _rwr - - warnings.warn( - ( - "'run_with_reloader' is a private API, it will no longer be" - " accessible in Werkzeug 2.1. Use 'run_simple' instead." - ), - DeprecationWarning, - stacklevel=2, - ) - _rwr(*args, **kwargs) - - -def main() -> None: - """A simple command-line interface for :py:func:`run_simple`.""" - import argparse - from .utils import import_string - - _log("warning", "This CLI is deprecated and will be removed in version 2.1.") - - parser = argparse.ArgumentParser( - description="Run the given WSGI application with the development server.", - allow_abbrev=False, - ) - parser.add_argument( - "-b", - "--bind", - dest="address", - help="The hostname:port the app should listen on.", - ) - parser.add_argument( - "-d", - "--debug", - action="store_true", - help="Show the interactive debugger for unhandled exceptions.", - ) - parser.add_argument( - "-r", - "--reload", - action="store_true", - help="Reload the process if modules change.", - ) - parser.add_argument( - "application", help="Application to import and serve, in the form module:app." - ) - args = parser.parse_args() - hostname, port = None, None - - if args.address: - hostname, _, port = args.address.partition(":") - - run_simple( - hostname=hostname or "127.0.0.1", - port=int(port or 5000), - application=import_string(args.application), - use_reloader=args.reload, - use_debugger=args.debug, - ) - - -if __name__ == "__main__": - main() diff --git a/venv/lib/python3.9/site-packages/werkzeug/test.py b/venv/lib/python3.9/site-packages/werkzeug/test.py deleted file mode 100644 index 9301c02..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/test.py +++ /dev/null @@ -1,1324 +0,0 @@ -import mimetypes -import sys -import typing as t -import warnings -from collections import defaultdict -from datetime import datetime -from datetime import timedelta -from http.cookiejar import CookieJar -from io import BytesIO -from itertools import chain -from random import random -from tempfile import TemporaryFile -from time import time -from urllib.request import Request as _UrllibRequest - -from ._internal import _get_environ -from ._internal import _make_encode_wrapper -from ._internal import _wsgi_decoding_dance -from ._internal import _wsgi_encoding_dance -from .datastructures import Authorization -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 .sansio.multipart import Data -from .sansio.multipart import Epilogue -from .sansio.multipart import Field -from .sansio.multipart import File -from .sansio.multipart import MultipartEncoder -from .sansio.multipart import Preamble -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.request import Request -from .wrappers.response import Response -from .wsgi import ClosingIterator -from .wsgi import get_current_url - -if t.TYPE_CHECKING: - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - - -def stream_encode_multipart( - data: t.Mapping[str, t.Any], - use_tempfile: bool = True, - threshold: int = 1024 * 500, - boundary: t.Optional[str] = None, - charset: str = "utf-8", -) -> t.Tuple[t.BinaryIO, int, str]: - """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 = f"---------------WerkzeugFormPart_{time()}{random()}" - - stream: t.BinaryIO = BytesIO() - total_length = 0 - on_disk = False - - if use_tempfile: - - def write_binary(s: bytes) -> int: - nonlocal stream, total_length, on_disk - - if on_disk: - return stream.write(s) - else: - length = len(s) - - if length + total_length <= threshold: - stream.write(s) - else: - new_stream = t.cast(t.BinaryIO, TemporaryFile("wb+")) - new_stream.write(stream.getvalue()) # type: ignore - new_stream.write(s) - stream = new_stream - on_disk = True - - total_length += length - return length - - else: - write_binary = stream.write - - encoder = MultipartEncoder(boundary.encode()) - write_binary(encoder.send_event(Preamble(data=b""))) - for key, value in _iter_data(data): - 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" - ) - headers = Headers([("Content-Type", content_type)]) - if filename is None: - write_binary(encoder.send_event(Field(name=key, headers=headers))) - else: - write_binary( - encoder.send_event( - File(name=key, filename=filename, headers=headers) - ) - ) - while True: - chunk = reader(16384) - - if not chunk: - break - - write_binary(encoder.send_event(Data(data=chunk, more_data=True))) - else: - if not isinstance(value, str): - value = str(value) - write_binary(encoder.send_event(Field(name=key, headers=Headers()))) - write_binary( - encoder.send_event(Data(data=value.encode(charset), more_data=False)) - ) - - write_binary(encoder.send_event(Epilogue(data=b""))) - - length = stream.tell() - stream.seek(0) - return stream, length, boundary - - -def encode_multipart( - values: t.Mapping[str, t.Any], - boundary: t.Optional[str] = None, - charset: str = "utf-8", -) -> t.Tuple[str, bytes]: - """Like `stream_encode_multipart` but returns a tuple in the form - (``boundary``, ``data``) where data is bytes. - """ - stream, length, boundary = stream_encode_multipart( - values, use_tempfile=False, boundary=boundary, charset=charset - ) - return boundary, stream.read() - - -class _TestCookieHeaders: - """A headers adapter for cookielib""" - - def __init__(self, headers: t.Union[Headers, t.List[t.Tuple[str, str]]]) -> None: - self.headers = headers - - def getheaders(self, name: str) -> t.Iterable[str]: - headers = [] - name = name.lower() - for k, v in self.headers: - if k.lower() == name: - headers.append(v) - return headers - - def get_all( - self, name: str, default: t.Optional[t.Iterable[str]] = None - ) -> t.Iterable[str]: - headers = self.getheaders(name) - - if not headers: - return default # type: ignore - - return headers - - -class _TestCookieResponse: - """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: t.Union[Headers, t.List[t.Tuple[str, str]]]) -> None: - self.headers = _TestCookieHeaders(headers) - - def info(self) -> _TestCookieHeaders: - 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: "WSGIEnvironment") -> None: - """Inject the cookies as client headers into the server's wsgi - environment. - """ - cvals = [f"{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: "WSGIEnvironment", - headers: t.Union[Headers, t.List[t.Tuple[str, str]]], - ) -> None: - """Extract the server's set-cookie headers as cookies into the - cookie jar. - """ - self.extract_cookies( - _TestCookieResponse(headers), # type: ignore - _UrllibRequest(get_current_url(environ)), - ) - - -def _iter_data(data: t.Mapping[str, t.Any]) -> t.Iterator[t.Tuple[str, t.Any]]: - """Iterate over a mapping that might have a list of values, yielding - all key, value pairs. Almost like iter_multi_items but only allows - lists, not tuples, of values so tuples can be used for files. - """ - if isinstance(data, MultiDict): - yield from data.items(multi=True) - else: - for key, value in data.items(): - if isinstance(value, list): - for v in value: - yield key, v - else: - yield key, value - - -_TAnyMultiDict = t.TypeVar("_TAnyMultiDict", bound=MultiDict) - - -class EnvironBuilder: - """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:`Response.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 string data. - :param auth: An authorization object to use for the - ``Authorization`` header value. A ``(username, password)`` tuple - is a shortcut for ``Basic`` authorization. - - .. versionchanged:: 2.0 - ``REQUEST_URI`` and ``RAW_URI`` is the full raw URI including - the query string, not only the path. - - .. versionchanged:: 2.0 - The default :attr:`request_class` is ``Request`` instead of - ``BaseRequest``. - - .. versionadded:: 2.0 - Added the ``auth`` parameter. - - .. 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 used by :meth:`get_request`. - request_class = Request - - import json - - #: The serialization function used when ``json`` is passed. - json_dumps = staticmethod(json.dumps) - del json - - _args: t.Optional[MultiDict] - _query_string: t.Optional[str] - _input_stream: t.Optional[t.BinaryIO] - _form: t.Optional[MultiDict] - _files: t.Optional[FileMultiDict] - - def __init__( - self, - path: str = "/", - base_url: t.Optional[str] = None, - query_string: t.Optional[t.Union[t.Mapping[str, str], str]] = None, - method: str = "GET", - input_stream: t.Optional[t.BinaryIO] = None, - content_type: t.Optional[str] = None, - content_length: t.Optional[int] = None, - errors_stream: t.Optional[t.TextIO] = None, - multithread: bool = False, - multiprocess: bool = False, - run_once: bool = False, - headers: t.Optional[t.Union[Headers, t.Iterable[t.Tuple[str, str]]]] = None, - data: t.Optional[t.Union[t.BinaryIO, str, bytes, t.Mapping[str, t.Any]]] = None, - environ_base: t.Optional[t.Mapping[str, t.Any]] = None, - environ_overrides: t.Optional[t.Mapping[str, t.Any]] = None, - charset: str = "utf-8", - mimetype: t.Optional[str] = None, - json: t.Optional[t.Mapping[str, t.Any]] = None, - auth: t.Optional[t.Union[Authorization, t.Tuple[str, str]]] = None, - ) -> None: - path_s = _make_encode_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") - request_uri = url_parse(path) - if query_string is None and path_s("?") in path: - query_string = request_uri.query - self.charset = charset - self.path = iri_to_uri(request_uri.path) - self.request_uri = path - if base_url is not None: - base_url = url_fix(iri_to_uri(base_url, charset), charset) - self.base_url = base_url # type: ignore - if isinstance(query_string, (bytes, str)): - 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 auth is not None: - if isinstance(auth, tuple): - auth = Authorization( - "basic", {"username": auth[0], "password": auth[1]} - ) - - self.headers.set("Authorization", auth.to_header()) - - 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() # type: ignore - if isinstance(data, str): - 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): # type: ignore - 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: "WSGIEnvironment", **kwargs: t.Any - ) -> "EnvironBuilder": - """Turn an environ dict back into a builder. Any extra kwargs - override the args extracted from the environ. - - .. versionchanged:: 2.0 - Path and query values are passed through the WSGI decoding - dance to avoid double encoding. - - .. versionadded:: 0.15 - """ - headers = Headers(EnvironHeaders(environ)) - out = { - "path": _wsgi_decoding_dance(environ["PATH_INFO"]), - "base_url": cls._make_base_url( - environ["wsgi.url_scheme"], - headers.pop("Host"), - _wsgi_decoding_dance(environ["SCRIPT_NAME"]), - ), - "query_string": _wsgi_decoding_dance(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: str, - value: t.Union[ - t.BinaryIO, t.Tuple[t.BinaryIO, str], t.Tuple[t.BinaryIO, str, str] - ], - ) -> None: - """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: str, host: str, script_root: str) -> str: - return url_unparse((scheme, host, script_root, "", "")).rstrip("/") + "/" - - @property - def base_url(self) -> str: - """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: t.Optional[str]) -> None: - 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) -> t.Optional[str]: - """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: t.Optional[str]) -> None: - if value is None: - self.headers.pop("Content-Type", None) - else: - self.headers["Content-Type"] = value - - @property - def mimetype(self) -> t.Optional[str]: - """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: str) -> None: - self.content_type = get_content_type(value, self.charset) - - @property - def mimetype_params(self) -> t.Mapping[str, str]: - """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: t.Mapping[str, str]) -> None: - 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) -> t.Optional[int]: - """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: t.Optional[int]) -> None: - if value is None: - self.headers.pop("Content-Length", None) - else: - self.headers["Content-Length"] = str(value) - - def _get_form(self, name: str, storage: t.Type[_TAnyMultiDict]) -> _TAnyMultiDict: - """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 # type: ignore - - def _set_form(self, name: str, value: MultiDict) -> None: - """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) -> MultiDict: - """A :class:`MultiDict` of form values.""" - return self._get_form("_form", MultiDict) - - @form.setter - def form(self, value: MultiDict) -> None: - self._set_form("_form", value) - - @property - def files(self) -> FileMultiDict: - """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: FileMultiDict) -> None: - self._set_form("_files", value) - - @property - def input_stream(self) -> t.Optional[t.BinaryIO]: - """An optional input stream. This is mutually exclusive with - setting :attr:`form` and :attr:`files`, setting it will clear - those. Do not provide this if the method is not ``POST`` or - another method that has a body. - """ - return self._input_stream - - @input_stream.setter - def input_stream(self, value: t.Optional[t.BinaryIO]) -> None: - self._input_stream = value - self._form = None - self._files = None - - @property - def query_string(self) -> str: - """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: t.Optional[str]) -> None: - self._query_string = value - self._args = None - - @property - def args(self) -> MultiDict: - """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: t.Optional[MultiDict]) -> None: - self._query_string = None - self._args = value - - @property - def server_name(self) -> str: - """The server name (read-only, use :attr:`host` to set)""" - return self.host.split(":", 1)[0] - - @property - def server_port(self) -> int: - """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) -> None: - try: - self.close() - except Exception: - pass - - def close(self) -> None: - """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 = self.files.values() - except AttributeError: - files = () # type: ignore - for f in files: - try: - f.close() - except Exception: - pass - self.closed = True - - def get_environ(self) -> "WSGIEnvironment": - """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": - input_stream, content_length, boundary = stream_encode_multipart( - CombinedMultiDict([self.form, self.files]), charset=self.charset - ) - content_type = f'{mimetype}; boundary="{boundary}"' - elif mimetype == "application/x-www-form-urlencoded": - form_encoded = url_encode(self.form, charset=self.charset).encode("ascii") - content_length = len(form_encoded) - input_stream = BytesIO(form_encoded) - else: - input_stream = BytesIO() - - result: "WSGIEnvironment" = {} - if self.environ_base: - result.update(self.environ_base) - - def _path_encode(x: str) -> str: - return _wsgi_encoding_dance(url_unquote(x, self.charset), self.charset) - - raw_uri = _wsgi_encoding_dance(self.request_uri, self.charset) - result.update( - { - "REQUEST_METHOD": self.method, - "SCRIPT_NAME": _path_encode(self.script_root), - "PATH_INFO": _path_encode(self.path), - "QUERY_STRING": _wsgi_encoding_dance(self.query_string, self.charset), - # Non-standard, added by mod_wsgi, uWSGI - "REQUEST_URI": raw_uri, - # Non-standard, added by gunicorn - "RAW_URI": raw_uri, - "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) - - combined_headers = defaultdict(list) - - for key, value in headers.to_wsgi_list(): - combined_headers[f"HTTP_{key.upper().replace('-', '_')}"].append(value) - - for key, values in combined_headers.items(): - result[key] = ", ".join(values) - - if self.environ_overrides: - result.update(self.environ_overrides) - - return result - - def get_request(self, cls: t.Optional[t.Type[Request]] = None) -> Request: - """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: - """This class allows you to send requests to a wrapped application. - - 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. - - .. versionchanged:: 2.0 - ``response_wrapper`` is always a subclass of - :class:``TestResponse``. - - .. versionchanged:: 0.5 - Added the ``use_cookies`` parameter. - """ - - def __init__( - self, - application: "WSGIApplication", - response_wrapper: t.Optional[t.Type["Response"]] = None, - use_cookies: bool = True, - allow_subdomain_redirects: bool = False, - ) -> None: - self.application = application - - if response_wrapper in {None, Response}: - response_wrapper = TestResponse - elif not isinstance(response_wrapper, TestResponse): - response_wrapper = type( - "WrapperTestResponse", - (TestResponse, response_wrapper), # type: ignore - {}, - ) - - self.response_wrapper = t.cast(t.Type["TestResponse"], response_wrapper) - - if use_cookies: - self.cookie_jar: t.Optional[_TestCookieJar] = _TestCookieJar() - else: - self.cookie_jar = None - - self.allow_subdomain_redirects = allow_subdomain_redirects - - def set_cookie( - self, - server_name: str, - key: str, - value: str = "", - max_age: t.Optional[t.Union[timedelta, int]] = None, - expires: t.Optional[t.Union[str, datetime, int, float]] = None, - path: str = "/", - domain: t.Optional[str] = None, - secure: bool = False, - httponly: bool = False, - samesite: t.Optional[str] = None, - charset: str = "utf-8", - ) -> None: - """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=f"http://{server_name}") - headers = [("Set-Cookie", header)] - self.cookie_jar.extract_wsgi(environ, headers) - - def delete_cookie( - self, - server_name: str, - key: str, - path: str = "/", - domain: t.Optional[str] = None, - secure: bool = False, - httponly: bool = False, - samesite: t.Optional[str] = None, - ) -> None: - """Deletes a cookie in the test client.""" - self.set_cookie( - server_name, - key, - expires=0, - max_age=0, - path=path, - domain=domain, - secure=secure, - httponly=httponly, - samesite=samesite, - ) - - def run_wsgi_app( - self, environ: "WSGIEnvironment", buffered: bool = False - ) -> t.Tuple[t.Iterable[bytes], str, Headers]: - """Runs the wrapped WSGI app with the given environment. - - :meta private: - """ - 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: "TestResponse", buffered: bool = False - ) -> "TestResponse": - """Perform a new request to the location given by the redirect - response to the previous request. - - :meta private: - """ - scheme, netloc, path, qs, anchor = url_parse(response.location) - builder = EnvironBuilder.from_environ(response.request.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 = "" - - # Only 307 and 308 preserve all of the original request. - if response.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. - - if builder.input_stream is not None: - builder.input_stream.close() - builder.input_stream = None - - builder.content_type = None - builder.content_length = None - builder.headers.pop("Transfer-Encoding", None) - - return self.open(builder, buffered=buffered) - - def open( - self, - *args: t.Any, - as_tuple: bool = False, - buffered: bool = False, - follow_redirects: bool = False, - **kwargs: t.Any, - ) -> "TestResponse": - """Generate an environ dict from the given arguments, make a - request to the application using it, and return the response. - - :param args: Passed to :class:`EnvironBuilder` to create the - environ for the request. If a single arg is passed, it can - be an existing :class:`EnvironBuilder` or an environ dict. - :param buffered: Convert the iterator returned by the app into - a list. If the iterator has a ``close()`` method, it is - called automatically. - :param follow_redirects: Make additional requests to follow HTTP - redirects until a non-redirect status is returned. - :attr:`TestResponse.history` lists the intermediate - responses. - - .. versionchanged:: 2.0 - ``as_tuple`` is deprecated and will be removed in Werkzeug - 2.1. Use :attr:`TestResponse.request` and - ``request.environ`` instead. - - .. versionchanged:: 2.0 - The request input stream is closed when calling - ``response.close()``. Input streams for redirects are - automatically closed. - - .. 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`` - instead of ``mimetype``. This change was made for - consistency with :class:`werkzeug.FileWrapper`. - - .. versionchanged:: 0.5 - Added the ``follow_redirects`` parameter. - """ - request: t.Optional["Request"] = None - - if not kwargs and len(args) == 1: - arg = args[0] - - if isinstance(arg, EnvironBuilder): - request = arg.get_request() - elif isinstance(arg, dict): - request = EnvironBuilder.from_environ(arg).get_request() - elif isinstance(arg, Request): - request = arg - - if request is None: - builder = EnvironBuilder(*args, **kwargs) - - try: - request = builder.get_request() - finally: - builder.close() - - response = self.run_wsgi_app(request.environ, buffered=buffered) - response = self.response_wrapper(*response, request=request) - - redirects = set() - history: t.List["TestResponse"] = [] - - while follow_redirects and response.status_code in { - 301, - 302, - 303, - 305, - 307, - 308, - }: - # Exhaust intermediate response bodies to ensure middleware - # that returns an iterator runs any cleanup code. - if not buffered: - response.make_sequence() - response.close() - - new_redirect_entry = (response.location, response.status_code) - - if new_redirect_entry in redirects: - raise ClientRedirectError( - f"Loop detected: A {response.status_code} redirect" - f" to {response.location} was already made." - ) - - redirects.add(new_redirect_entry) - response.history = tuple(history) - history.append(response) - response = self.resolve_redirect(response, buffered=buffered) - else: - # This is the final request after redirects, or not - # following redirects. - response.history = tuple(history) - # Close the input stream when closing the response, in case - # the input is an open temporary file. - response.call_on_close(request.input_stream.close) - - if as_tuple: - warnings.warn( - "'as_tuple' is deprecated and will be removed in" - " Werkzeug 2.1. Access 'response.request.environ'" - " instead.", - DeprecationWarning, - stacklevel=2, - ) - return request.environ, response # type: ignore - - return response - - def get(self, *args: t.Any, **kw: t.Any) -> "TestResponse": - """Call :meth:`open` with ``method`` set to ``GET``.""" - kw["method"] = "GET" - return self.open(*args, **kw) - - def post(self, *args: t.Any, **kw: t.Any) -> "TestResponse": - """Call :meth:`open` with ``method`` set to ``POST``.""" - kw["method"] = "POST" - return self.open(*args, **kw) - - def put(self, *args: t.Any, **kw: t.Any) -> "TestResponse": - """Call :meth:`open` with ``method`` set to ``PUT``.""" - kw["method"] = "PUT" - return self.open(*args, **kw) - - def delete(self, *args: t.Any, **kw: t.Any) -> "TestResponse": - """Call :meth:`open` with ``method`` set to ``DELETE``.""" - kw["method"] = "DELETE" - return self.open(*args, **kw) - - def patch(self, *args: t.Any, **kw: t.Any) -> "TestResponse": - """Call :meth:`open` with ``method`` set to ``PATCH``.""" - kw["method"] = "PATCH" - return self.open(*args, **kw) - - def options(self, *args: t.Any, **kw: t.Any) -> "TestResponse": - """Call :meth:`open` with ``method`` set to ``OPTIONS``.""" - kw["method"] = "OPTIONS" - return self.open(*args, **kw) - - def head(self, *args: t.Any, **kw: t.Any) -> "TestResponse": - """Call :meth:`open` with ``method`` set to ``HEAD``.""" - kw["method"] = "HEAD" - return self.open(*args, **kw) - - def trace(self, *args: t.Any, **kw: t.Any) -> "TestResponse": - """Call :meth:`open` with ``method`` set to ``TRACE``.""" - kw["method"] = "TRACE" - return self.open(*args, **kw) - - def __repr__(self) -> str: - return f"<{type(self).__name__} {self.application!r}>" - - -def create_environ(*args: t.Any, **kwargs: t.Any) -> "WSGIEnvironment": - """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: "WSGIApplication", environ: "WSGIEnvironment", buffered: bool = False -) -> t.Tuple[t.Iterable[bytes], str, Headers]: - """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)`` - """ - # Copy environ to ensure any mutations by the app (ProxyFix, for - # example) don't affect subsequent requests (such as redirects). - environ = _get_environ(environ).copy() - status: str - response: t.Optional[t.Tuple[str, t.List[t.Tuple[str, str]]]] = None - buffer: t.List[bytes] = [] - - def start_response(status, headers, exc_info=None): # type: ignore - nonlocal response - - if exc_info: - try: - raise exc_info[1].with_traceback(exc_info[2]) - finally: - exc_info = None - - response = (status, headers) - return buffer.append - - app_rv = app(environ, start_response) - close_func = getattr(app_rv, "close", None) - app_iter: t.Iterable[bytes] = 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 is not None: - 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) - - status, headers = response # type: ignore - return app_iter, status, Headers(headers) - - -class TestResponse(Response): - """:class:`~werkzeug.wrappers.Response` subclass that provides extra - information about requests made with the test :class:`Client`. - - Test client requests will always return an instance of this class. - If a custom response class is passed to the client, it is - subclassed along with this to support test information. - - If the test request included large files, or if the application is - serving a file, call :meth:`close` to close any open files and - prevent Python showing a ``ResourceWarning``. - """ - - request: Request - """A request object with the environ used to make the request that - resulted in this response. - """ - - history: t.Tuple["TestResponse", ...] - """A list of intermediate responses. Populated when the test request - is made with ``follow_redirects`` enabled. - """ - - def __init__( - self, - response: t.Iterable[bytes], - status: str, - headers: Headers, - request: Request, - history: t.Tuple["TestResponse"] = (), # type: ignore - **kwargs: t.Any, - ) -> None: - super().__init__(response, status, headers, **kwargs) - self.request = request - self.history = history - self._compat_tuple = response, status, headers - - def __iter__(self) -> t.Iterator: - warnings.warn( - ( - "The test client no longer returns a tuple, it returns" - " a 'TestResponse'. Tuple unpacking is deprecated and" - " will be removed in Werkzeug 2.1. Access the" - " attributes 'data', 'status', and 'headers' instead." - ), - DeprecationWarning, - stacklevel=2, - ) - return iter(self._compat_tuple) - - def __getitem__(self, item: int) -> t.Any: - warnings.warn( - ( - "The test client no longer returns a tuple, it returns" - " a 'TestResponse'. Item indexing is deprecated and" - " will be removed in Werkzeug 2.1. Access the" - " attributes 'data', 'status', and 'headers' instead." - ), - DeprecationWarning, - stacklevel=2, - ) - return self._compat_tuple[item] diff --git a/venv/lib/python3.9/site-packages/werkzeug/testapp.py b/venv/lib/python3.9/site-packages/werkzeug/testapp.py deleted file mode 100644 index 981f887..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/testapp.py +++ /dev/null @@ -1,240 +0,0 @@ -"""A small application that can be used to test a WSGI server and check -it for WSGI compliance. -""" -import base64 -import os -import sys -import typing as t -from html import escape -from textwrap import wrap - -from . import __version__ as _werkzeug_version -from .wrappers.request import Request -from .wrappers.response import Response - -if t.TYPE_CHECKING: - from _typeshed.wsgi import StartResponse - from _typeshed.wsgi import WSGIEnvironment - - -logo = Response( - base64.b64decode( - """ -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 -=""" - ), - mimetype="image/png", -) - - -TEMPLATE = """\ - -WSGI Information - -
    - -

    WSGI Information

    -

    - This page displays all available information about the WSGI server and - the underlying Python interpreter. -

    Python Interpreter

    - - - - - - -
    Python Version - %(python_version)s -
    Platform - %(platform)s [%(os)s] -
    API Version - %(api_version)s -
    Byteorder - %(byteorder)s -
    Werkzeug Version - %(werkzeug_version)s -
    -

    WSGI Environment

    - %(wsgi_env)s
    -

    Installed Eggs

    -

    - The following python packages were installed on the system as - Python eggs: -

      %(python_eggs)s
    -

    System Path

    -

    - The following paths are the current contents of the load path. The - following entries are looked up for Python packages. Note that not - all items in this path are folders. Gray and underlined items are - entries pointing to invalid resources or used by custom import hooks - such as the zip importer. -

    - Items with a bright background were expanded for display from a relative - path. If you encounter such paths in the output you might want to check - your setup as relative paths are usually problematic in multithreaded - environments. -

      %(sys_path)s
    -
    -""" - - -def iter_sys_path() -> t.Iterator[t.Tuple[str, bool, bool]]: - if os.name == "posix": - - def strip(x: str) -> str: - prefix = os.path.expanduser("~") - if x.startswith(prefix): - x = f"~{x[len(prefix) :]}" - return x - - else: - - def strip(x: str) -> str: - 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: Request) -> bytes: - try: - import pkg_resources - except ImportError: - eggs: t.Iterable[t.Any] = () - else: - eggs = sorted( - pkg_resources.working_set, - key=lambda x: x.project_name.lower(), # type: ignore - ) - python_eggs = [] - for egg in eggs: - try: - version = egg.version - except (ValueError, AttributeError): - version = "unknown" - python_eggs.append( - f"
  • {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: - value = "".join(wrap(escape(repr(value)))) - wsgi_env.append(f"{escape(str(key))}{value}") - - sys_path = [] - for item, virtual, expanded in iter_sys_path(): - class_ = [] - if virtual: - class_.append("virtual") - if expanded: - class_.append("exp") - class_ = f' class="{" ".join(class_)}"' if class_ else "" - sys_path.append(f"{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: "WSGIEnvironment", start_response: "StartResponse" -) -> t.Iterable[bytes]: - """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/venv/lib/python3.9/site-packages/werkzeug/urls.py b/venv/lib/python3.9/site-packages/werkzeug/urls.py deleted file mode 100644 index 7566ac2..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/urls.py +++ /dev/null @@ -1,1211 +0,0 @@ -"""Functions for working with URLs. - -Contains implementations of functions from :mod:`urllib.parse` that -handle bytes and strings. -""" -import codecs -import os -import re -import typing as t -import warnings - -from ._internal import _check_str_tuple -from ._internal import _decode_idna -from ._internal import _encode_idna -from ._internal import _make_encode_wrapper -from ._internal import _to_str - -if t.TYPE_CHECKING: - from . import datastructures as ds - -# 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 = { - f"{a}{b}".encode("ascii"): int(f"{a}{b}", 16) - for a in _hexdigits - for b in _hexdigits -} -_bytetohex = [f"%{char:02X}".encode("ascii") for char in range(256)] - - -class _URLTuple(t.NamedTuple): - scheme: str - netloc: str - path: str - query: str - fragment: str - - -class BaseURL(_URLTuple): - """Superclass of :py:class:`URL` and :py:class:`BytesURL`.""" - - __slots__ = () - _at: str - _colon: str - _lbracket: str - _rbracket: str - - def __str__(self) -> str: - return self.to_url() - - def replace(self, **kwargs: t.Any) -> "BaseURL": - """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) -> t.Optional[str]: - """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) -> t.Optional[str]: - """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, str): - try: - rv = _encode_idna(rv) # type: ignore - except UnicodeError: - rv = rv.encode("ascii", "ignore") # type: ignore - return _to_str(rv, "ascii", "ignore") - - @property - def port(self) -> t.Optional[int]: - """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_str(self._split_host()[1])) - if 0 <= rv <= 65535: - return rv - except (ValueError, TypeError): - pass - return None - - @property - def auth(self) -> t.Optional[str]: - """The authentication part in the URL if available, `None` - otherwise. - """ - return self._split_netloc()[0] - - @property - def username(self) -> t.Optional[str]: - """The username if it was part of the URL, `None` otherwise. - This undergoes URL decoding and will always be a string. - """ - rv = self._split_auth()[0] - if rv is not None: - return _url_unquote_legacy(rv) - return None - - @property - def raw_username(self) -> t.Optional[str]: - """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) -> t.Optional[str]: - """The password if it was part of the URL, `None` otherwise. - This undergoes URL decoding and will always be a string. - """ - rv = self._split_auth()[1] - if rv is not None: - return _url_unquote_legacy(rv) - return None - - @property - def raw_password(self) -> t.Optional[str]: - """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: t.Any, **kwargs: t.Any) -> "ds.MultiDict[str, str]": - """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: t.Any, **kwargs: t.Any) -> "BaseURL": - """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) -> str: - """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 encode_netloc(self) -> str: - """Encodes the netloc part to an ASCII safe URL as bytes.""" - rv = self.ascii_host or "" - if ":" in rv: - rv = f"[{rv}]" - port = self.port - if port is not None: - rv = f"{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 = f"{auth}@{rv}" - return rv - - def decode_netloc(self) -> str: - """Decodes the netloc part into a string.""" - rv = _decode_idna(self.host or "") - - if ":" in rv: - rv = f"[{rv}]" - port = self.port - if port is not None: - rv = f"{rv}:{port}" - auth = ":".join( - filter( - None, - [ - _url_unquote_legacy(self.raw_username or "", "/:%@"), - _url_unquote_legacy(self.raw_password or "", "/:%@"), - ], - ) - ) - if auth: - rv = f"{auth}@{rv}" - return rv - - def to_uri_tuple(self) -> "BaseURL": - """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)) - - def to_iri_tuple(self) -> "BaseURL": - """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: t.Optional[str] = None - ) -> t.Tuple[t.Optional[str], t.Optional[str]]: - """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 = f"{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(f"Invalid path format {pathformat!r}") - - if host in ("127.0.0.1", "::1", "localhost"): - host = None - - return host, path - - def _split_netloc(self) -> t.Tuple[t.Optional[str], str]: - if self._at in self.netloc: - auth, _, netloc = self.netloc.partition(self._at) - return auth, netloc - return None, self.netloc - - def _split_auth(self) -> t.Tuple[t.Optional[str], t.Optional[str]]: - auth = self._split_netloc()[0] - if not auth: - return None, None - if self._colon not in auth: - return auth, None - - username, _, password = auth.partition(self._colon) - return username, password - - def _split_host(self) -> t.Tuple[t.Optional[str], t.Optional[str]]: - rv = self._split_netloc()[1] - if not rv: - return None, None - - if not rv.startswith(self._lbracket): - if self._colon in rv: - host, _, port = rv.partition(self._colon) - return host, port - 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 - - -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 encode(self, charset: str = "utf-8", errors: str = "replace") -> "BytesURL": - """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"), # type: ignore - self.encode_netloc(), - self.path.encode(charset, errors), # type: ignore - self.query.encode(charset, errors), # type: ignore - self.fragment.encode(charset, errors), # type: ignore - ) - - -class BytesURL(BaseURL): - """Represents a parsed URL in bytes.""" - - __slots__ = () - _at = b"@" # type: ignore - _colon = b":" # type: ignore - _lbracket = b"[" # type: ignore - _rbracket = b"]" # type: ignore - - def __str__(self) -> str: - return self.to_url().decode("utf-8", "replace") # type: ignore - - def encode_netloc(self) -> bytes: # type: ignore - """Returns the netloc unchanged as bytes.""" - return self.netloc # type: ignore - - def decode(self, charset: str = "utf-8", errors: str = "replace") -> "URL": - """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"), # type: ignore - self.decode_netloc(), - self.path.decode(charset, errors), # type: ignore - self.query.decode(charset, errors), # type: ignore - self.fragment.decode(charset, errors), # type: ignore - ) - - -_unquote_maps: t.Dict[t.FrozenSet[int], t.Dict[bytes, int]] = {frozenset(): _hextobyte} - - -def _unquote_to_bytes( - string: t.Union[str, bytes], unsafe: t.Union[str, bytes] = "" -) -> bytes: - if isinstance(string, str): - string = string.encode("utf-8") - - if isinstance(unsafe, str): - 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: t.Union[t.Mapping[str, str], t.Iterable[t.Tuple[str, str]]], - charset: str, - sort: bool, - key: t.Optional[t.Callable[[t.Tuple[str, str]], t.Any]], -) -> t.Iterator[str]: - from .datastructures import iter_multi_items - - iterable: t.Iterable[t.Tuple[str, str]] = iter_multi_items(obj) - - if sort: - iterable = sorted(iterable, key=key) - - for key_str, value_str in iterable: - if value_str is None: - continue - - if not isinstance(key_str, bytes): - key_bytes = str(key_str).encode(charset) - else: - key_bytes = key_str - - if not isinstance(value_str, bytes): - value_bytes = str(value_str).encode(charset) - else: - value_bytes = value_str - - yield f"{_fast_url_quote_plus(key_bytes)}={_fast_url_quote_plus(value_bytes)}" - - -def _url_unquote_legacy(value: str, unsafe: str = "") -> str: - 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: str, scheme: t.Optional[str] = None, allow_fragments: bool = True -) -> BaseURL: - """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_encode_wrapper(url) - is_text_based = isinstance(url, str) - - if scheme is None: - scheme = s("") - netloc = query = fragment = s("") - i = url.find(s(":")) - if i > 0 and _scheme_re.match(_to_str(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: str = "utf-8", - errors: str = "strict", - safe: t.Union[str, bytes] = "/:", - unsafe: t.Union[str, bytes] = "", -) -> t.Callable[[bytes], str]: - """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, str): - safe = safe.encode(charset, errors) - - if isinstance(unsafe, str): - unsafe = unsafe.encode(charset, errors) - - safe = (frozenset(bytearray(safe)) | _always_safe) - frozenset(bytearray(unsafe)) - table = [chr(c) if c in safe else f"%{c:02X}" for c in range(256)] - - def quote(string: bytes) -> str: - return "".join([table[c] for c in 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: bytes) -> str: - return _fast_quote_plus(string).replace(" ", "+") - - -def url_quote( - string: t.Union[str, bytes], - charset: str = "utf-8", - errors: str = "strict", - safe: t.Union[str, bytes] = "/:", - unsafe: t.Union[str, bytes] = "", -) -> str: - """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, (str, bytes, bytearray)): - string = str(string) - if isinstance(string, str): - string = string.encode(charset, errors) - if isinstance(safe, str): - safe = safe.encode(charset, errors) - if isinstance(unsafe, str): - 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 bytes(rv).decode(charset) - - -def url_quote_plus( - string: str, charset: str = "utf-8", errors: str = "strict", safe: str = "" -) -> str: - """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: t.Tuple[str, str, str, str, str]) -> str: - """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. - """ - _check_str_tuple(components) - scheme, netloc, path, query, fragment = components - s = _make_encode_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( - s: t.Union[str, bytes], - charset: str = "utf-8", - errors: str = "replace", - unsafe: str = "", -) -> str: - """URL decode a single string with a given encoding. If the charset - is set to `None` no 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 decoding will take place. - :param errors: the error handling for the charset decoding. - """ - rv = _unquote_to_bytes(s, unsafe) - if charset is None: - return rv - return rv.decode(charset, errors) - - -def url_unquote_plus( - s: t.Union[str, bytes], charset: str = "utf-8", errors: str = "replace" -) -> str: - """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'``. - - :param s: The string to unquote. - :param charset: the charset of the query string. If set to `None` - no decoding will take place. - :param errors: The error handling for the `charset` decoding. - """ - if isinstance(s, str): - s = s.replace("+", " ") - else: - s = s.replace(b"+", b" ") - return url_unquote(s, charset, errors) - - -def url_fix(s: str, charset: str = "utf-8") -> str: - 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('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 a string. - """ - # First step is to switch to text processing and to convert - # backslashes (which are invalid in URLs anyways) to slashes. This is - # consistent with what Chrome does. - s = _to_str(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 = f"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 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: UnicodeError) -> t.Tuple[str, int]: - """Used in :func:`uri_to_iri` after unquoting to re-quote any - invalid bytes. - """ - # the docs state that UnicodeError does have these attributes, - # but mypy isn't picking them up - out = _fast_url_quote(e.object[e.start : e.end]) # type: ignore - return out, e.end # type: ignore - - -codecs.register_error("werkzeug.url_quote", _codec_error_url_quote) - - -def uri_to_iri( - uri: t.Union[str, t.Tuple[str, str, str, str, str]], - charset: str = "utf-8", - errors: str = "werkzeug.url_quote", -) -> str: - """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_str(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: t.Union[str, t.Tuple[str, str, str, str, str]], - charset: str = "utf-8", - errors: str = "strict", - safe_conversion: bool = False, -) -> str: - """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_str(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_str(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 url_unparse((iri.scheme, iri.encode_netloc(), path, query, fragment)) - - -def url_decode( - s: t.AnyStr, - charset: str = "utf-8", - decode_keys: None = None, - include_empty: bool = True, - errors: str = "replace", - separator: str = "&", - cls: t.Optional[t.Type["ds.MultiDict"]] = None, -) -> "ds.MultiDict[str, str]": - """Parse a query string and return it as a :class:`MultiDict`. - - :param s: The query string to parse. - :param charset: Decode bytes to string with this charset. If not - given, bytes are returned as-is. - :param include_empty: Include keys with empty values in the dict. - :param errors: Error handling behavior when decoding bytes. - :param separator: Separator character between pairs. - :param cls: Container to hold result instead of :class:`MultiDict`. - - .. versionchanged:: 2.0 - The ``decode_keys`` parameter is deprecated and will be removed - in Werkzeug 2.1. - - .. versionchanged:: 0.5 - In previous versions ";" and "&" could be used for url decoding. - Now only "&" is supported. If you want to use ";", a different - ``separator`` can be provided. - - .. versionchanged:: 0.5 - The ``cls`` parameter was added. - """ - if decode_keys is not None: - warnings.warn( - "'decode_keys' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - if cls is None: - from .datastructures import MultiDict # noqa: F811 - - cls = MultiDict - if isinstance(s, str) and not isinstance(separator, str): - separator = separator.decode(charset or "ascii") - elif isinstance(s, bytes) and not isinstance(separator, bytes): - separator = separator.encode(charset or "ascii") # type: ignore - return cls( - _url_decode_impl( - s.split(separator), charset, include_empty, errors # type: ignore - ) - ) - - -def url_decode_stream( - stream: t.BinaryIO, - charset: str = "utf-8", - decode_keys: None = None, - include_empty: bool = True, - errors: str = "replace", - separator: bytes = b"&", - cls: t.Optional[t.Type["ds.MultiDict"]] = None, - limit: t.Optional[int] = None, - return_iterator: bool = False, -) -> "ds.MultiDict[str, str]": - """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. - - :param stream: a stream with the encoded querystring - :param charset: the charset of the query string. If set to `None` - no decoding will take place. - :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. - - .. versionchanged:: 2.0 - The ``decode_keys`` and ``return_iterator`` parameters are - deprecated and will be removed in Werkzeug 2.1. - - .. versionadded:: 0.8 - """ - from .wsgi import make_chunk_iter - - if decode_keys is not None: - warnings.warn( - "'decode_keys' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - - pair_iter = make_chunk_iter(stream, separator, limit) - decoder = _url_decode_impl(pair_iter, charset, include_empty, errors) - - if return_iterator: - warnings.warn( - "'return_iterator' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - return decoder # type: ignore - - if cls is None: - from .datastructures import MultiDict # noqa: F811 - - cls = MultiDict - - return cls(decoder) - - -def _url_decode_impl( - pair_iter: t.Iterable[t.AnyStr], charset: str, include_empty: bool, errors: str -) -> t.Iterator[t.Tuple[str, str]]: - for pair in pair_iter: - if not pair: - continue - s = _make_encode_wrapper(pair) - equal = s("=") - if equal in pair: - key, value = pair.split(equal, 1) - else: - if not include_empty: - continue - key = pair - value = s("") - yield ( - url_unquote_plus(key, charset, errors), - url_unquote_plus(value, charset, errors), - ) - - -def url_encode( - obj: t.Union[t.Mapping[str, str], t.Iterable[t.Tuple[str, str]]], - charset: str = "utf-8", - encode_keys: None = None, - sort: bool = False, - key: t.Optional[t.Callable[[t.Tuple[str, str]], t.Any]] = None, - separator: str = "&", -) -> str: - """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. - - :param obj: the object to encode into a query string. - :param charset: the charset of the query string. - :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. - - .. versionchanged:: 2.0 - The ``encode_keys`` parameter is deprecated and will be removed - in Werkzeug 2.1. - - .. versionchanged:: 0.5 - Added the ``sort``, ``key``, and ``separator`` parameters. - """ - if encode_keys is not None: - warnings.warn( - "'encode_keys' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - separator = _to_str(separator, "ascii") - return separator.join(_url_encode_impl(obj, charset, sort, key)) - - -def url_encode_stream( - obj: t.Union[t.Mapping[str, str], t.Iterable[t.Tuple[str, str]]], - stream: t.Optional[t.TextIO] = None, - charset: str = "utf-8", - encode_keys: None = None, - sort: bool = False, - key: t.Optional[t.Callable[[t.Tuple[str, str]], t.Any]] = None, - separator: str = "&", -) -> None: - """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. - - :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 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. - - .. versionchanged:: 2.0 - The ``encode_keys`` parameter is deprecated and will be removed - in Werkzeug 2.1. - - .. versionadded:: 0.8 - """ - if encode_keys is not None: - warnings.warn( - "'encode_keys' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - separator = _to_str(separator, "ascii") - gen = _url_encode_impl(obj, charset, sort, key) - if stream is None: - return gen # type: ignore - for idx, chunk in enumerate(gen): - if idx: - stream.write(separator) - stream.write(chunk) - return None - - -def url_join( - base: t.Union[str, t.Tuple[str, str, str, str, str]], - url: t.Union[str, t.Tuple[str, str, str, str, str]], - allow_fragments: bool = True, -) -> str: - """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) - - _check_str_tuple((base, url)) - s = _make_encode_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 True: - 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: - """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' - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use :mod:`werkzeug.routing` - instead. - - .. versionadded:: 0.5 - `sort` and `key` were added. - """ - - def __init__( # type: ignore - self, base="./", charset="utf-8", sort=False, key=None - ): - warnings.warn( - "'Href' is deprecated and will be removed in Werkzeug 2.1." - " Use 'werkzeug.routing' instead.", - DeprecationWarning, - stacklevel=2, - ) - - if not base: - base = "./" - self.base = base - self.charset = charset - self.sort = sort - self.key = key - - def __getattr__(self, name): # type: ignore - 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): # type: ignore - 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 = {k[:-1] if k.endswith("_") else k: v for k, v in query.items()} - path = "/".join( - [ - _to_str(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, f"./{path}") - if query: - rv += "?" + _to_str( - url_encode(query, self.charset, sort=self.sort, key=self.key), "ascii" - ) - return rv diff --git a/venv/lib/python3.9/site-packages/werkzeug/user_agent.py b/venv/lib/python3.9/site-packages/werkzeug/user_agent.py deleted file mode 100644 index 66ffcbe..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/user_agent.py +++ /dev/null @@ -1,47 +0,0 @@ -import typing as t - - -class UserAgent: - """Represents a parsed user agent header value. - - The default implementation does no parsing, only the :attr:`string` - attribute is set. A subclass may parse the string to set the - common attributes or expose other information. Set - :attr:`werkzeug.wrappers.Request.user_agent_class` to use a - subclass. - - :param string: The header value to parse. - - .. versionadded:: 2.0 - This replaces the previous ``useragents`` module, but does not - provide a built-in parser. - """ - - platform: t.Optional[str] = None - """The OS name, if it could be parsed from the string.""" - - browser: t.Optional[str] = None - """The browser name, if it could be parsed from the string.""" - - version: t.Optional[str] = None - """The browser version, if it could be parsed from the string.""" - - language: t.Optional[str] = None - """The browser language, if it could be parsed from the string.""" - - def __init__(self, string: str) -> None: - self.string: str = string - """The original header value.""" - - def __repr__(self) -> str: - return f"<{type(self).__name__} {self.browser}/{self.version}>" - - def __str__(self) -> str: - return self.string - - def __bool__(self) -> bool: - return bool(self.browser) - - def to_header(self) -> str: - """Convert to a header value.""" - return self.string diff --git a/venv/lib/python3.9/site-packages/werkzeug/useragents.py b/venv/lib/python3.9/site-packages/werkzeug/useragents.py deleted file mode 100644 index 4deed8f..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/useragents.py +++ /dev/null @@ -1,215 +0,0 @@ -import re -import typing as t -import warnings - -from .user_agent import UserAgent as _BaseUserAgent - -if t.TYPE_CHECKING: - from _typeshed.wsgi import WSGIEnvironment - - -class _UserAgentParser: - platform_rules: t.ClassVar[t.Iterable[t.Tuple[str, str]]] = ( - (" cros ", "chromeos"), - ("iphone|ios", "iphone"), - ("ipad", "ipad"), - (r"darwin\b|mac\b|os\s*x", "macos"), - ("win", "windows"), - (r"android", "android"), - ("netbsd", "netbsd"), - ("openbsd", "openbsd"), - ("freebsd", "freebsd"), - ("dragonfly", "dragonflybsd"), - ("(sun|i86)os", "solaris"), - (r"x11\b|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"), - ) - browser_rules: t.ClassVar[t.Iterable[t.Tuple[str, str]]] = ( - ("googlebot", "google"), - ("msnbot", "msn"), - ("yahoo", "yahoo"), - ("ask jeeves", "ask"), - (r"aol|america\s+online\s+browser", "aol"), - (r"opera|opr", "opera"), - ("edge|edg", "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"(?:{pattern})[/\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) -> None: - self.platforms = [(b, re.compile(a, re.I)) for a, b in self.platform_rules] - self.browsers = [ - (b, re.compile(self._browser_version_re.format(pattern=a), re.I)) - for a, b in self.browser_rules - ] - - def __call__( - self, user_agent: str - ) -> t.Tuple[t.Optional[str], t.Optional[str], t.Optional[str], t.Optional[str]]: - platform: t.Optional[str] - browser: t.Optional[str] - version: t.Optional[str] - language: t.Optional[str] - - for platform, regex in self.platforms: # noqa: B007 - match = regex.search(user_agent) - if match is not None: - break - else: - platform = None - - # Except for Trident, all browser key words come after the last ')' - last_closing_paren = 0 - if ( - not re.compile(r"trident/.+? rv:", re.I).search(user_agent) - and ")" in user_agent - and user_agent[-1] != ")" - ): - last_closing_paren = user_agent.rindex(")") - - for browser, regex in self.browsers: # noqa: B007 - match = regex.search(user_agent[last_closing_paren:]) - 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 - - -# It wasn't public, but users might have imported it anyway, show a -# warning if a user created an instance. -class UserAgentParser(_UserAgentParser): - """A simple user agent parser. Used by the `UserAgent`. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use a dedicated parser library - instead. - """ - - def __init__(self) -> None: - warnings.warn( - "'UserAgentParser' is deprecated and will be removed in" - " Werkzeug 2.1. Use a dedicated parser library instead.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__() - - -class _deprecated_property(property): - def __init__(self, fget: t.Callable[["_UserAgent"], t.Any]) -> None: - super().__init__(fget) - self.message = ( - "The built-in user agent parser is deprecated and will be" - f" removed in Werkzeug 2.1. The {fget.__name__!r} property" - " will be 'None'. Subclass 'werkzeug.user_agent.UserAgent'" - " and set 'Request.user_agent_class' to use a different" - " parser." - ) - - def __get__(self, *args: t.Any, **kwargs: t.Any) -> t.Any: - warnings.warn(self.message, DeprecationWarning, stacklevel=3) - return super().__get__(*args, **kwargs) - - -# This is what Request.user_agent returns for now, only show warnings on -# attribute access, not creation. -class _UserAgent(_BaseUserAgent): - _parser = _UserAgentParser() - - def __init__(self, string: str) -> None: - super().__init__(string) - info = self._parser(string) - self._platform, self._browser, self._version, self._language = info - - @_deprecated_property - def platform(self) -> t.Optional[str]: # type: ignore - return self._platform - - @_deprecated_property - def browser(self) -> t.Optional[str]: # type: ignore - return self._browser - - @_deprecated_property - def version(self) -> t.Optional[str]: # type: ignore - return self._version - - @_deprecated_property - def language(self) -> t.Optional[str]: # type: ignore - return self._language - - -# This is what users might be importing, show warnings on create. -class UserAgent(_UserAgent): - """Represents a parsed user agent header value. - - This uses a basic parser to try to extract some information from the - header. - - :param environ_or_string: The header value to parse, or a WSGI - environ containing the header. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Subclass - :class:`werkzeug.user_agent.UserAgent` (note the new module - name) to use a dedicated parser instead. - - .. versionchanged:: 2.0 - Passing a WSGI environ is deprecated and will be removed in 2.1. - """ - - def __init__(self, environ_or_string: "t.Union[str, WSGIEnvironment]") -> None: - if isinstance(environ_or_string, dict): - warnings.warn( - "Passing an environ to 'UserAgent' is deprecated and" - " will be removed in Werkzeug 2.1. Pass the header" - " value string instead.", - DeprecationWarning, - stacklevel=2, - ) - string = environ_or_string.get("HTTP_USER_AGENT", "") - else: - string = environ_or_string - - warnings.warn( - "The 'werkzeug.useragents' module is deprecated and will be" - " removed in Werkzeug 2.1. The new base API is" - " 'werkzeug.user_agent.UserAgent'.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(string) diff --git a/venv/lib/python3.9/site-packages/werkzeug/utils.py b/venv/lib/python3.9/site-packages/werkzeug/utils.py deleted file mode 100644 index 7bb02bb..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/utils.py +++ /dev/null @@ -1,1091 +0,0 @@ -import codecs -import io -import mimetypes -import os -import pkgutil -import re -import sys -import typing as t -import unicodedata -import warnings -from datetime import datetime -from html.entities import name2codepoint -from time import time -from zlib import adler32 - -from ._internal import _DictAccessorProperty -from ._internal import _missing -from ._internal import _parse_signature -from ._internal import _TAccessorValue -from .datastructures import Headers -from .exceptions import NotFound -from .exceptions import RequestedRangeNotSatisfiable -from .security import safe_join -from .urls import url_quote -from .wsgi import wrap_file - -if t.TYPE_CHECKING: - from _typeshed.wsgi import WSGIEnvironment - from .wrappers.request import Request - from .wrappers.response import Response - -_T = t.TypeVar("_T") - -_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, t.Generic[_T]): - """A :func:`property` that is only evaluated once. Subsequent access - returns the cached value. Setting the property sets the cached - value. Deleting the property clears the cached value, accessing it - again will evaluate it again. - - .. code-block:: python - - class Example: - @cached_property - def value(self): - # calculate something important here - return 42 - - e = Example() - e.value # evaluates - e.value # uses cache - e.value = 16 # sets cache - del e.value # clears cache - - The class must have a ``__dict__`` for this to work. - - .. versionchanged:: 2.0 - ``del obj.name`` clears the cached value. - """ - - def __init__( - self, - fget: t.Callable[[t.Any], _T], - name: t.Optional[str] = None, - doc: t.Optional[str] = None, - ) -> None: - super().__init__(fget, doc=doc) - self.__name__ = name or fget.__name__ - self.__module__ = fget.__module__ - - def __set__(self, obj: object, value: _T) -> None: - obj.__dict__[self.__name__] = value - - def __get__(self, obj: object, type: type = None) -> _T: # type: ignore - if obj is None: - return self # type: ignore - - value: _T = obj.__dict__.get(self.__name__, _missing) - - if value is _missing: - value = self.fget(obj) # type: ignore - obj.__dict__[self.__name__] = value - - return value - - def __delete__(self, obj: object) -> None: - del obj.__dict__[self.__name__] - - -def invalidate_cached_property(obj: object, name: str) -> None: - """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. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use ``del obj.name`` instead. - """ - warnings.warn( - "'invalidate_cached_property' is deprecated and will be removed" - " in Werkzeug 2.1. Use 'del obj.name' instead.", - DeprecationWarning, - stacklevel=2, - ) - delattr(obj, name) - - -class environ_property(_DictAccessorProperty[_TAccessorValue]): - """Maps request attributes to environment variables. This works not only - for the Werkzeug 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: "Request") -> "WSGIEnvironment": - return obj.environ - - -class header_property(_DictAccessorProperty[_TAccessorValue]): - """Like `environ_property` but for headers.""" - - def lookup(self, obj: t.Union["Request", "Response"]) -> Headers: - return obj.headers - - -class HTMLBuilder: - """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')]) - '

    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("")) - '

    <foo>

    ' - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. - """ - - _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): # type: ignore - self._dialect = dialect - - def __call__(self, s): # type: ignore - import html - - warnings.warn( - "'utils.HTMLBuilder' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - return html.escape(s) - - def __getattr__(self, tag): # type: ignore - import html - - warnings.warn( - "'utils.HTMLBuilder' is deprecated and will be removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - if tag[:2] == "__": - raise AttributeError(tag) - - def proxy(*children, **arguments): # type: ignore - buffer = f"<{tag}" - for key, value in arguments.items(): - 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 = f'="{key}"' - else: - value = "" - else: - value = f'="{html.escape(value)}"' - buffer += f" {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([str(x) for x in children if x is not None]) - - if children_as_string: - if tag in self._plaintext_elements: - children_as_string = html.escape(children_as_string) - elif tag in self._c_like_cdata and self._dialect == "xhtml": - children_as_string = f"/**/" - buffer += children_as_string + f"" - return buffer - - return proxy - - def __repr__(self) -> str: - return f"<{type(self).__name__} for {self._dialect!r}>" - - -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: str, charset: str) -> str: - """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 += f"; charset={charset}" - - return mimetype - - -def detect_utf_encoding(data: bytes) -> str: - """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 - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. This is built in to - :func:`json.loads`. - - .. versionadded:: 0.15 - """ - warnings.warn( - "'detect_utf_encoding' is deprecated and will be removed in" - " Werkzeug 2.1. This is built in to 'json.loads'.", - DeprecationWarning, - stacklevel=2, - ) - 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: str, context: t.Mapping[str, t.Any]) -> str: - """String-template format a string: - - >>> format_string('$foo and ${foo}s', dict(foo=42)) - '42 and 42s' - - This does not do any attribute lookup. - - :param string: the format string. - :param context: a dict with the variables to insert. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use :class:`string.Template` - instead. - """ - from string import Template - - warnings.warn( - "'utils.format_string' is deprecated and will be removed in" - " Werkzeug 2.1. Use 'string.Template' instead.", - DeprecationWarning, - stacklevel=2, - ) - return Template(string).substitute(context) - - -def secure_filename(filename: str) -> str: - 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('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 - """ - filename = unicodedata.normalize("NFKD", filename) - filename = filename.encode("ascii", "ignore").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 = f"_{filename}" - - return filename - - -def escape(s: t.Any) -> str: - """Replace ``&``, ``<``, ``>``, ``"``, and ``'`` with HTML-safe - sequences. - - ``None`` is escaped to an empty string. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use MarkupSafe instead. - """ - import html - - warnings.warn( - "'utils.escape' is deprecated and will be removed in Werkzeug" - " 2.1. Use MarkupSafe instead.", - DeprecationWarning, - stacklevel=2, - ) - - if s is None: - return "" - - if hasattr(s, "__html__"): - return s.__html__() # type: ignore - - if not isinstance(s, str): - s = str(s) - - return html.escape(s, quote=True) # type: ignore - - -def unescape(s: str) -> str: - """The reverse of :func:`escape`. This unescapes all the HTML - entities, not only those inserted by ``escape``. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use MarkupSafe instead. - """ - import html - - warnings.warn( - "'utils.unescape' is deprecated and will be removed in Werkzueg" - " 2.1. Use MarkupSafe instead.", - DeprecationWarning, - stacklevel=2, - ) - return html.unescape(s) - - -def redirect( - location: str, code: int = 302, Response: t.Optional[t.Type["Response"]] = None -) -> "Response": - """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. - """ - import html - - if Response is None: - from .wrappers import Response # type: ignore - - display_location = html.escape(location) - if isinstance(location, str): - # 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( # type: ignore - '\n' - "Redirecting...\n" - "

    Redirecting...

    \n" - "

    You should be redirected automatically to target URL: " - f'{display_location}. If' - " not click the link.", - code, - mimetype="text/html", - ) - response.headers["Location"] = location - return response - - -def append_slash_redirect(environ: "WSGIEnvironment", code: int = 301) -> "Response": - """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 += f"?{query_string}" - return redirect(new_path, code) - - -def send_file( - path_or_file: t.Union[os.PathLike, str, t.BinaryIO], - environ: "WSGIEnvironment", - mimetype: t.Optional[str] = None, - as_attachment: bool = False, - download_name: t.Optional[str] = None, - conditional: bool = True, - etag: t.Union[bool, str] = True, - last_modified: t.Optional[t.Union[datetime, int, float]] = None, - max_age: t.Optional[ - t.Union[int, t.Callable[[t.Optional[str]], t.Optional[int]]] - ] = None, - use_x_sendfile: bool = False, - response_class: t.Optional[t.Type["Response"]] = None, - _root_path: t.Optional[t.Union[os.PathLike, str]] = None, -) -> "Response": - """Send the contents of a file to the client. - - The first argument can be a file path or a file-like object. Paths - are preferred in most cases because Werkzeug can manage the file and - get extra information from the path. Passing a file-like object - requires that the file is opened in binary mode, and is mostly - useful when building a file in memory with :class:`io.BytesIO`. - - Never pass file paths provided by a user. The path is assumed to be - trusted, so a user could craft a path to access a file you didn't - intend. - - If the WSGI server sets a ``file_wrapper`` in ``environ``, it is - used, otherwise Werkzeug's built-in wrapper is used. Alternatively, - if the HTTP server supports ``X-Sendfile``, ``use_x_sendfile=True`` - will tell the server to send the given path, which is much more - efficient than reading it in Python. - - :param path_or_file: The path to the file to send, relative to the - current working directory if a relative path is given. - Alternatively, a file-like object opened in binary mode. Make - sure the file pointer is seeked to the start of the data. - :param environ: The WSGI environ for the current request. - :param mimetype: The MIME type to send for the file. If not - provided, it will try to detect it from the file name. - :param as_attachment: Indicate to a browser that it should offer to - save the file instead of displaying it. - :param download_name: The default name browsers will use when saving - the file. Defaults to the passed file name. - :param conditional: Enable conditional and range responses based on - request headers. Requires passing a file path and ``environ``. - :param etag: Calculate an ETag for the file, which requires passing - a file path. Can also be a string to use instead. - :param last_modified: The last modified time to send for the file, - in seconds. If not provided, it will try to detect it from the - file path. - :param max_age: How long the client should cache the file, in - seconds. If set, ``Cache-Control`` will be ``public``, otherwise - it will be ``no-cache`` to prefer conditional caching. - :param use_x_sendfile: Set the ``X-Sendfile`` header to let the - server to efficiently send the file. Requires support from the - HTTP server. Requires passing a file path. - :param response_class: Build the response using this class. Defaults - to :class:`~werkzeug.wrappers.Response`. - :param _root_path: Do not use. For internal use only. Use - :func:`send_from_directory` to safely send files under a path. - - .. versionadded:: 2.0 - Adapted from Flask's implementation. - - .. versionchanged:: 2.0 - ``download_name`` replaces Flask's ``attachment_filename`` - parameter. If ``as_attachment=False``, it is passed with - ``Content-Disposition: inline`` instead. - - .. versionchanged:: 2.0 - ``max_age`` replaces Flask's ``cache_timeout`` parameter. - ``conditional`` is enabled and ``max_age`` is not set by - default. - - .. versionchanged:: 2.0 - ``etag`` replaces Flask's ``add_etags`` parameter. It can be a - string to use instead of generating one. - - .. versionchanged:: 2.0 - If an encoding is returned when guessing ``mimetype`` from - ``download_name``, set the ``Content-Encoding`` header. - """ - if response_class is None: - from .wrappers import Response - - response_class = Response - - path: t.Optional[str] = None - file: t.Optional[t.BinaryIO] = None - size: t.Optional[int] = None - mtime: t.Optional[float] = None - headers = Headers() - - if isinstance(path_or_file, (os.PathLike, str)) or hasattr( - path_or_file, "__fspath__" - ): - path_or_file = t.cast(t.Union[os.PathLike, str], path_or_file) - - # Flask will pass app.root_path, allowing its send_file wrapper - # to not have to deal with paths. - if _root_path is not None: - path = os.path.join(_root_path, path_or_file) - else: - path = os.path.abspath(path_or_file) - - stat = os.stat(path) - size = stat.st_size - mtime = stat.st_mtime - else: - file = path_or_file - - if download_name is None and path is not None: - download_name = os.path.basename(path) - - if mimetype is None: - if download_name is None: - raise TypeError( - "Unable to detect the MIME type because a file name is" - " not available. Either set 'download_name', pass a" - " path instead of a file, or set 'mimetype'." - ) - - mimetype, encoding = mimetypes.guess_type(download_name) - - if mimetype is None: - mimetype = "application/octet-stream" - - if encoding is not None: - headers.set("Content-Encoding", encoding) - - if download_name is not None: - try: - download_name.encode("ascii") - except UnicodeEncodeError: - simple = unicodedata.normalize("NFKD", download_name) - simple = simple.encode("ascii", "ignore").decode("ascii") - quoted = url_quote(download_name, safe="") - names = {"filename": simple, "filename*": f"UTF-8''{quoted}"} - else: - names = {"filename": download_name} - - value = "attachment" if as_attachment else "inline" - headers.set("Content-Disposition", value, **names) - elif as_attachment: - raise TypeError( - "No name provided for attachment. Either set" - " 'download_name' or pass a path instead of a file." - ) - - if use_x_sendfile and path is not None: - headers["X-Sendfile"] = path - data = None - else: - if file is None: - file = open(path, "rb") # type: ignore - elif isinstance(file, io.BytesIO): - size = file.getbuffer().nbytes - elif isinstance(file, io.TextIOBase): - raise ValueError("Files must be opened in binary mode or use BytesIO.") - - data = wrap_file(environ, file) - - rv = response_class( - data, mimetype=mimetype, headers=headers, direct_passthrough=True - ) - - if size is not None: - rv.content_length = size - - if last_modified is not None: - rv.last_modified = last_modified # type: ignore - elif mtime is not None: - rv.last_modified = mtime # type: ignore - - rv.cache_control.no_cache = True - - # Flask will pass app.get_send_file_max_age, allowing its send_file - # wrapper to not have to deal with paths. - if callable(max_age): - max_age = max_age(path) - - if max_age is not None: - if max_age > 0: - rv.cache_control.no_cache = None - rv.cache_control.public = True - - rv.cache_control.max_age = max_age - rv.expires = int(time() + max_age) # type: ignore - - if isinstance(etag, str): - rv.set_etag(etag) - elif etag and path is not None: - check = adler32(path.encode("utf-8")) & 0xFFFFFFFF - rv.set_etag(f"{mtime}-{size}-{check}") - - if conditional: - try: - rv = rv.make_conditional(environ, accept_ranges=True, complete_length=size) - except RequestedRangeNotSatisfiable: - if file is not None: - file.close() - - raise - - # Some x-sendfile implementations incorrectly ignore the 304 - # status code and send the file anyway. - if rv.status_code == 304: - rv.headers.pop("x-sendfile", None) - - return rv - - -def send_from_directory( - directory: t.Union[os.PathLike, str], - path: t.Union[os.PathLike, str], - environ: "WSGIEnvironment", - **kwargs: t.Any, -) -> "Response": - """Send a file from within a directory using :func:`send_file`. - - This is a secure way to serve files from a folder, such as static - files or uploads. Uses :func:`~werkzeug.security.safe_join` to - ensure the path coming from the client is not maliciously crafted to - point outside the specified directory. - - If the final path does not point to an existing regular file, - returns a 404 :exc:`~werkzeug.exceptions.NotFound` error. - - :param directory: The directory that ``path`` must be located under. - :param path: The path to the file to send, relative to - ``directory``. - :param environ: The WSGI environ for the current request. - :param kwargs: Arguments to pass to :func:`send_file`. - - .. versionadded:: 2.0 - Adapted from Flask's implementation. - """ - path = safe_join(os.fspath(directory), os.fspath(path)) - - if path is None: - raise NotFound() - - # Flask will pass app.root_path, allowing its send_from_directory - # wrapper to not have to deal with paths. - if "_root_path" in kwargs: - path = os.path.join(kwargs["_root_path"], path) - - try: - if not os.path.isfile(path): - raise NotFound() - except ValueError: - # path contains null byte on Python < 3.8 - raise NotFound() - - return send_file(path, environ, **kwargs) - - -def import_string(import_name: str, silent: bool = False) -> t.Any: - """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 - """ - import_name = 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: - raise ImportStringError(import_name, e).with_traceback(sys.exc_info()[2]) - - return None - - -def find_modules( - import_path: str, include_packages: bool = False, recursive: bool = False -) -> t.Iterator[str]: - """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(f"{import_path!r} is not a package") - basename = f"{module.__name__}." - for _importer, modname, ispkg in pkgutil.iter_modules(path): - modname = basename + modname - if ispkg: - if include_packages: - yield modname - if recursive: - yield from find_modules(modname, include_packages, True) - else: - yield modname - - -def validate_arguments(func, args, kwargs, drop_extra=True): # type: ignore - """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)``. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use :func:`inspect.signature` - instead. - """ - warnings.warn( - "'utils.validate_arguments' is deprecated and will be removed" - " in Werkzeug 2.1. Use 'inspect.signature' instead.", - DeprecationWarning, - stacklevel=2, - ) - 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): # type: ignore - """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. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Use :meth:`Signature.bind` - instead. - """ - warnings.warn( - "'utils.bind_arguments' is deprecated and will be removed in" - " Werkzeug 2.1. Use 'Signature.bind' instead.", - DeprecationWarning, - stacklevel=2, - ) - ( - 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) & {x[0] for x in arg_spec} - if multikw: - raise TypeError( - f"got multiple values for keyword argument {next(iter(multikw))!r}" - ) - values[kwarg_var] = extra - elif extra: - raise TypeError(f"got unexpected keyword argument {next(iter(extra))!r}") - return values - - -class ArgumentValidationError(ValueError): - """Raised if :func:`validate_arguments` fails to validate - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1 along with ``utils.bind`` and - ``validate_arguments``. - """ - - def __init__(self, missing=None, extra=None, extra_positional=None): # type: ignore - self.missing = set(missing or ()) - self.extra = extra or {} - self.extra_positional = extra_positional or [] - super().__init__( - "function arguments invalid." - f" ({len(self.missing)} missing," - f" {len(self.extra) + len(self.extra_positional)} additional)" - ) - - -class ImportStringError(ImportError): - """Provides information about a failed :func:`import_string` attempt.""" - - #: String in dotted notation that failed to be imported. - import_name: str - #: Wrapped exception. - exception: BaseException - - def __init__(self, import_name: str, exception: BaseException) -> None: - self.import_name = import_name - self.exception = exception - msg = import_name - name = "" - tracked = [] - for part in import_name.replace(":", ".").split("."): - name = f"{name}.{part}" if name else part - imported = import_string(name, silent=True) - if imported: - tracked.append((name, getattr(imported, "__file__", None))) - else: - track = [f"- {n!r} found in {i!r}." for n, i in tracked] - track.append(f"- {name!r} not found.") - track_str = "\n".join(track) - msg = ( - f"import_string() failed for {import_name!r}. Possible reasons" - f" 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" - f"Debugged import:\n\n{track_str}\n\n" - f"Original exception:\n\n{type(exception).__name__}: {exception}" - ) - break - - super().__init__(msg) - - def __repr__(self) -> str: - return f"<{type(self).__name__}({self.import_name!r}, {self.exception!r})>" diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__init__.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__init__.py deleted file mode 100644 index eb69a99..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -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 as Request -from .request import StreamOnlyMixin -from .response import Response as Response -from .response import ResponseStream -from .response import ResponseStreamMixin -from .user_agent import UserAgentMixin diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 8a27bef95b6b135e901f8a8ab2c9a0c5c1b196cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmaKq&5qMB5XX}?ZPVtXAKP8ZfxY*@=CCIugeV{41gv&Jm3#?qYFevy9Bijc_aS%> z-h-#;l@k&N&YT!K4GR(?QAWS{d&Xl=21ilPf#DhCs>h7@}VS3LvmQTst~y% z;NN>HI2ZXL;2BYwq=gnz)%mA&K$Y^3h{5wWcy-vI&Kg!)l~ar11;ey11+_c3$Le2c zNict%vt1qSUy|RajBBpKAou8RrA~_9Dk5hqXo6Kiq&Eg~mii_vPV6 zGB#S@n1Na7m2m15n`6r%2%jA}F^k6hUhfLJ#A;2p3H*qS7De)c>UFtD zE`-$Y1*0O_l6;#mx=4y0j7ffe_8?JIllukEHc&z(*F diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/accept.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/accept.cpython-39.pyc deleted file mode 100644 index 9ae5f354fa8b34d6ecc953f5ac8dbbdc2718fbaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 827 zcmYjPzi$&U6t?d!=}}sK33iKtC`jZ)nUD~oQl(Br2!={ojC+1b+&I3g?Mq12t(7{# zU%<%Hfq%#=QzZswSa?pNDo=XP@A+Auzwg;%cXykh{q}!8|D=Tcip8d-SiD1bPccX$ zsU`!uT$4d^NMs_@OCr;YWRObwiFC6YJV*LvjGLCN3-=roSYiwkNKdlplFHAHS>)b7bDfRbI!rkxp|(&850VKZ*<5MOj)7U2 zRx{jFh8=;OoIx{Ud%c%E*7*ph4LILnrkZ2B)Qtqk{217>TwOWl(Asv+(F(O#}gsR;|!-O$|2WoGYU|=W#j?^w7o$*f{cQ z8t!mjYT+E`*W~Y{7*|s$yqZ>iyr`8FZVa>H0Nlh^b#bWtxH&F9RMrnGt*T-MW>#o* zT+|CcuFR|6>%u7yFKT2eM&OG1T6{6LqDC^V5XCWK}*NfVm`9BWSV^gq~C+=&1H diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/auth.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/auth.cpython-39.pyc deleted file mode 100644 index 4279b7e2b92517dec13888b9f12867c82063ee85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1305 zcmb_cJ8u&~5Z=8zJ4bMMM1cYn=_)Lc@bRdS5F%2fR7400BR9+Dc5QFG-n;DX+1LtI zBBg>~KuMFobS+gR3TkMWv8~8bQXrI-W^QIjH#6VNr{!yFs|3zZ|Lfz2kdPnfEFZWd zuR+`sP=W}mNr%q9K_}QDA`sy*5#dqL3Bij*4ZIq7k)ZF%!}=NgMRqgP%O_em?hzPr zma!Aaa6dv3R0Q9`6Vjz36wz^`Q#&CM>C_=#tyosRoqnYh;6ll0cRFoe zEZR(zON1<}%(#~#;YK85rFF6=6Dx=L2=0_g+R_fDvg{?#T2EU^^PM~>rSr|iC@9b)IJfEk{zH)~Xm_8f5@+gjTh_y=Vjy zwCAC!=E_3aDrQU>U&k?ttpFZa^7x%J&#t2`Y^GfK7EON$At#5`}kNS*TXaRHt3o^X~F|oLWI*4n4A~d2w7|`HPePw$8;;38a5LOV5;X}z-waVBq7o|qK!Pr5`^&&!j z6>gb%k!o#$Fq2v{W;dYRT&<&Z2NjMO=i$(Z>CC@E#%{FRZ3HEaSICt)XD#yastEeI zd0CDBrKl@%7Ov#NI+R8}Dq|vl-*U@#^BjH!o}beC75oCcA8Fn-I8- t85dhaAKr($2j-fdy@&r@M}={V(WNx!jaBi>Ig4K5Tj7wCF^$6;jlU9COZxx- diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/base_request.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/base_request.cpython-39.pyc deleted file mode 100644 index fd785693aa0fe0b7438409ee45fbba386873d73d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmd5-&2Jk;6rb6hU9Zyw+9-U8FRc(FHKN`ECnSUljp!{x6jaHVVZHNWZ@k`hW@c?U z$}N$4Do0K|a_PS`S5A>Qa0U*%w_Z0cK?sQpBhAk{Z$94V?>XJs*kbGARrEv* zI*LDJz3wHx#11bxVvoDdH*iveu^CA>hmVVUIL%!IXtWMI@Q(!qia%|1Ux-17k`77) zN&*$4BvKvJ61iRZRXTx(^)M?^WA2Y3oAf*vnO5LJ4Yt;0=Hc_}LEiz+`#8-T2$mgl z#ciYQiO-q!&$t!m9%>MWr{n!EQvBR zfu5W~J&Hf>f7Fk^GZ63RW^L5%tS}$O?Snmhu{0J^)xRXeo^iKjY?@69m_yMET(n4a znU^Eu1bw;PgI0T9m5)|iZtLoCO%cTq_^3pam(Q4f8Gn8|NygO_5}QveJ6_Imm6|ck zlLIglTg{ROxgFQTvsKKW0Z<`AS@D4}!-`utA7y4BU+k zE*|!LCsK{f2q#F5ky(`mwVd@JG7t&KO!Gd%b*i7UV{yiFcIN%Wf8ZS3--`C;Khu8y zdCw@T1+qLVY6T{?V~CIHGP6kFw8-r;Rynp4TP*wkR4sw2kz|y&yv(hX30yYb#$d{8ljX|wWDL)dkg1PwfIQ9-^0%7-bOT$aqYt${R*DeuM)gQ@H)Yp1Tli! zX_aJ96l+CI9lT3Ns9ZIvqYH*wTEv?*{ta}efUS)>HMZ{1Vizh$tJjGduG998h7C^O hJ~Z{yT;E_sqpYDt^x3L(Kc}P{qFKZvZ`;4Q_b2N*!m0oO diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/base_response.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/base_response.cpython-39.pyc deleted file mode 100644 index 311fbc7f4699b1d897afee7211340b55f3541260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1791 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 diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/etag.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/etag.cpython-39.pyc deleted file mode 100644 index 2b646deb7cff419364fed2f917651fe38496272b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1290 zcmb_cOKTKC5bmDGW{ew6f(izNIk_mf}nGwJTx%`Ukm zkdyubk6!YZ=ISZn!Lweh+8M%U1x_dhq=duxkpad1^j^XdMJ!C=c{`{dX%}$J8pLU6XKC>1M>Oh`kRkQ|2^L?xUp}=fl!@OxAYR-H)Ufq zt-hMuLaUT6RYVv*$W0J)ACx6S%BXb^z-N~d>mHGzcSr>}biUCqlmb{N=ym1?t&1gF zp)euix#nqNISUiT!l{rl+~c9<<7@(VLWR3rkLJAShfmv2+F`41x)rKy3gJ{1jGNF7 zc-SjcYDK0JDeNp{0`gipYo9sL=P4~$jZM;#=wHjZ_rHo^J3yM{06Rq2*aKJbXgGN9X{uOd{qrzkIOc`F0RU;9vikb78nM(!! zmzq_If9IxN0USC&h3|)6N3|I2V$O@{;-c~D@}jpc4d#5)`VMCL+p_LKU<1?D%R(O> ngoXvWs=nUB|E{CLxW?#Gn)9y8;6+8Am-svwBw|1V_eS#%mT5%5 diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/json.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/json.cpython-39.pyc deleted file mode 100644 index 0ef175342e157887f8679255a6f4d838a64d4c9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmYjP&x;c=6i#NQb#~eH$Ab6Z!BW8v>PZk$SXdCO;vN=yiPOnzn>Ni%lT2%uz3sxD z^bZh^UiM$g)zg9p&*H(Cwv;}2FYo1r?|t7R`QhO{LHq6geEv=e`4x&?i?MivZXaO~ zL{LR~bah6(=!A$!#8*Vbmr*Yk^pv!dTYN{lMTonWYzq4X6IfyNB8bOHa6v`%BfcgB zDq@jb9rPO4Bq6;f;x+u-FEDg+zhR6P8RFafUAuzkondE;|BUYbo&^C zBV#J4ivriLF(od(B;(|QN^%kXq~9n-U4eP`eAe2|YB6bFLgtT-H$)KNY~At=TUTIw%DL3iaUOPKK@CjMZ^F87 zsNdtfP`S07-;lpD8n{XXZ@Qq(Hs2b|C9Tx~kk`S`6~WBbF6umY6g+}y`0>u@(@4?+l= t4gbJ~B&Dmmo%p6h>3V1$hBs*lp}&K$!U_mJeYK|YI(#o1R+`c@{tv`Q*mVE^ diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/request.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/request.cpython-39.pyc deleted file mode 100644 index e697b8450fa6b382fc1f80666d7195ef7ffae53a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21308 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 Rjsl(*rvAXu|5qjt{U2@gzGnac diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/response.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/response.cpython-39.pyc deleted file mode 100644 index 7bdb95af5e6e315d97fcb03c6efc8d45117eb0ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29702 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 diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/user_agent.cpython-39.pyc b/venv/lib/python3.9/site-packages/werkzeug/wrappers/__pycache__/user_agent.cpython-39.pyc deleted file mode 100644 index ededc9d1810491b2a9460acdd2065c7a6f513da3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcmY*XO>Yx15VhBvbgA0%AtA072cjU66>vgAh)R`uqCy~4DHpR{PZBqdcWZkS67|+f zJ;5*F$falgjjx<4ao`LW#z|DQBh7eb$9nVLtc&gKO@j8@|M~or67nk+H;rNO7TrC@ zAc>@!^y%_U`pG_#iDc(Qva_VmB>hOb=@s512W5;mEnOGxDJHPQ=qJFA)98}QWdo6Z;ISi=-FiqBA@Q3lnfF$)j&)?|~cps?PV7A2mn$`^x%3rB#(r z!Ax_lj`Di$N0oWmdzCxo;aQDLiy^ptwichyY*8Z_mpAy+1on*Y)pNUrB--dMCWNLm zVF^wCwKo=zZZErcEn*`IGQ|Xh2%ADoD%t3mZwYbI6nfpEKCoT08W6VE8cWbx2zw7l zt-?;s?#B?99N&eDNk*4-Hw|r%TQEcWFy6^xi2WM~ORR_xvezprZ{l-val0AK*nboJ B;u8P> diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/accept.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/accept.py deleted file mode 100644 index 9605e63..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/accept.py +++ /dev/null @@ -1,14 +0,0 @@ -import typing as t -import warnings - - -class AcceptMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'AcceptMixin' is deprecated and will be removed in" - " Werkzeug 2.1. 'Request' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/auth.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/auth.py deleted file mode 100644 index da31b7c..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/auth.py +++ /dev/null @@ -1,26 +0,0 @@ -import typing as t -import warnings - - -class AuthorizationMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'AuthorizationMixin' is deprecated and will be removed in" - " Werkzeug 2.1. 'Request' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore - - -class WWWAuthenticateMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'WWWAuthenticateMixin' is deprecated and will be removed" - " in Werkzeug 2.1. 'Response' now includes the" - " functionality directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/base_request.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/base_request.py deleted file mode 100644 index 451989f..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/base_request.py +++ /dev/null @@ -1,36 +0,0 @@ -import typing as t -import warnings - -from .request import Request - - -class _FakeSubclassCheck(type): - def __subclasscheck__(cls, subclass: t.Type) -> bool: - warnings.warn( - "'BaseRequest' is deprecated and will be removed in" - " Werkzeug 2.1. Use 'issubclass(cls, Request)' instead.", - DeprecationWarning, - stacklevel=2, - ) - return issubclass(subclass, Request) - - def __instancecheck__(cls, instance: t.Any) -> bool: - warnings.warn( - "'BaseRequest' is deprecated and will be removed in" - " Werkzeug 2.1. Use 'isinstance(obj, Request)' instead.", - DeprecationWarning, - stacklevel=2, - ) - return isinstance(instance, Request) - - -class BaseRequest(Request, metaclass=_FakeSubclassCheck): - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'BaseRequest' is deprecated and will be removed in" - " Werkzeug 2.1. 'Request' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/base_response.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/base_response.py deleted file mode 100644 index 3e0dc67..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/base_response.py +++ /dev/null @@ -1,36 +0,0 @@ -import typing as t -import warnings - -from .response import Response - - -class _FakeSubclassCheck(type): - def __subclasscheck__(cls, subclass: t.Type) -> bool: - warnings.warn( - "'BaseResponse' is deprecated and will be removed in" - " Werkzeug 2.1. Use 'issubclass(cls, Response)' instead.", - DeprecationWarning, - stacklevel=2, - ) - return issubclass(subclass, Response) - - def __instancecheck__(cls, instance: t.Any) -> bool: - warnings.warn( - "'BaseResponse' is deprecated and will be removed in" - " Werkzeug 2.1. Use 'isinstance(obj, Response)' instead.", - DeprecationWarning, - stacklevel=2, - ) - return isinstance(instance, Response) - - -class BaseResponse(Response, metaclass=_FakeSubclassCheck): - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'BaseResponse' is deprecated and will be removed in" - " Werkzeug 2.1. 'Response' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/common_descriptors.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/common_descriptors.py deleted file mode 100644 index db87ea5..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/common_descriptors.py +++ /dev/null @@ -1,26 +0,0 @@ -import typing as t -import warnings - - -class CommonRequestDescriptorsMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'CommonRequestDescriptorsMixin' is deprecated and will be" - " removed in Werkzeug 2.1. 'Request' now includes the" - " functionality directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore - - -class CommonResponseDescriptorsMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'CommonResponseDescriptorsMixin' is deprecated and will be" - " removed in Werkzeug 2.1. 'Response' now includes the" - " functionality directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/cors.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/cors.py deleted file mode 100644 index 89cf83e..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/cors.py +++ /dev/null @@ -1,26 +0,0 @@ -import typing as t -import warnings - - -class CORSRequestMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'CORSRequestMixin' is deprecated and will be removed in" - " Werkzeug 2.1. 'Request' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore - - -class CORSResponseMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'CORSResponseMixin' is deprecated and will be removed in" - " Werkzeug 2.1. 'Response' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/etag.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/etag.py deleted file mode 100644 index 2e9015a..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/etag.py +++ /dev/null @@ -1,26 +0,0 @@ -import typing as t -import warnings - - -class ETagRequestMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'ETagRequestMixin' is deprecated and will be removed in" - " Werkzeug 2.1. 'Request' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore - - -class ETagResponseMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'ETagResponseMixin' is deprecated and will be removed in" - " Werkzeug 2.1. 'Response' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/json.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/json.py deleted file mode 100644 index ab6ed7b..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/json.py +++ /dev/null @@ -1,13 +0,0 @@ -import typing as t -import warnings - - -class JSONMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'JSONMixin' is deprecated and will be removed in Werkzeug" - " 2.1. 'Request' now includes the functionality directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/request.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/request.py deleted file mode 100644 index 60c3b5f..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/request.py +++ /dev/null @@ -1,660 +0,0 @@ -import functools -import json -import typing -import typing as t -import warnings -from io import BytesIO - -from .._internal import _wsgi_decoding_dance -from ..datastructures import CombinedMultiDict -from ..datastructures import EnvironHeaders -from ..datastructures import FileStorage -from ..datastructures import ImmutableMultiDict -from ..datastructures import iter_multi_items -from ..datastructures import MultiDict -from ..formparser import default_stream_factory -from ..formparser import FormDataParser -from ..sansio.request import Request as _SansIORequest -from ..utils import cached_property -from ..utils import environ_property -from ..wsgi import _get_server -from ..wsgi import get_input_stream -from werkzeug.exceptions import BadRequest - -if t.TYPE_CHECKING: - import typing_extensions as te - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - - -class Request(_SansIORequest): - """Represents an incoming WSGI HTTP request, with headers and body - taken from the WSGI environment. Has properties and methods for - using the functionality defined by various HTTP specs. The data in - requests object is read-only. - - Text data is assumed to use UTF-8 encoding, which should be true for - the vast majority of modern clients. Using an encoding set by the - client is unsafe in Python due to extra encodings it provides, such - as ``zip``. To change the assumed encoding, subclass and replace - :attr:`charset`. - - :param environ: The WSGI environ is generated by the WSGI server and - contains information about the server configuration and client - request. - :param populate_request: Add this request object to the WSGI environ - as ``environ['werkzeug.request']``. Can be useful when - debugging. - :param shallow: Makes reading from :attr:`stream` (and any method - that would read from it) raise a :exc:`RuntimeError`. Useful to - prevent consuming the form data in middleware, which would make - it unavailable to the final application. - - .. versionchanged:: 2.0 - Combine ``BaseRequest`` and mixins into a single ``Request`` - class. Using the old classes is deprecated and will be removed - in Werkzeug 2.1. - - .. versionchanged:: 0.5 - Read-only mode is enforced with immutable classes for all data. - """ - - #: 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 :doc:`/request_data` for more details. - #: - #: .. versionadded:: 0.5 - max_content_length: t.Optional[int] = 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 :doc:`/request_data` for more details. - #: - #: .. versionadded:: 0.5 - max_form_memory_size: t.Optional[int] = None - - #: The form data parser that shoud be used. Can be replaced to customize - #: the form date parsing. - form_data_parser_class: t.Type[FormDataParser] = FormDataParser - - #: Disable the :attr:`data` property to avoid reading from the input - #: stream. - #: - #: .. deprecated:: 2.0 - #: Will be removed in Werkzeug 2.1. Create the request with - #: ``shallow=True`` instead. - #: - #: .. versionadded:: 0.9 - disable_data_descriptor: t.Optional[bool] = None - - #: The WSGI environment containing HTTP headers and information from - #: the WSGI server. - environ: "WSGIEnvironment" - - #: Set when creating the request object. If ``True``, reading from - #: the request body will cause a ``RuntimeException``. Useful to - #: prevent modifying the stream from middleware. - shallow: bool - - def __init__( - self, - environ: "WSGIEnvironment", - populate_request: bool = True, - shallow: bool = False, - ) -> None: - super().__init__( - method=environ.get("REQUEST_METHOD", "GET"), - scheme=environ.get("wsgi.url_scheme", "http"), - server=_get_server(environ), - root_path=_wsgi_decoding_dance( - environ.get("SCRIPT_NAME") or "", self.charset, self.encoding_errors - ), - path=_wsgi_decoding_dance( - environ.get("PATH_INFO") or "", self.charset, self.encoding_errors - ), - query_string=environ.get("QUERY_STRING", "").encode("latin1"), - headers=EnvironHeaders(environ), - remote_addr=environ.get("REMOTE_ADDR"), - ) - self.environ = environ - - if self.disable_data_descriptor is not None: - warnings.warn( - "'disable_data_descriptor' is deprecated and will be" - " removed in Werkzeug 2.1. Create the request with" - " 'shallow=True' instead.", - DeprecationWarning, - stacklevel=2, - ) - shallow = shallow or self.disable_data_descriptor - - self.shallow = shallow - - if populate_request and not shallow: - self.environ["werkzeug.request"] = self - - @classmethod - def from_values(cls, *args: t.Any, **kwargs: t.Any) -> "Request": - """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: t.Callable[["Request"], "WSGIApplication"] - ) -> "WSGIApplication": - """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 - - @functools.wraps(f) - def application(*args): # type: ignore - 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 t.cast("WSGIApplication", application) - - def _get_file_stream( - self, - total_content_length: t.Optional[int], - content_type: t.Optional[str], - filename: t.Optional[str] = None, - content_length: t.Optional[int] = None, - ) -> t.BinaryIO: - """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) -> bool: - """``True`` if the request method carries content. By default - this is true if a ``Content-Type`` is sent. - - .. versionadded:: 0.8 - """ - return bool(self.environ.get("CONTENT_TYPE")) - - def make_form_data_parser(self) -> FormDataParser: - """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) -> None: - """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 - - if self.want_form_data_parsed: - parser = self.make_form_data_parser() - data = parser.parse( - self._get_stream_for_parsing(), - self.mimetype, - self.content_length, - self.mimetype_params, - ) - 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) -> t.BinaryIO: - """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) -> None: - """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) -> "Request": - return self - - def __exit__(self, exc_type, exc_value, tb) -> None: # type: ignore - self.close() - - @cached_property - def stream(self) -> t.BinaryIO: - """ - 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. - """ - if self.shallow: - raise RuntimeError( - "This request was created with 'shallow=True', reading" - " from the input stream is disabled." - ) - - return get_input_stream(self.environ) - - input_stream = environ_property[t.BinaryIO]( - "wsgi.input", - doc="""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 data(self) -> bytes: - """ - Contains the incoming request data as string in case it came with - a mimetype Werkzeug does not handle. - """ - return self.get_data(parse_form_data=True) - - @typing.overload - def get_data( # type: ignore - self, - cache: bool = True, - as_text: "te.Literal[False]" = False, - parse_form_data: bool = False, - ) -> bytes: - ... - - @typing.overload - def get_data( - self, - cache: bool = True, - as_text: "te.Literal[True]" = ..., - parse_form_data: bool = False, - ) -> str: - ... - - def get_data( - self, cache: bool = True, as_text: bool = False, parse_form_data: bool = False - ) -> t.Union[bytes, str]: - """This reads the buffered incoming data from the client into one - bytes object. 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 - 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 # type: ignore - - @cached_property - def form(self) -> "ImmutableMultiDict[str, str]": - """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) -> "CombinedMultiDict[str, str]": - """A :class:`werkzeug.datastructures.CombinedMultiDict` that - combines :attr:`args` and :attr:`form`. - - For GET requests, only ``args`` are present, not ``form``. - - .. versionchanged:: 2.0 - For GET requests, only ``args`` are present, not ``form``. - """ - sources = [self.args] - - if self.method != "GET": - # GET requests can have a body, and some caching proxies - # might not treat that differently than a normal GET - # request, allowing form data to "invisibly" affect the - # cache without indication in the query string / URL. - sources.append(self.form) - - args = [] - - for d in sources: - if not isinstance(d, MultiDict): - d = MultiDict(d) - - args.append(d) - - return CombinedMultiDict(args) - - @cached_property - def files(self) -> "ImmutableMultiDict[str, FileStorage]": - """: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 - - @property - def script_root(self) -> str: - """Alias for :attr:`self.root_path`. ``environ["SCRIPT_ROOT"]`` - without a trailing slash. - """ - return self.root_path - - @cached_property - def url_root(self) -> str: - """Alias for :attr:`root_url`. The URL with scheme, host, and - root path. For example, ``https://example.com/app/``. - """ - return self.root_url - - remote_user = environ_property[str]( - "REMOTE_USER", - doc="""If the server supports user authentication, and the - script is protected, this attribute contains the username the - user has authenticated as.""", - ) - is_multithread = environ_property[bool]( - "wsgi.multithread", - doc="""boolean that is `True` if the application is served by a - multithreaded WSGI server.""", - ) - is_multiprocess = environ_property[bool]( - "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[bool]( - "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.""", - ) - - # JSON - - #: A module or other object that has ``dumps`` and ``loads`` - #: functions that match the API of the built-in :mod:`json` module. - json_module = json - - @property - def json(self) -> t.Optional[t.Any]: - """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() - - # Cached values for ``(silent=False, silent=True)``. Initialized - # with sentinel values. - _cached_json: t.Tuple[t.Any, t.Any] = (Ellipsis, Ellipsis) - - def get_json( - self, force: bool = False, silent: bool = False, cache: bool = True - ) -> t.Optional[t.Any]: - """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(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: ValueError) -> t.Any: - """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(f"Failed to decode JSON object: {e}") - - -class StreamOnlyMixin: - """Mixin to create a ``Request`` that disables the ``data``, - ``form``, and ``files`` properties. Only ``stream`` is available. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Create the request with - ``shallow=True`` instead. - - .. versionadded:: 0.9 - """ - - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'StreamOnlyMixin' is deprecated and will be removed in" - " Werkzeug 2.1. Create the request with 'shallow=True'" - " instead.", - DeprecationWarning, - stacklevel=2, - ) - kwargs["shallow"] = True - super().__init__(*args, **kwargs) # type: ignore - - -class PlainRequest(StreamOnlyMixin, Request): - """A request object without ``data``, ``form``, and ``files``. - - .. deprecated:: 2.0 - Will be removed in Werkzeug 2.1. Create the request with - ``shallow=True`` instead. - - .. versionadded:: 0.9 - """ - - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'PlainRequest' is deprecated and will be removed in" - " Werkzeug 2.1. Create the request with 'shallow=True'" - " instead.", - DeprecationWarning, - stacklevel=2, - ) - - # Don't show the DeprecationWarning for StreamOnlyMixin. - with warnings.catch_warnings(): - warnings.simplefilter("ignore", DeprecationWarning) - super().__init__(*args, **kwargs) diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/response.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/response.py deleted file mode 100644 index a43c8bc..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/response.py +++ /dev/null @@ -1,890 +0,0 @@ -import json -import typing -import typing as t -import warnings -from http import HTTPStatus - -from .._internal import _to_bytes -from ..datastructures import Headers -from ..http import remove_entity_headers -from ..sansio.response import Response as _SansIOResponse -from ..urls import iri_to_uri -from ..urls import url_join -from ..utils import cached_property -from ..wsgi import ClosingIterator -from ..wsgi import get_current_url -from werkzeug._internal import _get_environ -from werkzeug.http import generate_etag -from werkzeug.http import http_date -from werkzeug.http import is_resource_modified -from werkzeug.http import parse_etags -from werkzeug.http import parse_range_header -from werkzeug.wsgi import _RangeWrapper - -if t.TYPE_CHECKING: - import typing_extensions as te - from _typeshed.wsgi import StartResponse - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - - -def _warn_if_string(iterable: t.Iterable) -> None: - """Helper for the response objects to check if the iterable returned - to the WSGI server is not a string. - """ - if isinstance(iterable, str): - 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: t.Iterable[t.Union[str, bytes]], charset: str -) -> t.Iterator[bytes]: - for item in iterable: - if isinstance(item, str): - yield item.encode(charset) - else: - yield item - - -def _clean_accept_ranges(accept_ranges: t.Union[bool, str]) -> str: - if accept_ranges is True: - return "bytes" - elif accept_ranges is False: - return "none" - elif isinstance(accept_ranges, str): - return accept_ranges - raise ValueError("Invalid accept_ranges value") - - -class Response(_SansIOResponse): - """Represents an outgoing WSGI HTTP response with body, status, and - headers. Has properties and methods for using the functionality - defined by various HTTP specs. - - The response body is flexible to support different use cases. The - simple form is passing bytes, or a string which will be encoded as - UTF-8. Passing an iterable of bytes or strings makes this a - streaming response. A generator is particularly useful for building - a CSV file in memory or using SSE (Server Sent Events). A file-like - object is also iterable, although the - :func:`~werkzeug.utils.send_file` helper should be used in that - case. - - The response object is itself a WSGI application callable. When - called (:meth:`__call__`) with ``environ`` and ``start_response``, - it will pass its status and headers to ``start_response`` then - return its body as an iterable. - - .. code-block:: python - - from werkzeug.wrappers.response import Response - - def index(): - return Response("Hello, World!") - - 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) - - :param response: The data for the body of the response. A string or - bytes, or tuple or list of strings or bytes, for a fixed-length - response, or any other iterable of strings or bytes for a - streaming response. Defaults to an empty body. - :param status: The status code for the response. Either an int, in - which case the default status message is added, or a string in - the form ``{code} {message}``, like ``404 Not Found``. Defaults - to 200. - :param headers: A :class:`~werkzeug.datastructures.Headers` object, - or a list of ``(key, value)`` tuples that will be converted to a - ``Headers`` object. - :param mimetype: The mime type (content type without charset or - other parameters) of the response. If the value starts with - ``text/`` (or matches some other special cases), the charset - will be added to create the ``content_type``. - :param content_type: The full content type of the response. - Overrides building the value from ``mimetype``. - :param direct_passthrough: Pass the response body directly through - as the WSGI iterable. This can be used when the body is a binary - file or other iterator of bytes, to skip some unnecessary - checks. Use :func:`~werkzeug.utils.send_file` instead of setting - this manually. - - .. versionchanged:: 2.0 - Combine ``BaseResponse`` and mixins into a single ``Response`` - class. Using the old classes is deprecated and will be removed - in Werkzeug 2.1. - - .. versionchanged:: 0.5 - The ``direct_passthrough`` parameter was added. - """ - - #: 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 - - #: The response body to send as the WSGI iterable. A list of strings - #: or bytes represents a fixed-length response, any other iterable - #: is a streaming response. Strings are encoded to bytes as UTF-8. - #: - #: Do not set to a plain string or bytes, that will cause sending - #: the response to be very inefficient as it will iterate one byte - #: at a time. - response: t.Union[t.Iterable[str], t.Iterable[bytes]] - - def __init__( - self, - response: t.Optional[ - t.Union[t.Iterable[bytes], bytes, t.Iterable[str], str] - ] = None, - status: t.Optional[t.Union[int, str, HTTPStatus]] = None, - headers: t.Optional[ - t.Union[ - t.Mapping[str, t.Union[str, int, t.Iterable[t.Union[str, int]]]], - t.Iterable[t.Tuple[str, t.Union[str, int]]], - ] - ] = None, - mimetype: t.Optional[str] = None, - content_type: t.Optional[str] = None, - direct_passthrough: bool = False, - ) -> None: - super().__init__( - status=status, - headers=headers, - mimetype=mimetype, - content_type=content_type, - ) - - #: Pass the response body directly through as the WSGI iterable. - #: This can be used when the body is a binary file or other - #: iterator of bytes, to skip some unnecessary checks. Use - #: :func:`~werkzeug.utils.send_file` instead of setting this - #: manually. - self.direct_passthrough = direct_passthrough - self._on_close: t.List[t.Callable[[], t.Any]] = [] - - # 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, (str, bytes, bytearray)): - self.set_data(response) - else: - self.response = response - - def call_on_close(self, func: t.Callable[[], t.Any]) -> t.Callable[[], t.Any]: - """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) -> str: - if self.is_sequence: - body_info = f"{sum(map(len, self.iter_encoded()))} bytes" - else: - body_info = "streamed" if self.is_streamed else "likely-streamed" - return f"<{type(self).__name__} {body_info} [{self.status}]>" - - @classmethod - def force_type( - cls, response: "Response", environ: t.Optional["WSGIEnvironment"] = None - ) -> "Response": - """Enforce that the WSGI response is a response object of the current - type. Werkzeug will use the :class:`Response` internally in many - situations like the exceptions. If you call :meth:`get_response` on an - exception you will get back a regular :class:`Response` 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, Response): - if environ is None: - raise TypeError( - "cannot convert WSGI application into response" - " objects without an environ" - ) - - from ..test import run_wsgi_app - - response = Response(*run_wsgi_app(response, environ)) - - response.__class__ = cls - return response - - @classmethod - def from_app( - cls, app: "WSGIApplication", environ: "WSGIEnvironment", buffered: bool = False - ) -> "Response": - """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. - """ - from ..test import run_wsgi_app - - return cls(*run_wsgi_app(app, environ, buffered)) - - @typing.overload - def get_data(self, as_text: "te.Literal[False]" = False) -> bytes: - ... - - @typing.overload - def get_data(self, as_text: "te.Literal[True]") -> str: - ... - - def get_data(self, as_text: bool = False) -> t.Union[bytes, str]: - """The string representation of the response body. Whenever you call - this property the response 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 - string. - - .. versionadded:: 0.9 - """ - self._ensure_sequence() - rv = b"".join(self.iter_encoded()) - - if as_text: - return rv.decode(self.charset) - - return rv - - def set_data(self, value: t.Union[bytes, str]) -> None: - """Sets a new string as response. The value must be a string or - bytes. If a string is set it's encoded to the charset of the - response (utf-8 by default). - - .. versionadded:: 0.9 - """ - # if a string is set, it's encoded directly so that we - # can set the content length - if isinstance(value, str): - 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) -> t.Optional[int]: - """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: bool = False) -> None: - """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) # type: ignore - 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) -> None: - """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) -> t.Iterator[bytes]: - """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) - - @property - def is_streamed(self) -> bool: - """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) # type: ignore - except (TypeError, AttributeError): - return True - return False - - @property - def is_sequence(self) -> bool: - """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) -> None: - """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() # type: ignore - for func in self._on_close: - func() - - def __enter__(self) -> "Response": - return self - - def __exit__(self, exc_type, exc_value, tb): # type: ignore - self.close() - - def freeze(self, no_etag: None = None) -> None: - """Make the response object ready to be pickled. Does the - following: - - * Buffer the response into a list, ignoring - :attr:`implicity_sequence_conversion` and - :attr:`direct_passthrough`. - * Set the ``Content-Length`` header. - * Generate an ``ETag`` header if one is not already set. - - .. versionchanged:: 2.0 - An ``ETag`` header is added, the ``no_etag`` parameter is - deprecated and will be removed in Werkzeug 2.1. - - .. versionchanged:: 0.6 - The ``Content-Length`` header is set. - """ - # Always freeze the encoded response body, ignore - # implicit_sequence_conversion and direct_passthrough. - self.response = list(self.iter_encoded()) - self.headers["Content-Length"] = str(sum(map(len, self.response))) - - if no_etag is not None: - warnings.warn( - "The 'no_etag' parameter is deprecated and will be" - " removed in Werkzeug 2.1.", - DeprecationWarning, - stacklevel=2, - ) - - self.add_etag() - - def get_wsgi_headers(self, environ: "WSGIEnvironment") -> Headers: - """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: t.Optional[str] = None - content_location: t.Optional[str] = None - content_length: t.Optional[t.Union[str, int]] = 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 == "location": - location = value - elif ikey == "content-location": - content_location = value - elif ikey == "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, str): - # 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, str): - 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, str): - 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 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: - # Something other than bytes, 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: "WSGIEnvironment") -> t.Iterable[bytes]: - """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: t.Iterable[bytes] = () - elif self.direct_passthrough: - if __debug__: - _warn_if_string(self.response) - return self.response # type: ignore - else: - iterable = self.iter_encoded() - return ClosingIterator(iterable, self.close) - - def get_wsgi_response( - self, environ: "WSGIEnvironment" - ) -> t.Tuple[t.Iterable[bytes], str, t.List[t.Tuple[str, str]]]: - """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: "WSGIEnvironment", start_response: "StartResponse" - ) -> t.Iterable[bytes]: - """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 - - # JSON - - #: A module or other object that has ``dumps`` and ``loads`` - #: functions that match the API of the built-in :mod:`json` module. - json_module = json - - @property - def json(self) -> t.Optional[t.Any]: - """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() - - def get_json(self, force: bool = False, silent: bool = False) -> t.Optional[t.Any]: - """Parse :attr:`data` as JSON. Useful during testing. - - If the mimetype does not indicate JSON - (:mimetype:`application/json`, see :meth:`is_json`), this - returns ``None``. - - Unlike :meth:`Request.get_json`, the result is not cached. - - :param force: Ignore the mimetype and always try to parse JSON. - :param silent: Silence parsing errors and return ``None`` - instead. - """ - if not (force or self.is_json): - return None - - data = self.get_data() - - try: - return self.json_module.loads(data) - except ValueError: - if not silent: - raise - - return None - - # Stream - - @cached_property - def stream(self) -> "ResponseStream": - """The response iterable as write-only stream.""" - return ResponseStream(self) - - def _wrap_range_response(self, start: int, length: int) -> None: - """Wrap existing Response in case of Range Request context.""" - if self.status_code == 206: - self.response = _RangeWrapper(self.response, start, length) # type: ignore - - def _is_range_request_processable(self, environ: "WSGIEnvironment") -> bool: - """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: "WSGIEnvironment", - complete_length: t.Optional[int] = None, - accept_ranges: t.Optional[t.Union[bool, str]] = None, - ) -> bool: - """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. - - .. versionchanged:: 2.0 - Returns ``False`` if the length is 0. - """ - from ..exceptions import RequestedRangeNotSatisfiable - - if ( - accept_ranges is None - or complete_length is None - or complete_length == 0 - 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 # type: ignore - self.status_code = 206 - self._wrap_range_response(range_tuple[0], content_length) - return True - - def make_conditional( - self, - request_or_environ: "WSGIEnvironment", - accept_ranges: t.Union[bool, str] = False, - complete_length: t.Optional[int] = None, - ) -> "Response": - """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. - - .. versionchanged:: 2.0 - Range processing is skipped if length is 0 instead of - raising a 416 Range Not Satisfiable error. - """ - 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: bool = False, weak: bool = False) -> None: - """Add an etag for the current response if there is none yet. - - .. versionchanged:: 2.0 - SHA-1 is used to generate the value. MD5 may not be - available in some environments. - """ - if overwrite or "etag" not in self.headers: - self.set_etag(generate_etag(self.get_data()), weak) - - -class ResponseStream: - """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: Response): - self.response = response - self.closed = False - - def write(self, value: bytes) -> int: - if self.closed: - raise ValueError("I/O operation on closed file") - self.response._ensure_sequence(mutable=True) - self.response.response.append(value) # type: ignore - self.response.headers.pop("Content-Length", None) - return len(value) - - def writelines(self, seq: t.Iterable[bytes]) -> None: - for item in seq: - self.write(item) - - def close(self) -> None: - self.closed = True - - def flush(self) -> None: - if self.closed: - raise ValueError("I/O operation on closed file") - - def isatty(self) -> bool: - if self.closed: - raise ValueError("I/O operation on closed file") - return False - - def tell(self) -> int: - self.response._ensure_sequence() - return sum(map(len, self.response.response)) - - @property - def encoding(self) -> str: - return self.response.charset - - -class ResponseStreamMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'ResponseStreamMixin' is deprecated and will be removed in" - " Werkzeug 2.1. 'Response' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore diff --git a/venv/lib/python3.9/site-packages/werkzeug/wrappers/user_agent.py b/venv/lib/python3.9/site-packages/werkzeug/wrappers/user_agent.py deleted file mode 100644 index 184ffd0..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wrappers/user_agent.py +++ /dev/null @@ -1,14 +0,0 @@ -import typing as t -import warnings - - -class UserAgentMixin: - def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: - warnings.warn( - "'UserAgentMixin' is deprecated and will be removed in" - " Werkzeug 2.1. 'Request' now includes the functionality" - " directly.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args, **kwargs) # type: ignore diff --git a/venv/lib/python3.9/site-packages/werkzeug/wsgi.py b/venv/lib/python3.9/site-packages/werkzeug/wsgi.py deleted file mode 100644 index 9439a1e..0000000 --- a/venv/lib/python3.9/site-packages/werkzeug/wsgi.py +++ /dev/null @@ -1,982 +0,0 @@ -import io -import re -import typing as t -from functools import partial -from functools import update_wrapper -from itertools import chain - -from ._internal import _make_encode_wrapper -from ._internal import _to_bytes -from ._internal import _to_str -from .sansio import utils as _sansio_utils -from .sansio.utils import host_is_trusted # noqa: F401 # Imported as part of API -from .urls import _URLTuple -from .urls import uri_to_iri -from .urls import url_join -from .urls import url_parse -from .urls import url_quote - -if t.TYPE_CHECKING: - from _typeshed.wsgi import WSGIApplication - from _typeshed.wsgi import WSGIEnvironment - - -def responder(f: t.Callable[..., "WSGIApplication"]) -> "WSGIApplication": - """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: "WSGIEnvironment", - root_only: bool = False, - strip_querystring: bool = False, - host_only: bool = False, - trusted_hosts: t.Optional[t.Iterable[str]] = None, -) -> str: - """Recreate the URL for a request from the parts in a WSGI - environment. - - The URL is an IRI, not a URI, so it may contain Unicode characters. - Use :func:`~werkzeug.urls.iri_to_uri` to convert it to ASCII. - - :param environ: The WSGI environment to get the URL parts from. - :param root_only: Only build the root path, don't include the - remaining path or query string. - :param strip_querystring: Don't include the query string. - :param host_only: Only build the scheme and host. - :param trusted_hosts: A list of trusted host names to validate the - host against. - """ - parts = { - "scheme": environ["wsgi.url_scheme"], - "host": get_host(environ, trusted_hosts), - } - - if not host_only: - parts["root_path"] = environ.get("SCRIPT_NAME", "") - - if not root_only: - parts["path"] = environ.get("PATH_INFO", "") - - if not strip_querystring: - parts["query_string"] = environ.get("QUERY_STRING", "").encode("latin1") - - return _sansio_utils.get_current_url(**parts) - - -def _get_server( - environ: "WSGIEnvironment", -) -> t.Optional[t.Tuple[str, t.Optional[int]]]: - name = environ.get("SERVER_NAME") - - if name is None: - return None - - try: - port: t.Optional[int] = int(environ.get("SERVER_PORT", None)) - except (TypeError, ValueError): - # unix socket - port = None - - return name, port - - -def get_host( - environ: "WSGIEnvironment", trusted_hosts: t.Optional[t.Iterable[str]] = None -) -> str: - """Return the host for the given WSGI environment. - - The ``Host`` header is preferred, then ``SERVER_NAME`` if it's not - set. The returned 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: A WSGI environment dict. - :param trusted_hosts: A list of trusted host names. - - :return: Host, with port if necessary. - :raise ~werkzeug.exceptions.SecurityError: If the host is not - trusted. - """ - return _sansio_utils.get_host( - environ["wsgi.url_scheme"], - environ.get("HTTP_HOST"), - _get_server(environ), - trusted_hosts, - ) - - -def get_content_length(environ: "WSGIEnvironment") -> t.Optional[int]: - """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 - return None - - -def get_input_stream( - environ: "WSGIEnvironment", safe_fallback: bool = True -) -> t.BinaryIO: - """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 = t.cast(t.BinaryIO, 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 io.BytesIO() if safe_fallback else stream - - # Otherwise limit the stream to the content length - return t.cast(t.BinaryIO, LimitedStream(stream, content_length)) - - -def get_query_string(environ: "WSGIEnvironment") -> str: - """Returns the ``QUERY_STRING`` from the WSGI environment. This also - takes care of the WSGI decoding dance. The string returned will be - restricted to ASCII characters. - - :param environ: WSGI environment to get the query string from. - - .. versionadded:: 0.9 - """ - qs = environ.get("QUERY_STRING", "").encode("latin1") - # 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 url_quote(qs, safe=":&%=+$!*'(),") - - -def get_path_info( - environ: "WSGIEnvironment", charset: str = "utf-8", errors: str = "replace" -) -> str: - """Return the ``PATH_INFO`` from the WSGI environment and decode it - unless ``charset`` is ``None``. - - :param environ: WSGI environment 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. - - .. versionadded:: 0.9 - """ - path = environ.get("PATH_INFO", "").encode("latin1") - return _to_str(path, charset, errors, allow_none_charset=True) # type: ignore - - -def get_script_name( - environ: "WSGIEnvironment", charset: str = "utf-8", errors: str = "replace" -) -> str: - """Return the ``SCRIPT_NAME`` from the WSGI environment and decode - it unless `charset` is set to ``None``. - - :param environ: WSGI environment 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. - - .. versionadded:: 0.9 - """ - path = environ.get("SCRIPT_NAME", "").encode("latin1") - return _to_str(path, charset, errors, allow_none_charset=True) # type: ignore - - -def pop_path_info( - environ: "WSGIEnvironment", charset: str = "utf-8", errors: str = "replace" -) -> t.Optional[str]: - """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` bytes are 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. - :param charset: The ``encoding`` parameter passed to - :func:`bytes.decode`. - :param errors: The ``errors`` paramater passed to - :func:`bytes.decode`. - """ - 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 = path.encode("latin1") - else: - segment, path = path.split("/", 1) - environ["PATH_INFO"] = f"/{path}" - environ["SCRIPT_NAME"] = script_name + segment - rv = segment.encode("latin1") - - return _to_str(rv, charset, errors, allow_none_charset=True) # type: ignore - - -def peek_path_info( - environ: "WSGIEnvironment", charset: str = "utf-8", errors: str = "replace" -) -> t.Optional[str]: - """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` bytes are 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_str( # type: ignore - segments[0].encode("latin1"), charset, errors, allow_none_charset=True - ) - return None - - -def extract_path_info( - environ_or_baseurl: t.Union[str, "WSGIEnvironment"], - path_or_url: t.Union[str, _URLTuple], - charset: str = "utf-8", - errors: str = "werkzeug.url_quote", - collapse_http_schemes: bool = True, -) -> t.Optional[str]: - """Extracts the path info from the given URL (or WSGI environment) and - path. The path info returned is a string. 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') - '/hello' - >>> extract_path_info('http://example.com/app', - ... 'https://example.com/app/hello') - '/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. - :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: str, netloc: str) -> str: - parts = netloc.split("@", 1)[-1].split(":", 1) - port: t.Optional[str] - - if len(parts) == 2: - netloc, port = parts - if (scheme == "http" and port == "80") or ( - scheme == "https" and port == "443" - ): - port = None - else: - netloc = parts[0] - port = None - - if port is not None: - netloc += f":{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 ("http", "https"): - return None - else: - if not (base_scheme in ("http", "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("/") - if not cur_path.startswith(base_path): - return None - - return f"/{cur_path[len(base_path) :].lstrip('/')}" - - -class ClosingIterator: - """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: t.Iterable[bytes], - callbacks: t.Optional[ - t.Union[t.Callable[[], None], t.Iterable[t.Callable[[], None]]] - ] = None, - ) -> None: - iterator = iter(iterable) - self._next = t.cast(t.Callable[[], bytes], 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) -> "ClosingIterator": - return self - - def __next__(self) -> bytes: - return self._next() - - def close(self) -> None: - for callback in self._callbacks: - callback() - - -def wrap_file( - environ: "WSGIEnvironment", file: t.BinaryIO, buffer_size: int = 8192 -) -> t.Iterable[bytes]: - """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:`Response.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)( # type: ignore - file, buffer_size - ) - - -class FileWrapper: - """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:`Response` 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: t.BinaryIO, buffer_size: int = 8192) -> None: - self.file = file - self.buffer_size = buffer_size - - def close(self) -> None: - if hasattr(self.file, "close"): - self.file.close() - - def seekable(self) -> bool: - if hasattr(self.file, "seekable"): - return self.file.seekable() - if hasattr(self.file, "seek"): - return True - return False - - def seek(self, *args: t.Any) -> None: - if hasattr(self.file, "seek"): - self.file.seek(*args) - - def tell(self) -> t.Optional[int]: - if hasattr(self.file, "tell"): - return self.file.tell() - return None - - def __iter__(self) -> "FileWrapper": - return self - - def __next__(self) -> bytes: - data = self.file.read(self.buffer_size) - if data: - return data - raise StopIteration() - - -class _RangeWrapper: - # 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:`Response` 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: t.Union[t.Iterable[bytes], t.BinaryIO], - start_byte: int = 0, - byte_range: t.Optional[int] = 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 = start_byte + byte_range - - self.read_length = 0 - self.seekable = ( - hasattr(iterable, "seekable") and iterable.seekable() # type: ignore - ) - self.end_reached = False - - def __iter__(self) -> "_RangeWrapper": - return self - - def _next_chunk(self) -> bytes: - try: - chunk = next(self.iterable) - self.read_length += len(chunk) - return chunk - except StopIteration: - self.end_reached = True - raise - - def _first_iteration(self) -> t.Tuple[t.Optional[bytes], int]: - chunk = None - if self.seekable: - self.iterable.seek(self.start_byte) # type: ignore - self.read_length = self.iterable.tell() # type: ignore - 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) -> bytes: - 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) -> bytes: - chunk = self._next() - if chunk: - return chunk - self.end_reached = True - raise StopIteration() - - def close(self) -> None: - if hasattr(self.iterable, "close"): - self.iterable.close() # type: ignore - - -def _make_chunk_iter( - stream: t.Union[t.Iterable[bytes], t.BinaryIO], - limit: t.Optional[int], - buffer_size: int, -) -> t.Iterator[bytes]: - """Helper for the line and chunk iter functions.""" - if isinstance(stream, (bytes, bytearray, str)): - 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 - stream = t.cast(t.BinaryIO, stream) - if not isinstance(stream, LimitedStream) and limit is not None: - stream = t.cast(t.BinaryIO, LimitedStream(stream, limit)) - _read = stream.read - while True: - item = _read(buffer_size) - if not item: - break - yield item - - -def make_line_iter( - stream: t.Union[t.Iterable[bytes], t.BinaryIO], - limit: t.Optional[int] = None, - buffer_size: int = 10 * 1024, - cap_at_buffer: bool = False, -) -> t.Iterator[bytes]: - """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_encode_wrapper(first_item) - empty = t.cast(bytes, s("")) - cr = t.cast(bytes, s("\r")) - lf = t.cast(bytes, s("\n")) - crlf = t.cast(bytes, s("\r\n")) - - _iter = t.cast(t.Iterator[bytes], chain((first_item,), _iter)) - - def _iter_basic_lines() -> t.Iterator[bytes]: - _join = empty.join - buffer: t.List[bytes] = [] - while True: - new_data = next(_iter, "") - if not new_data: - break - new_buf: t.List[bytes] = [] - buf_size = 0 - for item in t.cast( - t.Iterator[bytes], 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: t.Union[t.Iterable[bytes], t.BinaryIO], - separator: bytes, - limit: t.Optional[int] = None, - buffer_size: int = 10 * 1024, - cap_at_buffer: bool = False, -) -> t.Iterator[bytes]: - """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, b"") - if not first_item: - return - - _iter = t.cast(t.Iterator[bytes], chain((first_item,), _iter)) - if isinstance(first_item, str): - separator = _to_str(separator) - _split = re.compile(f"({re.escape(separator)})").split - _join = "".join - else: - separator = _to_bytes(separator) - _split = re.compile(b"(" + re.escape(separator) + b")").split - _join = b"".join - - buffer: t.List[bytes] = [] - while True: - new_data = next(_iter, b"") - if not new_data: - break - chunks = _split(new_data) - new_buf: t.List[bytes] = [] - 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) - - -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: t.BinaryIO, limit: int) -> None: - self._read = stream.read - self._readline = stream.readline - self._pos = 0 - self.limit = limit - - def __iter__(self) -> "LimitedStream": - return self - - @property - def is_exhausted(self) -> bool: - """If the stream is exhausted this attribute is `True`.""" - return self._pos >= self.limit - - def on_exhausted(self) -> bytes: - """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) -> bytes: - """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: int = 1024 * 64) -> None: - """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: t.Optional[int] = None) -> bytes: - """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 (OSError, 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: t.Optional[int] = None) -> bytes: - """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, OSError): - return self.on_disconnect() - if size and not line: - return self.on_disconnect() - self._pos += len(line) - return line - - def readlines(self, size: t.Optional[int] = None) -> t.List[bytes]: - """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 True: - 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) -> int: - """Returns the position of the stream. - - .. versionadded:: 0.9 - """ - return self._pos - - def __next__(self) -> bytes: - line = self.readline() - if not line: - raise StopIteration() - return line - - def readable(self) -> bool: - return True diff --git a/venv/lib64 b/venv/lib64 deleted file mode 120000 index 7951405..0000000 --- a/venv/lib64 +++ /dev/null @@ -1 +0,0 @@ -lib \ No newline at end of file diff --git a/venv/pyvenv.cfg b/venv/pyvenv.cfg deleted file mode 100644 index 5c102c1..0000000 --- a/venv/pyvenv.cfg +++ /dev/null @@ -1,3 +0,0 @@ -home = /usr/bin -include-system-site-packages = false -version = 3.9.2 diff --git a/venv/requirements.txt b/venv/requirements.txt deleted file mode 100644 index 5c8c61b..0000000 --- a/venv/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -flask==1.0.2 \ No newline at end of file diff --git a/venv/share/python-wheels/CacheControl-0.12.6-py2.py3-none-any.whl b/venv/share/python-wheels/CacheControl-0.12.6-py2.py3-none-any.whl deleted file mode 100644 index 3a4ecd11ae5ad3f627b7f67fca59f3ed3574f2d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23441 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 P81^iH)q3Z2{(Sd;6Kg5a diff --git a/venv/share/python-wheels/appdirs-1.4.4-py2.py3-none-any.whl b/venv/share/python-wheels/appdirs-1.4.4-py2.py3-none-any.whl deleted file mode 100644 index fa44262c4435bbb1a67418122e3106df2374f796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14285 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 S>m9`3g8bKi7qk8A?tcNUW84D( diff --git a/venv/share/python-wheels/certifi-2020.6.20-py2.py3-none-any.whl b/venv/share/python-wheels/certifi-2020.6.20-py2.py3-none-any.whl deleted file mode 100644 index 0697f2dce7037c1102f819984998c7069e417b6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161344 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 K`CUIVu>S+j^@rjB diff --git a/venv/share/python-wheels/chardet-4.0.0-py2.py3-none-any.whl b/venv/share/python-wheels/chardet-4.0.0-py2.py3-none-any.whl deleted file mode 100644 index 4b26007284a526009c73d6b3ed43141b1ad64e59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174749 zcmaI7Q*>s*)-@b;Y;|ngwr$(a6WblzR>z%=ZQHhOTTi}z$A9sUb1u%J%HbEHbP(VP;2thzd|GhP}GIlmIcco`zVEXr%S-ZH> zTLUZ{7=_iudBD|7l{p@2hGBq9uq&L(7^Tqpu_(*?^q^q}F?oL2a9;zIF z^*o3@BxLkxo~bbOE2Ri{-<4sXYq~yHI=LtBzEvx~hHan1Vjur2nCwy0rZ_$mgeuxFoN!dpX5BCB18!wxyw6q5T^6puv0zY1=*?)1jVq#Y>+o7`xu5<<47o0yS1WdD$YJ z<4~P8``VTB)UMjzLHtag)hwQ(#(PCOkN6_ot~A)G8$ET1(!3EBSJ`zGV0yFlXYF$Q z^wZOR1ksdr96ZiSMt?%LP%wb7-esZEKHZ<&EPWd*M>l4@GO{F5-HzjnO(gfJj%qYb z6@L&sms}veT^}Ve?j=W}`(xZqwAuA5?t$1m;E#nQ6e8{h)J=Pe4TR z>9TpUMTJwrMCq`{{_&Tm^(a7Ir>UiN2$f}XeMnt=x;`rLYq!PuYer4 zr(4(8g@ZgV6`(s{(3NMimfo_J(anIV{y4amT(uT_5z)-m{}MI{jlnHkdB`ueF~;A% zWL&0O;mSC33jR^MRybSo6yhq&zE_<2oOCsUuIAv4>+NegFwCYv*L?t^ zi8E4_q!$&@#_85f^_6gQ$Gd$)pL&}$zVEg~P433f!YQ9r1~^T=-4$Uv^9BqO2S+IC zJi9x1v&iOoHFhp<4K2UA#t#I&EPKuj#MXEn`9w*l7rL$g9J#r4N^s_}V&L@)_4#xt z#I{e}WC=*^sw-tG?%L(<5pJkxS97gW8!Wdshj14q1|kEsg{|E zxbN8;lyOQV3&{;z`qT%bxBI2?W8or(<@qWW@IIB^M52OX-gw?^U{5@Y&EdIjE|%zS zRr@?LpNt8(Gw8Cp+g7eXJ@vUhzxlY~cpHW^A46@*IJ1`?RcXvU_z*BgDmWiBaCcNz zBGP<+y0}S@Y3}FdIj=^`*qBW$KVw8W)VCQ6O1q*rEme(H_j&!6(2SB8t(RnC-5Sy8 z(~Zj9tiE&QFgA~!(x6;GMpJSBW5;2duTS42v(D!JCEUpzQpNftoO^Oo?NV2X_>Q|$ zIYm_#!)xm*H^YxpI^2A$IzWP%L|D{kPXi+p;9HNi+COqa2tNS;IZ*?qe7{E<1{8Qk z)ikJb21*qwxx8tkNe{DX!k>ZrVxt=5a_1y>6}(1(*1{E9M%OwUu(cRF-ICxPh420G zMxJxEwaqeF-1gMf=uBH_p0qI2P%PV@J{V3TBgJrMiYP(?n|=PAiHndBfvaryS9$|U zkhO#`oGEAU|8{HKo|BkPRK%4}ifmlel|9;EvZ=F%6i2w#G1-NyOt=j%;#mqz2$<6o zeaB0|{rO(RxA3?b+*xS_E_C%L>ypH-b)oz8W&5aE$^o+TR}1Q#GD;7)ZZUS4eHs`k zs=U<^bBpmJV6=d2ourBKn%8Qiiel}pAAWvCLjV4Q$iU9cLvL5Z`H5(!qrOp+``sw; z)Uoqb>MQdgcw5OZ9Ak6&*mEc&w%YuqdnxL3y~Ip_v+uDE+1M5$(^U3~uAIr=ME>ls z=@GWku?QF`Qmn#3%w(F&ElZx(uIewIN;?9ZY&+-IIdk4I5!Nc-+pG^S@98C(}~Z##%eNy7kQ zljyg%J;OQy)YKai1WNJHs0F5bJ=G^;VsS-o$n^1HP)E(zaci|e^gJs(Sn~7=kA*M0)x5#6?=#@+aDk>+C_{yvC(enyYR%b36f6bNyC5{WgTLdCfIFeR_hQ{YOL@ ze>YdNS^^hU*o>Yqo^+&_;8?5zf5-S?dC${AI~xuKC0rp;gZ@eLX@B_FnhKzwRmr~W zqfe_G1Mo;$#GkU<$hkq2#TIW?!qT+I~Ce zQ(r6XZ4@(Zjh8J4(33(T$sL|&frg?!i5C7{@koAvX&g_KUjZ>n?qZ96iw{s({l0KO zdR7bAJF0I_>)Pt@GuAqmI02-7z82eF*ix6_>W`#$dL~GlE*c>9Ee!|>!`UiX138#C31$Pwo$-r75)!Zi9YJ%ebHnkzf;gs;8 zB-~&}`hBVIaliXVxw?8~AB{SREZ;VQk)e%QUUs5HjrYX=v&;LJK-c#t>*aQ1uwAw6 z4aeV`N1gc-$j5S$x8583Z0Yi1>AT^m2@0Vm4bEyAwBQVJ-w>mA5lH4;5jx6=oHKBN z#Zxh?{Msj@&_u!nroeR_SmBfhsWIX2Bxl7O5!Aj5UdpW!MVubY>f|JBQ5tvaTb#ol zX>o6;p%Pi>`q^-V!4r*f%r-DJy>t#@SU0puVFfSqA*b0U%F~8z!GMXTRWiClil=Dz zA&6|M##513<6H%QY_MddN?VrLs_St<6;7e{5`9z(YqVSwr9y$^S({zLNh5-byI+5s zpf@TDed;o^v~Xb?l~_G-M+bwZ!m1BqJ;#QheeUnAkh@zX(cES8 z3tD3Cr3{f^J;xxHAEBOv`@J$GEsp)<)S&0$CUee1;E0(J2;MQ$fC}ptcO{=!- z9JgKqE%T3yc2=m%kiV+QKnHDgbS|q9KZcd9iE}24MZM)}$E$y?{_I{M1Fv$vBauQ% zrrN}zw3Bb;zfaq4!H7(ElBc}w4#}{B$3+G%*ZsZptjHcO-^fT-wA2_5*~mDB$;5X~ z$vQ(KVs-8_=UkSOW}oB7FZrs7-LBX;aqxOM*(pn(IXuemd4km%LqoCMQpm}39lo(dFz%BO_QJY>^@jzx?8DC?EjDXEZq)#$d-iK$%4rYztzVuS!NkXekp zf~2{cOSQ8r<5B0zQV>#*YR1g#tyoKE4sOEo2p{TV$4xS5o0r3FsLvb4d6WE{&x;GQ zUGG$zR<=~J)lABk48A1CBVaJqe0D;YRcydz=z>zWn2Qfbl4kEz#WP#9&#WYIkieIe z($GZ)UsAE`V*~dIQ@3$Gyv>#O7d=4daA(u&OybU0CYa@0w}^F|D{^<`bXbd{Fs3x9 zUU`2b#1V#&6oFNnvgbx+!4HCD$trgO(E5;7xX9X%LG=!zQw=cF46!BGJf7)u{P6Mr zq#fB{H9ws18t#H|19ckOL?W94IZ*b1(9S9*I67z2?Bpq)%LOH`$JG+GR1T49-Ei)@>;yo`XyAfT)Vof8fAKtn3-i-DaRFzOCrBbX-v;Z4na2Vd?o0g*YFL{$U0V# z{TG%L#`-cnANZ;}aShbY>(dJE{_LFR9&TEw`Do(uG+{Hs5!n&FTP6Ckr&>Bl=Pejb zQf;5@x(SX)*A{8V)VrFWb%Gch50gW?qqG3eOSBH$F?`WU^U=h{Iu%snmw}(4Lgyx)%&T)FrnR z!$Q|n7;_L!cELwCDeXDcvk^n1V7ff9wF*GL=}UZzImo)n9Z=EmZX<_MpHEqQ3NwpY ze}qD8+G>{ymhyNrnqmO3#aK(zgNZv&#ob0cv*Xb>aGh{Q3oFt(?co-oc=1205>?CQ>yNBet8)Lk=g z^cyA$5e%WDX3_`6yq$|65pU7U-&~V6Y4`U4lA)Xdm#xJxGdDHy78TT?X;FY<{}Z6G z^RI1a7&j!CWIJ+L*0 zq>n(4Hiv7}RqVJt@rP*PyOX7CYc8xWA8|FJ*~fUwJ-$qh&Q*Zb-DdYSBy z>2yW6+SUopsGcZVL#LW#qoDX{x~q9`v7fP==>6hn=o7iu0Z$b*DR}4biEl>SU3rE* z9~K;5tjb?ep?_GOwALt(9sfAsdSm)m{sFa+S-8qB>erGYsb44}ke)j(@+ZYeiMa1$ zvfZ!!^7JD^d;GrqT%sJuI3y*D>>68BM~&V7LqJ^o5lBgR!1Gsf#Uee+Gcl_i zUbXSG<|tWG-Y#IX z|6qWK&m`SupWMDRT1UTP^KRiz;@WN(b9%PTZ%vF7%dERBx+546zT6j=_8ut_k~3lD za%v(59z6xM&T3@}tL;UKVAzh%@(9g&ib3_#J{M|FoaLC_YxQ!Bfek8nPYNb%l5F~F z;m%NRO-H-$xZAw;$&(mbvt?jjLbLlKe)NNHu1nSF=5yBYs>a$Tw@Hw$`@v@mR3^i<>RriGxLF%q^47 zfecadW|Vu6SCsxveGR?P1*~SSNBbFwLkDab3`k~4{FLY9o9KEOg1lG4^~ydVissK8tb7=z zbti9_Ejtb#;P?IZQnQGFm7X7Wwt!mD<0vQ&TvepS5k9j|ju?)rn~{$h>+LgyCa#VL z3=IwU=E;y?viy%ym@cZzd~hny2KIl4@DL`oTxDS4hH^CbjuvKhxw zq)zWfxH|C2=au-LE$($jjReh`a6slXhf7mx{I`)zv{^Ruk0A|=`a`OGiMC1cZk0d%oO~-TYU0$p zjGlqcQ}uR9?cdU)h9uEls57<*wwWb(jOl#i5V{th6rlx4F_H4{)El*y0tICCRKM#w zI<~SDHUEsoIHVAmpfuCu0%MPMKaM^>xtXr93VUjzDME` z4sT+4F~a>ER2ig^6|=E6X`4d$0s1snRHva#pkwBagw~+N_9#(~VNFKDGff&P9;#Xq zLwts?Hm*tO#EL!VlxE!&LbI({pQmPsRZ?rS~MwhlH(Q{XPU@uf1dZLz36#(LMF$ zgVz@Cy0Xp%9cW}3%gJjKlSGG!IJgPA919;{tC+umT{ChKmRLR>C_O2+*ro48kHd}* zfst3jq+42}BwNR{!^wsbzx;*?_BGwq580VKJf7f(`hBDVcaT~N=KX>xWwSu&;IrGI zc_doqf4Yp+^}g2|Ftl1*OkdfAtUGub=4GYqOlTA3Yp6{2;0|Ou{vbn>EKtOwNp5q% z{M|PCs&b`0l|Jt)Tjo=0gtbF=5)%PNFtC)YH;j_`DeJ*FU_ zFB6#!A}=!Fe5Qrg0X-Mvi&xh2LhhR0HkOd#@U}^*4aHyM(jSHT^uh3Q&SI@BMc{S>qRY$KKqX85d5|nfv=3Zc0F|sEwO7%<02oR{D`q zjciqLnQ)mG$;lT-Zl0@8E+AWA6S3<|KYJQ@r=ZyBY{%Ai*Z#3p&DmMHto9()ZUbSk zCC#7sM_E$@WjDHLKBE6`gNp!Q;n42U>HWx;%{mxt`?0wyH@@6$nss}&?X{8I=`K>| zrwm*k=EG0UqM-0MS^~rsonfvRB420r)0c_wfdLgSrqiA~rsgE;VvXSo*AIM~C7#eK z!sy(?yUtNX)#`-=QJkCFCXup7;uS7aFBvCsKe97&=<}*GJL|AvzXm8gSSQ2|C3)I3pMg9d6$dK|V1skTYm%5L>c2 zhHj9+$^(h8Q6pkbT|O$Tx$CNgin3o6DR5;XsoN8OtngpvS{CS&n=1$mC8Z|(Q@SK zt|nL}aazNtBjw$sUvkDha(Qiw!c-NYuUfx*(u`)vyn#iEu9OBKUpj&6_MN3-fe%G2 z(>0{O{US67>MAJJ0QzDvgXBikZh&^E-b1*7?sg+jGJl$GO&F0W{Xl|sDNj&QHErbt zK#yqXX9xOHxD*O4;3rb4lkI)HLHbY1@7`411hyM?-E^E`Ak=@#lrN@T-6LoakbWc( z5Q6_f@+#t@iYj7m=_B=jVKKu_zUVv|x#7J*q>zQl;LxJTh?H6Q{2DqO2)8y|qJp&4 z{GMt$HBx@)=fDSi_#2!A-+V7s3+4Y{3j6MG?(8k6s2M%x9hjpi5n(X6IR5H1r|65$ zw8(mVh0e!BAYuajqJ0m?IHq>LNjky3ICZd;(`p&Mekz6<5=m?B#Phs@471eG;1wwN zJmM-BfFVMTDcCWxUkQdRJX4~!=zRLAx1f;d;<66 z_^Z9&KC)ho#I)EIHRMUB91-E#q~@-Obd$Cc>~R*3-b)1S3!2SUv)~UMRt#H6SCh>7 z_o`WdpvpGUv@2sfE=+R=?-7Pwnp#4NP37@#CZ`GB0>1#(lS0+Hktb=v?(*J4-O1uBajmcjtjl6tf?2t=?$ahgaul8Zc&xYCsb0C!b-Er*m>K*Tw>bg!%F(L;1+x0Ps04_7P%?M}FvZQ_E6Frj}dd?1(cc?~TBqJyLM+->;(@)3$dqA(OY ziLdC%*)+5#mj~!?cG)Q3<8w|54(j8KY9AzOszNp>mWrckdYRWr%rjBrWv=w&v~{SsmFSd(;TuC2)$7MW;)`HR?z&8tkp%=fOBIH0PZVtaro5lcCtcuQ zKg>1aHM3OKV;vN=d;GoF~UXkGzA?+zv)F&MXs%u zgXGHmfi$c+gWXOG4AN2ga#Si3p3U>LqG33d;m@LyM-!9vIhi)$2b+O09mtH}vi=V5*+k-hSGz5J7`E9HHyQyUoM4Z3nHQ=r4 z?L2Y%<7{j@InPWWqa02*8bGqq%w6$Iu6*THc#g`p z3aq^75OcXDNQEK6MOKS*4a&LaCvgOk!@)t%XdUgnz=t$OBFl79@{aitgnPtPOEaq$ zi@&Iln759E4g+&h{ z?+PtGLif=Tg<|*Jz2vVMG~=)rcP^HaprNgaXJc7cuk!tp?S~+ao@PaT+yq6!;N7o$ zl&(Mw+hjBGWha@l9FFQC`CNP3We_}(TaUwhcz+5H`%ZQ49s=xkRl)<&!3HdkSKV@g zf_~$VqYQq`$v6;nP{SWn7X?PU1)Tp-QVsMut3 zU3wfOv0kGdxHiWWWA74k5~h@W!qkp@yN<(`dIV28m)?d-8BkJku-C8@H{p9BfX@5r zy*C#(2KJPhWu_`~_MoWQ8%^SMpK@o;XO$d55XhX9c-9K+FukX=+J!9NTX#a?Ra9c- zcm%Lr=^@_7Z6;I^PPY81u~_LsNDOEmmb$A5UyvUselMFJ{pR{;u~SI$BHh}~X)bHFL;#{Q6d zD;xhTNySqXVlh3W2l*uPcgtaxN`9e73x#}(B&(le)*D@GUS0?LE}j+xPi4mtF}V;S z&!|g#X78ERT*jO2>HT_Zmq+ySa{!jotE#yj)EHy?(|efD$yo98NR^dgI`bjutE)8}hln>gNFvXvqTc2$?EGaa*)OdYAfrmzTG0wQw3M&-pMMvK_@hmhQpk5<@PU##fTy3qPhPEW_~95Jwof50MZcc7a!ME(!9w z5&-g_0;#ubLCf%;FarD=`2Ry7X-bKU%fZb^$xqE8$kNkHPtG)`FfFp~Ix9}e(#z0| zG1jX{$&Ar4L^48^E6*~`vU1F^&L6^#&oItC(JdoT(aTJY$ugI98wegt#Ma1`SQ2md{%mJ>>UWSei)&N(R|FfB*6{crs zr)Q*N85J1D>8PmVj%22#=wzhnrR5ovYt;jtACp{Io{&*B+9ET(^z{A)B0PAnEY{uyK=@E{;)|Nmr+hKAMvYga=< z21l|C5PKM`zDppu_)V!S3TyY zAMdy{VzVr4xTUvv%`8Db(0()Ru2Tsp!h>=4irprwg&0l*hU<2uMu1>sVEhtpS|%EJ z+_PW`C9sjVteW;IvGjEQ#p^!C| zU9s7lm}&sbT=%2*_F?=8ua2`*0M~UZi0NSAU~|Su zR41*IREn*1D*P-H!5Q5Xlub=3ND+v}C3g7~+~Ev5L2zhH%lDt~MDz(Z!(W$h-iUk< z#PZ-AQOWKxbROwi&tLX|l$Zc;0nV|A$QqO;Be`1!q{wz$>2e%L>ZZEVFAn1w0rqUm zvZ?%;ERY4}tIn3+tgXPlu|FC#sY+w)t&zJL^mK*&d;Ln-<)JFr8JJKjZ^DQ|i3#s6 zq>6))*tn?r{yJ71f-hgb124F@K9+3HVc^bJA9PW^gbcfL)Nf8WyJmft-`YMOuDzCo zE)pk^T;TA;tkqL3kbbCMUFx7Zl$4Zb4#z}SNKro!IM~@Vdy{lQb@5jBkY!tvM0A){ z?GSz#Ph8Il83UpMC7xn%{FAF20R;uoAG9MMX@ZPA<+C> zXENC-SqQ|Zn7Nd^dl{?W#DV4h9#|epD~2}Q(DE?AtxYNY zF-_auGV%7j1u!_UUPMg3SvH@$9)#wiBB-HVYW z_U{aUBnbz`g9^W*0qIZ_v)s(2oIPLChyLt)=#da*p{Jm{sLg3d&z|S#;?{UU*BgnuSUwh2$ZdAO%o*BLv@Ctkqyd zQ8SkL)qX;ffZNqms!CBIZ5FhY!byPU-)vfdetfn5pPe&>@t+&1&w?fl3&^}WYreaCUHY&vd(koo~pk^B8+yZ5H$#*WhV zXci}cmzS_gwA7i@nZKPbP8p)fK~kSvJU9o_7cZk>g=DR#XwKs|3fe>nJyPJ10`_f} zzh}NUm5mpRJIM65p3$1D@WKdetS4Y4u%@*uV%3|VwiB72YYNCmU~!ic?>BwldZBOe zq4oy%pG|c^9dCzakjXof86(9@G61M%m& zSW#zZRdsMy3uphlKw_v%CubEVjnUxL_4r?T(b@Qv7#Hg^BvmG#c)o_Wt=ZOeU7vXL zd|Z7u#|wTvBr`V8jGY$ zUM*WaYry;4o@>J{Z-Q^&-AKOSPLC(>dC$q`?i_giv~eZgc@muMLFjk?4!rX7y;t-I z=<#{FUD!H!zWsWB=3I|?32=IOo{ByZ-1;({+7|5eNBj2uJlmTK5F6OgM2dfVj~?kb zakw!6?0nfof8Qz35L#c986GGLc5ZEd9KPss&yZ%lPPGKo`aPa6J*T{MujOrbwfTI0 zY)#;eQ6kms2y6$uxWGSjarS(RcGlYmcmZD>HZ)&qfX|-a2hTuEe&3ERzt!&drz<3+ znwq;2wXXK>>$|sun#uK-cn^<_?C_f%AS(XH!Slty%trJ{P0L6}`in#TTSi37#={Du zps#1l%=hc+EEO(Uj}){c7tV-eG%cFTdy2;^XsL{?Ya0Ve6t}1ZzrDFyQ4J zDDM0E@bS~5W@poWX2(wOZate2$gG+_msnF1XP3_}_Aq@-*wXRw$~y!6*gDAeG_N2` z@lfp0>D)4@+VKIV0Y_|rgHQp4xj;7`jEcM0>tw>uWAsncV#bz_6^;+lNxx52gkhlo zn1=Q4jtzf*mzS@Z8bDE~=go7CV&2z8`VQZQ!25p9MvwpFFKSw5x_#UI z8vUN;7AzG7-i{yQ^8ki^504d$J;29c`;YhQ>n(KF%pUf!Z_B8jc!~huh)iFvm*=;y z3Qq3Fp5goMNW^aMwy)dI8;`n4#_Q{W!se4YasT(HZ(9UI{!U=_L2Ue|smOQhRzT0c zo#oTyAsl{rLIR(-lSj$|C?=`+Avsw5%Z@AaH1j zC*1BlstS0c66jb_d47@Im}vHUaO=F!|7!7jAIb+3=8oS03isk~zByKrzk&Z2>Zft) zOplMa;eb#+f6w>P+r>AI0tH9^!^r8rW;~Lh!0h*GxL}XJ(>Klb>yE$Y$8(vW@9Q38 z&*y#L)N=zy+8e_jp#MkNdr%$jFmG~4y0W+LpQa5B%}>l|{BOOxkgAuBS|gy&ezIje z;gMEL$?XdF^oBdbw%&>TMbYLmw@&lMxqN}{U6`jg?uUIDp>90XKP&rc`SpaWh>)H@ zYkJJIIT(1q!38K9$_>i7ThVCP@*m`z#AN(vK~;1h_h!2~igLG&ZAm-T<*VIVo;Lj0 z%PyiMrKq~H-1EyFYhBO%qBtHMvxWC4JE0fIJm7V>aNe~a3_p$`cshMUaac3)VRfm) zD&c5X^;%{}8u3RPh{#-n8rafC@;}hNt3Gu-W7jd2kTHMuu=K7Y$psEC9>*{VC+}Fj z=!>pBi`2C72U@)CAL(IfH#IBS7DR=kl?{oT#&TS%Feb!^8+5dGxNI@pSwz9pP(fh z`T?(2%BffMoL#g6`mx2}$FTAsgAh+02T<7m^m*qE2TPMf` zSX)MOE_~VCgk3H3FWb+x0OC*kV*o>T%*R^8DklD>=9q;0^jiqSllXJPC>OZdm?J0? z_?Q9>Tk8%cyN$Z08k(`pE1m&;rKW3VY*q3eYL^GEwgth)K6kdRS)n%Y4^)8n#)kEm zY%JLf2442^qaOkcTnJ+)2(VOK*9<3W}sTg(pq+HC8w zfGV_w+&iOYoy#_@i9P`W#LoMS?OXJ_4Pi|<-4SlS{%PK3%MRLST}x4h&V{k8v`GEo z`@sgL{p7pQ0yYZnXC!xmnjv1ckKm!`pcpI8`RdKGat7qxY#OwX=v(v58;5gsiJo#;9kyPB4AJH=;I4X56R|Fg zZ96*IoOAT@>9v6#=gi$&THqlcdAX9dA^*NN{xbc^Mr1?DNhvO}UmBH0pAB~dmikwah^A==POcY!cnI+bkglP+jZiaT_TfD0 z5c7r%U{oz66#84QX?U9B>{@PoUfsUf`Oldvm`V3zBfk%-LSBPIO{9#4G6LL=FUg04 zp`xf`>y{rc@by@VbeV}j5xX&E4JKYbNSCi-uG51tDjDc8e+D1bcq#{h*|tq@{^WO* zW*g%}9s|#4P-TuEN}^A*GYO@$S~x;JAvGElG6|V`_!WT4gd%@S)duQ)|I%SNt|om9sYr&8JUX z>!&}y&*dwWo`U)Deh}BJr{Smjl;~~}lhS+G8N5a`Ub0DR|2;T_9e`&^`>6y!%^ z11Li|QEku-P33DA2Z3ldN_hXuK8)#IA$y@4o!SD+v{p-C5SBP)BX+0megjHt@my%! zNW`C&RcN83Q&&sL5mV^qeW>33sPgkiP91R9&_2v#CZ4_Np7)Krj1?}p7`HulaCG6bm1wXk?RFKPR;1Xar32Zlp9zKjhZFdi@mp2XTryKHgnQl0h z@Fn}@!kHFJzst`ard|GnV~}(Z{ASe_VTkAv@TowwkZV6=Hbe^a(UBrkqTQRL7%sW? z@h}A4$$u$T(=`<`7K8tDhJ)qj%AUvMB#OuNVpqr(IfqEyAS=DLGXVD>a1K9q!T9z3HH>kyhg z7pSpm0Z01p`do}hECQiq0=V1{9E%Xr6JtmQ7+vG$Kt$V9Jt)F?b`X~}yij%i=(!s+ zH0Gu$g#^aI1{1=4Nr~$Ntg{STXg!rDld>B@*I7F+igO5~JvEMWcywLiGmM&@SUv8r{YjLRnpW&>=1*{qTA_D1 zBHoG(MMdahdoY7ulD!-RG<>r6yHB(hX%7yi35^;)_p8B{>PPP z55|sSO_9peUp7DW`UxUlY~OP2Vw5ulF+k`*>Y2%$kF}J1W9ndDS@%urHe;E0%XQWV zP}AiMC?28$`#xetFIfU-B}ANV7qKH~C{l-reDQd%Q>6k2po-8EoqIxSV%?&}?Rxja zknneRC}wdwx}!U5>sMV+#EqsA`wKSr7EO%TGYuxgF9M3fQW6qSmc}ZyA2G(Hi16V<|;lN>vY_i z)8Y&SDaGw!{wqEnjmEJ-A&r<|ZXxz8L*vep#V+Q0=gXB3!qOW|dN+X5N+u8z0DWQ* z`FrmPI+NR?CDL75VP&-o>tjv2&K)5dUAATr7LsZFU-cp%I<|tm{~Z`$2Vu0lrXQ)* z^2s1BJu=hL8KGL+sOtE_dYbg}gN+NNl&+!hynF^%KGC>xWn5B;i-nnJmOg|z~`i{v3h;;UjxTZ0KAA!u^PXdE5ezl}sXCT(2 zWIrOr743`kvy=OC^^s%QkzQ(0FbW`&opOxbGtG|==7X;gaq+}5J=R-uGSP)A^Iy@a zXf4|ddyKm8tH>V_gF^dm$;m*hj_$- z=Qa|8+a<~xELGqTv6L`_f|y^YvWA(XLk>;#h5Ra?&QMeN*jIfp`qH`V#0@zr3NTm8ZoVfS9E1~Z#_^Ir! z^eLQnZxJWYDp?K^9(OHZ;AYTlxA;Bt>L2YCMTdrBGbS*D!i;{e=~i(s9D>4oB;~no zgK0!4z6J+m706`4zx=@dkatZ@bpMKrfls?6JLqkHJ!MPdHcX(9FkVJo|6Luz>R89W zLXS5tPt2#G)wdcA!RAZf(RJ4g*u`!&c%1{y)FR@+wU+Mt)^N1Zbq>TnIgm%$;czy_ zUnNH4BR`R%@Ve-paCw6`hCCJWRuOUlJt%fC(!$vYIP8uX6xjFuL5bS_bJW>fq)&k3 zJ;5jU9*HcOYe|dL5e6~ctUWg}7Y3g8suF_XY`}{OaUO6cKSi^O8cIhc*OCadFD_0E zKuj7vjcbO&SBYg``M38Yk?v&dYK1=$Z>FvbLh5hkK|w%JQ>F4UggaS{V?=~Qy*B9< z0#VjOJ*1FG045YwJQjgMap=y7T*3@>$~M-uhXY0s*7*LWBXdTVW<@KFcxw!;#iO{` zNSQ@HcF7nwDrMzZWjfzjhLQmeVMKYoVc2vmqkgPTrCSpGftPLyW4Mu`<-*=#Hq4+Q zlPYY3*XHRr9TH=e6qWshL8Fq(;6gsPNVy|txmqpLHbILt)hla;|1JQ2;%>KL_UWa& z4ST@$M>l@5_XNonBCKu})|k_g>BizO>D`qygnWRJ^_fagW~l!rGbqnI>Ze>>uYN<& zQ)y?+uD{*=LH~=?;qbL6!ytL>W8JX;`Yu!JNLOgp5vs)CUrm%(>W25@l5^sJG0}mR zBU#snfY~|nAxE?&cW{1+GW#?|acWlU!s)5NUuxNd4j?Am=&8LjoUxGz0Hk1ntL1ig znlv)_uukaqf*r{~&QgkdEij@_?{HH*rhV|g?H2g;3G|>#KV8X}mv;4KF+ef-ILzo% zgLLW{P^TII?b=tG)8>>&Ad|i6Y6~(l)FaD%}I(IHXTb|9%FPDM}hgg4v8#EC~_qXg#NaC;b|*xl2B3To{N2 zQAxH+eeKi!*%BFth?n|ym-tZ_Bx_`1N+4uzL@}B@pOj4QR*}@?8qoR>xUFg;Pf>HL zmNw+9ch6hfy+~49I7K=DSu4N67T$;+)>Oi zeJikV~p8k36x%3k)T- z95QVM7!QD*@sFuyPBMa02KOEj^7u*{`%aleMHc0)MirBX{Uxva3+YpMG`R(R5fsTO z{6USM^g%-4yO8k#T1XAhywxT(!wfugOka_su&%!#VIGp!)AoFzqh#%OngaJ7bA;1A z$<+zs{#}lYYsaMrJAtlBWd}jza+Rz8;F1KHKra>Met>Z-%*X<>#h?boBqTiGm|_h- z*Ts!oxnbrY;|a3q*cgs6m*>v$=Kx((?-y8e9;|o}bcKdeiwOcGWkGImN~KbApPGr3 z3))rK99)@%4UT8{BD&&^J7vl%i}>}SsBBi;;x8qXfT4W)wgCCQnf6<`*&`3Ie28ky zp~Ut*6;n-C@6}Cfxe-MXHH_0_$b+5L^eOsITwG&6gmDPef4Q5loF%x7-pcw5*OcRu zWWzdB^7SjFa*VmDR8oI}=u#F&M0w-7&mUJz)|s#gCB>xZr8L!b2OrENq&21*w%yaH zW#N+gYoQ>4Y$KQV!kx=2Ve_3eX%XgvW;ZMai7^bt5>`I4D3d#ZJP_M0J3RYg@-27K zsa?Y{LrXY~zyw$06Pb}!VB+?b#5NB~5kw1}COi}E*sQnia@X-Tv&0nM2z^aK zPy5GAp#!xg`;SDG#E8i+%rx}ZbTYS+uYF2lQz}seI4cCepv@W4$aZBe0w;>1RXe9B z#@<2ey1L;n(chg5n_Xpp;5COoILkF7E^UG&d5n@?29%o)_p2@_oOAV#P?_o=q|Xh(jJ7?=gySNwh$Z) ze&6aq)(p|L{SpY{*R8tmRoJc6?b^QsOIOOKT_U?~B>UB;bw7rPDA4xWH=hR#5}Va$ zpmsMxUskbvZ!pJ~42vma9gP~POu@qO`OSLl{{-#ZTs+qM8O6(n{zU%Tkm**2_2rM2 zE#?MxhYOBX&;GmBqOC#pFHeCdY|xJk^vEe9r8pWD-mM>+9dQ2juaI|;R+z($S#>v; z3CW!aL87uA=sXDijTQP@mCze(kdk6NHUBy+{4n2QRZf@-w>BPvRdFKgPv85n@jpgB zxomZ39H5v*6vH91GPzoIm!se~tg4T1ET!;L{eLCn!~P~&zxj-lK;s_q(}F`iflVp! z-R1ElcxqA_7*#krl1jpQxt@1ObvXKkFHV;@u+gd+CIx z;RC}A4Pl1Ng6T1>k*09kv4}OL($~GY4y47KHR~KD6gCemI?%DxPZw3OC-;|ywn`ZQ zbu3x$8-Yu$yh8J3-;o4AmYyytA@@^eQ!g$1Pt&4K%BnM^Hb~ahUg4t~Sgi36x;^^$ zfGkGv7!kIq8&Ip$tJG_IE;bS?Lkn0@YNU8-Aj$~=C zm6fj7hR_U#N)M++lI{$U;+!$$Pl%8?h(ltbGY!8El* zt94!OR$XpjkDvf5N)wf5Tt2io*y$wn1n6dXVB^OIe@7CJeNS-5BaxhH{0DGuz5;cLAf3P+ z#fVQ;T%>|3MGF8FkY5TH+d|?m6^7x!kZO_ZZih*~4hg)iuSUDm5BcR&0Q=xP8PW_p(?5sRqeVm>U#n4lM3heibNPXpz(xseQV0qk@h(D*OdY@0qTZMAy~B zp4$@MTMy}aJk_vSSO*GN!rvv}iQ8ZY@ zS50MnY_-la-2j$NL-R`DwF(>-*}9c&9f1(>g4a3r8>>ol>Is+nhSw-V*y&15s6vXc{u#Co7r~N=oKE3x%jn))F@y&j?U(sLl zy%J^LXPr8AKm^D(m?_{cGhLf?5qjOILeUJd_J>e!k}QkjO35zD2f->foOh}LHH4;! zg%MlqC-3OJg4wnL&qHZJImZr#uo7W0hV=A5Uebk@tr0MWfu=U5!YSA*zZmD2VVwFK zb%TN-miJI6qcjQ$v|8$@Kkh|OLF^XBi?Ix|B}j3k58gxd)B6?{d6Pnkof|R@l9_T2 z=!l{w1(j(d(vZBQ$AFnpmV;R9`71@)2z~D*chVmtS${Lk-!4mH(wP%&%mZHLpBBnpxS&V5q!=x z3%=K2i`iGg0<9YXhVShHylB!27eOdzw~9=-Ul>ArL;PI{R~%QhE$MCLNj(xsh4FED zJPK%QYqbV>RWRvt<#~GinZEmv`Xqy!MzV9wZU_x}#Jm_9Qe4b=T|p799}vHy-%9Lt z9e9vI3-*t+LNQyfIY!)kH<+R$;JD4iXP|+(R^fuXae^>O8XVx`VnSjHhtt>*Iw5_K_^3P(4yLMz6j`qi7c(&5fnEsGgd6oQDzW2nTIqQpJ zxzk7ySM6)Ae)B8`#M~9ES;q-X1uIz){}z+sjZ|d%3UL|MZ!I(-PiCDt0AbNFhIR!z z7ZQqpR#(J=o}!s!P`h}3zORu!D1~g z&IsXSROAiIf}{$4K8?&*vdW*=2GO!I4HrQ9K-v21(G~T^K zk#88S3Mhtth7|e^0T{FsD`h9n@Y`*g0?%dHJ5>DQ|6~W|Of9v2xdC*!9`Y!h&kP?D z9g_1UnK8H*OV#e>N<{#$x^@MpTMrq|1aKnzd`Vn*v&I}I!}>mmUReId%`jhaWn zRU3FeP~>g)60Na9*n!69-i=2VDN9fR5fLWxcR6xECJ@}#Ig5CP^g6}GMl*CBs~g;b zfdq|f4dn8FO&#@7TnEi5xSon5LQD`Hi!#HBp0zI^YhCBNJzW8O9sfEfm=0GD^siWd z_b-5+=D;~bz!13Sw}%+uYUt@FUQeXagHq;$;B*dKFaoi>iOpm|yUawbfB?r*E4oX$>dJti|aNzI9gX>p_q$LTLuP*uIy5Fta2{z zS4;y`aHNf?urUYfq%?+zEgztJl_hE`W0WiuPp|>)(s}W}YKn(bAv6d=*%%t3|M-We z573qbAdE9<$sCu(bmqqg**2TpI^xcCqdI916{A#$YPs$MEKBv*%XhLiCac}|oOrjB z@Y_kYY^(FUf_AK0ev_uOmt}{VnDqvt(M8p#u1hQ^A?v06#g%K?Vp(E*B7&&;#q{Z`IM z!J?zWcISTc-Kjzbw(}bMl6$$*1a4O0!G<5KnWw}@Dgf&BxWL1-6f{kL*Zy`JTnLx-U^T&CFGPW#9|~3CoW(K^{h`RYb=XxuaLEyLi0NA0WSV zC*KvX#s!3M;|`@i!2D3JWl$1)w%|T7Yf-G4SsTyr8po_uWI8?WK+bhIRCoY2mDzK0 zKm{L9!V@73C@jbXU;Ys>84f) z5KCcWo!}<(201tK1s?lNLfSxJ;;vG%7UeHwYg(iM@`V#hCQsrBp#v1uwQxQFRV8PB zeye&H>}|Jzqiq_!ECIK;bAxEi?ZXj9*|g*u(+FvI5!9~rC&fP3jlYAuDSc|W2gsD5 z+XR5KwftN!Cdt_R=OqgwOJ+0}u07SHG3}p*$SbF2Cd&){w0y?V4ANRk?)EYL*xYoX zZp~2q^xH+nyi)DVKSB@tv()g%Js0fhz7*J%a_F#m_2-iWx(T`tMNl*I-`e<&;=f^w zF%f3ly@g&j^6(773zq?F{-%C!aCw-!CUz*#>B;rg}1O&J4_fIf0F!n(-C%){kgom=mHE0#ggjDf`PF{ z=%_jYhmawDhm3NDv^;R3itLDBtP@z0(@z%4r)3R7u1S^iAONM3*f`3*o+$KzZtD;) zk1Vgj#SM~XH$vX1ySCI#*}s==8bn0}k`V~isU4f(@>tEwoCwupg9!qVVl0quRvme& z_-c)&4P=TjHz2g(2h1cR@v`Jwl?UQ0?PY5zdvY$>S!SO#u|m7kRN=*wjBB1q+L7FG z49AW88)#*n1!GF$$nU(lB;4kx*bQ$>PAtxKDb(eMc&rlC6rhOt1NS>EPbbPD%A|t6 zw&oB5+|?u4VC6)cplS7VVBt1L6tMg`Fm)nA+CtCt`OQ<&B}b<;R7=i$0wguW zaS&BFuA(!R==;k2uiU_Zo!FM-(seu)7X<9C?}+@a@a6TaVSM>+i+R5vW>B2UlxeNN ztIOm|r@%Y2e3xi}V{Qt=D}6KpTm#XHS@nHJ>j@Ta6)agXh}|r|)&gW$eAz@<>Xj_5Zwwj&@QeXUFuw*3lVE%)TAyE1+*T^Oji|i44C_l8FYK$kl zPMgi84yGJ27n9mSDkaW4f|UlqAKgC!XDQjpx53HCLeN;8`%=~;Pf+NUb1aT+*1kM_ zdI|)8u4Lv314QKbc8*=;GzhHs7I##Ms1}>(w#xiW7ptkcAiiQ4`73_zUKl^1c;cd| zRj#mpfCL^R5j9$P^y*cKmE;S!W0f*1D`0!+fSD)YTPu@dlD3NOR7i*f#Y4I=n(&m5 zd(}WA!j*%pdSE3ff?l_|9ESTUD@poA;R}HyakRVhgIe|ZP8e+fMm-?)dF?mb;;)Bg zF_?HHKA0-Bvb8eZKnEHLYOUmtuB8ANi!`g*XAqn9v=(~Rbg&gUucW)pA|UO&G}p7NoN;~RZb0;UZaYbPWUt4AMOi(={qqRHr$~fkxYH|8=;H5eLc~1w z*&mHhOz@Z@FyOVEa_xvaiuv@!+_ganpX1u3Q=bAPF5w@YmAoTu0O{6Q$&`|yY%et; zu@vEDh#z0I- z?7U;_z>Zad{$cF;;hp$Mr^+QwAr5rldR*;y=5hhn9tUu^jAYWPBZ3(e2woObKD=(A zWs1NtNrIMc5C=W0)H<_AIUd)jbwMDUiiwUPmq&0Y2+GyjRCJ-;pe+)^lnOLDNOMoe z_X_rlAmoOR6(A(Q1b8AEXZ(HQ|Y>n2r+Go#H!8%S0y9~mGDQ2UXo$IEFP1V2YH6a7Dq^{n$BTl&U zyYO7&6+z;WLOq;yID2|d-)~B9nmsf{-#c4it7ZstB`p=4cg6j(*vJX~*y?&XjZxxI zZgtfHR69=xb*PD?g_X!p5vz55%H8oWfXp<;1Fmk%Cx}VHL{SF-sD^UfD(&$GWT}R* z=z=V>xGdx@P9{NsK~WH^tdCmO^4!W%>H+LeHx1?&%x|*vt~iXTA~#aZFaH#BU}zjA z%Z#wZB#*LJ9q`ulSu_9+e0QC^>i2pmB(AeIo6NxdJpe084^l3~!DVs5JH%1(JrD#V zvlnCYThuYxk%@-sEn?qRQkZ6933n+gD{iJx&NamoM^?_xBAu}JQi3UyyI^eEt#h4E z1E_0J(iiVJH)ya8Nq-_&A;dR;i+2I_Osrh|C)hx5uaH!bZ`nER(!_MP*$JDW6aW@} zqZ5BCT0bRb%W-sEseyh80P%8mmhn3HJH|PG+daBaat081iwd{1-f4i7bm@2H~cvFfdb$`(b^8$4JP>)UPxK*|Jq};j^Sf^9QO#u)BOULYgSi$lqm6rL8|q=UVobZr^*Q*5!|} zs-l3pZ0^U8V-w>a>UcDM3%* z-?MQ)e<@ZusA9>DKZpho+@4CWP{8Yb@M91LIu7`il3fVYDWH{#kZhb*;^rv~#>6?n zm02WRQD_&sW!V6V%@zHQi0x6tW5u4bMRgpX-y_mq4lwJ9tGq5Y7P^o8IN<)=9UZF| z1tzl;_J}o_J5}R0+gykxae%Bgvrf5rP{JCwAw$ZFRX$X#~oSumzc@+fbE^M zs{;8a@51)?EYY?v_w)x$Egi_Af`jqL!&wkdI%d+>9+JLUJzyL<(?=;8*bd6_gkL$6 zL6L}}$nwM?vm_x@$fuw2JB!fQX_VY;(!sep2lUwuoQ7TA^_=UPFO`##+4v;ZR5awb zyYVS0y_XKS1ghLa0uH3hW)XRBYLcVK#J8(X{qD2J-;(f>z?VoyK!R^{nN1lts}HL} zc-&zoVb3A-wqKV_Sbz66ewHq)XzTic9Ms!+NmX!PQ04^%d9>};EoZi%iG~jJ!VoLm zxioUDv)sm6c4I${7ojp5&eH7z>UQuivQHV9(1IHc0EypBzN6xR(>i>rBWp@BfbNiO z++S_SI5$KMfedM~%X+q*;-h;Bi^ZkRW7D53v+I3mI|z#txzoHC0!pKCo+sPWJn{|3 zs3=v!lzDS`w~quzwJ|eW0?%t4fl4>taFrI}-15EJwhzSUR24F=s~tj`TJNh?#~xBy ztHgTQInVsCGVGq8xjUWw7@c2Zh^jh&rYk(;>t>y(Di1AI@O6V*3W8`G;Wnlg2B11$ z533Sg1Q#!aCESwEXjO0!Ik>G6GvuYTV{V!i5pBb~<#i9hF)?&k1J4zw2uAUS3T||?RcRCnMUSz*=I|%4 zk1u{z8contd>yMJ1gZv2BP;V%5OQ4+%7x7Mo4vN~QZQosM`{pWJKbFO%JDlYowt9s z($?JLId8l$7D9ozOZhc1p@WmC9ph9oQ>fz+bXlR-b?#K@kiT^RoBJjDo^Y+2FTy8B zH&pQg4L#DNdh$nAKEVO}a`}J!3mBa$vcXQ)aH%@k#@JB&vRDa2)Z!&&ovTXytMQ{S zC6^j3m+aD0X<=E);LiMqZ3W#IlF3up!eY?v&zR7hk?7QZh)Iwpol{eGeylIh75dc3 zmU0Cs8nd0*gJq8u4;Fv{9k?y;Tt|G%pu)y}Cg5?e!ueS5F^!Zr`e=n+GMZUR{L?2 z-V5FFGtWor)P`11&X@;YhaD-k_;M6wjc&-3>d?ixzegd%Lej4(|1`v2H4~iT3W9Dn zkUtk8pGDPNVY5vr-qClfO)k9ERqC!AV)O0`i@b2OYw3TlRap4l90|bG%+TYPe7OF6z>55w+cRb^t1w>n*IHW}(!KU&O>Vvt!aM2mh>A_~2tLp+e z_qfv46~v$8!FEbESZB7oH=C&{yJyg=V6(AQm@8`fS7bs)KOT%(EG!1AI8SICO$6}w z-zs#K@<_@=HNluX5WmlpCDQ#Xb(sJZFI8U4@rY;$q%mK)F!LL4xwnK^&SB=?Qg|~k zobbpw2EbNqqMj7U62wsq>@l3|;Tx;RZcE(<8mxuOd&y>LH31FR#7W1_me2h3k@%JS z5@-890=gDgurNdQOtTt-ok?cn+UDvxt~BWS^>ctj3zc1x2Y1Xdcd8`Ln?#SGo(D9D z8g>C)`??0*wEe0awkmfbUok_pIWPMrZtn22Uy`&*Po9!?#SOqmlPvH{4%}{gHG3k9 z`}~z=O2|Wk?tfu0Ii;k8T$dLQcD#@87fa-3+yj1BqVAiCJFOWWiPMU;`H3hguwv2( zL|!id-I28=Lr-Rdh-W6-LNA;~{;?2BNYffpE_do%=f>b|&;ob=E*??cc(?;vc9f~2 z2-@Rf?vg|Pk=Zury0u_!Q z?+l$e`GkvTsQEr0a)$E2u;i-Px-j3ZYAn7vrKRBw>>&OE`mN%bQpAt)ZF|%nbn!QM z`Jur^6SHuPqp4?oz8f`iP{#oF7B75}O7gP6+1rB-pCPPqPkt8`Ux;baDm#>L1)%hT za<#)jwhiLg7`}4@*F{*jce-UpYWNB!SgbJz9rZ7uf{lBoU8`^6Dcx^66xvhk0SNxO zWKCZsl+ffURayV#IsGlFogs);tEK9Ei?WLVPTmy15zRHrEa0d4}ckdW^vtb-qc7s;*+82GIx6d*aHHM({kC2hpdA+ zJb9uc$@mz*uc9E?JYi%0ID<}Ko88G~rpxI&gRl$ZSV<59;lQr{-XQ{L?LtoN_LPfA zAg>xX*nj$RY(NW*am9q;7Dwtb7Gt^qXU+coxZ7bpM$0u&74Mk(cbc}DHGv-wx`h8-^#Jk8rNY1L`)(SZ%Upe&1a>RI6)2Q=?DAffp z2v?y=fyrv=vrKi#qav%QN5bM_R}8T2ai$g<7! zJh2t}XUPhJSe#rXkOI@Kp4kqM6J_YcgR%0OEo%UC8`X^;1>jbGl151MxU+KLKHTw7 zGd9$1mmqX-@@{hgQ~O{=cI1{P+aDJ@J?t(Wic=qj|4_5VVykx+?lpn{})e<#aZd<+0W*1rtA&2toEpDi zgU2q_vx=jZK-xp#<#$f(O|x+}Xsx?XN!lH&-B}SFXS4ndCk#^&$_lLSGDa8T`0a?*NlGYE~?KU-7l7aNX-&+9)goAfi!0^3^0OlvJ zp7Kqvn@**05?7VLW(TVsCjqyk0)zCXJ$TD%y10>5wH=78?vKe(rDyF9y>&(&@`|4% zVoq$j_dwfLGX2HsNz$=|K3p+jOTeijfOZ^DlF28)_x#9ZG{IiH{Zy)EJ7KHy-K-Wo z@X&7WOG0g3KHX#0o-U3TiI(L!-30tMF-R|&T%e3C(w4V2gnsJ})+^7J?)-`A7 z0!m5Hz6wV`>5LfhZv|`Go5%lo*NF|2u}7Rgmd=Lq`z*482YN9VJn_#)k=EKRTfvn8 zi__F3U%r>RS!oe_YtI6MAow;rwC zdnm_zcpv^?l>wX`NANEP`J*uKSf}%j1j4+^jprzBu_rg3bk7TO$DbGMD52UmYUh zF!~wV-oH0i3n2T$#FBgTEm|T)bzW^2vtX=$$0L<0N1iYwFv{H z(oB`kjmjfL{y6n;b3-F0%%{P|jfN;32)~HR9e;os7L+2Og;4+8onnLAwWnW1ljY1s zw`uP3Qy;=J+ja=Z(gYpf;ruk0M_+H5UN3**;Wm*+-0Rq!Q(Pvv} zgpvYggP@(^-(k;5t@=BU&!ADw+xfZHHKoGd$pc2Y`2>^>igtD%^zm&KCeFluV1 z92w2ixf7b3&!>qmGr?yL*?Yx&T~LYR;57ere#+pzWCtXfC8)=gT&jQzN{KvH{gl9?b6x`DH6QOV_*4S9>42s@yTgQ~iZUXEy{tZJ*DZFWag2z_xJrAq%2h;cA zdZ@igBX%!FzgDFiFkq)qhy@sh-i1FV3MFwIPT{5r3pK*yipi|#H|Oy1rASfT3!$jC z^wq-+FgADS!l0Cl74W%`#0?dSX4^b>)As-n)$R8pbh*)mx;_^IzhN74?p2?(2tc-y z4P{&X48F2^%%(>Xo~d)AJ6yt)lRG+Jg3H@Oli6r1GC1gm4{IHbkGj-)8G^@7i+mfQ z3bew+JC_u%?h*y|XBpz>@448=>9w}ET=V2_Ehe_e-918>mZ{MVsBnz=tB8?0L4=;M zf?vAVmv_0R7A)`w1>nwfF~0|0D;0RW)l64=c%F_mj@eSMiVD-G}BIWH6m6ZY_%_*}`3ImT};Wy`ckB8p~lX(DDxP{Ep! z^xWLqSE>Z0C#rCX5oJeRGR63sLPWOAAsDXt32{u!*TBTpdi>~!&YsY3V5h`z)XuzQ z9xl(-%=!z^FcYIQt}Hd=GjmuDIk9?iH*7H-^!WLSH0wTGfE3o?Qv>G z_V^c7Fps>6q+|%`WQMbsC;D&depS@ahen#@fg)HkBQGm|y^eZww!ipGYju^El&fAZ z%+zRCWdwC6R$7UbVBZKy-^|Uy1R)p~fPjTLvvR`=Cz%=CrnAN&e5zRF*>TmkM)KT7 zh(^i9*e$nijvvbcMdX2NFd7h-@fiQ95U*Q^A56E6E!iem!>- zm_N$!6@Bzz*5KyDN0U87{@P?3Hw^nT1)-u*-~+mkkN$dk?}lHvW6!M34gMUoZ@3_b zh$(%FJWriT7kclAJZ;gEJzFZ#E0j!+M+0Z7%lK~W05>tvHy+&`KXEPPC+dX*QW@QH z5Hf#~OhOt7;+vrJ-0N8$y|eTTGce><@1YcM-ri(o$iT4PS8xvDPWKeX|{QbJ|He&nR%TA@ntV=%-CNElSi{nlIZR z+d9Dc!ezBmj`s!4H{YhL`$9R(AdB?U^zr21@0#Fw$SqofaIR{}J8K_7p994strdcWLGGva@_caF!I5@a!{L8c8bd4XR54g|efMl?v z-{4D~T8_J4^RVI*#LB$g8D{e5h4Owu78MPYuU?6Xo~8`jer1*wh~$|J1*=-WL;2jj z%puk62Rp+;tj-!R4i?fBD?QhT>Yy3hf#Sy=6^ybl4 zm-}f(_Sjn;bX%Y{_u|*~4oeh!YLX?zfu#wFRhfe8dwuh8A>-rwLbWYlFUpmzO+9mS z&wW2kMn*^9@j9w^nYElZyDD2dTspdJ^nCJZ8b`%Om$0BM!yJiyHjAqIP>4~sL3^cU zo9=xWGu{^(To4iuCHAcx@s)TrX>C3frK-D7^+M33Ma28#o#9B2v;?U}b0a~jVZ1}? z_L(83(Et{G5JV4U$*pO$F{xn;Ra0;nSDXP=jATNp2vz84b%6-gx};fVi{K_HFCa(; z>IPzD9Z}vmlY=l~HROlY&hD{??;aA@4jk2=_4ZZ#t83Q|}*e?Oe5 zkX6q12%RAAId(rYg06XfhERYc%D_<(XP(;qE zwY1H{;Us}|&@CrlgIP+t>O-YyNBvm)jwT$dAeTuU#6G}Wq1X4&01k5;<|4oXOeCR9 zbs!*P3!|pDI-R>knwJ5*E1Wr+Rj+rLjrGi?`@IknvZeX?QtT?`pPm6RzSnZ!XlkTb9q3er%e#R-a`f z3NhI4TWnpjek#&p%_qrHz1!?`mu+htj>T*k#cC{bmYrowuD6rJWc{@S^u)D==_8L7N3DvqY+yfuPZxn{}N+i#H zcCStwtdTNd6qiStCHzxSBz>}Fe;U&=X9EuyDoQ40&?*(Jk(&u z8;LFBO;D2WLK}R)@y*s3D}=|ay!JBMa3QCU4_h=V| zwok?d8`>~UY)qoiG&$?hmm>jo6shipL$lWdOO9>{bIsOh{X~G8zyTSv{z#CsNZ|dj z&%a9&p)9IxW!1q? zdvFr)u6TZ2JUR2`rI9H_DZ&lRpEJX(4PPjKY;awFCR!z5GY}=utqK|?O0B5Nb%9`> zKJQZ>MWUCzIBu|eGKeG{XxIj-rdlXJ*qk@MKh$8G@72pG_xL+3zPuw`N75p%ZbgEz zhCg4eGcm=| zA=1#mJ>GXc^Te0s$8Vx`%B5}neB#i$z~y5cmW~JdOE|JHV44Ev1#Nc^c1G`P_{urk zVAj5hO6Ld9bDb-S?ru@1HEf~`oq$?|L? z=`TPd***v_7^xneg;5|FsFPhEezu*EFzz5%sYdx*))Fk;42dCAsuVuQFwrsOdiuaFK*(HbDpR_0>K2K-FQGE z&8ezCF+0pdu02fLgEDq1qlaY}8QamDRKlS!=`g%KeDy)^cFwI`YUaln$dV zb*kEA-ja@O=l1mlJKL>~7qfnx4#;aUmRnF8Q|=RQZMMe2-|3m8QeXwn&(qI=fa34DcV0z!${(-do@(x#rL>fvUpik} z2HxPs^;+1x=cUmSt*%*a#S8vR(X1*sJ=cIYWz#GEOJ3ilVl{KvQ3)|aQZ$`0g&uS3 zlOW>c)KcZJPZ2?c13$C&#C#MU67*&~d{i(^U18^e{$aOs9J%`u=(9iip4!gs~-3g(q+2MTHntDlw#7^1H?oa)vGVjxm-q54W#n+dc>L%YiY4ays3VCFw ztz1NAnwwo?-U`Jx;Q!6KhR^Rn{{!p#f%`usG`jy}T}~#>W{!3)_Wxh(EUVa99f~6S z=3NX3u}TYXI*Nznag zudY~9xb#)bAb~}H5#r-k*TUdPTC)l9?omQE3cyeTYWj$O7&MXUad7(_NnpR0xJnlB zKwy+gn7r~6G++!;io;LU7_RGGA$6J?=B{*vPG4Tk0?VCW^Ql0lvg-mcFqi7kO*5X7 z|7O-1N;X;4`Vm0)F)i*IObly2(rf`R{MAR1M(R{xoXsmn^e)Me&9+Ps1t}u@6dk(3 zS6~2<4jhTkg2@f8?=yZYT0rhqA&5gXi!>2GXJ0{mUb$lN#-uX{4ox3Gl3YrjX4Zwo zmA?xICx-=Ms&`^-qDaAHCw$C?fI;pryVwDAYX71)Jcxn90(>S{*r*uTL=nsVH)Xqn-O4np;rdTX< z6LX_-K7@DP;?bw?Vt%;h(qG4GF>U$Fow$^ttwkQvofLNPIU4(dRowvRaECiz9m0g( z)22Q};J0L!EuqghdZ~rE{#(E7;F>vgKOCjFw|3;$y>!;dWM&$wtP>}|PwKNAY@Mjv zOZ+(WG_;N|OvWa>tnH-r*;*csnVYgsG|myGGNxF*EumAwc3%>#bHgOTuC7V%@fP<= z16DnkzEO@+St}r@@0)}<6KSQ(-?ZuzALTshQlr(V}?Oy#b>uk5nS7E93fCs(3|*Wb1$}b(4QeJ6!;q@Jr;5t z-#42FIo^PmXsCE&|Z)<^(BHrH(RmJhpNx=WE9cxYm z{7gUyeCU_Gp$>fmS{B-xbd*vrr7rAiM-2qFd;NN)Xy3JyYg{;)K=VfQ{_l#lmu8^Z z3l0GA^2-)P|1X{RyJG$S#VSS3%4tIq@#|M4qWIBU^Fz10ShvMI}kDt6PSo83;9wuF1;cK6it(=Exa;fR3YoRAX+_wMxK+dylkxwObYW) z4w!peOe|JYQRrLdC>YHZv*pO5QN~7cEyWRLHdsqCB|v?V17VHht7fE5V&AhYn8K3@ ztL6IUV`0?%-ICARGZ58~W)o?NO-V?vgZ}qen0|Yx(*;(5h|iBXUh?AHe-^35%CLm>wwoB=X11B_n>~kB*4eCTX-%MN z>5lOk=S=pm9bGMZB9WhCz38kWA0DwgF#1I zXNR_w=UYPewO-Aqv80C#{u$;J>boaD|ZX>+ER zu!9UI3Ru%E7Qp-oq=OP41|<=xH(`KWl@fs_N6EjN2qQ795taK__&T3k&lpX!@?Xmw zO3z~9ZYRRSl29=6)V(*cP&uxML$%fugDewj_r;;jsZ8spg`3}{bA;_FJI8au{?npd z;_Ul62IKG-@-P+iwB;wtPHqV1^$|o$(Zu8-77iT&%dEVvnVFgIQ3*cm-Ga8UH<>e$ z?l;<1@C*-;?bPJux}kliJz825L60==yw?T$&)c>xI3e+B${zTtO)(*qR=IYwqYy@c z@2;E?Nq)oxJT$xQ#7IF1-D{ntoP*w{D}JbaO>oS*MufHD3}$UrSB(9(>2WR?kI6`D zQtpz111~JvV80>vm$k}2s`)8*jRqz4g|-IgaH9PJKjW4N$mkIJzrgz&ClDl0md0#KRx2^+Tv`;U+nNME4 zvUhi%kGmXC^W~nM{nbbvqtcZOyYi~Ugm*KoKk8J?WSwl>UnP=#y%5a87LVjwj^Yk8 zhv>$^Q-Sa(5b#%|HsN4c!Fc1aDG#}2szzeqFffRW*aI7-;eajppNU0L~H;9$b&2M{sz`krK# zZI^KN*oDhrv!sY1U~wNBq~d!EnlBbmhDCOG9?aB?TE-LX8iFcRxNbI;L8Ll!W~$BO zvtPVpt^_xkJ~GqnHP=uElc0h^*g`Y~oz?AKl?7J>@hadYfOY!aM4aQ5S9Ets17eNY zSgpArsEYjx{9>_r3;=$CLaWMmn&xs(Eu3ERDIc9CSBMyIX+ISNLrcu5qQ+%+cdJ$~ z&V6?OB3P97Wpk$+3kqv$L(b8kBGnMBTDBFz$jS!)zb(zit2k3SxBS~J)h!|Fwtp^w zst7oz#VqUHJ;sC*1Ra1?p_Gct^Y-M?HmDz%AFkdxN4Aa*4hd4csFaCRWs+L0V@T=G z>F}`2`%f$}K~T1wUvAjV(}F}VU<9viZ*AoUZpc&eiIjwlVoDkGDBQs@Pn30^bdTz7 zL)t&WA~qmb5mg%BRiDVnbCeEKyDmiu4{P56%Vwhk{ctcc+(-&5F;0^-b5;784m> zAUxt>d->A7%=yHVwb$kNL;VaoT45)(JBglSA1*YF<+^x+mih76@2=fxlc5JmZ@oR? z-vF421>|u3w7n}AZ@=8Eb@=r~r*K)Do08>0r5(#XHD*b-aFDP%<>PA*mJV5OQzuM> zIFT&huWU0WAx49 zatn6_yE5RnH{*?nR)0QEopE#d{#%}D9`)8_-ZbHBwzYZ z80OBG_@LnF0mOCcdu@}grKX`4rHvM)Hjj5#jpsR6tP^8C&Y$ZYn>xxH&+|(T0W!Y& z^arM{Yg`+ktaH>mb{`f0bP~TY4_NX4$zD z13Wt>1Ds*5^g!PMW`K1@`*|QQw&72ffBs9RB!R6m{vO2u{BkD%(Ej(PZ*B3vxx$D4 z%_44%ro;;Pl{aa>bYqPFdhUOWWfNx;Bj;aBIYw3LKj%0-mufKD$ce5tg^+Vm064C# zpX77bVB1#(;=m!PqO5-;n8hh;{~Yz+!cdGm>XyT`jA8gPJx&K{QlrlImMCz6f7Vd8 z?j6x+&fx^I&RGV@SAiLjZLb7gQPQ_9jx<2E(NF@Ta8l!_{&6j-Rc>uic=~i(zrmbp zBnR@`5o}K(B@bMt@s#$R4>oW=eil^#^IBH%v{N%Xy`8n#Z;`*KRYh6ncPHDCyFlUx zTS%4UQQ$?oEj%-V&A|=IPj?mFP3Y1LbQBtkG*sNKb(6>14s=0|3@-%zgZ!RTSnjoo zMGYlS;{@PnV%(U+Gl5k|KL<3+Yo9j!2DpJU12^jv<#hEsGg-xPg16Z-Q^h ztbpuhP91ZioWoox z)EO-M%OB2-VxQ(dmxlQ96Cf-CmXKCh$^z7%u1iKVb*EWPK5n4oUoE~uk`u)!P*}OQ z1*j)nk`x^pL+t{_&_+!511&QU>Y{&vQ4D6fsUN%_6FbSIL3;Ywo0~D<$cN!wq>BQ# zE7#5h^OFVMGbXJ_TMiy4SC$V_^W_4O*=%={#w3EzJ$FWYEflTB zwdn!uEZIs?&gytgW`K@a;W8bb;3}?7&Q0iG+d`->G-Q)a@gb6N^4~GsX3Mu+1J{up zuKW2%LyAOvE+S&%_mrH+a=sI4FS2ePCFBogv&$Y?gtpIu$zP5T2O*7pewSAs&qYum zh?Xo$nyZV`Vnmzd4B4>Z%OB5wtw02Xk)HGm$d7fX1w23IA zo@X`@OS5+xd^dioYP$M30ZTqstSY~uXl=}NGrKcbc_dTl3E-<}&x@O0BbHS~=dp;uc=!`jLH9rU$k zS5X%G7@g@<_ZbS=CURr*GWs_=B#k>WH<(gFF~ns5LQ>Dc|1m+1yOAjEZ_wH)FB{uaj~!sT>u^V%74vFce6uDjnzr=vnV3DU92XrYz4_7oW-x80 zjOFPUZzt2Deg;wD0tWV--&NqVOq%H8RIP`86aO2w>EpdRv`L9m7%>k{!uO0Es-DYj zFSYcpOZLP%IQ;mzXyMvTJqJWvzJ$I3ARiyn_Cf0;U7jjl-!;lKJw`3p?!x|uHd|vS z>~()q-bsmd*9^41IEpMdd?sa|269*7Y&myW8@c-jiU_v)a}j;ae|PZF{$vv`{%z9+_TRRQ zow0?jnUk}Dvx$v?k-3Gf$$!qE)o$%JSrNW&dJpEj!<#xZw+#C-@%yruEMiDx^|{Cc z3F*zxjh#w_|fS=TG5!9bN66 zZ%O($g4P6cmcy(klgwA2sTuoTWW_bW4O(0f4AubOEA^+tO<1!HU^R|b^PBbm%jOOs0X=OOFF z!a$^m;44(O&5t@gfZ`>puoT*>WSQN|op6!D*{<_{g6MVdz$}o+x`#hhw$tBti>+#X*D%6<0ru{5jGEqLBtDY zaL6-RFjE)Angc-$-q!K`+I?`8%D$uw_=82uguMmAnbU`9-!#a^Y-=b2l~PdKb;z7R zHr=5$3{d9UFSi~f;)LEWw*T%BBAvb2ix75PBS>^thG$I&UJ*k*dkol%bC}l9KA94c zdHr;P87uR-)U9 zC5ZoD!)SmTHq8aFh2_C%v2bVI5$)9@6bk{>pHW4`fWBHjimBOc`>`c>b>SKCbk_M4 zzQ8p%fRdUfvyDM;lCT!M#iMZ{L`Kev*T`E54&{33rg9n6NIvGRIA1WYin< zrEa*vpMHqRr-$M?A|Zv>J=-px&oV8LqNkFU*9Ibg4+dUMEIS1(P}p7#9_$wR;GY0A zD{8T4Wc$v!T;Tc}hZ%%21Y<~|w5K^q$LI+K2kIgYN(^VF=p7Y;d_3%lLg{>^XJ98_ z*-Fjp=ud#@YAR)iV9yFnXK-VdKCPjl-!v=OzBjI)c4}~o*Q*JA8Sm`B)uW@P%O9`9 zef%rMpV-M()r09(VM)0bXg|&j;&2p`V3Z?a^7ff@bDUI{38*l~XtAW1#52r1gM7Ez zq~5ebmxK=Xo3wueF4g&e&8-t6kQD16?vOljDmb-jKl}F{>Db`W=+~ZfWPWpUOpe+t z%32beI1kIbTfrH=BGeKb9oNHkn#nA&I}DXHU&%{2LYdw?W_?!vB|FL-)DJ4g-L_e2 zl`uAFQRiX@5 zf!DfxXi;jl%KSm};4m0Qu0P@oP`0wA9cR2|PF^CV0SPQG&#L|h)_G*(Qok1KFw)QC zu3sCM*E6J8iL%*fuvdUK(=vS8tNrGz)4EV`Svk3kDPY%dY%xzvs38vd2|JdWP%TgA z2R}Z5IjH`g=>z%Y98snE;>PE{Zjg85)!F|vX0y-$*`3gMJurTKwq)kzBML|fHquD< zy)J!(2?{q1SB2c~zrOl)ZL*lN`Wu!_NuQ-g{6?*+Lax`rkm==vl^Ym9W8W^O{zCdI z;!KfrsYm1;`+xSZRuKqcwZDC2>%LP{)c>BAI@mcH{Z~4gq9X5r$BNQ@PoFy&Dy0MW z$D0;lL>gZu15zJFrjW3fGo{VR)qr>ge2>M3QA?7lR?OwT-}YStJiS8?-0HCnaNx#R zoZ$?d`96RX54PyoMMpoW+dplu#&*7q!#L7&gvp$Cp|x1Xha@D_hdQ=fL29c@LsN3A zuj2VKGNNYFen!=Ch}b=iW|)-6U;R~#ClbTXi!lQ(V>DEOH?2Twy+rPg*%QjG;dnG+ zmL3wkUr8ll!bN>bjAehTaV5D!?A5`iSN`oQwf9W=CFM;Afj)5ePqqk}WDFSpF0#xT zbYcIM4JgLx*K`d*e$+|VBhh!7<4oQ?pPszxByV%o7CDz_VdJ;2G#0gg_(>OvXmtH| zvoZpc2P;n6UD&`Z!oo&ic*0CzVi`R4F~x|P@boW5D?g=HdS`>!dnUZa@9O03EwyOwyFKOrdypwkx}fB3_oiS-s-V+{Veq8;O%Fa!ge>;@9F*? zM_jRGeOns+=-6yiuM{Tx{9vD3%!Jre;DTN-5)dPdg>_-$D{21h%I2_|4RaLh?y3Ct zI<~^^e0f?&c$=2cPJ3GM=jLI8+uuEp0C8FcK4}9=o782;4^n&ZJixrSn7=fj`uO@X zYdt9n?1PItnE3c8yZ1lps&27NR?F|gO8C2>iuK<&q9ZQ{@Be9~s>=UYan${;fv_J1 z&a>Xu3CV>BS5>%Ljv64^pmb+1Cf z@<7>bG}VD6k8IcjONQi(D{0Hd*}U_JmHnVP4HfM?F11nltZ-;D!>qY1t*z(@3ZMEv zSaG2{4W`Fj{CVDXc7ljJCkvI96Bf*$<>KSnv*Y_Km(Aq?B69F{cs|xVE&@gJYV1IN zO!izGgT0EJB7Il+;LgroQ70~e{9iJWepMyuI^Q(cWmPn*qv+LSg{<6eAQ=2yat3h| zinEQlD0c_~A+LPYIH1Y;BAi3n7J)rQgO)oxX{p`khw-!OS)y|3=#AWJ7?Bu{G2QzQ z{9X8*KV5gF%4Rep7JxR|OVNR{wMeQ>G8OOrNPN{s8gAuc5JmCvl%qigK=;&@f=rAr znRFIR49BUB+w~v#m(Q)*&F{=Yg@tExne9m$|D5&YUXuHn$TOyxKJhe+mn66mEt_si z>TjkyG~gEW8{!tmT8LOSf7g}l$3l|Y6PLDgTuB+)i2X)1?8Kwfvq_F6GY|#jlq+17 z1vOSROLxXZgYI|5k=zM{As$Y;y&JL+#$&b^peUFVD2>N5>LQS=l*U;w#$-MoV|Q+9ya34NJuJkdxX-1_nK8Q_!%l*K5RbmFXH5M(q8$to&N~QNGktgB_og z|4iYmy#9DL1v80Mdfj>zbhNl56efiD_TUvrQtB_&L;~td;ruJEc)3&&d7Y1#5Ak>R zCkM{vHUhAV5TzPTlZg;-n&|5Q?aZC8eGU@xEH>jnn3Vz=OI6@q`B{iu$9k)cIuhB22tx#jK8tSjhP^zJebc>v}4`sNFY zmnFBro^!cJdf(&t+`lHudILjNlSuw#oy-y27J-uPY$d21Wg@3227K&~+ zU{3%dbH#qzf6bUy3>Inm@51ujNBW|={U?Kz76=9$i4f4RxVuq9oY;6BqG1)e+XtD+ zngR@U-aimHBDb`B&v(}tvN=N-zOgLPHyVG~ehLRjBse6G0~1s@!j}4W-LY;>48%{<~DK$!TlnTYm#LWhPw3RY@bQG#J=Q%qZWiO#(}jsE>S z>7AR+K(NVa0si|*_F!h_EaEno9WNCepC2B0ZI0Zzh{FGHcP5r88J1z#hctBSFv8d* zcJa9G*cDZdrJ92xY!xb9A0fE21+H&lRoZ_-vVkrHiUL(Q_>6TZ7R(#b1&qUF3(m^c zWl}y#4AW&(HpoLK4G|{%z8x|!Rj_P2%PNoH6kA_R>okDKrN6-+3+U1I{N@(H#bZG`_GwHl{G0bz`c;{=xs`zu4z)>c zlAY2W+^0P_0`?bpcBVU7sk7}e)RIIRK~I)Y9}cG(-1V>g zLhIvBvvG1bqI;N72}8V=<Q74j^pUld^E(l@xB+=1ECfGx$p99p~MXKAgN5qj}( z>yxV=%0GyNC#;128B z0vR4hj(BgO?-_bw=m7B*ZNXLMb0XozJj)rZv;qU&T=5Tj-{52THLbDZNlf=p(Ukuo zW2rq#pXKoY$T4`p9wPBDIPozu&=;!>NhDBH*>=p9>{Y}`EFNE4ZrBn>(M|u2yjepf z$O^&cDP-{&hL;u&CuY?BOI}c}MAPh1S?cF0;tfOyhn}Z;cGHh@{xhZm)lWd;DR~*Z z@blQ8KfTJm0c74|vAV#ciFJgP8$bd1ZHB3>e`qlvsA(>$z>mfxfKC zk?m2J>z(B{-QGUZC#6AvN(>Qw#lovlgbE=MX?H~?a`0U|Dpb|g>-{e|a#tN)=_ zFF-(+nQuz!Qc;S=NF0CmS8sLAxsZ_%22S`8+gqfDw(9ImV@}CQa>p3!??W8I< zHlg~)$=mLw^qdQHwJsVboL^;u>}5}XP6@-K2wTpFe^9e=mA8fRUEH$`u-i!~HC?p3 z19xgn{d?!m$@!*$eO{nga4r35i}W1)l+(HaNOfJ$ZiXcultGx3KbolBZ6v5^ju3K+ zRj&1%v}W3SgjQLXJclb+Dz6k#4vasUp2NIN7w0}Rda7#18~OIR$7=tUQHj2nDYIiJ z^Ttf7EtAZAkRUUg*NUOP#Ene>{w^fT3*NOnk?pqi2;a|?IJ04pOGI6~(V zrwIn&-dr#~WG3-$IvMW10ERQBvGxW9@x7`R8GwUHz`fpo$*nM_k;j)k@oSb(EZxZ6 zL)iOx%OXR5LIP^~Mz_|hLI5}L{kieKB*^G*d=+>ng2HeAQF->m85UxEClpAu|B+O< zn7G(|Cl!DUJC%JYl#!i#+Ky#xYfML!+?8)B@xq2XRoLa!_hGz$;>!4F)@YmiHCLSm z+!XK$u|cEfda&B3u3tXp-b8O2d#4cr{a*JCOQG(SbC-DXJPyxzEAhKN$$Z~pw_=KG z&n@%>mY(FWEy(EC%o|SP%PP-?#yVV>?Jc_eb#wPozVWf#DR2VtU{p|V9%j2)#&q>o zY#Hq>v|t-9ejgh0g3T|`;6HX$Cfrq|QAbe`PNE{R^k9G1m%3b96ZA&r%JJRZvJ92%l&DP6fwA!h3^g!$lB(Hzm(y3r`ppX;5=z8M# zCv36DbFG(OLzny7f-+{sdBc;J_NzFOf#C_)94CjA@tpGVwBgYyo3CM1ne%~d=!FoP zT-_ogM4*5E*?zX2r67Y{ug8>hF=^=B|Uz3_vx2_tz%TJQ@KS~dCwX_Rus%C7Vd z-Y*gwr2(fd5O4bWP1dF z)G5}uf{bNWF;}&4wcV9)20Xt)nSsc3ALKfkd(EyN-THf4-*>z^s{ilTjf#J@NM_Cj zClzl@kCt)xDYOrr@&A5jt&)9hpqThzXkmS7M0LtW=AMKMkZx>Oc0%EnP>-JOcG`|% zUh^o0>Xtf+5Cyz)6#5kZn!+I3@|Xc%=PR$?N*e3KBF{!-lId&JE;PyBUv@Y@T#d_M zvg-MRO7`!EQCM<@ga`U<3wd|#XO1*;#jo0*-k4zzaB`D=(zOK6`YDv%+8qy~-o3WO z#m}k5;o*0}a^4P*0Y35D4!(yEqtk`e~0y_4o$Z zPe?zC;8%T!Psg_1hIFCYN!+QgMT%HSN-jRMNc4hMTSPKv020Mfkqzt#_LE*dWS{Fh zu~NN}<(?tMD{ooCz6@1s>d3@V_^bvednUBz@18F&zl*PtrEh=r5GMNjPI!Ve8H>2i zOadmt!UNXZzFNcKiDC$&s(ZwB`G3wN_B8II1(e$veqqBiyo4;~y{S$86@80})>avQNNkQ0k zqx%}Me8I5*BGUd^0oNjwf~bLNhX6tDv~Qa+@ZnD=>XnrtG5Nc=C>Sss;9- zp1zcD#T;IPUUtbnCevXD2pgGn1Jzs@L4{;v`44er#y8h|UVYx0HL7}EO{H@fZZ7a_ zh68I(If_#cjjYKOGp5zO#57g7_|Kpmd$$`MBgcv9;y-^;L+&Ou)=;^`V;3W3Zy2LL zW3SgT1OC;=#`SKp_1WZv*v&`YcJ6rF$YqNsPzm#bX}aWDP6AQlFb6#_?Ht+Z1u;78 zmEFo7OeoCoAy*iu=xz=X@R$5MGrIUyvlkLBCyXXlN%N{^%R_P2_Sr^=q7JlToDb6t zPRc=kr7mb}1$v@BA0VV?pFv!OxMiz1KM9ulK^XilUy+N-6|48i{cPo_stdk6!5NZ= znak|y?7m{IhotC6l26|rSh*81hi6d zw>Q%iV>J>CfV$!6%L{pG9Gv61wgvx%D^HIuObebDcj(qLWYwOVa#?zUQw8dDJUT zu34yNTNZ_8T-EQk=c;AOa;V7^S3#yfAv#Cm7v>RXqDu)?x3PA_ElN}3^l%;4o(j?R z#*&9PVbFygOKL^v&JCq6MQp_3v9_{wsZ$(K%|piD@#dyT`Es%sUuJG> z$5Nzj&F+fLW>Tbqli6o^b69&G{-wuP*xxCZ%-9*X@ks0b*>-@U(6e6Awf|M%_X_I@ zBQnYD?*e?8e^Z(SuCo%l>Mo0*lY(u^#5=xi(^{MP=41Hn(jB4dbUPmuxru%R2!G~& z-zFKsCwD411A@h{Ix9(Y+Q#%B16$M$`z+}byXX-@B|O-0v;KY6y&I&f9 z?|q}FjZ!4PD1Xj8i?~TdEo@&)EErLrzV;6Go*Y04x?c~%&3cSH8i@U4SO zsrPiG&#tXBIrnoVDa4iy zY!MUq`f}Ameo9Q05nCPZ-+v{3{1i|1rk^%Xd91*6GpV-wJpR zdtN!hRS{&oRbC5}#bnk170S_E^4p!B@G5DMW~XmQabfy_bZB5ju{~h9-&*FsD=gRH zdFC~L$j{j(bxS7~E|1VeKOq)1N$;7bU=US;h%o5h=JTjtKZEdi(u=I#>dNqazP(3p1t6bf%!~CX(%x0gBqWB9Vq}l2b#{OnSHd5+ zm(pIoPrG|bC&&|@BZ|Zy)gMXqtqS%j*w-FMXHH)e!1MhE0iLd{lux(UvzwjwiHWF> z&%J@N%FnE*tbzKj_RZ@W`|&ISm*>Na#m36dDIp7B-MgEI*Gn6J>OiOSJz^#=aO~>% zZE9#_>x-;YSXb|4=3r!Cj##=)fS;iC*&((wDr;-w?yV8yt7~xxRhwA&METlb+ymJ@ zZT&ryqKEgxzTLx1YZ})_Z`xy}^Psk~bwh!OpvFG-eI?I1Ye#PfnC7c8u82JnkZkcj zVG#R{e54?ajtFk#VP8ij&xoeHhr{p zt`oX&&j@w*Z1#?g#XUQ?YpirSJLw7CUA=u0CwfDW&-Ah=6A>nM&42b>KE38N2W%16 z-pl{#e7vwWpvg^LeDuKPzR6qv7#-XgdpL2SpAUy-c1~84UH#=h?UJ8} zg-T(27~3lkhL)yIOa)*+9&SGR4P1u1-!0;1^gj@u;UK`71h_@M!UhSXN24U`X#DIE(*NKPWKVc`+2~ob|X+GyxuE2AIF3oeqhxe(AHygs`%`Dh0=`Van7@-tS>af z{dH;J^>P^gMgDh_Px{{s^Dp(Q^R3&P0^Kf&1lEt_r%wa!Bk-`~9S%!Z^YQ1>-rdcFMZ~hEY`e?J&bXt;*(-nP>%}$Et53!4`?Z_- zKNP@4)V7Yv^z5>*{$mZ(%=Q)2II@8qb}x@){*eK<%z`FRxu?>j=c6s>I_=h8loFwmrWrAzREC zWan)KyzXC~C25>I-vvlp_3(cPU2T7kAR7n@zsH5Y3TeQHJnnuDp(aVYyv~$K-X85g z9@S*~XCx~mvFG)8y8>@^3o7rHe>=ahGD<#!_F(Pw52RnGQgWlpSI~FL!$wEgXrayzD=7vwA7AHoGTZno%(Ju} z_chc>4*t?|v6^*&X(b&UMmesjW1&yMIFy!2`>AuVCvZB$PT!~m+aYkT%qdN}Xo!}L z{gQSu9B(Cs%Y@EQ5NZaeZZsJpM1_^1X)5z}|1|CND?OiO;1OZPWm?Z=QySOI-u&Ux z;8);4gS&XjM02K?4zwmQ)e}rV?mQjcV?t(n!pvc+798Z__(=(w50)Ov(m$CfzB@g% z?8Q?sKStBv5BrAFU#ANRc8%9iP)0%DkraiG78x=N7hdZbuz&(e3bkHWnC3^~9PjzjPn z92*~YgM|}*T1bS4BAp@imxjBIxavBX?hy8vGD)s1>H|Y(4eh6L7D*}9G-)|K8bl0QMZgfpZ|y!^7I=G_437)%iLDN|MFA zAp~Tavjk(10U3s{Wa|gjTZL9*f_{OO63mMd3 zK;Ee2!C;Z;b@Xow-0pt6Db~RPjmL2LM2rK?F)=Jg>S0Lcy;e}JB8YEETdOh(-^NY) zYSmd>a`r^w8n3D329YmO1$6s=6zgl;ILOaa|4{`|T;a(Wktpj&Bq2fIsvyQYhRhg3 zuEP*nFI2t(&e}$#?kW4vO=AZ%G+6%mQM)QaMo9&xX4ck0@UXQCXT0(&!`AHQ{u_#V z6Io9XbhIJDuFCN-Gy?M26#7*}j!D)ls3Q%e)T$-!-YzIO9GNb$xGWC_`D;FW%x+Kw zqQB`fX#b)E9b_#F4OVo?^nUE{w0hkD?#0EfHbdfV!p907)4PiqYBNIB^sl7?{$VkN zg!f^yxddxF(6d+)Sd=6i`>R+j`*#IK4UMb6%?F_1PHU2Q-?pInqRDX%LpkrEY}G0ovLVf7 zX+nRcTRTXZEeWdo;kHtdKo-;%B*)V6{j&GBv0lQjFxQ8~Eju?Hj23n!Y0M&a2Md5E z=FeZHM#NI9B)S_oF4Z+i49|BtcE?;L^Z(I98tIvH51`W%LT^~C3OsjZQPWzQJT0JlE^`mFNqJx z?8$O#*r>3Bt7AWAK_RE7QOiJk>r@#%*+A+>&a2-YGxU`HAcX1h^ozvZ@FRcYc+8~x4hwc=@1_|w*o0} zoTZ||q5ViLz!ls$d^vozKB>bAX5NEsXd85)bT&NMMs})sR^cR1*$rbe>E+<`0;+aM+7SgfviJvV(}&=f zREd&(N|=dbc613&@UT#eN^py}r*r1wa_VNb6>n-43r)Z|5){nxK4;i}{8fCJqpQpja zQa79OvxmsQ{$*zy$PBu#M!?x|eM4jiO`aPQ%lB$L>sUh)v9_99u3AN6rlhB7w~lVy zDh5f9$D|F&(9~I_?qfI!70h@WFse_)o7AtHwXP7ssot{Iz`(Z44zI$@Ja;JU4Yf{VNdVALNn z6m^-*2I{M(k?Hr#LA9@dbJG0Dh+K-q#KJJ?(bkZRViK0D6qz9$QLb_#0nEnZm9w>r zHc1Uj$RT#{pIaZ^I=%Ta{WelgnGJvdp;CXID7(myhK zO(j4x&s3E!+=ibgoOKCl1~Qw04epvYD)77-J)Rb5RfwZu}IQ;e@jB^zG? zeFbmP!*9AyGNYidi#frupA2Cf66PSL$^FtO6h#WK6-mYmZuL~8r8pOvo|dElvQ>g| zF%*F!I=mqkv|_lof>k8J00I)bY^@Axg`!;ANw`nAWvkREC72ZxrV`C@$5d#efw`-Z z#|I4Kn^R|@UGu|AtA!S`o7uPYVnNGYs52QMl86)RK6_n;*i~}T*23JtM=`Mt^Rhp; z94WT4Bm)E{Be;K7F@{Q~Ub2QFX;-TRmChBJ5VEEuaQg!|Fim;ar$vW#bL6hssmXaS zm;_4JB_J;=c3U*P>d+lyVp2<;()nhJAjU4Gh)4RFBj6A!;m}?x>>W&2Jy0O>Dk^6f z7!D7yl1NCQBjEQ%ROiAt+_$&uCAGBk>qLx{!hoUimkGG`V?B42q_{}fc4LQ_l9-4z za7CF3alnuV>pXa&CI;m?r48L9#|ia<=JgV?!P!+dTpTqJUc$Bv=TJJQj8yrCF?-Sc zbwCoh!EhliM)Cf1-k{;?ppL9cMyX*w2HL0;OtDt65;Ws6xoK5VDDs}rmPkpynaa&j z3L^+i9EhhHf*!d9DBd=MOM52?Ir$9#7AuO0k zT@z^*1)-@iSwt*^&WlxJe-MV7f5AY>piiJZx*1Qbs(Xs;1~s7S!n*5v)*c zhK~oLNP??k7eba#Cj*R0fpQNJ>((vfcOqZ~0%9Z}C6-9$IA$!F(7tebb*_?1V^+D+ zxSUvmDp?ZnOP4`iI=7s1OPq{_m#y|a5_YD73QB=-rt#XQ5V9NINQc$(kMT!sN;f7H zbdY~RlcCqdLl6$?3B(S;SKxzwkWx|sQ>LioL>OpbK?}{~mKB#{xM0?hJS~NP-&YYB z<18&b-ih_VGsKK8-TxN-2|IEQ6GC6=7YK7(7`R}@UZPbJ&&|l?xYcD2_iglR3lk)Y z)oe{j^=s-U7EFUu4%jQR&d)d_)i~iyOT*4I+Nf@VQj}s#W%GovXWMEBZYajjtg0l6 z+v0dsh+DdrV-iC=ETvy{;q$7^F*Y&ob$Wo^TU+n?;H}psYAg%Q-nIs zHY3_sc~bW@+Yc5+!7%u+8Vg**xzMB}hL1~uz8UIC`suj~4#S;j8nc`TsVF`<#I7CH z1kxk$J7b7hIzz6CB3m8ml(-AS4DZ;&UBiT&mF`)P zVrnvQBedXG$A2~F**NoC?-$lkTaH40h^`Gty$^fa12nf-xI{7}$0RO)1}MD?D9{PGARqxG?H zWOGQfV`mg$)MZ7&cC71DcQ^4=uxsw9r51(yJ;~4^pglH09Q^f3+>MUvk5LtOxoY7}qFk4Co2C9Osn{injD3^5D)7^a3_-Dv8-0;fowhI0 zo#|q=oFQaD!hA5WEp%ar69Lxxol`g6psbS_4;RP(OZ3uOfORBf6m=_3R3JAMRdd! zI=Nnk)aGSsj~nT?1kq^8=GrAcRl9G+bpHk_m6)j7O$ST$J2~cT{$VH(P}G%{V}B6o z_0bpv7GSn&7;QeMYGsl9@=!um#K*+x!8?O7LVIh+9qih$1hNd%!JQ6Lnl|U830>kK|G3n>Ma9>^i0Iqw@FwxzVKz8_%X<>s$cK~9-#mne%6*BR@$asQL}?A zG7-s%KBgSU%Pr`p8)+nTbul|oHl-e7#42QD7`udwIu4mQG{$hgkbt` zv#}nvz;9z0yJ&LfyOtVmNG${V>&0L%NOPBm7jk|HIvOO73zzDmD}4d&!~4`E5P zN2at=LTnBmIjg>nMthboWH4xLbb=WjcH3}E=;{|{_)qtS6LT|ix%r_0&lh z%AnM=QILZ1YR&;fzIRL{n6RzQf-oGJ7#asU8|TB{fsc3*VQWw4whEn_foaA2?LVe< zP%{$HGo{qEBPjY^!59YZdUHKah%FQaTP zDPy_ccClV^{L0=A7_WO@69g;WZXm7Phcb)^H>FQGXu8Qy>huzoPh?{=xdWN#97j2P z(q@gGJ`Bfz?HAQ|Oh?rgNKx&N7-$Ofndw(cchz}{DU{L=E^4QMv7C!Xs1=<>f!Dj9 z_!PNjFj9T0uSegc?26>~(p~u&li6k?)I~-(@OGIrE`^lmHf2Lma^pp?o5Te+VTF+& zj{jUa{9fEaHgjCq2~_1uE$VQi(BtyJ2zjMCZws)UJLkU1JqqgN3_maFR@vDZTaeW( zyHgY_b4C8vBKA%fxm=2=T#zBJcX;@&$0H2COhx;=><{GsIq;=|Onc$^<_Ii)!-oE2 z;A`Xjzpwbu+4=?&&xx;IbEH|@nMr#cmcR2h|j}0WNNDF+=`TqGR89g_5NN3 zUn(t>vuwzgZ4D1c$qkwQV!?VX88cJjE|ocBZ*sDg7m69|JMAsv-vr`+%J|Fw0+wGZk!ff5_^Lf;OeqL zu^r?p54Tk}GPzp_aU$cA=ndWZ`{@OQ1kP^&XD+hbSy#0J9%695b#DK{wmskRO>E~M z4^mlF8uXx;mFHZqU?M}S3>eOTY2YI6gQO$upVG7a16m4bcX3>X7Y(__Q*dMtVay9e zV;5QSBAH||AG|W)LWslOEA2~6%97<#Fo9^{(PT7YE4TZdF53{bg`{x*AI#( z^r5dUe^rK$pFY;;7iUBIk!Zzp^~gG?8@sdk^?uV1Pk`>M4_dP&z1}e2O$sr1v|?m4 z(9;68VfS)}YzHxFQs-;oNAG8kZsBVm@d=1jn{cRwk*_xK^=fq^d1=x1ajtI-Tpb(r zZw*`8|I)w(d~4uhtVvi4mHy;cocE;inPG)wDQmYee~V|) zl$g0a;FpYWQ{}HJL>D|6Hz-^%O;j+C3wEkp8c%k#ci3jX)TN4b`)&7ojfO^^GF2hd zouG2x&>^<6&Y$l(zoRJ%Mgg|8)?`9MHIeg3cUpR33J8vo^N#ZnD5m(EEMGea5M-| z|2<=p8|iyn@n60dryv^Jo=1TGso|HAkbrvetalxG-Te%F4A=-K{<=N0*eFvJ zetT(T7Ty;6c({)Pn!GdD_+1}&171BmHcsN61G)q5_aC3;1}ZxNK)_R3_?O?;+hf$r z=lgYlugllnP-plE;OOGLll!_Q&1njnd!<@&XS266j{nQ?`MGliS$I>>9(l+98aR~h z^l9O7z1`z`JFxY|dHF3P+j@I(fQ%dmL<4s)5D=K|?e*>QxxKntdYYPveVK{#z8%#R z{ve2ZyV`oHjPvg;-Y_Qk(bqaR+_&mQncWT_r3we9qU)=(;hz~de z9-mfvV|r~j^7I9OcJKSZM}u#P_nqw>f z(zxZDeB0VOcy_4e{5Y^Mu*=)-j>)hO=<;!S#&NhGireYx3BctJ@cz2Hn%d|D3~d0Q zflp7J0ac6Ca^HqD34o+>SenIv?UcChmL% z=LYgoecnIuxgXqi+y@7=LwtFDi=%$xhkr6H3jtBVhogWP#?5{%t)DMXR~y6zJHs$e zfTxqPnXk|L+FS=kq4$ZW6Y7~W@2?1h>f1b|BiQr3d?)Fi z2sdSMd43PqP9sUkdH!z?uLkL#)ZgB{Pq%3X_IbWQTb~BM+rzc{GGf2Svm}cRYy-jf z{d;C%py5VOS7&Ex`p}0))W-x`0R9jEFBJOM^Q*0>_Z5ee$}h^6XFIu@$4Wpac0g~G zoxhg{F8p{Lta(wi8(RLHy`+T*9-0OE; z_PtuWS4(lkUGHbDo`Q_pcTJ@nUuyM!-0r4Y>Gb`B7ft`&qv7 zTGn*Z0pyrwqvO7Es}j!Xj@e%p_H%nSejlJbm%GBf==}uZU2ylxT-OEwz2E(SB1I1j z<~X$+@tnsG-aek_ zZ|_fp+E1Tx%)J{u@HS;;u>22~$TRl#n`yOqUq?}8#DcF67s3Lcci%H$V*kgFvy(i( z&r9hKhn^oMxWaE&L*#7OcTahF!q)k#gMcTz!?Ex@|BuHs#jll-$=-(pJi*1=wUrs+ zueT%%;;)%n;ee;`xV$0A-VWHTO#6k^=Z(du11_p3rXRGjv5pWP+}6_&=J86{NtJE~&!?I}Uo52-o-FFh@D981eof+=9Uq#n+TinUA=L?f%4VVY-a zn4YbiTu4xt2x|JZ^!}Xy2j4Rh^zl=>%G4 zCNWZJSf0V@BXweT4l{!vH6|URHs^`Gaf3C9NIAuN>s80>!81=Amx)V=>&7(c|0C<0 zf-CKUwPRZoPi)(^ZJRqbCbn(cm?RTx$DG)g=N2#(lahrPAt0$#h`GR#A6fh>kGhmFB$Paer{;eNPm!?DuTjS;pX8 zpMn9&M9NKyrw2shJ%?gShJ1!ChMIYsrMiTo-DXOgugY0|%uw4)4`GkU(=qDeoM-yP z7v4+{!xL+99Nf~SY9mZPE@HUBc*@L{pf7!T~hpUy8+J_768m?_z zLqdxV!VV=cB`f74Y)lO-Y3Pd3tr>_2C%7G_ugA%^-Uy+?O8Wt?%zL)&C18`d^6eFw zZeXYt$1McBOc2oa!n8<6sCm0f=PVft{?57V$1MP7yL)yfh(0@aDjs3SFPwc_2okf|C;iJ)wr@ z-|3FyF5o3!T()N}lO1-~AJ7&dPL+B5#@XVA>&Dsj_VEA z^B{Y2ZK%(V#`YL5pZK)U?*yJ^6PsENzU;RV`<^lQUzwAH2`-T>+tqY@^j{;TPNMNs z$Zx?x_@kCF7|5n3Fr-jyMM!qzV+O$Oy}g(hWOt?Nzbh}heNOh>)N55W56<$SGcvs9Ut}+ckc(*lwjg;nEXmMD5FQ z-NOsB1ZmkCzTf|g6s1e?+IGh~#BIWcp=xb)I76&U_1*i1CXSmX32g?}%Vz<6nv_`>zbj|!o`-3PzTL`n$W2x z@GS!8$5-4mhMdTSvbe<{nz})srddhCpeM)I83SQjMHLZbK03*7##9DlEp5~1Zc|v( zV%+#)h7hZBPdpdR_P<>j`hVwhI{jyzGd?w8a?R$VBXvzV;hM%h+;x_}Hchp-GFT}nY z6##v3$v!mGA}}sbIgu`6k#GL|RT=aWqmmj1jP$bLpv6NCt$5-;;GmDT47*2}KZ9LCVny^aPO3Z7Jgsy+AWdR7jI zgtl4=eyx3b^yVlhC}q0?qqQ=SKokS7i#37e5FTWnVr>h7h|}heA(s26xzLLri-=s0 z94{YcL8e=c2faZI1tlmb2vtQ4gcqBi%rc24F(NKmQK;o7mYymh8>OQVG{FRm?5_m| z^YI#xLvc(S?^mzs{UH-`M#Kk|)#z8WP?@!56PyIb)mrlfC8W}u77n`R0eAoOX*nlh zqZRjWBa|*3VS=UkqCg-Xtui5H`1+UBC@Wa-pUAFEdwPTjbb79(fWr%eq^IWn$6A^W z%+69LAprzxS2!`!7TgGw#!$K;4A>kG^Q(hZGbhC5fPkNmI#DoMB>#+5VX3_rSHeo3 z&j2GxxMJcoKL!iIw8~>x7EEH6nUtq^G5T$HgsWzAC|jfW0+g6SVjLr=TceZ#XS7)9 zLzdL&P~|9Ol8!CttotS7EDwif_X-$vbQX4bp8=(0dV>3rjgnGu(&RR%Q7fL6({Dt7 zBY3EV-=nIpY$pWu^~XrmQrGGY1>=3Y|HJ>3nc z9Wu0i35g?#9jZOW!P5q%He-}C`&XKV!Sf|A(i;XEU##dUe)LCQ*x(ed++`~fyYrS| z3-a(zB+Y1X6-IDr#llaR;>rVCa71%D>zAc(R}$`VGXhFyLJTm8fLXU-GJ?-&wBAj+ zVx^K4TD*=b;nQlbTwd@odxvt>pcBGP(p>7UqCgbb)5BmbDwhplMuz6WpM52$%!E2n zWE5q|VQKwrk0!5Cupq;vvFCoia2zJQDQ}cK3R8=_EWNUX_G+o0)w%4SZ#q#4b%C&2xDG+VbzxSIYB&w-(w#vc zb99n4Y`(pMIV-Dut^hjOII5qdl|o+0UVl7lI>?x-x}0b1tqp>XUV_|ypD zt9<2MrpZ-Hk^0?114}D>7f!ZzzlkGv&6n2D4^101ITZa-RZamNQ|iGpQ?W2I{ttRZ@OoK^iA+# zSw(R?p610ZYq*77A0c07WQ~iUN9f*y)5aIGqxTQFR*F}uj!7^}UT@Hbdt2;385ZLQFWcBoX3#Hc}ZA3QBwn%6ynz|56y&Mz-#RtA5zTnYWVsFG~nZ=i^4USmcX;ZBO^3-1c|1<}GJf{s_ML?vfbyfC_Bo=(txT7y{p z#udD){7Ek}6A5G6wyYBJ*XTZ?a`Y<1Ore{N_DLPTM3(8Q<=Pee*Cm{Lk|X&%Y$ z6)bze8+f!x{X#{>JqZeAKaPYxD>rRQp%ku@-hIbp^lMV0^pS4z(37AFnvCG6c2Dw5 zXmKDzl#(gg?ch+=o<%7>HlaE>PrUWYU4;=^WnRJ!hwuJg$1xl=6c0o;1ep!CGFg8w zXwbRHu0#)D1Yo{{+@JLU-+Jl9A?WlCF?M|rJZOGqjD`dSKx8IIas$eZF9NC6Nm+iv znESxqex`1ONJsG@%St(?0%f6Qwzahf=2L*bkUr?WnLaMZq&y+zm<@R3h*5_bRZu}? zDNA5gG0);VFGfx3S&1lG1ehQ)rt&6@+>F;$QPK3s?*e~9VrGL&0;9A+uENDrQq=cV*;@n`5eXO_ zouS`Ni#r>k9Gy?#t%a%dDReFu`)H_xAn)b!+HUrl%-#@-T_B6bpaPuLW`i@BlbSju zDi{GFApA*KB@QQ3x2~NiWV@4?nmJH(Qt(%;L4;xmyAv!-VT9+{nb?ue5Y->- zJUN{W6m^vg78?~b zlcQ>V;eMhqNGY9x6F~_;6)HdI=6l1M9B+a`LI%eN2gpnboLDR?*N!ncco;42qP(WI%kVeV8fCRP`_* zU{IeIzF?VNl){*+(Z$z?L%6Su$Yr74CewpUTchlO-4TM$xWkjzv?{C$vyOaPrsJ?A zc6qYEHCTL14Fx7fD!B7AOGZuMTOlm(MJB57V!5YYHdr(f_ykNV`a_b~!%MP~i59du zNMixRWKoOk`++mn0;x>WeD*K2vR6JF9|f7<6or*|B*G;*Rwo-u@IlsVQ5lwGr|NP% zctylvQVxV^&-h$yCKCKbyamnypxl*=qZU80wAxL*P8}Uk8&Y0{9{#Zj&myZ@qeQgC zIX8e5K~HrvjcR10#}Bb^B+s-AqsD}<+R>E~kv`$SkT%XTqdO3B^~)xgFS6u1QPy|} z2;dPQI7MRqfhr?Qp^rhmP>&+B=EN6OkG!mQ!qWM96=uk~SJq#s*C)j~H{_p_{)ZeK zYXEFq53dPkbmW9cSU%G&wh=c)Y4(ey1&0o?H!sqV#|K9+Er?7;1nA{ec(bCg3l@#B zD(+^o_S0x=Pd2b9d1xvl6DCOp4fYgwCEyTc{kMqQ4LCh(3izSf<$x+$SP>hzYc^F~ zT6-*34$rc2(e$a@Ac0yF1v&;nmKVt>Hp2_VL(NWf04?5Jr}bEs`CHv7QK`|ec<80= zy)y*e;co@Y7&w~+?B>c1vfjyNrERK`Htm?6zy+MPr;;HcXRyhl!BSsJNY!D|VDCPQ z(kyHx8LF+FxQjWY$_l4RxeNAR({k5p(Y_~KF0izQ0lRi#>IqwH+KQeq(us`xqzbfb zyhD#$JJ*1A2a9XB*RF;yJHmQToh9O%@Ti2b8P=f$d2qNTmAFjTfG>-rZaePmDON-U ziY(bURv7r8{0Ipe^)!R>G?Ns18WnWj#UEJY`yz@pM4fAaZAn}tg=*c{#71kJsZ|z@ zb(=BfQ~ZIh)Ub;s$yo_-vWb2qhZQmN1X9}xEIak~|HXj<5Dy#lVWfSEQsy<3G(xBo zI?qHHwjB=5@@&`m&Jb!^rfuXSxAj`4MVr!!*id|R&`XG2DUq}4kb2w7Ov8X`3De{iE34r$HJC7g8k1DhniD)(d;0VAE5TE@Wc z2`7@_m|6%26eFT}4qjg28juH43R4ga<(IiYYFO=M8>}X;9j_>ypbZ^7jbfB#fHGi- zMR;jH3D6Cho=4TF3I7AhPFgBeBGWy1dp-ekCSRRrycdHpdKBw?=`aR!l?sNz(a?SD zz6B#Cgf8MtSjrIY)r_-AERAQlH|v(YQvdGjW-jE>sS!$4SyFb|)`*LaG~1>CYn2(( z_b6^`X4TEX7v!!o;9MsnnNBj0;8FXJR!I=d3(4BTNW@eAn7punbdUB4-A=R{ZBe*9 zFzN+sjFIKS@t%EZNY~j{2~Fi@{s7_|upEz9W*c!CmW!#rrYQBt+zO5sD2IFjf~Jr6 zh{|cgLUsFW`q)|pQaUJ&7EPottN&mbhq1J#`qU4!jpkujxD1aX}id6k5(XyOjG7U!k7 zw51?JrFHH|D3&lc?&>Q}9d7Ei8U>C7UpVhR>CMd1cp{g1Ovk1}&@2=)1I)9zWFEq4 z73L_DPJ+D8ata@ulMnTZG;0Lx0br0bOYyscnNmtjgNK!(;EgtCS&}i9OiFkDvqmBd zsf}^ec&X?DQopzrETLtuZcrh9Ebb8_K#-o5bmHjvTtrDxD z^RezyD1kT8rxHo`-o;D+>@!p|(vjbUuT<<+NthW5EtKOrLcY3-NqxZ zfE<-@Y7=Vefu3>%!>UIS=aQev4~7j9lEJ7)Qs{<$Y9vgF4W~P$-Uiwz960!I)CCG_ z&8hJ?a#njL6=4&kkSNbbElcQ)MuQZx8kuCex(S6BQS$?#(*6i{)TWrDiFb=BX&GHv z>|O|P(@7*2Xf+Td5oQ8?%A{8fov1?oJ$5Z&&(UwlCP6WfUVsZi8A}6sO2^9f8yz)l zS!N-A>usP(A@w24V|38#f}Xmsm+XLPsUk$u-V9=BOD3y;A1H3{V$d77TSZw8?74uL z5bwr1Bl@bu@NXKF%d1Tl5&jVxEp8uANiVWHa;%!$xs@k97+jGM_k*NEoTIORJSEbm z;=Yr^thiNvnEHn39lUE^joFa2NMtKuaixFrSbV_64uSMRibptx9GF93>xQ2Z{DS{4_wNdUlajHzsZoI>I{>M4}jK_%&f_`-D5^cKU5R3D|*Uv-| z=*`;nu~1}zfwaobsCn1oWzFhHxl>0lX(VltZBi6^Zbmcr5!u@fNMj^{taX4;My-ek zA+@_}39o4djC{Mv@&y*?>6b3m^U)@kOoTbPE9xuCbbSz+HYu)@&Mo-hWW_hIS=nVP zOfB4!bqHumbA6^Sn<#`ZAu#j?)zTpCDtjgyR!2kD#wMn`(jnwL&zf(mkIGWKi7lHS z6^{)ST9dosE&X=jMPe%&5#h(`54yGX8^YS_6za4UH_|-0TYplxOYA6$nD)GX@J|Wn zK6j^Ufv|kag0`bHepQaB5DhEuO+TAjckF8SdPoG7g<~@y61Rj@rez%=?E7`(3x{;U* zb%c90yGT(U8P|Dv1Sn1Hk^3K|4-~i&S>*jkOixa!w$+$s%GyBhsT?X&{Jqlv+6P*4 ziS3RQ19oI46`8G!3+Dbsa?B)v+prLf{%C$&EW|+a>`~P5RX}IMeuZnoBqg-6lpY~N zT~c})YF3HvoE2z|%Thxis5GutW^9KkstrgdLwG|O=4hSUo!=~l?$X+K9NnO1Eve>@ zw$&zzf7;ikzcgv>2?GJ!kla8WDq>oyP5T?8dwS(N!fkDsf;#2+>E1W`NfagP?GFlN z$Psm*#t@IEo9?SwQWWtPzW@B zXU9~&Q=&M0NW&NHkZ0>KcU+J=S1;70(X57}LO)2m=`(`}mkw8PV=AkFP0ZyxuIksy zf z4@wW=3D`u`s=&j}rmX%k^bUJ($E_Xa)wkTsz<_;+V- zwpCd!^z{E2J*0r7AsmI0B-0FP8xFAc@%wq({>u5ZY*d+>~I@j#CbO59_sJLTNCYn0GB3UU8k0pL9nZCUwmf>-TL`at(FB!AL3hb z)4ayf%@h#xgK3{vTf3^C#eG`c_S;}JBgWm>@NA?ZEtW+0Pn*Rf8K||WDqJri5{qL= z*B>bAgSE;NA0|av^oe9Na}1?nzPbZJ7U+n;D7B2av-iR zCje;msWzu|Y%}Gjec9zj{KA96Iri^M_D?hlS3xk6BUXZ`Y9DprIzr;C?HCyA}4*+?+)4Y{cwGDpBsToZ5O8hJJM4TD|R?U}eX`Mi!-e>fTyCDK$3b$|Yck+ghU9@?Fc!;gzf-1QwWev-J~Jx{*Jfqnqavq=f{r$g^MHh$6rCR#88N z^NcQOy447G&>szUa!j4^MO3tFqyp(~^D@;YdbuFlF@VxI_8S+-grBy%0K_?ac0k&> z3r!uzJ(UX!KS(QiaU!vLqM}!R`7lxy%)g|t%Yo|Ot7My1%2f~6iKjo@7`o z7frVM^_~@W5e|Hx7)VE)jY$!x00kbGX@;*bg zpVhv6m7lAf{56hk&Owjb3qns}tFCP|BMMb^)d)l!P{Qkw^NGbVp15>FhVaoEKAe*b2n~&pA4_QFKXoBe##oh<6QT0+7wgt+qdLXoe6LtGH}vv z04l6x!+AR?R7UpjljXi#zH1>!gn@u#k788u*^tPUPo^=&rev=gB7&cNc#J9Pa65J% zBPv22wP-}j;Qu&7-2mL1JZ44`Vt9^peySPTLKT zl)v6qeYDNDT9ARflo-)Eqcw}+?anURV98iedyNwYY(n%)4Oa{S{BnH^!wBc>Nr>XP zU%@Nf1;Ai4Z~+lyS;B*@yX4$}IkbX*?&0VXPyRUGQf)Xl43{Q&CSfLqeQ>|kJ$U|h z$}cP3d26DYYut&^AhxeTUl=gNe16+!t&AX_laQq`uq`?}Vuk~2yd7P3NrEsBF`tG{ zG}#_$kzt<2>e8L>KdZ&@_-!~ZRO6;%U^`#Zm3T6gnsDu9$p94>9p{Z$a5k7~AWOun$_ z;v&>BrG(IQd^Vai*oHOQPhj8}ZmoR6$N*NN`j3x#2&`vM(S!oRtHmBa0f1iVRfvM= z69P?|4=GTY)KO}w@=BlF&ImRVh>p86NGMj6y{Ocb1~z9umUN+vf)>J;=`t8=F?JbT z*SfsMeux3f-Os@-R_<}H;gkDhYa}C5_SOsz1sU8h&#g}GLLouJ@!5EIW65#;?%o1Y zrxuyjEZnGNgk!q{ewGg%TTuluV>*0$(%`0t&|=x_%Ke)L8^$*GC{v!nh86YI#)$vh zf6-*%SMgHfd;Y9-d;6WR=;E?x3vWy$C`Q8b*^k@-k-YY$E1hHU zbN#C2#`zT2TZl$U@fuLdS0Bk^i>6A1!O+Jc#BVd8VG^YY=BSt!=zhNwEKqvXPM8Q2 zCIIeZoDlI4^HSmNIWbFYfK0G#h{Qqb)>M{fB$k8j`uF=ovH#J4%*IXclHWs6B14QL zBeSU^c54`*G8uO#-!!#WhqW5_um8U3J87*p(+V0OlN~Bc8l+&@Y_nf0uMWt?2))z7 ze4#0KbEd%@+Lu{!qJ}P6-y(<4;Rw}AyKP{0W|?PB>4zCq*xgLdG7?@_5ZIrdcMj!k z`OcB-8&@>lVn>4-NwH<1`o`1Z?S_6>-7nB1C=kx4YrTVC9D&3(8if{nB1NOFBakn` zfSG`m(P@roCe9cCgaSak$m+NBm0nxuDfl!JAxpJMJ4)~r*2?5n2>opv0A(=g4wtK+ zUw$$pnyeFRoj0lCjhNAX>;j*&4;9d}+d3~BA>8@9Nq?c(=-HP;F&11n}dZsb5I4Zt3?_@LGc()YXVeEG zclo+ONhGN@$Q6G0F>f;vRGBBbpfUY{6&YaleKY0!6q0m*m-t(elun~2e@{&c9_yaG_REs@ ztb5nZw>=&G1#q?7$m?k=nw$_M062XO?zDIl$GzevPDx|%F;q(SQofP$lRIIpT|28s zbsiu;bWD-sMB`el#kknU0lbgfRxbY)EWQE#a51jM=ZP;_ z?dWxbp^!w+ETWSJB}ny48&5KNJo7CZ-zK6C%M!Kfw#w#MjgP;!aU?UBn-f0I)WvVwSCK4WiAbcGksWJ~LV?eQP07R5a4_yrbCzD&qCQEiV&J-#AOA20=f)tDkfB;srK& zma1M`;8$sVXTP(iMAof+bvDy?h@s&0D2<9sl;9>zg*m^kC+3`NM0{xBfO0F+wg4}d z3UqZHuERQUe`@h+Wk#(9$C2yMqa68m1JOSi>h6qkVPuF2+-we>eKi1e2ja6B(=&qVk|k#=!>Z=nbV zmzxRtFjWpdG)6)UcOgh)7_u~Bs2NMv2cF0le@?Poa?E(boK{|%$sv-OORe&&s+2{}xhuysfVvSFx=D4EYG^e3 zk(`wQJ>oTO;}$Y9T5LF@9<2x`NTx5g9Z&VeJD{!xOl#~Oa})eECPk;JELWR!pCSWW zJt`A!QYKJFK{`_DDSPP+|^{0A`QLI`q^GuSEk=lqVd{gniLSm~fS>tp#YSq%%KiBHf zEDf=TiC5BtNMOi+;D?_R=-5>D4I z59p?~+7OCBKKJ^`uL8`oCScsYqtQyKh0>%_*qP6ri$;VXO^^11n#NqUJR}&CMSdwo z1Hk~DRr)i=m>$uNsc_4~j1b}eXEh8^Q^gs+#iKn?W>@;10j|oD$>b*TkipfpL#Nul zPSK9bv;g~ALT`8m@TmHGr3A0vpp)%hDa7X-qR47P7A`a{&C2e9U;1;GOiQS$B!!mS zoRJD5m|`lqqIgyO`V06?_>}NJa`rat5jm!Ds*lUQPb3sIQjW)J4pCD>CYcT^?7U4@ zjwV7vlRw15wMyi5wRuVybm@hnFiM1gDA5(8mMZS--fMQ()H78>Gs_+D=9zSRsCb%2 z9$APo0H0sVIerZ#WZK6h%!p&n^?~&RJoiP6muHODByfQ`DQ^W$|Bj|yApR~#2C~nn zf}{Tog5`z@8w=hwHvVyQgQV833^o>$W8S73?+&Br`KN+{V9x##VP87CE-7NAX+C(= z$(}HC!4Juk`tjY22l6qDV)hC(t#hDDA?`E*5H0Ds-xURo8<74qUx$nPODdA)@Wr17 zbnI8*4MtIIM2?HO!lxUeT%QT6B5T>;@cuyO=ig=+7;e_zOXIl50zbnVNxH@Sl183Z zc6=Ge)xuqM`FEB{wQ87z2_`xC!Ajj6i)7N3$;HN3hfT@Ey)hb8?Og;y7~HH0OV&Hq z*H0R|EHLt(Y5x&XuNM>Z6BJ7?-|!K&gxti1KB-BfM|KF!=Ut*@jX-#dRUhBqud&t& zkw?o)3n2v4bSe?*1t^DNB!q6fTSWV{moc2SR!in7&hkYOGK7=|P9u*}CYnZc;Tb6p z2y3DRvOU_@#r!b*=D6?l+v?q3@v5_D|3d!1)52MqEI(WQkkpdmKjvA4otA1PrC#5G zq*Zpf>jd0Hnad!bP({CUc{yWXHO-$qX`a%J;vRNvF}>(N{W!zSrh5kQwvDKBED)F> za@8jKf}WUY9y*9`CDHEJH{k3sH#g~l$ec5qCj42fPY|3O@%jW!a%8uYrl&P4w!b38 zoel_vGu2-(hux*y@~W>u8Fy+4hE>|+;ZVxgKCQAry`=5u%PIse;I`_0D$W4Wz@&W> zX{n}SXzN7q#Coz`-GGoDZ-$|(RRofs5X^+mbNphzy*|@K6dAfYLb%@PF(4#&3lYgA zwU6pDSZ=hS2`4m?BjRZ@{c#A%_}(mb%deB#BaSsBiH}9atBgeR58jiBDH&?`y#|eb==Y9#9s9)b4>UoSrMM1|WTh{CJ0CXAHSCZk6AoJ#F)w|&;6#6ooBG=JvRV={3M&n@cD zi#>hLP;yQCS%zoR8duy-s9@?7i3>%}d3mbyT}Mr+>crGfy4F)?>P;!9t`idbGgR2? zR@|4FZ44GR^`w>1lk{UGJ1sq%4Ln4Zd2a1Irm>qxn$*7ceK45z*pwi7EmQviN_V)1 zHZbJRFIFKjXrmL55ju?6sF6J5kSKszuK#)4&wkethZlNKvV_dp-z(Si=j^6jbem0g zd`z47TJZ5g;n~Ql{TXziIhM7$ZcX#ZfDx2vbo%Z1|5A0RRY0P#D2M80Zj0}x7=)cJ zId9H!dH5tkQiICT@^4Q9>+REJI=b(-B#vyLmtN2@p?PJv(`p7Zg=}9dwzHJYfXS{A z=r+uzwlvtPTp?p^6nX0FAwhB3jDE{p36Kr@?C=w}9GlYa|9Wl6jX~vm#-zm}9;x z#F47i4yBq5eUrG4TT!ALs+H`w&nMAeZ5NdE4auE*zRhZx1jynaW1v#0qsWBpd>e2R zdiP)t6_>*?{Kw$O%6uPlf1?Gpo(B)Ik3FNR9T6ldI&_D3^CGWar8F(zPFrO>o&&Jq z+k_-n=aKDB1zgKwAs=WPg_mSkw;Y745-)*API55(Hz@H0RS zTTQWKU}a_I8YgM}N*JtST)&ap2nPF8V-NH980^Fuxzqw5!0+- zb*>CLO%Rxlb;h@DF@^6*|th7ZVT;rK8H^m&nK#KMwh{K}t30tr>m` z+HrJ49qn*|^a~g9O~!@cxU z@%zsmQc>$zZt0qvYp*=(nLbOsWeC!K@)_mfG19Fx3HLk2H)8xxB*0$f9)`^+z@`}%QOT<)G z$XKR#sdK%y&X6T7ZNs(=)L!utX9sA%J1^{|=9!`Tz)QV4!VDvi(y66A@fo@li|25F9@9@0|!uMG7_W*oi1mneN$$GSg&b|;9 z!8d}pa^9>_oAK{`99xT=(YN#ZNlOm+IeNv}O?6fMP1jDpSJ99Dc`KQHWwwlA@UwW! zzrC)dt(!KgP3BqJ?TI>6QF6m%1eizRYBCVR04i}hD*{ ze?bim-35r0TK!$%(P=P!8(-~79<_2f?6@0t-?$WvK#>pmP;jZ_(7FVQ+y(@ikfovMcC`WPM0jtg<${TAl z)9NURoL?r3+Z?RoZ8C+mIa%G3MBQha+2k%apu7s)c)D0rFJPCyCjce3$2it% zN{xG(b`cWX=F}_2H=7p3EgnPgdj zEkodQhI9_l;%o~C7vypJOIrD;562?lwXZhmcyXRP9?0&yfEW$;NH>W6>?>H*IO7qr?J(C}4xK^Vo z#O3Y8!05OMpa+i+Un8MVoeG@NuH}hS_mANGsk!^lbxYaJS`#$~r0rOT42hzK=xQRg zl~+*qBf#$(D8okZ74T?S*Li#E6g_c*x*^_c;)?P;&z&5eSofRi#k4rh&zya8r?&Ip z^$0f<&095cO5Ky>;JKXgo9NE5cQ99X zukC%)q=VImB@?}VY}y9UCc;til+FrO!HI7$j;duc(3Z*B&DW0C_wIXXppvjBq6uKM z&T!k-r*n_syG*uEL;rmL{B<~A{>%GG{q=6uQnAko85k0y|26JboYbd@t+Q#D&zU}S6{WhE-r8BZ`t|dBjl{UbnzaC z*&gu@S6e-Xzgo|pj>6xn-#jkX;-8n74|lIdMtaRne$icD`BT@|ZKb`PFLNThyx0Lv z+r8iZA$vT(zAJjvJNWyK(-y-FuD`r`s%Y$Z~MS4@0&|+;qRrt z70>DweFXQ+$FzTWK90V-WC`B)$FrPz9CDO9eVtPZzHZXL*q7E%OzDREC3nvt<1oR0 z=uTF>JL>y;{rS92U!RCccuxD}_jH%v^Z8`%b+_noXqeCU>+_&Gefxv?dP?DVF=re9 z^r$@FG^k!y!|i+O{Z^kM5A^f>;nnghMUn6IVKsfmz<=bT*YoMFx}4D>U+&qYo{90lobFA-KKGuku0ET5y`OJJb-&)p z^7VCUCq`NrTT&bh4;a5Te;uA`=6@jz9|lJwyq7EL*3+*)-9#9^zcB{Jt$XCWo!^~J zEq*N0+MV8>g|DBV2EO9KPwstwoWCvi_GmENpLXVtXMe3c)w14XDNl_2{4&)RSXK1D z3-3}&=h*6XY<*^2$osLz5@%@0wbk2T=S3_!{o{;s;_e)N>XgsN57G7AX3BHirS;Ey zaD27j$6)y5{x5h9^(wP*{`$<=`}rAttoU{K zR-gat^TBKDc2|7!$y@u$$zX~3pZWRvp9{+g!I7rp<(?bc?wYrx-dK8v)#>*RjW2D} za-Yr%_FuO4+Kh}WB2acXg|+8S+QWH;&t084ua5P)6Whbi+-dghHI@Q%)AkdBro9*E zjb^_7JghQ;5)%R3|0bO6jt{LeRk%I2nt!IBFTLyKxz_0()g$DTnERSnM+=#lh3!;cp;mb*U3uM+8(hZ<*iB# zZ?j}x7;iT?-@b`dtG(=07a@3~vU9kHaT}o@_VAGXaa8 zap#~0q;`+kA%*>QWp&keW(lS~^yENbR6NpJ_ZgYYt`1vfvTLR2Oqn^7X1>6eQ3#wr z_wqIGZB3q9xdrKRn`nJt6@086!u2+YkTgeyUU#&3Gs*VSv*!|@3W&WQV=x9%%C6?< zVKGf#i1$Z8E8Yco_>aHd_oN!LEJX>@F&8v(i^{PiByeBYJvrS~f5vVD@W%##8e~GBR74aO(%I_8@UVaI)6ho5HPd2mEFLnZgx}8Zr)l zJm52tWu|ez>dR(nSLquKtz9!gcZ>8GPQMwOq{s+r0d0Vc=DW=#U&1mR?sp;L`j|$z zpXsaCl&c0Wb9+8$M${jz(MsG0H-oksL~2ui!A;#f6q}(Fz#>Gx3eU*@HNB!a8OY9J z%-0?C(9a~n#h0=(GQfN`5$Ti*ZbVHWI}vcpgdY@owK|F&GpNSoe8bh1f9ru@Y)Fu0 zJzQ%N-ZwWcqWSI=YrV)?jv`wPQTcAKrYzcJlHIJnS`wqf{SX_=7puKuyb;WuqlKGn zx*1Ef;^n*?OY3xDRG;a%7&{Urz8B|dm($=9gVPZF%8b{)3v|#P2XnskBvB-kbvL@q za*;UngbMqi2yvt}Hnta!#AT+yj29aKc~ZPi3^LqP z+CR|>ZdjKy(`qK^jl@c|7@55S@ucfzd~M{cR{?&epKTk-A6PVAH{uSJufIg>YfgQ| z5TVv`#Tw5DeCe|62N%K{n9ht(iMqt69UkRq$O&nMLP7xHn8B0$X01eQ!nXSdR>4E8 zY#iNDO7~Vk`*iZ1OS}4eYg<&fV2Y_aMugGIyHRfS1fxhtA!K zpET4xmtAr8rwbfLCBP45c5eLwk47y_5OdzI_K!v zx~)&gwr!o*wv!XvwyhJ}c1~>Dwr$(Clg@kZ*SGt2kNMB4s#$aGy|BlqRlhl(sbBO! zihB_Ca)RJPYGeNA66&GVr~vTHgP{PWsT(2{vt|V1NH{k;a2_@|)9xc{?4W3%;luZE z^n9{=2mAQ^a4n+rUE(LmNTI!M=Mq}$4;E4%2q^F?h}dC5M#li$1WYF3(>(yJzU<@LqHXcD8U$gBUcyZc?M(#SZ?j&x&?+lRuEWNfegVSF=_OW zi(%-_eaB=DHX&AEjeg-~TdA?N*PQ~q01wo%ot)${7_8_A;b`4>>Fq(98w?7fkTU|w z(HMft34|`Pv5B4ps%$jXErWZKR}aC}7P2JA?ypF&s{ufhJ~(IMU07;64M`^W=pB1f z`;3d;DJ~@{4p_1G^{J2&{S;vhR3D}_Htr)A{$qH{(CnEUWV43R5Py>!(Z@;GrUU1K zvZP&ZmDC@&rou{c4=!jd-*VB)|4t95ki!X(+(GVQmQ@F2Ma90^lk3jivhU9}3efb| zLBGc&amA=#E_}D^Xhtl7)~KJ3@|*0+@HvDK_Q_yrK#T2yiU0rsfrUO}6M&FFze~@x zXt3nP0ay?lQeZb~S2FOj><>^QZMfo08yisP?!k&Lnc#{7 zNK~W&3u@2#UD$vz#v!GX?@Hex>jYxhajdcW`ltX69>BNW6bB~bj;DcDMXlf!d{biV zcJD}!D$7!wtv?Ye-n{gu3=*v*1Eu z6Vx#{ddki}iT3E^!VU=V6`8D;d7Lb50tQ@)wq$mP;lPv&Kqe=}@lcF?9B5z9Awp~u zG9(tv{g&*Rn3gSnOJc2zJ_k`Y**C*)G&lSPLy$48(#2+KenbF5Khq6mXlzs{nKJ_o zeh9>`tQJ%65G=_nDGfr%s1g=goyUC@+D1`ETeuRJu z(D|@83V8yFDkQ%1bkB?}DJYlaZ! z)PqH&Ism*L!4JLs@WdxA_O^`ABF|zQAkpn;5+7>Hc0J{7snW=~;F5Xt%;uup#($wq zHSj;|YSyCENaFYq+tI8%z>AxAoM6lX%<{{vETrg>39Ksuee2J%;t9C<^`RTgO<0)3 zc2vdmEbZ>{2641i;AjB=A>0tAf)e2@mn}9M+_!cJ^GbfvUCkwWk{{GOa=ot=4MhMV zDz4FP8vMeAtA!4tu+L-%$e0+VGVo>PK2as{kxG`xtI1=S|ZD>mgV=`ZdVa?0T(gKAYXQ(BpJ?hFI?2e%Cmlc$MU zycQc%O(3dTZc`Mf>&e6*s;+!H3&|gt`#@p@ujaLCOBxDG7p$UO38Y;Y;JhC)VX|@{ z4_7~pfMuqF>VxCP+n0+{Rn%-BV5dh-T2=V1>ZX}P4kLo>&RLZSof;Mv@n<%IrMH!O2ozkg>~Od*K%YKbP>3%V2|PN7 zQa>{!`=0`#cgjs+aK>|#SJCPpox|le>mG#6Zy$Pa- zB%rA{#VX;xSsvR!0K3W>#YS0a;?Pb0j_9h)V*XwLF4CQO1UrYVb`N;Xq{=W6fJB1# zuo1Y)X^NLC{x-S`CZncYKvoy-S)MIUX*)kjq2^?prgA^QW~JO;nz$C)!EJu}ntSph zK(2Le{mkOBH>+;MMQd{Wf-}^$`fj2pLW2Q52r{hqC~i_>)4I2bfGihg%+88AKw{;7 z@%J_$3z<9J*)MTK!S2UdQlN73IZGq4 z5Nb^s2m|JKXHZb~$CpGU%py%fVuAVX<*euF2cQly_XbOa`mJSJs6{en$RMOsddn&q zg(e#Cf_0BP_O`*)a-H9*1ZW<>+d!Wlb9`vGOReT;i> zcLR;O=-vvT66sA#gB`HoX81!Rf^V7CBuHN+wer>Keks&zNSTXpk+;KX#19J)jw%OO zhm#geF{N?-RT;4!Xq+ z3COBjZ7h|wIjV=KRlE%9*h46wDKAARHAgOp9KP!;Yh* z;Eks$2Qu+tw&VxBwq;)^H*WJ81w-v;8fb-7;EpHOK8vEFy=9=VAQ0iMY78b&vYA#b;H)qkaDq8vRoX#jmg7_jh2|R)6%vAUhQCJ-? zU|D;;wfJuTF+vMgys?~YoUDyUz zkUh{YH^6e-;!XT1c?e2gX;|V(zOkBMYXSrdfbSGW8UdjJ%&S8S1JZob-jj$u#$K&- z$$V1szB8GalplyU6;^QfK6%7-_o)`tP$-|cs6=s?H}i}_0KuKVzpQ9_&f!=@KbEF2 zwmLOOo5W1i;QOFqyo}nfFw;0D{Q3xCT+rs&6p2P*dV3r}${;F1&z7Qv9Fs@ty~d~$ z^~Hk)la)@;Eu|rzkjHN|WwKDpUB-JWB4-$sWM^1H&JOvh(plE5m4} z+AUaQKrjvx{29I|S7r(tECX#Yy+%$QnIPWP%$7Ff|%1vxs!DicN_(zW9JWWbw7Q z2EK@J2^d3z4?gvk7egPrGwQl&HnA}hl?^?0Xh-UVk1vAPkF` zOD*vej=mBm<}ZA=DaPMmgDWD)AltyFjc9wFN(w_gKzn@D} zp+}VMEtntkli=i$XBERsK9ae&nm`gPX(tWPM$c zu=E;FN4arWTP!j5Te;uxHBzXzDb-zz#FA%ikFW~wMM8Nv7|W>Cw}Z#>DO==%#yXQJ z=8*@la#ee;&+A?%C)g+Wm9xe=u_X@#7TmlRZ1Ae25}H?pAx@{s@(X49cE56J?` zuO-6*Pv!M;xqyzu7H^64@*6eV%)aCbiXrd`VNW1`O?9xw>nf9az zh474*iua=NtJo&s7AC!0RPm{Ar61et8Ssb`4F;Qk2%l1ECCg9RcOwA{BRLouhDV0wS z2<57?{Ia_xl{8_jb1=}%v4O#ED(#S8WX-G8WutjqRp=%15c2Ky;rLn6)7h88IM4Cr5f`zEC7?IX@`jW&_7ZD_)dAV;= ziwdm`TPgQS6`C)yqMRcJLPoMj2l*kzj@*SvzzWoqtb|FQ~gmN0)w@1PeVb z1puN}@g%q2Yg}H)!SWl&7nY4{SySHXmjLSgE8Q3p z8j_Jw0qRo{OSu{jp0+Y9*oq7t>&{}ZwN)`;P4fH@Z(-Krl!^sJU&^LPeL!M!ECZ4T zasdo(lO9s7?7C1=AoXJHYLj}bG0GWz6mfY7ZV>fCkyb+Gpb8t4N{N%7E=$=a@MG!f zA!|gEP+=f1@$TSXJ2s|bi_X*lwRKX!W#Nl7IXQlRtoF&QdLS|J^+k<}mh?nu={l}G zxKw%&GhF!D9;)fqj3@wE&Ds+F+V`2TNyvf;f z(_XxJSwVqz% z!n~bo(ySwZ%eih4q60vJs^eJJ2=1gH=|E)nTK1Z{guc?|DLX<}|=p@xO11y)SU#zxz?1cwnFi-y{lYX&nyd4q&q~0XV!r_7t zWon&Kt)!Ev-B{Jv5iv7YT&Hf@=m9%CfoM_ z3tiHKiwm|R8zjG07?M4eUOrXQ3`6UhArSGeHBvqD%DbS@VD{W0tvXQ$e;M>)Ow-iI zb~$>J5aI@jPdjhE&Rr zs!ZqwLdNfU48ENkQc^2N{!q#EN+(+Jq4soPotoQ7RUAzC;^E{;_1A~EW^X_1Yf>6{ zGIzwVR2WYKc(iDmzsY6?yIJ)yrF)tPJVcT7ME$p%K_I=6JRVae^Jy?T@SRRc9nF$f z*cn`0(|SBpBk(W!L-=?HVQn{nwp02ZAW|Kp8Qcs`J5{-!IS4HXrJ%0yKI4(D6`>*( z%VBoXa*wsbQaDfrB(n5OUY)Le$4NA&WX1Hl5Y8tn<3cJ>w4fy^d}=Ubp-m~m3m3Lg z!XjVPrWg5)Q}IpdZx?uJs1rkt!$BiVh79!rkpNJ#l6@BgBkR4z+|}P-5c#Z3t9xQ* zf_mj-^bf17WmxEq7TuyQb8!asl%C*K8)geOO;_&cg_9~kPctB=4Y87G`f)0A^$W!+ zep*Z1D8F0C%*79Qg;`H`-7WQ)mILNA2Z?sUlA!7gldX^uLn{M=anUAPHPSO^uGHe9 z7^e_ewcs^H(XUt1LOptenm{V52@z2PR}FNbovLV9mn^u7p&!9gUHnm%+uL&(=24BP zwhrn9qhctVZ7E-I!XF*l;)l)}!GnxhL~O5UbcBWL8#2~tc_?|4kQ9`)SuwYaGSP6z z)UXwm3NG0F<1U|m=NAj*Ar`D%u?Tt`pIuNi_L?m1ufjy?BKDB>pL5X|2NZNr&@GM@ zfZE-{TZ=GQQ|rhdh!U395Q`sKy3aG;r5@5c@?4ldL9T;={RIFEafJ@iey%ScBLiEs z1n!Jb5U;I_x+w>ONSjarBGE?L)i`#?3-%s2LqG zMd}bQ`B*Np`a085(b!EDy*UGzrw07W^jx3`l_`mIb2hw)OoOeix^;l@M*Tn?ieSE>6P%L5u3%%Q;XX*g#bQFXd zN7`v>mv}n>2!YF+xh;~*Ed&B_d(ARm=*l&1%To=O!Nge;EOE$u7pc6<`?I=WSZ4R< zX*j^TS&Llk=w&yLpb6X=#g8$+e(a@tOE?H2 zl_|C$tddI$F2vKExlqZM(@KKsR0OZeEZg=dWK=?ASRmgzAOLB+k2Qq4vKFDkDjc11 zRlR`7q)BY@G6=O&+eN^ zir0il9?wgAS^Y|&(A`x0_GvPwi<)9vf_u3&5v+~+BP%2X?VaV+)gEy$6x<;E8eDDe z2rLM01$$_d$G66WZx2l=g>J?mf8I)FGcd1oXcb)>4?-oREO1ktC!|iv5%}t6K@a)VuOSO+=g~ zOt|mK+c)TyDb1hebAJt{9I6g-XBGcV=G6PB-vXRoA#DJ&;(FF&zIe;UX;Xu4^c1>V zF}0!Y`tv7@v3glqIQi8X)k3j`f^I0)h<1p93#sHr&SI?ttI4A{`Jj9%FHk!@+3~`^ z7AnHGX8rAa(pK#p4vYDdvRsC=^naZl&n8AC_+Mw3e>GvcLTUEYE>LMY=r4bMX!HiE?c z0;I~|f%F#VyyI>3qjgDX;6NP*dkX`+T5G|?r`w%gz;(sz3KaUfg|bTNjHqW>QquZ9 zERDIaL7|hoW3^}yZl-y+^3VoRa*Cq!sF&b66@9otRpIxE!3mB)=9&ax2-JxRwO-a1 ztDL1dl2dJr*@d*fNoSle%ARGDud3s2kbW5^11$HXYX+@ab#L_w9d>ni+dh5a5dKcG z8BFI|;W3*GLgw%KQ9V(YjL;RKu@03l*Y|7`+48(3wvZ0`se{B}IP5(1YKnB4IRV;7 zrN1>o?ptz)MYJXQ#oWyGi1FtffAA?x-!~b}T+OhI0MQyw(rU|D5=!Vtxx5Kn~Hd zI{lR0fMco#n~W&22udWDRi=DWkIG*osO*`9wd4Y=y=U#NAEmq9N&HMs-u(nGGYQFT zU=;*v6q4}Pxh$SCr0b9e3g-BeeAg9qRT8DvEFZkub2v#P_PX~&rqRH^nMRU@!bU$#qk+7kTBn@Cl#-5P^8d{=0zVu6hiMck_aCOwT4ilJK0#4w z?Yo^dJo}CKs!0_HEaAjLS+b z<*k+E_OD2YS@9Ko=A?g^M%NHfJnlmCYqpWR5Ac?WTI%}eJO5@H@d>Tq{)cH)9D?`{ z(})4>W$vJ^M5ttrV-2#5XMGNr#}k9jYy?j7)Q?5eiK$XW(gXnBcxa6QQfwW;F{57b zlYoQ=BDV|hb83^zAk5S4J?uvTYm+~9+X!r!5m}ggBfwYG3fp5DS|y>6^%NROt6_J= zOkV2RfbAATMlOWL3pXSFjyIq(}V$6@tAhJ1hxa9X1|4ue%Hk+DgGdg;uqYzG?vbW1T_z>bYS&L7 z2iAvZBZ0LSRvyi;&EBU^2JM=^$Lm9Lrt%rQPI4p<@IiqeOp@M)Lnb8lB+ZL;K{(7j|4MWg#0WKFw=C z`Sv>hgEUh4H`1stUYiUyZI;(D(D$gpRlgYCH{|N_ed_WvLMrl)64ypv0`KwI_IS#v z8AtlYb8wVsQJ`bUjgH}Yof8hs2DFu!zOz62I z0}?oK^2`s@=)6+ZLf21strjKsJp1N*T$kGYvt!Wf0pcp}+rW3`M+2K3(o5S&@#9GTbwFkbQC@WO64<4B4b=k=(0P z5^h0l*H^2y)eT?f(Qod~sR+hVrt-YLleqzlHhrM>L}z_|>qfvsky4Lhv9rP3+uyM# zTD(g6%*t#HOJ&%G(zj*?`X9{GV?=2x2*su`It-R6ZEkYQ5}b7Lg;*u1Eegg}Rcwbu z(|=p!}wXMWe>-#W_@6}tu4Eai>bxOre%joS5g18T8lcx6g4nd#j?%C6jIYV?7lLYclscKxei2MMvq&dEWYEQr7%fp)FNSBWisY9%8XPP!goFHMv+z(c8(^G089>3X#&=8uv;+B-QirEhq>L0aaTcLaR~D%5Ee zLP7|Y37Q^)MF#X7u1=o*xxnbe)Q!C6MSMQqZy#N~tmN!&lP7lOX=}yK_HM!0EIEf~ zTUKp06>|H_pfgx7K})(!ndNuD7(%vt$0<=6`UQE^s7D{QD9DGE%E1^Kr)DlZU~!*e zm3p-L_i!*-G?%Z`sHm>vqTD&I$92bxYY8-IsLPApi}|8Fg8cD+SsYi;^lLa zi2Fv|za4I`@n~8H_aqjTW)Lt#n^awJ$(&f!FSZ)D_tTmYH-YNj3H_>}JKp_Fr=c5I zfT0!eokH;HqZtwoCjsFA4o2}wXjkDlz&w|A(F@I!kj5nrnZ%A0CM!uv1#XN9l{ep> zoFN=2aAf|5!ITA2D}PDT{L=PQrFSS%xj~gYX$9pbei=n~f4On9f4wz3N@la_Vl_%x z1q!Ff8PynjWtt5rTV-DN>J%N}_6HYFKj^_JF+<|Xr7v`RJRu_;n zvkk$eM@D42)g4h4I$U5}HA*XJGaFr^@K>ZDhu<`d8;j7XL=ca!6s3?A_G?iRR|N$P zXYw@f;sjF18wRbPV6tNGp_iZ&tylO)H8_3 zq%H;|qekELGdkLjM@M=_V6{R`^j6ZEO$<-o~Xi*$z)iutAoq(LNb-& z2F!L}77hcY(8{V{G&0=b6pJs5RFDZ$OA{_T2AgKCYvAN_o}?itNyRA1@;%l{PA9ir z%B&`NYULqBnmtE!8%0vhjBXhiuVOo7J8T0QmN)MXmq48?l$^6=5mh_MaKq~`ELcsW ztT9zlnpR7SK`?5gU)n&HDgW1m#TK)bf?SzC@`ltx5tqle65|QGcT!w`K%YvWwDmyL zO4!dm=j@T6J`{QVSc!PG(jM$GgB0{jP`U3NwJ#hYf^RqCtwZOaG;TSo^o=D{-p$z> zxoq1Rti&_;$qcu$=LpRQ4HL)qaM6xksVEX|kv9{!Uh$G7v`g?bkFj?n)7TNnAkVPm zQ~u$g!}mh#T&0w4$ z{PuS{(34CNWOkgbyQKtVUzI|qeZz~Hi8enwS}e=~-Nj(z^&B7tF+*jKw{Ye?Ho_Z? zg>z|wx2r(ZHhX@P0{LLPObSPm#tsy8n1ZO>2y~6}kw##AJa!8YUCX1I;*Q`AlI0|^ zG3yP7C=qd@7}t9N>%iumhqz@Yj^+^{i};1rG5e(aLUNgg{g*@8;`|3se65|4#(tlzJZwORHRQRK$wh%c}+Lm3}CW7*?VcF8&2vGE9( z1VW`=*rPBmgo?@NzcZf#ARc<>+~&~24JORWONH2J8U)tv^_ZFV78Q#H;o(S99Gw4> zZkXE`;&b}l@z;j}irFCy#<{-RRWH+NA^a*YAQ~GM1aBuGqiZT_gVwhwL`aXe^k-X1 zHw6G+=mI@~w4O?bj#KW=17a%(f#nR@1jvg8`iqaKLPbHqUsl(Ftqj*w16sZMkgF&3 z*i^=adl$_=r{bG}^MrCFN6S{_|e6c+75f@}Za|e}8@lAV{N8L(Pug17kik$%}xU z6L}>=d~ejP0+|otz$+xa;rc-kglxNw>fVTSR<+_5SVm^4on?)g>ZV<;$Gwl{hGH6l?2(cMSqy)+%fR7 z)oKGdo0p5U07>z{9#wvs=pt9CDmQ7(Q}Zld;Y3oGl7>&35ksIo?{rADf_iRj^AHqO zfJdzLj%EX83pilllX$jA=c}51yBi83z;^EzaAo&;p5x{4g5wCFj-c`dw(jI zULnE)*16z!&fzjs@v7>i@1#^X&(bZ+vX$~Mogyy1cLP#63-Vl zRRkewIZ_N3!>!VLCXT4Q{UT4kDY3e0L)?^Bu~fu^N$)BdlbX)==1Nz8wW0beZO#V0 zD0QyxDFzoq7%EWEkmXWHQ5XgSYW9<9P97^!;pp-XkAOI2Fa>6Wf;wD#5sF`Qm%1~< zVY3anel0$SHcF0H=0;-E;og`{id!UsF|(kR*@RWiH*U#&0Am5jTV^ z%KaXgUx!I8Fr#d;7L`sMET|RSF=+y+LxXDtMZ2MH_0YVfvc_fHii`VPm#umtM-i#B z&F(wg?~4-M4%$5@i)%pCgJHRyU4Rjb_f*R@I#kw0ArE^p|5 zI3;XA3DJ#EP)ceQHn)u!9qllZIF)0tQkh5Jwze3|+-dmKl`o${qU+J8Q$omkqll@h zZbl*yI;O0V9x__PTN6&5v_McOLJ8q6$MiR=2Md zp5nOQ1d*f~^vjGqORyT2S|m%bV8TMpo2{Po9R9P#V2_!WV)&zRSpNQG1+22Cd{y%s zq}SqeL19%fEjY4QB4zW>`5Euc`|Itq2Z@2+uhxhILf_~ez-Ww&lm4+@S*PRW&8Fyt z-Qs!VeRthM&G-Z}@AYhKruf(7`M*7I+nB4{T0GczH?^0-L37bF(%QO1(8k{1@r*T( zuQvu}CR&!KKs$`ouGuZn6pOk{$2SzYx7yR4=qNoa$tZATtCKw*H};hE@!GegU=;$~ zP5ev;NynyGqWw&h35uj4!z?>T1FQ?Ze!~xMR|c9G10%Wjp|K_`5VwLzK#AXtamKE} zH_=r~a3uPs*s5vXvBCa5G(eY&{!JF3O++yd=&`q>z%M-x02uw38aZ5G`Be&*pT`xK zR$8%q(RxV8`K1E2|CzdzMH;bq^orBc#!RS%$La$3e8aJYqgTht|*ZkH4c!MX|l~*`~>!#X!Z@8qr2ASoLtSxYiX??^YeE^ zCG~Wck+hZ^7O1nS^Ix~v@{{BNZ&Oa_T!&eSh^+x`$J}-ltqX*58N8gRt5K5%+jr(NFy-_&=w-jj8BYb@{od zr(mCKM7OO{wvCMGxOmiUyUozxc-1U{C#kKL0e_1?Qq}i?n-)Rgo0Tr@7aDh4K1HV8 z=mY%sz+~9bea6^uO>z<6JTv*hrD285K&^_yf^9rTU136&U(af);bw);4$orYc{(bJ z#983=sgd$Ts6^^TV$&Sg#l!7fO(rpyJzZhCW(f`~f!=^fu@w{(($p2&tn{(d0OyE6v@O*0GND2xWC@)Hjwxh6G-kE=e%ZW8C9?QV1c?K;XGN5Q**7+8XM@_a zFp;_3GH)gx;bpBsm8(pceRS1^J;2f~!e~WkE$Yg(#0@HL8t_+M zVS6pN9LCpkOB=gL=uksNqmg;g+f&T`tbGabnG_71R)}O|a>MKn(pz1#6SUNO?LQc? zFSAN}2HVz`Fl!2#0|&U38R=`dYXurJwe*Y+JE=`w;eMUDZ~GEvK)sf^oH`$5n6ALK ze;Z#N!WQAd2mOSILi4-Yn8&-)mDIOE(T{h%GveRFgXj2hlP`^ym=&D(_Axl$u`s_l z&3`{{tjn{h6n5QDn_)gWI;{!{B&s2pu65?G1=eU}%(k7ms_G-dWKfB2*LFNhhX`v_; zypUC({`!LZ>sr%D;eE%Q@g1t_E2Ax??+eFF9MfU#kk9UgcX_0D5rwK9Uud)@}kM$-3gv_n(Bbl7f zvL^J#NzeBSfvp~)S|8Qq`fThxE5xl!wy&E31_vduV$8(XoU2Z=oXebQ92h3>%_!G# z@{!kufeM$ZTka-KP(ts8$pX2foRi!SZ@dmS5o&r@U0!$@ogl>LLnftn$t@mEf?5lOyLD%0mdB6QHvEB~vnVc4`<7yVYuOZA7EZcDG1-0VI9T-Y7YsYUr zI-^xmw68w&Ej_o$3&QPf??za_|^L!A$p7l92z6=N*YTUAuCJpZ`3 zx_Gcf|BdluPk`yF&b=axHCFtoDX;X^k^HHd6)*Rbbcz zcPGmq+e$$sk-iLQ8)mj*sg%AoN`=p2b5$#~$osZa%EsvKIxA!B$ThTBb?@2ME$_YN z(s%X1dRtjp9>FC|E?M(DU!BMa;GiYM=*qERp0E|^@2nD-vxB=fs~YgrQ#PPwzfdn{vQYe87ZiuO9cekH5d`(m0z;w1J1O z9iHPuGc#OPvkl(#7IJ*p9yh4IwRPU`MD`x|?h-2ce9%wxd=SNdIuuKUa!Q)Zu1wza z8hGj?b0Zpl!9KkF*c-u>q;h{*a2ZN$Z#^BlVH0j04u z?_9sk7OGPi|DtPizSwPiI%BkL#!0l@FzCH>1hdSH^kqFq`Ui z)pxbN?bS8j{eFM@JGj?~-?-~D{QEl_{IaU-vh8>bKJy-*&e@q??UvWb@6Qh<@B72z z!KHMLf$Fc1`@4&$rjCQ=n8U-z{l|XY>g_A?*SoK))7_)t=hxJ3_m79}Beuei)3aUO zaaXoxANQ8mLQj=Dxa_fcuh*;o`RQlZIvr?}vxxj@s=c z_~+~KjPmw7yU(X1d-!bRTcxV2t*`k{p{MV|ugghU{Fk%O&2>+ltGCm)-IU=N$CnV> zE;?OZzN5@!KCNwSzJqzs=da=Q47SzR^9;6S*O=wQv)YdR_TlVrUPWDd;_4~vU%H#e zH|d+(N#_|Ku2nzT+#$msMK8xsw-(2tDWuD9KZCmAQ+33}>7CB@nY(dh!R>kR`dTg1 zyPf@D-P$@|!*{%KjL)IRd$NtBayWc`_jUVL{M?+vA^6qwF&?q}{c-tRJzj77rS)~V zI-WA!<^FlReQ4`gbg%39`6SNP-SHcui{@1cUe#3=|8B_9mygHi^^ngr##FcC%WPpK4oR8^n<3xTEFGQQ z?-5yS?H^u(KB_j}l&;URDTlW3Y+;$g+k6!^(Ra^}ol-MDE2@rp9AA6$^W2)YxBTL3 zaZ;A!LACk$89wDO;(eIh`>oh?_1Ug|pDChW^7TvE`#$?qHOuGz{aY;mZd3&B<1Bn| ztoZG8_bbKWkr?`PI2&pE`@Qr7DAvK2mrQhPqf7SPE@L_cZO2Q-!6xQ!kM33{xYf@x z^zLf!?))AHpM1ry-qPOGt|x(C{(ky;yOQ4fJR4pgxL9nDiu#+6e|@j7>-98@Ud_C8 zf8G6Y5wmUW_$WZO&(M4~bo?oF)jr*-d#^rbn*I6g;K@5wYvFxZ>GNUHq%Y>ZIKk)L z*ddm`zx%kaN=zOfEtZMjt-&JI{Iz$xOpnvReC_G5fw7U+*J4b<{iCSr`z*(@VQ#o^L-MYF8lD?VdUjQudVCj^~|qThWcy0 z8Jtpw^na}g_?)Cd)cRi)s=Zo?Cl?}ac zVV@DUYW88=V7}g*nd!S%wcY7H&S%m^-C)i5Mms8BXK41=_)@GJ=KPW|-59>2`7z={ zFNGsj_iZHWwcOskX>V@x-I!~r*OiHm>0)mAEaixWE+OTxeNgr;%VgZ=Wb>(I7yW4S zwYj6$hRP@X8Lf3fYx90;Z3h#L3N82D_V@H6c>J6v*LYRM>P)Vkb8HzZfe)9XR>Fc3{y*t=UjTuNcNG3FXHs&P^FAq%?s`{ zi+k0mqjc6!v0uxhjp{4$ZUblZnB?WLU{LJ`t$%D{ByTuRjMmKmJcj{md;hIt1iqIo zsc66Arjny-cJt)Q$+eCAZ+&j@{QN28UjcpA z2RjcC9)COmc)R`j zjqU$7+LhC#)1jd{nHZht7OLf_%uHAwu74Rg&p+1N;Af64s9z;-*zN4{Fu^h5zQKNP zsB?hg*W2+s!<`9i%0Ufwpm7D3wFRvSKr<0`S@HtY(Qt=hndlj1dAUW04(TN-lcvNF z3`vcn6LKYqO-+S1Z8?BuW3_6nj{~$7#%gzG3Vr*q?>OF;+b9I5nThtOkZj;imFk&a zCl@Lg><;z-dt_R7{st!O<-vI9T4ik%hY{ao+SWT}Q~iS2IyVRv8YWA0{~32boe5*5 zN~`H&%FK_(A~}Pi$E-@bAISQBr=RZbnUR2FO)oOq3&UOW71woiib?u;j-TZinn@FB zs@JH1!%hkgZKhfKnS&1KJ@$yc5(v94QPi+*qjmlFlpdVlW#asZ^9cTUA#+#xM-Y#( z)=`B0e2SJ{(7h$B%^NiF-xr!%W*fbR)-*w6Ere8;t4j7whwp-rSmJedXg=B+B$&}< zX&-yBpxFa2e@z+(KP<*?i)efhOe^yK4%C_yS*K`hbMg!umXyw#VdQIA(?lNP8_jgK z{j|kS%QEJabeO6nCWF*hq^4W!NjfMrs_z9Dhw>?mB8emX2JGY^mJfz@KlMq?TtP8cdS**+%Ii<`|!D&k*+ zd3_Fh$IwO9kyF|#u%lA-$(gTXKBJHZb`|ct1g=$>Y1pQZdYd;Ey-0>0^KA^GQ^tK_ z&_U$jRv1GAZ8$7U@l3ejD^vjz=UVhl+0(l6OaFbHGSeH zI;_hs6SqDF#+^D5^p(ejH+vfzE#}0Xw~x5l>{EV&G|a@AB`-XE8%bYdbpk1fI}O1y z9t^#Qs6KARi6)1Cigx@-MmGxYG|XerP@l_nH9OD48Av*7wLw=wnoV^e&Ap2#H~JCL z%dkY0o=sos9oLONBZ??)Lx^h$nv!H(A!RK^fs@gY?gFcVzb3CLlxwxMoUmX1Asw*a6lB` zpX(ebG43a>ykuj78hr93Y8o+KO!yq4AFUWu*oJaVs{De z9P-!-ex#vvSROy4L6aT4`do6k3U28`0ZO?F{#u~HvyAJ=1JYN&EdDy6Q796sAMg0k zCd3sML>?0sY!84zC={xHJhQ$GNPgDT14uloxC((pNeV0vB;NnTfI`uqU!4K|r~CD% z`~UR%zXPUL{!a{`{|Oei)3BIO4eura`V&kr_n#Z6;IA`i`U#g>8NOO(cL^m*iBYOo z;2+01?VM48tyZcBDwqw+(<=^2j2fv#ukcSp?ro_@9GDn3l9_%^ri=Gy#zKbJGEHWr zusr+`m12UCW(n@3yQI7e{o=qxu`tZ_3Nkx9{@E7~AXKmw%o8fW#51!$llSk>{&C8o z{keN%?=i{!fEI?H`w)9(%+s|7@Dv#eeY2*39)t_FJ+1^WHy~ zgHUPI-}p}xq1fsKP*h|4oOPGlJUL;Q0F8t`VQNJR%cmtw-ZR6Fq5cVGPfqi{yd5 zoS1Sjy1jztXBF=ioP;PVabp6nqKtk;qU(|g!AW*c_JsjCL~7Dlj0dY%=3bi~uYC!< zPADb|0}B73JdywJene`$msjou364xlLoi#J<51X+Ov^&j&~*fFOGA>-WeU4qx%&qR zBK5n^uTorVe$hKmhC=8;K`m7O9Sa5hzm0%V{Qn{fM~mjl3Y8Yq&ZW{YZmtJYgpX>A zPGkLFX0N%(4E}=;o{*Ec#5MbME+}6_&6byZ&(7IDzUFEsgWBbE=m_Pd7WHHTh8i{& z_4UI4ZM4Tndgt#3r@hfZ&?8(+c_V{BKxk?inDp8Z7nz=s`v)Bib;*hdYma5%f5Bm2 zCvOg1!~OptEg|KUItfo) zFqK53TB4A!3xg_pRB#o|Bp4g1FC`Tr#YcB~RR=fF4|wXM`TceVPP#-q=l?&9|3RITkvX79rzb8k9iIRH$YNf1J9Ogx4-WnVR%Xi( z{puY3U!d9Me_a0;@xCxrQqF-%I40~`rIQIb>i?D!J2r7vjvhEi5Vr_7W5O4a!Q9x~ zKlzpk#jm-4{4F&~EHnH6ZXD(xA>4rkdMty|;C1ly^w+SpmR=)zT#-9<5Mj}o{TX4% z+58?Qwy?In%_r)A0H(mpyd#7r9s+$+%b+B98NB~AR`zN4&y)YbW@=@o`foob+}11F z{|16Kpt24rLP?rh1*L_Fh->_#xBrFdALto(@HQ<Gu6_+~kg#VNoMdqOk60ZgK|65$^q!a#Afb|>ZU_23g zkpW~*OW6a6tpTY(4Yduh*_Je}B}Mw!a$YdoL$>t9avqe|L$kXVqe4}eBIlkynAL%- z$|6J_Eu|P~Q@#lc;oGOhAQ7zUP=VA@h-BvdVS&O%pX??|M})xXl%|Lvk$enlM}U}7 z^0K?&H8xYodA3_p2n+aXwdHv=$EL6$I}LM)s!SUsqUClDAZ?>?U|pQi=5Vp)b-E6I zEAFY{q={}X`Xp0X?3$8+<6VudL{vI9HyJC(+R7wfMfgTyU@;4ao{GyN9huUBGMPJn zKpm6Y=@M&bkDt+g;DTV`lej6@t@;2XZfE;YrCRnStNW&ytGm@WN|jG5pG}VK<{m9V z0;iF6;ubfvmzZ6MTwDJT8Ygt42zY#Q7jW>U-aTRjHNQq?-h_ePTokG@sfm=Xn9_K9MGvb z42hR=uq_G~K`XnCR7A0xkf70J?;_&Us(`_9L#2Pq*P7d}g8O!K(4PQ(rZF@8hTSL! zlhI>Cj?Rm|>htlokH9ydegVE;&jk3=^GPqHk%V2k)V`jvrv1Cf91#`>#_`4`bxawc zo2}uEo_BDCvx)KOPA9G*@q(S)J3d3Q_#_G9??`WY#jNtSM+#ZPF#1=bTK0_gZm!`r zJ$`Lv-?~y8BCXL0e3x-bWPIy^JS2jT*UDTbGTu<^%RijtD&#{V;iT({J2UGd6JEkC zv8W;go{u|GyNy(ooMOVPV?x6B%|>@p=}yT6xo{50^YH8qO5p6!#G(PG#$|G>m(yH? zQbXp?wDaS8Csn8puR&LqKC*kRx{XEdEu{b`F+G#qb3?4< za3?WQ-2zOaqf>+})9K`$8U0ua#i^H3H{?L6O#pGHBm+p?HFN~utRC{k$GN4F+c2)XD#T;m$-j;n}!4vjAnT=uAEY4U9i1X3mw9q}*D zS{OkTD|;@=bJUdyZiDpJIAGO(vEA;&=92zw$JB#xJO!65L3d83l;-VDs#ubS_@_-gPt}J0j=ISD-^@BOQ z*gB{KB@`k!G^dZYr2eEy(EhosUbj<6bIKKFI^9u+$FfeKLVZ zmVb+#>#OvQPY@iVo)J6aZf2I&K1fw)~cDJARiU0B;^&k;BfoOW;Fv~Cqu+aPt{)HCqKN`RJZtIwdQG_i2@Pp>ys8?luMZW6YSphAN7@|jL90=$3eabAy!t~4%OJH>?0wR=EH#{GjI zY8=HV7q$cuhr9RzpJl~1GCCzn>l_uMqCgq7I?i+2lk2SWWpXC6RwM)Fkn#XJ+)&jj z`@H&ymRy|5;PAHhC^`%0+4z@um;=)U*D60W8Uo2!-n60Q5Z)y?Y~8}^f%%x4C?->+ z<8}rZu@ypj*ey%PtseYM1gH=ZElgg-$rM5=q+C!;$ z_NbGa&`v)zPiJ*0dh!XLJV8m6Gz0s);AOfiV-723GNj4orR|Q0>WX~k3+_o3FS%K%Vk|!p`G11r zswL=gjihi!SJI4u4W+pxHhWs9-YK?k*)oyA=p5bgm^1_w!bQjxp2p-FV(Y{^J@=B17|}OmR=MGRgE{@7HJV-$Xw%D8j>WibzgSI!~0i@BntNk zS-;Y6r-ACPPRH^{#Q44Kj`$meR&mYf&ww;pB0e8^X(>+ODs{jwimpOBey1&tvmYG< zA#nqufFCpoTG_Lx{pa$#g0s@QbZoBr%o>O?QNdHr0~Trn>@A#zg5UZ#1yL^( zs!r3{U?~?NMujc%wYFRZbT>K5h|U`Rxlux313dpj@-wYGYiah8WytJD2GsPC;7AM^ zwI;R1Urcy?3nPEIu!BZL8I!A6IOVk2I_qc0({J_TlGzz3W_%HJ9V z_I=-Cw)rX-N3bxB2a58HtknoLEA<$R;Yjh2^iMP%_B1Mex#*UP1g)Ivzus{G8)o}l z2p87UI^~ocbd{>nPW_x@7}wOiRUPR+)3>`xdeD-;%_YnL>1Jq3!Lc_hQ+|s?ut6rQ zMB(HVl(AAc!eUDQ{B9~vSY{xRbZ~cHJ@vNQwX$Y@091c-&Zga>K%LOXM$7&9TU(QCI2JcfST` zP4ez?dWI{d85^7VuS*q6n-{p($Z%h9rjIS(=zpcCiE=f&EdoTpRPQzQZdLjLClirB z@KiRWNZb|qH}HS5y~TWEDRS;{ZZC`IM)w2rQ(Ua`JPT+2HI_84;;bAi3S-oVa=A$l zCHb%cxbM>9Y?tMv-#^6C(P)lo$+dmj4EqvdAGwtSiME29NEBlO<8Ca3mJ&^{Q1N4h z&^)UD`Otyf{=37m7cSZx`i|EqMef3i)Ubqi2TQubO<=rJoaP*G0G2b%M%0sJd#N|O zCLj-~Y<5(cS)V@jUH_b&aoIKjxq_@7XX`U#uO&w|E44!F13IulrOvlVWmU^sOebFf zJwE}EqcI~jgoB|7u?R*5uHf!|T3Bm4Ch5RNv{lp^XF+Iym}bf|;<=C6i9IkFaA|*9 z^*>YEjqV>D*qagk;e3e|q7JvHS;fnP!$$q0QSJ~PtW_&YGm#B)21l|?U{i79FybkI zeKaf1mdl@WlnNj{!0qWKUz|aUeM$Omerq$uh~?lE3QnI!3;0Dvg>SQ0g1`n^oZ6wM zN-2u2_^Z8&PWVBxoN5H)=mg?nw8C)*SdK26Nh`35u-cuy7IfQ;7VVJ=km7hO)my9t z_%Y4&VFKN4#$)COqJuhjd(J{b*JfGl09u3P9Dn6mNP4fgbpSD(ynB{NJZ%tW@Pf#pW!c9eJ?s`mcX%Gs}0UT4qJ}R z=_ysK+;OKj_P~-D4zmrDt$FH)Z#P9UuN;aP7U=J@oN1$l+lk|XnD`@^Q>IBEK5oxx z>f;^Kc1TNCEv~7N$$R?RO&~Z(*#Ic*=o`w<+B)~vL~4X%4wIue++^1xs!CX-R+I%< z5I!O@$c6I%ItlCCcy3Ku>J_9CqsT|BdM>Wit0+!4UzrQV66enQR-E}^Sm@$Pv7)23 z`s90xuI3$)Ads$R&VwOB+hu}9kgy7#cFfA~V?^@a5<>TAI6rF>>dI{8yLo6z?g5x; zP(;q>M>o;hQypi)z?4)g414S;59o`}Q-;B|x`b)|zM?b2$1O&=35=Sr^r1-76+KCMcXQ{spn!}io#bk zrH)f;nd-zHjvde9L+wl#_9liz(oX5fjdKgpEmR6ynvOuNjKA8OTy{$?U_DjbK2jLE zLjbr&@vM-lp0QtwhC3}!Gs0}Cj-M!+^m|;g4{ehpBC48{GiKS&@X(Tg*+WdZ7HL9w zvCVf=Vh7eiSg8ERx^%ABd4CsZT}`ns)}(Dy&>wMR}6|k+R%!oZR};h!iuV zHNo=naVy`WqLBITdX}s_P6y8$@zOtO8^2UVMBpjRduBwXIz-0}85S5y{LqLF!f`4- z;0h=?;{i$JD)+s6GpA9GZc+22PvJZaV3v3*0hq*D-PZxsbG7mbsemIvt7_m6;Y&v9 z`^lSB=%L_wLc#r99Q`yyu{S)Y;Z@17q1SZ}xvtE>1{&%nO#{LJkQIIWryzcHQL{a@ z=^{yUDM3kqw1D#=zf|qLXu=sZpCen&+(;ai}9T zZ>>|}+E3Y_YEFMs$F8danPcgv$uu~U@z&n$OvT1L&y-Ua#&<=@@JwSY0LH6;YtX86 z%B9$=(A5RtgE8dFcmYAYmY5Yz-PI(kK%q%pUg@}4AIs$AxRl-Lg?jntyB~B0 zp1CAtJ<^!$bi=b!AA|{Su;6Q2^T^$x>jIz^-IwW)Dq;E=nVnbqoL7+=BxKx~jb8A> zLSN!uMyQX3Ey1o1(237@Y+bo1(Hr%H7;?5ks9Hd1@NcaaSM&I|LYNfxaHZ&_f~Evo zGC!khtjqFp*vX=n%IydUJH0_u-&mL!`n#3*_KOv<*u|Ej)Hf3d8QSJhKy#TztluR) z*%9S#a7t~>lnMyVm=u5BprOcRD^E~nAC>DtdOlwA<3Q5d-7$PA%5|)mBd|0ysLrt} zKNurDRDCAe({#mqUu#3^8IQt78HRPpJKoN(pd)kSuX5+1y=n^r#&T#46xY&ark|s) z&&?O{esi5yOmA+SF8hr|yp76H8voVyeQ}KT#*vIYRchi`Gb`=a))EfoXvYtfg_`P-o*Yf;wMb#tPs?y>pX@0gqU#}2|*xKNUuoVP=G2fYs?a86^mUlY+RI(y7 zT&);p1J{>Gz&=aE3AeZOkf7^Qg}-@@(sGnGA!MF+(hMy^CN^|S;*+f#E-6h@SobtB z0G)#^4bW7LqeA#7xtwlkbe-I^B^MOqJb6pqVe7-b*L=e%;HD;2;)I202U>%FmL|Hb zm!)BHSEu!u1Tg+BN3AB&)?Oj-pDP;=Wnd&EjdF}&H1-ZJLgo2+Aov@Z^z zo$&T2Por@_*Ko*5>CW}ckd@0wXj)DBX0c^Fdi3u7HBmx6Y4Gn=WEDGKzkn*gn|jBv zYYKG}o*YRgN#=SLthdJAsr9jL{^R~)ybx9jce&x$Z@XsS;ki;OJmu!rUrdjR!*aR8 zlUCK6KeC?`-Lcxj7gZX=Ga4MNL6?0;lUqCRAqJqq$8 zv}OcU(z9-7YJ7;1T{~Kl>=a^D3|!X@IMid$b$GQmWyF8hCna53@7#I8i3*`pbbjmf zV;p1Cr~<<-8K33C4r}Dn{NSS{(+)-OOGbHXqZAIn(HueB)%Z9#f%d-aj(9$ev+G>z z$NW!>zl>Xo#x@&9})jep7-xMps>YmrX9j~6Cpcx)asb>Tp1j3BA4ll7UPs0j+X=8a`wBxDmH-WM!d8Tt?sl2kCi+GKNwIhAR zHTYFyc_K9c6JA#p3x>6s(PsQ{@W~Qobyoj~mM$kl?apA$S*Ev9olDErB)|b+LWs*- z&nX5+SX8Ln#W2rUtgDd|ZbI7UqXnJeuek~I7SZEWsp+*Na5U?A0F1>U1P6^=Im2IA^57fzdSG{=r^-qKN7$-`m2j7}(4 z`o(n-!o%q9bdXjj;}G1iq(1ARZSj^4 z-^rJFc`jPgh@c~e21%3nYan)tiak%dLLWx^^%;Gu;HqKe;}LZA+IG5z*hGtr?k1(y z;%t$^mf85jBj~GI5ih5#E@o1*(*g~Ha-79j7<95tVq##_E_VV|mUhN?D7C`U?pNoA z_k==I*u{)~c5(&imhsKxgl3f=Pir%$xnICUQ z^G$g(-z1hNp^?K2YoqQjS`w3A@V=@lnr^DJx(+b93eO}N!m|r9m`#36+tbalrQYuv@CDN`?;73`cL|}g{s2)`z+X2PP7npm z-3iLQB%SKq-2Hnyp7Utmw$|e2c*&OHh215E!u(TBTEw2yl-ze$D=lw@sj3voIk)O; znf7PY?u88Q`57a5xkq_5oy4yI4G|B)kjD0K8eT`>5ga3i@C)?Tr_7FAGFNI2fOp=` zRQzj=)_a`0Nmrtz=&p-KN$IOwNp>GspBnf$IW}ZnLc{}J9S1v!1qOMtTd}a5CPk89 zkXzsoc~;q~Tj8)i?+eOuuTC#);{;wHDiTCf9lrYwda1d}2H-QP9EF_Dpuw-VpxA{B z_a{Dx2^uYLIz%0gO55`d&>Ki$rQ_6wy4=@ke;(xz>X!+mK#QQWy&~T$}VGtVi3`r zP;s4HrD1?6;sgZLu{2`(nUR~;vM$HN{O~&MPu8AGr%}Vk-U8x6Q5linYr>Uz&V4sfn%)ltk{fiewpY!` zKxl{2?t(fotNWLq>c7tlxk|ky4VN=2`VjTCI$1nzvD3|8%25!mNZ9vK+f^ZjVpJ`r z5TB=tUDBL*H#)=NE|g}hL5o+Y{ax)2=Ms6=?|Rx0J(#ufYq;(V1u|j{Vii9bFw;D9 zLir_W zf$`A$bYP^g<&5?bWkJ1$--B?Gm=gJ~P*{~StPFS|?L7deMPSQpdG#4?ZTJtCPUz`- z`60TYn8`^AZN~OAybYnL?ef}0;$v-E3FyMSTUF4-^L{?oLg8%#WIO|zO>VP0z7-Hs zeQBU;t+Pv&oSob|Jf=l0?T}Zfac7^pN5G-23(Ra@jf8GH;%xLiqxD&GJfclW{o@2l z^$6CmRLd%vR}qtEr|#-(W^Hc2^VLRZ8W5j*PzsmZ@JHNm4c1zbRy`9CutD;mXK$o|gyYHhVMn;V)0q zde!jyINHU#N82A)lv4z&3hhr+ey-G@)6)dg{5PR(NXx_ed&Y| zoWJL&sU0}V)43hreO&KnmDjes|D%QAPyIE6j0Blhc6a<|0PkUSK2_gg^(9=T@5N!j zUwxkCj7kTEfP7o__Ls#YIEObC6K4%wd^iE$3o7k-eW&gL{z^S zwOjdoumwd}Z<+^ZtLxB?Lz%=r)z+JuSs*F3=i_2gL8MFDDBYGAzm>WFUdZ(PNX@3w0upR|P(rBhtX z$1X%gagwW<-(TcQeW`q_d-73eqCL0cH2%k(!i3zRZ7R-D6}ybabNr&bFrx_5#qBGZwunh}b2o=YqX`_e)|^KX2kY;k$^X`LxI;oFQU- z8Rdb~!*%@0M2t^Ij0Gv#WCxx8>6a6y%eyHit`A2eBP0L!{6z#GT6-027?^G)7#Pg| z`6B`s3nve6Ru`XTBS+0mx#T~y4V9!{_&c#{71;c)np>Js5poEL-}Q4GxbO=~b!4w} zCh5sLhCkgHI;&cxmyX`fC=JJLpn)}dEv-Z!EOiui)?1Fg>_qJ1SJ><Tz|0*0+OSV{YKhj5^!&;sOHAwhv5CP9~cf4r|p_LN{%_&IVV~Xw0nHD`W*7 zR`VGsu2;4)B&yo2zO_%XJj>Pi-LifX0ar7t_K_3&h&wL5co`r^de*6WhY#r}-N_~8 zXB!aflJu^PQ~#RycNZYr50NqU{u?@8<{uf5{O0*~cA7r&v>8HIz#x!a%&qz-$My8G z!)&X+g>X+Q!o0*BZ1(f%G1VuXKP`rB%)Tuy~-E_T^kaBObbgjhC4{1EVfny@H*Cl#PpIQ%n*sIBHd zS(YHjsU21Z@EUh*)>88X+cO1-_6GR;**74`@5TKD8mcDh=V&VFigZ*+$Jc(;t5oBFME+u6y&7UPwtLjR3KZFE8z=T%QF zPO(&x(cYhn7>7oWlgP-1y-7`SzJh{@3~}dScO^ zhU)fC7KjAR)0Osobp7*cdF_Ec&&Z5Hka9!ik4-Sc3xnO1c^}r5Mo=lsZ^K_DZI{c{ ze0^4rB8(Z3sf}{~&4*v20vgozTP$BrNAAqMZ201@nWA>Ke$jrh_gdW%JA2( za`>i%@@RN{Zg_Lw)i8`)ZS@VjQBTcB)CQV}8!cqBMFUB8Zyvwh;=D5?dNC9lQ5k!z zAm!mWl`rue-t0M5e_8x={r6=GSz&GXVAIaAR$#$y-$Y>1&@U2o|} zgpcvOT!COdezerq%V>Ud-;a~$q+ zauyU;Jd*+*hdz32cb*Hj`?Cise=*o^4lsr=zG={_2xbRysqC}cQ>VbmXd>9Ex#MN> zq5ODPwSdNmxR>^nXfG?j`EA$^Uz{f)JdkQ~O4t_5t(=CcAq8EMS3W3$&V)V_Pc)mq zT(LLbR6_|HM5r3T$=4o+F!M&ckvZrPP+A#Vm&~oOPqUajuNhId^b@5>3v?Sr{NYMA zpVNO<={M2`Gl}oo^zj4ZibpIjg7Q;#sm<YeM$q9kU}O z*}3U~M@mevh#>@BW6k-T3H(eju1yh$^P+*0ihH369tdI+oig&WO$V~3aNm`vit&!Z z<%DM`SoI_yFKC7s-Xm?B)N2P5NV6xX6RKC+@FeG;s~#Twl)ls%F`KbXFR``nm7 z#QkmJVi=KfmWr#E|3>)y(tBc|mNz2j58Mj+-82%Gv%;9-VwWBZwCcD7)EB4yEK-?d zB}O@=>hbau!emtlt#95UMh{d|CTL75Z6p`1S}>VAN(7!0(Sm=*O-FU>4~mZU(W=2Y zTKyq@bWcFnL>u;VMz?P zY(_q`4&h~%WU$T{BPBAtbj*t&i@{H#9pkA4Kub$gd5wJ)Dao8DgX28jz!l*-c>!<; ztSB4%TISEpTS|W^=I`|5wn`O@PoaSMfx>$JVN?2P>F=;cWajoyOYPM0ZJuOrk4*j$ zZ*2P9>#wfNn_@Jq{xXlj@{y`ZW+O^pTIY!uu+xz|DkNjyj?Q7sNp>qs1@L1m;OwaO z)f9UqWO!JH_6Pj{l<-WWF0Zd6J}_AQ9OBQrFQMFj7gE}_W}zsvF(+S#)j;&aogsmS zjFi*pgi3<|eK0T0!zFOsb3?>~f3~!hFHxmqv0|z0yLB1Nl`13L}hR~G8WKN@1ra1;4qMLj8x$O=9*5h$ThJD>VPEJ z=*CBJc&_|8)-6HoBQfG!5JseYLF&RDCTB>aLduhC-Q+@JDc7{AcfgS1FAOGhIQTZp z=?Hl>9QVq8@qQ%uGBlcz$2UK(hyuuL*~s5z`>?oE74L|jC8|76Vk#JBByyyfYVkK9 zy`}tlpnifj)bhBN6hM-6;VpwpH><@tUBXQD98M@2HpN~1VojpXKOr0d{o){}+x1`C$@+!hg{anI($M z%jo%9stE>N$7As$=MoyCv!!EWaeW|7ww!?L9~ItHzqUCtwSC<5GdU{>KMi%T*TX~1 ze&^_s2e_dqTner5;mqEd&utUS&Uo*W$`HJp(o7UDe$MN`(?&cP{XM<=2R34oCyh`ta z^e(mfI3B)&VH16)I8z6+#;?T4hLjMwrFE~wu6ybSx#)^%`f7fy)1gjv;ceh`nhoXw zHjU6wx`zGkC#I5H|I(?Q+auq({b>)rB%oiP-n(NgVFA^+5 zR@QkGqo#LI#K*u;MU7$xeR6bxVP9f+^)_pwwAvz`>Y3D18}3b`#D`hvqi0UnR7Qps zdQ3v!+HU3@rJ*VLEZvAa0GjeQWr0n7=es4qQJPG5}oi^7a`mP+(qg>drYiBrYj#4#We`%3!p zihrSFsCXw95V_e@fG$sDP*7a2ZGNThsCRoI^i&#Eal72Kttsp4()8dKCtJ3_!8f9yk zEUQ(J<DcK7A3U#ON`H&h*RcDAbQG-$8BqrDTkKY3G zO8$MAm{)5VtQJOK)F=6d)+m}ov!O_4vsC`~pGr5l%IrkZvfK?l{wC`No;1RU<14+R zPUTUscJt=I;ymFSDhrCoDwhtGjyAT#iB9*;X)MH&DgVq3pN$Xmq!YHf+jKG)0CTP+YMbO;DVZ~S@qLB3j! z!TNA|YB&6;#TDntGyWXO)%yUmfjo!{a0Ih)33}(`QxffZcI=CDd=wpUl0Nj?=*`Js zwEJvI@;S2mzV6f~{5{K_b4lV4#V*If`orV{VxMKnRPj9qE60x;q85(}E`r|l8K+N| zF2IkS6S5 zkf)L(PAAIb(ppMA3-x69c(ZWtsduZ5mi)|*TGaIJjT$b*2&^G4q;sKM%gm%^E=0q& zF*4s1Xn@b;efcpv``Oqd@4l&%4bsd6c6W*ZHU*qiJ9TtDl;z&}ZJoWl`F%2Ty#6q8 za(MoDKl1R)@S^uVN8r!%^NH{6;`+lk$ao)jMEtketsZZIZs7o)?f@Sj=#NaFm)(In zqfG)YkLO>?XS-4=Y$_U-wZ6S?cprkd9xw2fA;X-v22x!x#=k6?h(Wr@`2^31gfR9#jL1~aVZvApm^2#@_Cs%&qwF`%t`~%7B~BLNWk=(?U-7%G0jmGM}Q5tLd=|M zjaQne=DGBv%Kn4rsi49pUN7_v`8oqT~76oxW=4bq0j2kRqc`FEoEZ zU3L31Ccs)p(e#}@hYaN!ZUMIU?>->=sd}e6-!)d_7;EkP4jsgB9L=Jlo^z-xJPYq- z@jLeE?!V}UY$!Zu$o=>Y|FYcl+yD3Zv_{_ZSi8?eO1ruQ?QPXndY>jYCO1o(Up&1| z@#%N;FY_X|v3*_@5v?qv7Ks=*1gVUBmXg2EmTt*!#~CnGze%+S?95xXxBXH!#3Rp7 z%%qy=KEHVMN)hz_JNw7?LvO!hIs4ZrVqE8$NznRcy>(16Te$ej!Vg{^boC7zvY-McnXuscJ6Cg&$yqzf_!~^-9$8D{jDOo*alx2#d_d2=8{$h#pLp^2<+Es)0M}JT5R6n zhQ^hXw_ip~J%bvE_$|pFh(67PLx4K8Pvd-RX^kpBEZLvNJM`!slmccTq5LBIroQ+6T3wBys7xNQcdQYlfOjBhF(b7L%Ym^!a?g+f`5^j@1gNS>1pnv zts(lrvP%Dm2C`Yot*U^7;y@Qh_$6oT1)zCBX|Qcxu~R<)B0~@TJ2qcJ>m&e{{5D^T zTN$Y&uG3tCA^`{fTiuW20HORs5OV(+@mhVhgpS%uSwiEM2Hy|MLlCn6y<{ZgRgxgF z6gLWZg+9{}1(w{<083mcAu{+WOQic6P|p7WW?1+KCm5|W_3Tz2tm4s8yoy5T2@Z#h zT9#K5yKpSClsL8Cii0_q(K>N}u&iYuCRH%ra@-04GMZKjWf4W4kAETrGTWha9%QA( zhs;(6nwLjfjx#{6I{Whw9L9 zF~}+$Nid5FO2R60T#HW-APvUr*pL9LpkhOf1#$(4RSIpL-pYZgmg7XD)jLK`+ts}K zHsVI1(zhmVoT>taivHCHeOcv3+=j9M?SbO&r8q;E=%qN7@=7RIuUZ!EaY6yY=9{b8 zse|z#cs}4x|SvZ{?Rh^ILCLA)#sL|bjR2b|LCP;J=2($a|l;c}UbW0ZJ7ZjYeM z$$*!k1BZrpfK#a0S&($~4(uVQV4kL#dOc3+N_Is~{b4Im0Xjz5#aC&yI$(z^BQ!d& zp$aq6^2({q;n?P_+^|uCQs-u)bMOQ(E0jqhXROTdQ+yTKVm3|1vuO>AmUpgITAHdd|K2BG^Lq$z_#-%$1 zVE{u8V(N}(b-`jW>U^T}LjjYF#B}Mnbfyg&;Yiz)XB8e2;OKHzOT9_3lR}KyTkl(F z_xe~W)ElxO?P{+|msdKPKlU`sgkhBgKU70KMVmwEQk$>RCf`eQ5^6n&Q`SgOY-&yM%gZzo;xC))Jplne0U@t=r;c2UM^o`wB9IOJR$~!2e z21YlZoYeFJt^hk?A=XOGT(j&+BdMGaD9dRTPU}#z!>MH29Vif)Z$dF3(n=>xprRJv z+NWD4=wUBN+vX-6VW2k|TuRduL9v{S?X+VO&?tq*Zhy;1GmShJ0Zz!Mh42$D-NO>v z($GZEq3;U4=T!UNo*!7O!o!W?vn#ow8%&1a5L{i2pIf0m$#`c`JfOxRQ_oz15NL>s z-I~86<6Tg_A+7}AQo39Ps%{;RdgBOP^LzvzXm)hG`YlU%R4j<4nz*ilK=bXb1lZb@ zf;vcF9qO^EgsJv8a1{s?ks!Y3))Q9j1?WRGga!}rIDk-*R^MMx`-{6$_B$R`DIdYp! ztpMttFpw38Ro|*(6yT-GX+1snIdee*-2D3Sz+v@gM{Ek@RsDxC;{x?{)bgmg}o8^ft5QMt=S4V=rTp&+Yj;`5V_F4jd(My4+^_jO-d)|B-L zA$V11_G))3JWAGLU{d#RB)@A$PZKYoRtI(iu|GbS5=@2$)W_?!I}$qf#w!giGsmIn z9-6mnYTo-hI*hSj5Ndi(gPd+-wNJpQui^ZU86?1g$GR*ud0J!aS%10#R@EChW;=l( zriOpg_eC*i1{wR7-A5PfE(5kT*7SP&TMv@o_nKOpp}rT6G`HSIJ4O%Oz1$B2%^14f zYjQ;_LBk=}8_Wqo5cY#07-@F=(Jjiv;*)gDJVAw~P0h`BTRbta54%54v{6)aUe(vi z+QyHOm#P6y=TiF2ir!j#+|CUBWKUA>fCgQlh#KEql{(*C)>nIR%gntRr`9|?AZ$G| zH0{6a^w(d2*4?*X?g257^t#s}(ytQ-{cHR{T>(qepz_IH2dbG-Ia~uXD#3tB3GiWw zni4=0{09{q1*nLMT^P0koT?!U(1N8?sn;5sP22aDmW=Hc z>9zP?7~13luI((6Q2xpA-~wwuu?v=I<0Pk{r@e3&!P-_uhQ#%fgxxL+;fkaEb1EgKuE^wsX!fj72sRMumfK+Z&mx>n)$cqB_5w}>V0Av-R+T}ezcrEP}Aa|tfaX>B# z-ZM3t-Dr!>yt{B;N~yaEf=S$XsnG1;(o(_E%B`D%Lv9+kvr` z9gzT5ODvk;W_Q@UN~Z#y4uSqquk0xli3`N; zQ_sne(A4G^e$gx;?xh*0s_$%7ResQrqXJ!38SZC9);h&}e7iQplv;L3o@Oi+ zzjD${PXD3Qqp45I^I9uF4zTh6k@Xf(aWuigXad24LjnYM5(w_@t|35hclY2DWFa^N zcM0z95Edu6?;^p1F7En4j$WFKwt zBxcYn87}0EvMGN4-n-mOCYT-lyWD1Ay!c8O9*EgyW-@h$mOeFETIJaK%0AM1q|U;O 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 J1u!_l{sXx#i4*_; diff --git a/venv/share/python-wheels/colorama-0.4.4-py2.py3-none-any.whl b/venv/share/python-wheels/colorama-0.4.4-py2.py3-none-any.whl deleted file mode 100644 index aca3e262e2f8ce6654f49f10d6dd78a4eead45e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20722 zcmafZV~j39v*tTEWAlt{+qP}nwr!lTZQHhOn`dm#?72TSyWdUrZaS58I-O2cr>eW^ zsYhN41QZ1T06+j@i}w{*w*a*DhyZ{w9sof6Z`H`o+Ro9y#(;*NmigZ>ws3N$v9L9@ zqZ3e37MD|0qIGt6Hc6NHLnP)Hdh=tt^n1a*ViN>3c3!f@5ZtNUTh z5gwge%WS2dPYJ2t`<^7reDn2R`EzSU&+f&Tj4H~_bDNf>;%7@oPM?qIw<8+>tsFkQR$l`~o|EA=)Fj9s%o_0jo^ zn?b&gs2XBq>D??PaO)PAN9{4^RE3R`BUjPz1--L1k8>P;abFL;uE|y#3f(TW%%;Cl zcUF=-lTy29s9GC4WIL{*4jWCD;dgBQpxHGrt$OGX2VpdLwcdGZO(MmpB(9jIvL2~W zWnMe8omtn|*omC$Fd6?Lt@T{h$RW50vn~m8=s`&yCNpV5!cuS^vo*TeE?d8xIQw+B z8HF=qngEG4m(-cmD&X_OYj9euvPt#jFize1ouw7MQ58`fuVT&m#VnZpR8KyZqJ%R9 zl1;+v%^lay4NdZG#>9ckG6jhXZ7Z8hLaFUp;_aRw{kf;@5J6D5oaVEu zohPGIjz?41%J%TetMi}1fR`2b*}<4vk7KV$iPQp@4fN5QONTf|PIFo=pAfH4y8;ZG z?PC?=Twvszoo=O4V?oz_ z8{JYi(L{df5i_rbAe0WDWS-wxaG^Qga`{|OB{vaBKxjAacbgcK&%*QA&Ra{xTH7^V zj|`{dysorb%&t~dtKd)l&d+aNE|{Kr!7V4?Tau0}CCAmO^ABFQbP=+Shm9PaRaJ15 zKc7x6qQq(k**T7DQIeL%lPk}tk#-I327D6ED9y{&V>SIAd7^5OqGJtW^i12Ms{LA# z>032-&a4I|G1IDKiwMYyu4UG&M!7mPy^9lr8!fH)~L zP`%l5THha+rk#1wnRq!YnS_X@B`vArO?u0E3osGbTTR0~=&HEeutLsd|2V&SZJ~GU zBrNpzLhi-Kt)Q+da}fTkvW!bY>$b(7vzMLY7I8bUuE18Lc?HB?5UnDNP@5EBA|x5} zV}@3PCEKxl;tj%PvTH8$(Q4B5w*i=iRZ*S$4}4u~7dP!aRmUg%-Oh$4F^+eA|1i+;1gUsakWWR{`x>ulWg_VgeU0Sss?h^HHbC``;U)J+?CunX~cpz?ZATwdmTn%ARc0z+z>HZ!Z%$ugYt zS`?viY?C<>OaC0i?!p|crf}Jk2=r%;Xs=sgTX4tTRTP?gEHQL9LSF|!vAA&%u3703 z=KT9WOOc*ozUD+NBf!o}+F`n(VB?T8i4POYnb7TY&vO0py^{gj&9Zpm$N*(wMgjU9A*Uav2YC{lIZb0-@ zRA*zvHeBT@@avpT&_*n3-1g~#FTn$0a0yCLh+KCG+)xEGMIqHWc`JC!CkXTty>-*R#WW!U_-7|6p| zBc4X4BYugBs{Dzn^Ez`#Ag5_LnewW~#RQvI$wa43Tc;g%d_iqpTZaZ0ec%{Btzv5} zqt$;&ky-x<^+{7=8Jf}DKQG$nx90*CgrnYYK-?891yEUvSI5J@uPGnmS&8_|ChDx( z-Vd9IQRFGZg@gkrQF!TQH8e%N!lG_NLPgwP-spS*JlM;K91#L207nKNm|a?(WmwZ- zeZ^8TW+~wsb`Yw~k%k}$E&NafY&_o+R04${@*dV~x9?~BryYg@(XhNmN^^wzn&Mi1 zf3t{gd!ls3kA?^wUi#>722cpnlTbm$s$1d%WYa{v%ql=Xv70&S?T?@A+Rud@{Ijy( z{&7P`O80iBkAeD$=&5b;=WCJGg%w39mdnjHkBDXO162h;NXawLq!|a8PGKza*3?eC=(#l^PIEo{=R1CYz`m8Qvxf zeBPyw+x=ddLQT!;0Ww7bajsQ39c?>#N9~bBq@KhDqD>ta!{Ixcd&kkAQ;1*AT`-!);S38(wXq@ z+`1?Ika)Z}djAbgD1oF0@o|Bl1V_0nL8Sf*F0$=nIm}+Pn#2SQAxc+^Tg;hPg1P`@0a*`|VTZY9va`k=KEKK4HDc-l(x)ibVbDzS zrZd4;gKSw}4B$lhDl5jA>gx$UMK=D9VjUz>3*>A=`2ya=Im1bu6eRc_w$PvHaZ|;s-N+lrd)1SYjgP(3-;-_wkWuulsv*gq~J0WLK%&{MP7u zaXok__i@mbNAM?s0gp5>(-R+QWr+FMschzK8e1~ARWl_O5R3K<#8Rlg&1+UHthXM# ztqYG!*5*hnV1YHnKtooVnwQmZA0rAD1X)u>LY~rf6E)~-=sl~%Ak~g{gyQgtn`vi|={Sx_8Rzi$ zOpg5~Y%AgtEb}}##b1>%JC&QKb{;RMyQQhKN5{FnPf+UP$cR?kvROIKBX_1}3D|=M zJqVxu{hGlUxnxl3N6gv~F~~6=rG28i#g)>psy&vP(N(LNWch6RbfC7h#HORKfD~sF z@eURRY>I3tQan;3wde)yRSSvqp)Dv*fg>%9*eO~KlXB=yl?DA+PeSyCoY+vSjV|RG z1v5n}wS-Kupi2^LTv{WwX9pB1xkfD7Zg3UT`9ERs5-eRx*v3mX=~aYwqBvsWs#*vj z%Zg_G%phK&Dwd8%x7jkjLWd}6rSHXKNdI00ac8RZVPR9?iDPEt1G;C(|V9!_0}bkLNn9zr1`usYW-M zOpX@1N4g8W}~n$A9V7x;TsGvw=t&u+)Xj6oSP&cEm$>`#HZq zcKyI5HL|zW0=?b35Ui4uQA`w5zS3w4pUpQtiT{?#LfljMb5UAT0P$(+j2rEF6Krd6 zVSt;(_NT3QjG9x>b1HsvfrBT&GtRn!6!4?}dD<$u_5=eJpUvyAsaJ_=F4rlc9q8)FPo@-OaE;=)f-4gFY?9_1lYXu7NvP!$I(S5?p#IiU0jwO z?@xDs;I8Sy(pCQ3kdl8_w);2xXvln+00HNXHkEOeCK@6 zg>NFNu23Vo!P(@z3t(U{LIUbCX2@>LXg!Wyo1el3WI#sNd7r~2L477ehV!tq)Lf#R z)B8}w&zWI3eEWH&V9Z~EO#Q| zN^&ei;!H6<1l2NKVPMgAhXTciQw*fI-;eBLsBI zN~46YgwvDG2-Oxtn5iT+h@k6C1X|D)1K1?4_r*(`S$uXZ3@vj5iW$B`L2r;svRwSS zn7TLie26enEK|4t*XXz>ZugWe{M@how#S65@e=_yD@f+CzHZOn)+WLctc*N5)xZ5| zS@BG+f@XMmD2|GfH=@@=y3t~E@T{|ogk z9ALm|aiu}(1<`Mg_~f*Xj^d8Jq%23=yJ&{@=WD`g8Q8rOTT-Vom9XnriKM2Gvp=8L zH_JjOHQEr<69m88jNr=69KtmfZ|k^$W{YiG;?&?9_<7Ac{M)h!`*F3Y zve?I*g-^=ke+d=5JD5qeWkY#$6V$+&jj=Hzx#a#%SxCW0mQoUQqOFb#AUP`4<|HFK zBEQ`ZK%`qU1q7!KydPyR_OepS|4Aa{5vHjeiSct)9+RyT{671=lu#1|t-I;W-Hl>6 zWFOoLch9r`hjBxR=9M?q4rox|7s0WQF~7vA!#X2Q;vo>qTPArY)^Eptj>_NkEmi3m zzc}Pv=H$-=E*ui|8NZyCaC){##h&TiYV=-{fst5^C5T3<$9)}&fzG~DH8_jl!7uR0 zPa`n?+)n`|;HxaGz36x9O6UwwKp6gfc5{dS+LNk(^9#L1Pi#CsxIReD)lO#tOQkNn z)v$Q6aS{q(Ve5$`(euJ z!KCmN8B)ghq`ppeVqa#5<%#B7RR&}#xpgH~hwI2Q z(egc>B6cE3{@`}S@vHkvJ)u7x(QDjJnu7Y(0Z)zC8|V zBx)LbgUQ?oO2dN)R<8qv@ezXU43+$)V?M-&Aj3Yj&-~>C6$6Oxo(NdLFwyAM)Rnfu zf|}~Uey?TyleLot=<9Wk8P z%^1f%mk`aJ$~sDc6L9U0&9v@!RG=?$N`>#c%~6C`nzEYZ)BYy>&;351?{_9VpE2I| z^&sEZry1YR@vPt1gB{=JW*FYm53u}yKt7O%2EqZr0DvIq{|EAsmJkw=RTB9x$VW#> z&TfMqrT0{c+rhFpIzOjmTiP(P89^+T;_x?;5O)ZBPYWanCy$|5<`j&{)BSb?u=%%H`I!3?(!MF%Bf4N9+U%m+ zg-0E}8e@7NRn}-3d~wJg8}T?+zIEB1kpUE3Ef(Zv;N z#e#`#n|Hsn+#<+puITWq^Pi7S{NMu)O#m#LIra~A574sTZrek#_n~$tNGB&kdOkz>m0Y{aU;+xS0 z9}SbQqsB=sIyAw@h$8+6SEOm{@1Aca#iY$wH?;YaX#g61m)+C%(I!+kp0qO+j7$B_ zU!kn{BcHxutxI3~!=e|zDUQFj97&GFZqg12Bq)+S;Yp?RMkG0A440taQ!SYGg7w-r z0yX}}UatiA%(1Vtf_Dv|<^0x>(zncD@nq|)sBcWvh^bPr>1z-%MVi2nJLRBaTa+92 z$yIk_DTK(Lc!QE>S?p@!6M6cQQO21JzlK#&8;;0xMcb!DdKAkB*tl1nltn1^=-mAs zryHyjI({U^^a!K6k!G!6toPa5k%xKoIm@14_ry7G@+K_co#uc&9s)Y4x0^hO0VESOdmpFOcvm3LA?&`>{m%H zX()RcGBBvZIgX$Z?t6!v8p2)Mm`ZfKNYW~Yi(TwD~w(c`;Oq$d; zxnZuqJXYDX{-?6CaL-JIP6koSkM~;xwNe^7U4tftGirJvGCX!Y=f36*rRxdrdFbOI zcb1Mf3p^~MNp+T)!M?~=#qeI)q_~aJL_?##l`JPJ-d!uLEmBh4IXb|iKy?MjthIw4 zqjoS*C{d%4^_ZAS1x;uHT%}3{jUwahWl*Jh>dCAW16_^m0Dl(RDXQ3uI>yx9Wc*k7 zn4+1JgUY62u`P{jjEd}s>G6a!wpnbZltq8})Cp=$MoL$;gWfv2bg|r~9w*=D3AEa! z_xb1T8+xt#-7rnSBoye{mc<(LA={enYDfS zx5l~PdOT4RneW=@GVHM02iLyp>ynTAiual=?tLw>La1OVC^1gLnKSN2h^mCO zkj;ok_QjnIG--Z!HaPIlGXU91#r4A6&^+?(_sMN%<^+H@);Y3_vLx}y8*$K}_< z`$~149~zOGN={}$@cO%#IjehIX+vD=Ml7M28;*WNa<43Ox=7TQ@<2~i7=~At9v<1;J*8qhJ!uq+d^w%Cz65?YUAMQkPuyjK#h7Ja#Ri>B8uIh8PGOt za0M0h49hA~*r6jCAmLs_)Vgv6Gqr;tkn6bOhuSpki1$?<2Ab4K`cxNMWG0evt!FXH zPG3Kkl|zg4`JdYDzZaE__BCexAdY{>Zr{yo#FVmQQY|eD4{8-KZ@4g>b>vEtL%bSX z{XQ;RZ(>{Yax(`?->#?^4*{ z0wJw$h2ub>lgTXzW^eea4fv#MhJU{0=sl*d(^9ow1z!_y_y(2ODzQ>LceZ_T~e0?SWWQzQo0690bsuJ4KK64NK?2&j=R)&Z@$XrBpj zg&vMX^rne!%o{VVw?2&~B(HSdZGH&agFur%^Y*#Ge@*hBKB`8F2r!XOo;cfM$X>vR z?l7YjFrq!^X`h?!ntjB9&mD)jxA>LOP@Mv8lPwb%8D&E7kaZ?a+7d0J zB1pD87@Ru84f0G2LX3^P7$7yBJZ9oR-nx78dld zke$oAUTO#|+U)me34gpBacoGFbiu^cK$37AAq5Vyo}#*p?R-e2jQG~8fBEOrY&tVjXSWeC^~ zSyt0|g`A7(HX^|SlsHomLJIKrCi4cqrp+GmY7soK%YiAQg-`U1b9+5UI=?$O2E<+$ zXn?#y4>RNr^TR^gq_H4@o4FNN`eRD~uPC(OR6du&o^efoW z%31f;MN~u0=^y}A$^AURm5gwYDe8PC6k7tHgZG* zS77zB>!>igNC;$oYdPlt6EF<>iNiSnR&OhU@}AEEWR?1)u+}N%V6tD`Wlweh-+;?D zwSo^>%;MFyTTQzZpSmnez%=S!$18+zv=~knXurtK5w43rHtbp-WZ%14#+)h1)+J=O z;Zcgl6?RcEH5UDn2csb0w+!m9Hl97(RrMtghlAiF6H)$O7pi=5b>a(P>VX;~wQ)pNzZGz16^UOl_ zJeNUMr!R&_Pz(*ZY-r+$qGiG-96;N8^(}T9o0}E2kmchTYuTah*Yk1&#?~mc_{ITU znD;Umdg=l&T%#{}-Je{dA4F*wk!p+`7=#p6$j1X_hVDTl1CxhDcY20>vNii&b?ccT zR)edlqob$He|{ThCK}4xho^COq@#oB_clbnK>d-O$q zTd-h%OsNh8xV>4UAky9eo4Rnm-F|YG^0$)NP~la1hJjs3z$|2C4@glks7LbIP&1m0 zl4bM388#xTalsOewc!?Op&P`O5&~ZbgL`2DsKh3?67ii{Q2y^a$a(NY9itI_6` z$?V$@q?WM;=O=VQ5W^)EgJIM6!`Ru)I++6I#3zLbfb~|qt#(O|W zi7c7m#Erx1ob`_SjF&)BP9KYbh8&cuk4VOj0zh>+25CB#jXWC3U=523hpZntF+e-V z`*xk&-mphL@*<&P8ROUMrC`Rn#;m-lrD?mYB>nQ*6vH!&EUwagt-8S;F+_pGfQi~` z;?oj)RBRzk1~X_{9e!jm+BvNV;_F6H#mi3(6bebx-vy+JrE+#DNR?R^EaDVUN9HtW z%@~;B^pFXtQZ_$g#zvM-f9M+Z_6RPUDAVHsDC{u=N<)@e)?6O7#!V(F_}3X8dS?|3 zbsrp}CgTZ%nn?b@cDOBJGhLtMoGCk~$(Dfl#UijE$mL0J)O;SV>m^?Mcr@1!_IYclcNl zf_kC_zI>?-9HAUkO2MZ{*+0281Rg)$!A#rd^vUqVtQn8ZJea84St)H!I^0R130n0i z`EAj|t7n#2HDVLjRIw@Pm|TAND>!+RsDnQJ#fb>p#K3nZ`BKC9ae{`SQE?8)cAagz zSdCPKtjz=Bs>;cv(4)NetVvRJzwWv5(wOVnvk6i!AJem17106*Ve0P7#w;kuy%;TG zqHlH+jeM+72K3+~z{ey7;j$_G@V_^R9vwprF8n*ivm#B_%kIu>MwWmeTl%LY8N5&c z_DJFZq@}oVhL5*F9ZGQo(C~qVhF<_9eoWsujjtJd*2ti?PUn_{rQ8Tj+|oRpT(E}x zGn=+Z%Wf@8aD2O8W^KEA&GY5^re~ziUEbT=E;hA>*{}QHY%XK-;^OhZKu633{f^8@ zkYdiafadHl`ez1AAxiQxpH{LyrZ(X=j#*}rxo8Bn7$VQU>{`#K850h0X?Yz*?J-0K z7Nl1%&K^#bAB5dgB*7nnE^EGkq*q?Y<958jJrHzqGGxAJt*}tXyLx3O6`1b&R;o`> z0o4$9d<7DDQk35Efj9&Ewy7fa6Qd8OKQNBTlHx1b=^svEyg1jfW>#y$*@{Is_#^Ai zqeFOW+$g8^fOg_>d*FpV8=|_@N3E+I{?{iVGu1mMa;ZKtQ*7GtwU94K&FrO`gwV~Q zTTh&%_eDx9}zFlqHzCIpz-=F5St>MfodbOPf;^C2_g5)WM&Z6O?QQSePyq(fbP^(ZEpaOV%u1sR{_d0K1BHw`$1d@8bmjEUPLE8Yb6M?qWP*eV|IF7#)eePi+r#ni<9GOsANa=@zI z#_3dFuiN92{uo@mV`4!RN}2cBdeBP|aQkE${}S<~;UW9p=`Uf5WpBhtC3ZCbA6T9~ z!sz90mYVYbDS>c^ume>o-s^~FR6goowJvWZ8H%PiT=2Q!xlEKIJx}>BlAD8)cmv~r z4H=!_D-b}ts>%4~-yZ7W-QCET!Nx*^#e%kOjz@Th{*k{}Tk>1;Vm~>44kX`jD>dYW z)9pL4aUCT{-Lb37zy(FAt2xAMXXiw!#Y^@x*Ud)1!DvXvTDAq(F;N2$8~Qx=)!GDTC19d z#eW1Z|5bi}Z+A@r`#%YWNKp67I@gZc(R9++P?uJQPuBo9(H5QaM$$#gLnuWrjYIMy_Yn9x{TUv9jqFY*9S_N(8wlQ!>lh_Z0r4#ge z0v8hp4<9OxVyA>`D=f5Z)G{r1%7{;)v(C9JBjq9CN_qs9&rmQwa9J(DT!^lNXU|8W z-|t}Qwjg_l;Z8$$kK<(KaaTaXsc1UU5~;y%KLR-hW_%xRCL{+!#ZOFB+MvAs>`^K= z>xxn=JUN2s@(Pd{;xoG>U(we*6;%7MmR%s(&ah)kNBDi>eL~uOz?84iG1~y!vVHh3 zp0~0h$@L*xaunE$b}tt6kk{eXY9ARm+w!K=RHRB;Z4oQSRTSNjif1=IbK#UBjlwf} zoDu_FOY~{d;h=Pd(pk8a?LK4oM3GYFYB`pfNWTJKFwoK4c)}vBrH3LMCblDxT!Y+m zCb%PW!&T%gnGXw*4v&2->H+3tB`hddDmlN$J&@oP$Z~3}VLWAwK+HKKBvLcCSDN&X zxSn}O1pH>8h^BjBsfK`TcH)0PkHf+hx%YFtGYK804hCcz$S>;@1kCkYk?B6xcwS!qw~@ycGoOZ?*h+|fbo`j zyR6-*HwCLD_wZg-6VEG6|7SI@oH_mqL!IJ}kc@I*3uZs`apqLdoGYcsOv)6P{LkFGGzqpLS6&V+6)%NT=m&X2&W6N8TnS7>WE_+d3X z?rtg$v!8jv(c>e}_@Q%wYy)YD_z2u9XHOI%t||BxNT`1nS}aHJFY_`aPG31e`9df0 z9^32MX5^gHs#`6Z0_i?*n6J zdD@b{d!+RKL?K)u6X<<0Rl1l-b`V&zHwmOm?wo~`yk2DE8G=VptTsYwCg_=9HlTz8 zM2*BN(|QLip&G&4CvB`d(97NEujAP;tn%bzbYNCO@s;Mf?qzIA$7Mrm=>ZveLBZ!6 z`}Cxy_E#gJ)xnGi+@vJg;K{(}rrxHjyN9>Ev+EY*satxWK5yQbb{a)bXYnl^tHSbE zgqYB!Z+;$;GnL7`wbv<^JZAypwuW<%{d)wv$UQh8p)akySs$F6ro9F<)P@qVR-rV7 zXXhwI`6PVjod8wakF<8OicB_fQ|tif#6!iKc028_(m!0-TS00A<&=NUYgxrTItFpa zr3VFiXdkUbImMS2NR@285WS71p=qsyZ{JZi#b+5^5Zc)s#S0%}WUeD1%JGT`hvXOK zMA>vwT;{sa5vQe?!tiy^sT;4k#|%3cf4{eEf)b`XLQf-)SzOCRX?T??-E9yv1T!7l zLQSCSRJu)+Tg4VpF3dQ2F%I$@?)hMqO~RP9m!NM zvxsx94^!uBl|12E>x%jFmk9Bzxr=TQqEIB}OpuTbtmc9rgT@4i7I^m&wp!soE5sUie z!!;Zh^s#l5ac@;f{;O<~->OTrRnWiXC^f?be4K4?9rfDqor{%1GsYFE>W`e6P`6GjR#Vaq~Oq zaU)Vhz)b27yE#?adH?p}VVvgh$Ns6z8BJTbtGT+Kh;JlaYB?HM;1z1u*$kz8h|h@^ zuExBc=qrCkShC4z!`hJ7iryW7o`(ZID3Y-;#|TI{kVJ>CAYc0pWn~ z6QpTBUPj^dI21@bbi@T#=vDqZqRbub<#SxBQkG+<;zL%3(PisFNdi`fjnLE2$95tR z&o-WDww&}B$#4dD6;ZD#jLF<3)g4&ci8O6&GZ%`z=&YAV1tQ$%-YYP*m{wQRLtjVik|7bw&F2g5cLCAtemz3cV zPU`qP9>D0D8jReRU-D}i16Rh(uNv|rwg>4{hHJbs$y?mZ%w(hU#nl|oU02%*Rb|^j z^2(Y|Mh?QwLK&3P@mJ>^XAKiq%F)ZhTsj8VvEJc^XKW0P??|Ki##=fI=SSt`qmL*| zp?ahzJS+6@IMX-868k)A_~NA%Uc67t#acYdcs%ZXX-hl2!O=#n!#H`zk+-1atnSs)vJ;QO5JlRHs?GXYmucdTOCUI#HS+V7ZDNw zw%K&I-GCbG`U3k;=j$t7RM-3GbhiHl_kVIeHE|IUY3NyTndy00DH_U|so6$F`X#14 zN4aS!8cFJLx&}pY$#H7h2s-d`g*o~;Cf0eTg(IkmS-SZr>J?aW8p-K#=>|n|3QCz{ zC<*CSMe;J{h3Uyzsb!g|%HW9KM8a)=|5Pnloca*@pGuJbg!F$>&DqXg&)US*#QMKl zlTtIY<8+c!GDpDw?YPiztL4Uj$K3pr|02BqZ)!W8o}PuRg|nU>t-Xg#OugkGKZ3BA z&#)jA%e{e=t}MXzn!?v{2! z-xNI1P2x!JF?JQmr`oV-Rdm75s7gmaI7P{6JAC(1?cLL6k)8`q~UV{o)yr$b#OJ>@p^+ zn!sCe!sVYQ@0jjxvpx0LhN7M6YuXpf%`311qRe6PQ5i_oc!{v#U#W{Xe$CZy3x2v^ zHd=-HmZ~T(8Vpr3H2D*PI@#9eDjy?+?vV0a{Sjy%LE{dZW6sTxXogh}y$JsNBDe|e-u>#POeTIp7j!>h`Pm`|gEBuNfv>eT9$ zor&BJf01O(3arpbI@DlFu(Qs{lZ%Klu<&(GG%&6<%&QcD0;OCrkmu@=;RYFvL|DkX z)dx7hOg)182!kwIO5|>=+^}sUNH&^HafFCn;Ua4+9rz4Q_Na_`J__?T@$%R7JcaSB zvY{)+4=QiJ(uW&(+TXI~8PI+5SdqB2h=l@ipI*Q5Gayn=SjG$#+di_KP6oJ zi8lP_9nrd@_M7Nl$HO@@=|nM_ojQDd*>UM@-2Gv4vw|QmMRm|d_J@)AKE$!7e;QNe z#ZaHVyzkhxqxA-!sh-Wx{JbGuv=#WKQ%N2^`mW*zXV1Zf*api|cc<@bc+qc|fT|Du zlPn7L5m%3x)ew`mP8eOkMKK{OS6gIsK}Dz8FV^>`9L?_I%y3rc?)& z_L6}<=?2#^4x52+Z%8Zi;JPR#b-*e)Z&w({P&G*W(oTn0JguHf16PlJ)s92! zCZczd(z(m%-ul*}YnP70)GQu>ty(k$T`<4(yJW!ZbIQcpXOl{`$!;S{xrqDS`m388 zmYWbBj(^qH5A#f&M1AZxML$+BL4+xNxee7*e_b-%-U%$VG=cwNFdAzyv2>3`{ncE3 z;3E$h`S#P4gpfE>PX zNs_nfMT=}pMU9nVS?tph*AW?;R1l@OAtsSq2>KS!?w=iSv@1$Sxj?_6B$(<}!N2ee1pWUJYA!aDNFk+ozF(Q3jrA&@Jb9j?=zir3 zlPerVP^%+S?)lCzt>YnJj?wEL5J?(CIY^pM7)m50^;(YwmIjN)2No!n>>H6{oPolG zmf}-J+@e&18vKOORwDk3-HXhOivpv84nW5l4p zGkDCP4?YaAC3jyyqtF0lTUqep`Yth*udPyj*`wjGjqWpwh<%SpV2W7nf;aj{#35d{ z&_u0wok%(q;8-lrQ zk;WJxf{fO6eX9kJJ}gBz<*6u;9lBbr9wNt3Gnjd^U2PUso{My%dNFDE#*;9>dPiV^Mh8xMVA-d!sk>LG3N%i9nS>; z9~93p^3LU-Ve2xY5bn|wbpv)!G!-!&cUD4Ma_@1)$X0qG^2wEINcAV_du25+vzS<9 zjKjDR!;COw2V;vdEH>al{^%820RqZ&a3Bo~hi3ihW>Ro!U_KKM@(r`2OlUFHFYerL zRWHb(8hPW4Si?jERSnLXqv0Ue#KUI+9?If_uCkVI?Hi#dNSwTILaH){QVFprL5ET0 zz3rR}0ft0fbj?!)OMqk~9xr01hGh}Ag((_$RSp=6AZdLOJ>zbAG)Uzs-gBiDUO( zy+AI)E>mDUMr>!rjdSYCH4C_tj(K?V+~AlAa(k)udIuP7DS>ytZj$5@xRpWmJ&B6n zx=gHEg~v|vWGCB4OWEg@_GvG|s0Tulj#Ac3Ir}NqTIfzKvIsjCs+Q`uS}y1>@tw8FZK1TwXrE4E*ifFn5Y}H#aHx#E~61)ZSo2b`S46@JhOoTq) zxwe41pI$K0U}54_O>`#JpxtMputL>_0qM_|S@z#N;HvPDl<3hS^vN8f8Jd&kxU>ax zq^j6)xl_;!4C;6>v@%{aErcZhIsIWu)p!uln-ymeN@C;+CZe?;ftTMv^vS|1Q@Cv@ zBo+PCqE7tWteUZ7&W)gp<1zC$fAB*DaK+j4^kvAs0{M%>BIYL*quNzcQ$yz`GiTGu zH}JB9fL99agjF=z6$V4DoqKhAIn=Ph%I!rNa&NXOic$O03p8dZ%J{pF5Ny)H(GQ6oeRfp+l zIz4^^Sg6A{6w0;n+woG8pRxw80Vz<%$z}H76YmpdTG06l580!~DE-OzQ<2BjkmouW zC`5TVTH=%PC5Ll#(2~neg_8Eo(wm%te(Ic02_qtfP~_VDE|Vx)Bhl0O?L?>04g5Jc zdyMm)VA*xc8?{havT)RP9qRl~D&1T~MV^O6AdM-G$% zSLFRg73m}ZHV3P63GXFk*uFF@(I;_2nt^TEB2=bk^HQULV9#GhsgS0;4~eo8 zhvcZOH+yehNjVV%Ev#IBx*W;X*2YGj)sIeM;T_KQ^_$E0a&-Crz8q0Nd2j2-CHNg6 z8@>1-hXY8>t>u-WfZIF8TTDEpw zuc_8`JNL`h(f01K0iV0+?EYcAaQvRElKNOY`ntR~U4YXE?VvBwBf}x+Yt`9kH9KX) zf#V15b(O=V_RsK49r;DtED7cJ{6}rUG*A6Sg;_j7mfF3SBtbGwmYSrVBx5E=mYt@7 z1lM$tO5lTW6KRrIl`JcM9SM=C8X4|a%aEeR+XlDy73kpN7A6}{1<_7*o5Xo)dwIe3 zjErRKgbeBxt*zoai){tK*)j31XGn(SRI6RWVzs>-cy3w-s&GIC)gR7QaYMznLaZ(( zbLuF$U82&>qRBx?X`?I0dwNS*u7D;Uv#p$>xJB6NpkxGe6RCDa2KKy#M3sn*g={w^ z+{M;Xe3+*G-yQ-6tbX50*0#2g`xdU(W*e*aFBTbVli5l)9>B4XlhthGG)6sY1)gnWnIO%=q2I}#ZI0!JdHPwEb&Ebwl<%C z$wOA#46952dJu_g;HK)Q`ILUkU}z@bb%jF=VferU=dV$)bG31iXoFZDog&Ep6DXE$ z97C$#Sft`zX=wdMEA*&o!9Z++m^_!01QX%3P)<5co9?fe0y75rIrHYkjjz-exE00` zBH{$awnm@YqzeYxyZy6~>5o&_H%@;IFMcz$Rh~()1K8l*$?M*c-~Mtn^Y$>0PL4p% z{>g$o-{;q1s8AEIHpk>@Pw5f$1OMiGWGU%XO#W0a=LQT`YFz?wG1I!W^PKEA=athp z_bU?DMYvGY6A*4;phn>B{N%a)ZlT&&q983<|6U40;vD>-g{RJSgfcGt#1IEl_{*Rz z?$WwP(^L^HhPue>A453le#>JWd?A3zj3RX=46{wrMZ2q-h5ce_sY&Go9heSpQ#WFaBQ z)SjMg$F{6QCtIK$S5%D)3Tlz0c>2;-8FFeAmU;J0)wzI=Qwe!w(yx|zQnlm&nCqmW zonYZ?3Qj~WT!vg>uoe2Y{?_rUkqutP{Az}YdVpYz>0og9=_JJEXcPjxJ**-|uIc#} zQ`>TfU|P3FH)!)$2v=eLWAWC3Z1S0qjX<9o=mwoQ1~}-cg}q-?xRkA-D#o!+I(TMV z#jc>g!dCqNW&Z+?gOk06KspE#{l>>f?aB0)SAL6hUz-4Av=*``*e?nEGnYi$D)7pp zruFD7nMN%$za>?}aJTA5o6GZ@)VPN{67Hd291WvkzK;$%vKK_gCfo-sHJ-o%LR;x? zpmju#e0>2Oxu9D^+?>uBbunIGdvziG{vnt!Qy?89=E=RM8~DRt5L09X+g+Rv&4clU zcz+C3gwjlGEBT}y)rRU2ZQhE`o=|J6sU zy>hn83jeE*^A3iq@8b9(L=e4(M2TL*k|l%?o#=vHy|3s*FVWkIUXo}VB?M7}SY6cB zmw5CNQKCnbRbS8Zyw6B>=6UY@6RvwH#mwxA9Plif>}LqxC& zjQb-#zpLVvpIxgUrvpvCnI~@X{Vnoe4S*!t<>Nv-bG`D zTCWTc!LQ&@E0Qc!UZSs!4FRF{4$=-X97;e(v@+TW_K)8N{=RJS>50fRZ~*`YDgfYe zw!_u3{U@#L*Mm6a%2Ng$meI0J-m1Cw?FY38Nz_+&Bk#>_uauJaRBg`q)#(-1;i9u9 zb3mf-R>Mjq2vpND47hS|d%)pkPo$#-Q`DS;b z*ShX}Lfn>BN9>PTb`MjN{^oG6$6m~s$hBwK zuc=OM#@D&#jrJ%!+biQPvhS68*9RaN)&)FVM$XK5EvQ+0y5)`<&!-Fy50ee{u&U*Q zvkN>d?|xizZl_Irfv`OoOyp$z%K68GT~E=^u3m& zd`nwD{E}HIH$_R(Ty`GDqLHU&Rn6d!<6U@e-o_-k>|V}8MKXlWG)T!02Z@fvO4|4x z%$wl^(&G`MVfI2Zk8aJ$w2w#>w+rf~BAP>-Wp{eo!MM5v`qc+>En15F0}f|(T&BJo zN>o`{{Z=e9y~*0p-BP)9GpoDV#xJrz*wmt2zJZ7N8M3kRKnAqfZ}ONOJgY;{B35ND zH28IUjND0c5y13_cmz@HwRvmFZ0a2Z;v4e;@qn?2ldRD?i-@1maUi8(J8sx@6-2+*COC!?k)uT>^tfxq+3Y|L8p zS8Eak`$K2@PhVFCW^Y`0ex5Z3A!%s_BF-J-tEvf`$P?GjR$C4D9}pNpSNDapPbUd% zWW7=2)PU?V^W@Em^1j40nmap91V8@=Sg=O%?XQueBu}7ac3uELyBdLzFAc>etUkF zABqP01C&Yup0LDT&loSorEM9A{>E#)&RHWXcz@9`!%*WSrEoIwd2d}ExKdSp|B1-V z4{I~OX>IO{mp!bkEWy!Y%c0i6L-F?n{AI?mm9@CviuzZoREYB8Zj>$6^0+GBqfr^L zP_vt=7ik~=gz_dY_D>)YH#4zwJ<6D{#9bv7dzb*yhjrX$UNvE}e)Q9m zc`KZz_{7ebkHBZHUeA_4|6w3t&GrtPFlZ_=AMYYG!{C93A822Zi*4U_bY7~fJO$Lv z%rR|4Syo2xKgC%b1mDkkz!_a>xb&>;ChO`^nO>pxES2$sAFt>)DjC8xY_A$TRpOe1 zAuD;SQgi!@Bq1@ylS(z>Oq5-LFY{2b{7g56VzzAPA@zdbZj)rVPrN#xX!vObmeVX2 zEx29N`lmrkoYmuDo+e=k0zyrQ1x-Th2#nKp@X5($wJ`R%pFT#mMhP=4^(3!U?)GV_ z0N4+tGpIcv3Y!zzlMp+Vr33$`d(9J$A0MAgs0gj1Ei*T3Pm*p%v`ao@QXxOsn+IeLYuyV16&tc9d`)+KdV z@r`hOy`QJHH2M}7&g}?=NRE}&eB|)X*ZDTmW{-|r_o;U$)9Kq*oVpI_ zdofrB=kX(xBctLxq3sDnCDanHgw!Vm(UQIQ;9a zFZ!xJ(+G{_ubgBv7mVB>gB0-TljGB_*xxXh|1revnAPFfw=+rej2hl|O6hk?Oqf(K zNA*#9In$%H&m=Z2@jxeoX^n#U5!HtDTr9%u+<+be9&+ILQ(@eL*d4aGFeb`iss_2P zGgn97d`F%Nr5qu~u~^0LDH5*=DU-s$OGB9y+B{LBWOVPI{+th^V(}u*)bkoC55^*? zNnZwszX9;fu|6&2DTkLM#F2$8`Xh4k%;+L_XpqcC(>}$-!g%z1 z92Jy43JFVaUnfMn*^Tkfe`gW{Jzq^*cc6^wsxm3tQk3c5Q=umhD@rL*^xE zxxQ`oI06M&5iro&ajs^N8F9?RMLe1`b3I#Iu!Siq^B!SpCyVvy(W6}O^77#cFHiU% zF{zEPcd!enZK;qL2Yk|3YVB2AJE>j>?V)8b4g{G zs;!;VW8ZCHLwBw5%ITMfpj?q=eybRA@PR(@R+4BKkjL#hC_nd;v4POQ4XPgHZFa#% zZF)_$m;3CVOm7wNtW2Xjcq*#Q^_DE){wV1$;TK4Q@A4IjC__0O?b!9RRh3kNuSX}; zB_8M#sQn*n+S&lz$}efM6fy73R7I-VwQy0@(*4*O;WjOY z*fcUOc}zb-hfKt$fiAk8U1m##7A$E#H^@q~?(1fQgBvS756sEp5$Rg5HXwAFb+Bqv zvOR{{{Q3@tL&q4;T-0}o=QzYDCdnK*FuNHxm$>cyv@%NJhZzg>td#hntV&vFS)qZ% zCs^1W4txfS^KPhX)G6`xrX+W|0?GP{R*3x|i48_}k4EKRsfcVDCPV6}%MzYMOn(S| z)AkNXbp)NM6-ricIXr z1!wo+mR>v1;jlT$D-J1$wHf*)U**f52$C96ExV1^w9nBd#gvCC^@`f~O#? z_nr&&eP*F(l)#Ny_PC}{nt0BKbVt18g!FQiibruLI0V_$C%&^?WDl((?Q3eiY4)1O zklE$BVw*pYh6~V*{dOvE0!lI&-u7cTY(!KKHyt;BJX`v*EDQ-em&tuf$(Ed@+fb zEtXfrn#&LQSK>bnmzX$A&C3~Ul{+SrI_ZJfz*|`j>7Ne{|~D)RB-YBe2D1sgkGv5+@Ab- F_dowq;5YyP diff --git a/venv/share/python-wheels/contextlib2-0.6.0.post1-py2.py3-none-any.whl b/venv/share/python-wheels/contextlib2-0.6.0.post1-py2.py3-none-any.whl deleted file mode 100644 index 8f494639dabfffc4e5b10dc7aed9ef1f0c451eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12692 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 diff --git a/venv/share/python-wheels/distlib-0.3.1-py2.py3-none-any.whl b/venv/share/python-wheels/distlib-0.3.1-py2.py3-none-any.whl deleted file mode 100644 index f2f03d2541083bda123e32236c0a56a33bbf469e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147633 zcmaI7Q

    h}YdkNPzmmE%#k6LG2^I19kAh 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%0Avb;H)0DP-?*gy~+ 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 KEr0GvG2LgWp diff --git a/venv/share/python-wheels/idna-2.10-py2.py3-none-any.whl b/venv/share/python-wheels/idna-2.10-py2.py3-none-any.whl deleted file mode 100644 index fda8f4c4ee34abdf66d5dfaa84ca7de6a70e17ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63344 zcmc$_Wpw30k|t^@Gc!|}nO$aPW@cvlnwiVY%*<3~W@ct)yUfh?y1U=Lw>@uWcK_`; zk)cnYLa9h)#=TOUkh~Nq7%C7D5F}7^(XQh11`u5>5)hCv0T9r)09hE@8qhM)F*48@ zTR1w=TG*P}(F>?3i_0l0(K)#}nWV|Y{1gNHzIvhl+v0iBD_QqvX7XIlrGC|#Rf{>h z6?3%QSjEMgguOmKb8i&J(~b?60PdMs9ix{)-^iffk5*3;#0&QW>@DRvjHb?PsVf#q zVX$)S*=;}SfPmh$X}UtsyO_-Pbw`qQw(;_>{He8~N9TN0dL`BRsZG;D(W51R)BA1m z<-o?}i@`l}!)*Mly`pTc;`-1m$M>Nq{orWKsnaGh9kp$8ipr+_gM#mO;0>JXc@mxG zy2165)9Qvhj&_Mt5kw7pF#*dm)jF)Ej5UVK)YGE0j3r*V_34Fbh^}4h(g~fXm3oT? z*0xzpZDbzPdY}&gO+$=4t&_DFe%0dqpf&20x}bi1=pqs!zk9m+eul$0_T#SGCCO?{ zq0^a;#S{~5YbntqF{N{gy1Bkhw(SynzusgKVap~4-L8&#*utT zokxn(-KFK_$VQr-WUJM$+nH^-n$osaHD!n3$e z8w*8Ro7JB8jK`zAE_7NfE>@Mx5D&dhk1w9i*dBU8O-B$Lk^t7?!z$I;J5PN2Fj>HU zJx61 zd2?8`S1UYiqx!~)&A=pTQk8rj5k=9Z)SAsGM~Ajsa*f61L!g5(sEYYPAnW+J+Of70 z{uO7ra+0DXlFQ0TdYT8jc&O<}sh=1-A_DU-tk2PMPi6q4fYh&3kz8{iz73kGw(SR_zz6JS;QZJE=#k4!!F7{VL72)m zANd!cSSd3wz3DPKpD*Wzty$5jI5`}d_^^frEvdtG2FqFta1pp`O~W0S%Gm3W0?tLh zSl?M~p;z2Q9E{fj?)m$Tz>Z3DQ2vY3^mAhCmiexer>(;#aXavifM(=b1*C3JtwOBd zHpw7Ak!8#e8Ji6jY)A4))`%O)FS*QztH@Sg`e5glMRji92z9NUUA1>q0S|=R?R5=e z9IyI*C-xoB;vZ@Ifm`x=A!r**M{a|uQPn0-U5nxGYemMq?7jE3hz3?*X+}~PG-V7v zhBBuIjrY(E_646|lC|-aYEg8B&ROl~ky))dpGq!LHRjOI0@^j6vtxKgM9!YFJgoPp z!_ajOm-JD;!-2Gq73Rp>FZFe+IJbL6VWSqIuUaUAoJmFllvfL5b2DC3J?|~!8B(^<@Nr5nXd@OeYWr}<7w?YPzW}W$M4`I?VW@(gtdQcAv=Ox7 zod}7>d(f0vgkduG%Z>EL^q8ZD1n3R=$6mlu0+%Lxw%vXIHRVA* zDv^BHM4VLF`{Mp&5_w2>CglK55MH=i{++B|Zt-VLLPgw9-sp4=BFNK-0tph>A5Vr5 z!7B=>XM~o)I$6vTt9RRfR-o_J#=3Ld^FDkOahfC{1(n^yXR~3s}+_K$*`ZGb_px9G&5$4!2kdqXk`r-o<_af7H;< zBo!QJ!iPSE?uLU^0bY_-84qol_iSIpV4px&Yk?GZkiho*UP)+EgqrI(D>Y!eTq8>& zY<5vsa)NbMgxqr-*V~;^h3e|%Jrv4#k{qj0db(Cd8L9CiWv*kN_fC%h-p;Rg=JTzF zKuF7nMHIqYuq>V$YKAu1P( zYwUw=2@wy7!6GThx|tBTfn(J%^i~jM?G!d5XlIlO0a?AxMRxwSA{}Hh3zRHF`F!4l8Ot4l34Q#t zn}G60$o0y6&)T$fbsXphd1g19k-Y6Ik~=eg)Daf6Xp)~SzpMA7+(w5UJ#TN#5xbhj zP+X*P@|q)W#q|)N-A2Kd?jaro`rK2+Opm;!l_6)NC$d`USjtg}3LMIRMWTNUfacJ5Ed+a)Q}2ZuS`576qPC`eYDvYFXV zLpP=;@woj4U5M|!y_!MkIpol32Q1o%f;%%%7xRhB^WCUbC)gtG#mn|gH1~#BM1rD^Zq9^DyOv+%^Rp#`gJ%};p zvZH@nt#v3*DVQl*sl{iA1)h`Q;?o(aJvyLD$<^b~bwa3^&c=iwNU(M&;TkX4q*W5z ziQq7PvUE+pR{E z8IbE%FTcJJU<-hW2|_DR+HfE<;rW9zrI$I_QhSnAI7-=!Li7xvQuH%Y4YDNE+@I>O z{qXd8rygEsHaVE<9O{H}26hd}+E;J|(?~DGKm5y}*1=ggn*~f-hodfJrVu3F zwk7_1yO;CxZQB<@QX^|qEx^mQ1JNoe3Dra~`6HFK;L&{DgXC|iEaWYv9~YH1B`}|+ z&ZyCj7ty8$7Z!wBbZ_dC`>;7B1E=CU7X(B+0@JiBXg)ti%)>_Ur3W~e_;hZYO|42q zW0{r_O22~@)=lW9z*Xh>JYIXz5thOB$x}M0Wr=gUAyB+?)uuvLB~s zsNmCboV4yla4>M9oGPv6uN|!w)e>zn^t2N7#G?xOMZsJnDx*{41EBRAFHzdZRXkl3 zlJ;dppZP`E(cUz-JMQWZ99`wVb;)@*rQ3hA4mM1cJ=JhH8?oqN2(1ZU&EvdSlg#WS zvgh?DD7H>_ocYEg{uF3L);XD+b^sX|43UC4j~Mg?iNIiyDELU(*%Y2k%@(GmR;wv%#}-lw4A+CmJb{5xs- zF2E>k@fHlWVWm;bSIp@_Z-i!xCCpr$5=hi>A_61mf(2p{+x_Gz<cN5`vzw2F-%d zrl8kPEm46NKdCncXI>r z5Kek7z3SiI)XX?$7eOZ0g)a zAs4mmkuRulco4Yunh8%NleS;@akvZaJ|=3^@jJQw2zt`GzpPA$7&$13HYp$uj0$}1 z`yOl?I?Anre{+C?sKu59s^>?(00=4Q00417HyP^z_cprW?dgheYC3NB*oM@xOadapwPQpiJaX*CeUmeV(TC$+MxQVLa%|_Unkezcdljo8NQKXav9qFoK z{Yei>v^mMi4=AoT{gLQbOo4(@`d$yR=DXRbKhICDtQXZmnl!0Xx|6MJNEt=4-^0zqaomiReTHR|I~1bp(D zqQO~+0C7e@aU6yfb2|YXPpC4t@}%FcE1}az32FHC-pL*MV@Im?#rO9)Mne7J-sN6O zj&>R=cnVFywT4A(6S5nU`rwHg$p|oBversAOw@Z6J8GZEDe8FErSC&UO(O1J*ti#c zj?Qeo?l)65cV>l;@ZeIW2lZ9*Bl}W291nD#%2Hrc$@z3|4!8KHR)XQ0~9Z-xtZp&<=i*gmsRtsvt*gmEsc>zWI?8>~ofjEt{r9yVFGG zv&W^E!74SJ)Ep*=$#|!X`4Q2*-WtQ&~zj*C~?^`mS_STv1(!Bii4@%^}X; z0Io2>y}1rN5-eZiD5J*$<@c_a03V$f>hZm4NS>p1(v&pM4g_*+APr_Jg}?RAZtPRD zusM``Z0>a7@fajpZ4%lxM`~%8EniJth@IN3BTr7Zcr1vpqZqZ8gtqy7Lza4@lV8I` zgEGg>9Zw8}K_ez1)|kzWpf%io!s)f4GTlS6pP*4Zwao_G5T)Cv^q4;#p}rH#mrIEDMr9Q>-w~u{%VtvdGa|r;B)Qz@)#f0~GgVp5@?m!!;p=vn z&*w7(fzO!W^Rl1su}ol@UAK4xqB{{n_2Gs6jC2j}HqR71L;!SD8@J2+jXv%#|WFhY0U*VJL-5*;pPB!F3 zMC(^iPXc?tmuIurfDj&ja?_%3cX88ZqvvXY2IA#1cFP=tGkdsQ4*{+JZB#zweuuJe z$a0U&?~61$>vZN(N2tP@+(nZ$T7;M%u*XF@jFxX+bYo%!gHZW`9tZ_;g-p7z@eQXc zorRY9jc(Dw_1lUS8`n1Xc5AUokk?$>npX0^Fen=KC7Mjz@=_Kbd2e`hO0Ag0 zytD(JDjVe|lQSVYHeXw{qgv$ecyA-hxG#K>hK;{FJ{gqbHXofZ<`1U+=nNfp51$9? z(47R*PSmi@wOfCMGUE=sdj_@6eeCxOpL{1c{?>3L0*YLv9S})TCA&fsOBjquv&|UK z!9FLNucGnQt;40SS-|7SSJ}{Bm}!twq~Ow4AfpO3 zL7=wEz{EDF*6foiZ$^@dQ9KCxB~LPcsfmx}>Pto#XE6R4R7I;hpvVzzoe=3#EbU|G zUUpO#q1>T&^8-xQS;x11NsQhI7M2LEOceGgM?nG*3usT- z(I~TetwBc5xNF_I(o>pY0g}Kze{sir{)g4;aJH(b00#sV`x6KV_rJ(h%7`cn2n#3+ zY-(=W;tZp8<&>ln{~+NwkZdv;RIqHWJ7g(0(fD)F&{_VwT?o*(nRPK$Y5qzT<)1H7 z?YT@$5&H&iu2jhHOZN^kMm@kkJAC4LWY$_}q6HnGtIU8H&*gaZ?sJ?`?@m}X5`^}F zU}BR<*Zk6WK*fa^ym3TD{p0Mjt2a75AMwFD<0?sYspyXz3E)B5)JqLRFe$SMI~svY zC8=Veiowg-?n&P)$~zZkwPpaaZ+J=7)YIF$@Vo_!q>OHfoWSJlaw2Oe+PQP`sv_Vj zT!~cXxs2XHv}=;Q{8@pMy3xW?LJMW~k9X489RF=r!KP0&Sv=lRAH1`U_1!SU69WF{ zz2D|!Fr#HDNzm1pQrcO0Y|){Z>dMgdg^f?((~Ch>JsIiX@{NA%c(Avzds^>K7MW6= zG^q_t-%bU44Np22HB46mTDkJjQs3Vqn_g7S_iOVQZjCb~@l}_h!C@FJ{5|XEHe8V# zTYA(HV-c!E7XuDy+{Jtf^ZqUhF*rj(EqF6~NB6Lz`_na(W%4U+!0^L(wHzCL=l)QU ztF?~DaM6XVtuA0#SK%-ou!e^J0eI3Hyf@(psqbG6h&9qFTc~nYC#3Z*zC9MJ;}wa% zUEB;TXuNyEJ*x!P>YwkA<~52?86Z+zbM00h_CL6|jnO%i~HswP#_La;e-B}=JWZrT633vtvB zSS*`rW!O+=A{{nvcs`hYbA5@*xY9l3BaHnqq*>*dKw%LQRxNgBq;+uiz)-~6EawyV zXTP?OaflLhB5~+e3E@o}VYBA0e=JfJ8>m&KP=_|8uG*n)aVE(7?&eB@$H&HK|A?L7 zi^xFN?Xr(^pO`&8D61USQ)U<`Mk?vA^sP}^^o_y+*q8~~-$*;#hZPC0%fjtNkso%j z6!*+yN6N&^u@kdl z0^DAqk6`s~yNbxu!6qkse@w!8kCs9TSry*&Jz@~B$DPxr^H-;~rH?gYKntzHp8KMv zx)9|E9J>AzdwAb%MzM<|F7@=Wrn-q?qK^EbRLZGSwi3-NH`C^gvk0tj!jeLk_4$hc z$dZ+pS)}=)%n;q(oKL#ExxC(N=V)DG--^Ha`I|n>F;-j0{pP%xKKtWlkUXc`?eX|v zuwJkG`M~a*GBug3!ms3}eDh9|EnYQ!l}(>%E;&6Y!>nnTE7weNSsa}xOnDiTvC=(% zF{4|xzvyFQsbSyCXS;@3yVgX37vThE!dXJ_O>DIZ(`3XZGO$dO0G50 z>Gz)=?dOrSwLu*jnt;$n6COB{wkE8Llm0EkBbBIIV;UVndgLU`X{)6WQ}|G!*O-bF zOMG*;L26s!BCjKa_k_wh$(T26*0x(l;SNeorIMA93~DgMo4;LxR)y<(B8z{Gl2!QA z)(3OILv9aJ5bD)rCQ$<(0m~vIJflH1$$Ne@ug*eDadHn>3Xy&Bfuu)3y6XThB%?Mv zUIyMek79{J`EiAx89no!H*cyE0JJg_m_7e^Fi>(l8kXP$*kgv#J4WMGF|JG%C)7N` zhNLdT`Dq^|#IgpJE}n=fC4a(b0<_8Xp$%(nD_%c*!<vS2P3VclvLP4b?OuFI9=bJ&W`=+Z31vi}$0mq@}JxQ8MxDJhX-uWVhuuU6>3kKa=wKAwPr)K%*~ zS3yKi>g7_|wV)Q%P5W5MHUKym^{V z(|}^iuNH}6?$Q-UX*d@p)OVRq6$V5pNu|J7C7HPEx7n$ySeM7tI!CxL9e5UxAfU16 z*dynKMU?3o5aE#LC-J#h^`WtLt{`aP7Ie#J$A3 zI4U}=< zu^MA{nRjdo(&g0PL>pX@8MV~Kw^=I5Qbkm9&K~B~qWn!~lqR+Gh#&k=&CK2?RR8SR zhjGh}sH;;EM@*|LDjicuWDE-iA(>S=0+tVLMl1J!wM>a8UVa1%unilB7&#CKBD5{pkb^zG{^qbjum{wFGctBk)b@F=Udb^ zq+^P6Jy@b`pF`k1Ov34!w2Z?GtrY+z6Kw&>mmu{cYufh1LrcIQN%QhP7OI1+}=^+l7wcjRO`-(5Bwi@5$9C zpj;1^T#3u!N;UOcvc;j^w}fa^Pdy5#gM!|@Rc&u5QQEYo#GRJph-%{q=v(O|FRS#r zZ+n`+a}w8BPAqG*-*2caD+u3=oDV9y={0nJMK!bKGlcYl67%O<2sgc{k_wzX$nbQc zn!u8Gm9)@=q9r)-p!24qI3S;;Cuz9yNkkFmJVL%ImHtr%OS*3`h$S{PT7+W&%mXOT z#9cxIJtPlXkOFWtcvrju_1AWPw#wb3@ED$|FAzuJsXt5m*6{e2dG<1t1f*&uG+n@& zFD?Frb^%C9X7->9cH(=r)ORUc=G;8_T z6+e93@OHEJx-uI^z{17k{ThHf611K94en{hCq<_nfMP^s&t_klM`=|zw1Sr?@5#QQ zVyJ9M;%bTh8(#`Ec0|@(N}mJ9E7_ET<<*u-U1%iuuS~|qp-A;Zp+IvXM^QlxjbAQ> z((n>#Z>_H+H2ndkit+vyd{|s=?T=xB0&!ypYJt*3{XCn=nh%>4*5k~b;IT?jpl7I8 z;}7km_?I;3{4-lNTYh1A*vPPsEd1x%L3zzT&e$ed;d4!@L)Z~CUQ@Fezp=m&hzzk} zcq2%JX2-|SH#R-|XyUfaU_UO83ocQ!rWK^kP!z$|ZcK+l5Fzc&Qy zdFlB%5YVvr+$szORP&R97E;55(H@DO|6IOz?m+vPlio=uV*j0m7k9TKK+Ax}CR8hF zlwvmoUf9Eis5u9}S_J$EI>_`zCM_6)vTkAl#fRL%8mHMlv>)#+eZC_~Mfw6U|Aikd zWhkK&j{>#EOA@HLgeYSpD2h~}#wI^QmA0%}mI7>BzD$?gD&K;GK+GNHopcNO@=uZY zlhA4O!}bCTXqn_mu^ARi-eeXntlHpYRQ8xn?cq+%Tnt0NmU_{gft5p%pcW6sE}!zG_YrW`>*FXWI_L=hR;pT zS0+p8iQTqbMZ?`kjH%&T5V63!7_ZaZinPISS&;+#XmRx-zk8zA^w}nPEFmykWh7XmA zP&>wuAqq)FrTSLIhZj$blDlgdbrC)m8G6{%&8|NSN?{^7?B0x0YY4q)Q+b)oVKww$ zYdsaQ)$c-z-rj6i{xl|f4uxW}_H|vF34RKgYv03ZNOLj0!j{Zsgz3qEy2D$!>E(}I zMyX2E*GH-@VV6+gX5s6V29ExpvOs)_i<=f`Ar~-*+WNDRTbCz>O6Tx;X(=^mL}6B& ztW4%K>SMtbT^KwFV98p4FHQLJ#X{?&T{wMttU0!<<<`6L@P{gbZ^>A%@Oo&_P#>H`dOHdSbm?HA) z_kNkxo`43#5ZZ9DRpq}n3uaastP*Ul@EkUbWbo)c(784n_KBF`Kh0Lgs7;g2?SmeqH|Zyhua;np{X+)CN8 zWn9WO>~bK{btI2)bB*E~)Fggo6mGv(eg@EcmIQ%6J)a|az4-J#QMR|;MA$<{EPpU( z3;`k*YkJuVY+0gFDrgEON1M+j%9o+|Jl}@oOJ(WUe4E?_b8WD3W z30fgJMK2jVYUu#{A1-hwzHo{S3Iwzd3k39?oB3w}8NHF6v5C=l?}utqcJus*U2keM zm%UAvm8c}}ab6TQ2*ADm<$E*AvrG8o5p3;Cyvopf-SssCF)bpvnhLu@nde^2cav_% zcg09v5#ix5{Ko5mJj6fY%drL6?|4dHFf3x68yLqqa`Ztv#L)2Qs-v6qzzPj>kt>TT zlS$fXGesI~5>2#uv40Od%FOE7|18)|+LUFOf^P~D2UW1o=k|!c%S!uj2tNh zO{fT=h!-Q98>JcsJAx%A(4drol_}Q=tw*r*hU+GoL!@3!J|d@zpIA!mQerge z1;J=Um8M(@UO6Ytx?RwZ3NUMbN@;rSzyVve4t7s)u!WFN>#nQSze{G5bWV|k&A9~(5s61f}pPECM%j`=*C`7@%PMc>ir%5vFtkCyscR2GQH86n_R3}WUhE&h@evj~wLX1^6gGXL7h{8egWI9wwd zYQa70^!!0EO;g`T&PQC3k}rthc{w_VR}B)|X>GpN*dL_r${^Q|6@+8vsa(}ZyZYMq zG6t`j`%L%mAT2&U^BLgTs_#qsl~(oc1K!w?{)S&O9r|!`Ppk|b!AwM~{SsSnja*ns zpFLS~9_wEI$@Ved!E^H6;QzlMvavUC`i>%%XTd1>gLMK+dR!V%@z;t&GqDxj_ryjI~67lqrGk0J;w?w#uI#3pk(|1LKm6x z{LL&RN~2T2n14oN!jW$fAe6bE?W3zG8_?lJg^XQD#7NGd__-I;fgz#KGKwXu8l)ya z?k^Hc#!)O$)7(-3Tf+!jnZlAcYKb(E>c}EC?E!nI-xPa-T&8oh59p zVwCmOBD$EI2aEs?FZVW65^9&X^UYplZ6X|R*~@LO8sX~)uSXb%zyT4V z2E3bmB2&=5dNocQm?}^+ziXr;a(-mdcxq*zC%%%l3HQ9f z)B~^(90mc5p!#}5W+e3L0hcUXiS%wg=E0r>`KkVBSu-HKl| z-f-O1@nZfyJvOmkG%}g69f03zbd>zCmrhsn^EC+xqqBCtZbtTrtmw=QyoJyhRHy?a z8i(wlFF=Tr8vTFph4}JT8FG=%3%HiNUZwzYNA=< zKK%)ZWgwr&h!k-=aBn*O^5dmiGxCt~qqk?-QNE=eg$*2W;zw$ zs@#o)ADQwC>QLSU49-ZgXr$H4Mt7o66Fe!SGKHAi@@zJ<h;uv?-cx zFQy4m&!RNguu8WdGsAIUxM>Mmz^MAdijE9)1O-&`4dlk6F-j>@JbyVhmwG!i&Tq86 zDtE~%fnOVHB$A&TO&Nkx3%4TCDWdcfT@2M4bi6N=LGku#7 zd)WAgsRGOl{8n~!hz=Bz@e0Rat?W3Im9ej?Bz&!VQr)nJ8A@Z;N|JPwRU2)3iZSUe zi3ID4vrLQZ-P!r*9ecdjU8;acow!{_S~OC_d=A1c6yT!Z$7-uu4qd1#262Ue5eWHfH2KrxY4gSN^$YrtcZnH4FqEM& zYUFwsoK4}HsC+L(iH*SsV_@K5q^x}5r@B z8xaY%Huh%+vMvZDQuLMWeDN%2`0HI%{yyQrs~fkGo2|>`50~1wOJU%VlD%y#ND)XT zI{_dH#iS6(^o(^M*Q?>~CdHJz#37RRN{-yol2Yg^oYyMZVxw;OFn&cn&`=BhG6Q^E z6O1j!>3OVQ(Ct3$&~3h|zK9P8nIcL=5i(VBdAn3~xhkhgCx4eD6+n5=kv?oN)XoYB znbR^+0Z)On%B(PFuQ7M&n99Hx^Wo>Tcr=xz+^c&h2CAB|q^q$V#v*@AK(?~hjc%HA zMHd_5SViKqQrM~=k)?}<7qf$T?fK~C7blpz8wRHkR*Y@^&fmqWq~f04icY2-)lPZi z%HqF*`!x+szH%2VywU6%g6X{e@(3rpMm&wr#_XOt+0$^`NRvH%xKqC=0zCf{O6Z9i zEp(K|V@V<%ZwzPMTtag}RI`D=qMmKebXzz*PF}((Dlr@|qV1RorebFJ$7=#=fb<4| z`8UC&cbPTc=+}O1sj5w!SV1=yl<`H53w3*3SXLGDY|!jsR=B6^qZw@5YVA$=&*iJd zO-wAS^>#*ZU)cp`kC;gxSB`CSH?_m?H6_UITc3~jz4r_1t2M^=-`x^FUsXv;uITBe zecIoP{K?E>vUmbzMyuKfX7q;*BA%qEg6Jc(fIDe;GPg?Qdzbs$MAlY0+C}s5KchiG_->Vtc+-pQ42<~DKVd=Lwi*1`bV@RuJ4L1! zN4mEWf|ee+4arq zH!}$)(IYDz*dXUw&)I|q?(ExQLk1kQAr*T zm6jv*;1AC_r98sMQWrJ%sm}T1Ikc^4U1^0F`DA+psT+Hh?5;D zIdAR|%V48z=L)lmeN21DN?X|)O?fQVOl8Sf-MDISRV^Ym7Nzxh&Wk^5<@PiPWtP`>fkOx+ZyWP2u|{ab8DEiMK??jZfD--xH3= z;1+y=pl8UuwaagK1S+1YQtgZB$8_w}>!|K2GtTjat6nqc>87pxUAF)DRJ~j&$zu0i z=3ra&zr42pvBsX*qF=7e^wS^ZQ*jNcAkbiePe$30qTqoOkheKrul--o?{_6{cTZ>YbQiu~ zxBFjpdb|j4pKpA=uluhCAI9C4FJ)gZ^Ynb5&mYrYdw1`>pDzu1=NWcgZ}(p2Vek`I{%JTF9JYksP@m1uu-goz5{50*)5PelRI9WJF(WUgTaHqt2MVS zvi4Iwd6(6+?4vxh>HElSvls7f1aJE-OU6CI(KKGlQp9Kb!Q(lcE~Xy zug|n(b4O<$z1u}|FemRzw!pY;?8PA-C;kHj#9QbJ$8Nf<6`Smx5w2YK>r7>%Hb3r1 zEmN-wRND)m&PD*t*6xaO_&hJVAW`pR1M~7PDr-S%c0M#sh#5czPlxJjm|5#B6+p_p z!7C<_YF`!~dRRvbx^rD~xeC8(R> zagAQ(JU`#ww)>2GobI#%n-B^6?u0$^5cE!b0%q;VxyVF+HaAUAAg|~!<|DZ7o0QQ* z4$lC@5x6llfDio_`tA2=0=}>7mk>Umr}3PxhA!#zWxn&0&x?{Lnm1)UH6ArkwV!Gz zYSe06DjzOAR>$dJE$U`ATUOf(Z9MHPZ5{2-vSWLPMTevp zIR7^2xQeif2|EgHlkci*sym$2?Vfk=BX)-F-C|3xp=Pf#PTPm?V?Xb3(zZw5MUU83 z~)2|9`b)X5`Iww4ADEG&I|=Rlm@>3ic>P6s}?U%zoZf8b4A?L4_MbO&y4kM47& zZI51E8T*hk{~}L28+0+cakRtl%@Dgbjkd)u0PyGx#*`NjQAZDzw)8BHEDrc)v}(3! zwyw2UZa5zQ-T8a)cdt5C@9`|$_4}6c+?}QA<+P-Kn~c4`4pj|RP1F!oAI0bK{58l`SqV5l< z#)?19Ie&6555i@dj5pQ>bH*!Eiy7NPu#9&a&FE-4vxXy?6rhfT{97GKFJ+Ft%O1Hh zbtk-JO?=-OjJx*K?ZJ1tBUi@mh!>rSE5rXubshD_ub3}1Y_+b&-}^fqa-7Dq2;b??(`v3V&oYQI zu`=>9voaXoE#Hj?GUo)3l-JnT#Mk)O$p^xBh+RI&FM(%-K3~Moz-xk_um6Oico*B{ zgZ@%@j_LD7{Vcd92>$v{D3W*bT|THUiD$V!U*yk(>ztsk|AeA>H{0cd`OB09J7 zy||lFCVZ8lf-yH`tQe|&1rzS{NU?+)b0&P5p@LC27OWVu{n?-|vUm2~Zm2JrXS+UM zl+TRo?V#_C%rpD$zXNyIHNE9$&2ATOp9{U`vqrpo6|T3LcHKhVqOGp#j0riiyM)nq zVy6tD5xr^AgCg!6hN6r zZ9ri_Wk4yQTYE}JTFRX{)?fC&Q5|Fb72F-EJCy6P%d~H789RwPNrXc?$(aiIl|LbWG#!k$f`t# z>!SNF3ndYC-ieaafyX=_Bk9SAGhQq2gPhYrTl7W?SSqLaQ*84te);I%+)W`dS-b|% zQtkzT_CH{pXPXTNN<&vy}V)K;@79Ea(2G%H~NoL%65kjwCpKosY@! zeLifz>HK)VQ!4}7{#^cgtogk2eP&O03tB+=T6d>S%uJBG9aEujG$cklJu*fu^p{ZG zJmi0rh9`7{UkS!-l2WXN9!VO7GoGSo;~dEpbCHSVxY*;|uojXthS-R9;M#GCTnBD0 zeB}5SFxnUaa`*?Ge9vE4_G`L@$KG@3!hfCF7GWdX!E@&^avhZ2ESlpVdqT6g)agRR z>*yqLp!N_$ct8vc{Kn;NGpW{uj-sZRgmPr`u^bN+#QhY2J%va@$EMxU*tLT`;|{nu zV9`*jx>90cQmibbd`X&eFa=U{l|Dpr{5>!zvSj@LFj5T`gHTd6mT%X>iK8YZip@bT zCt3_-G7n}=ccvn_K%0$C{sml<4+Q_ou$NG@!ER*!IfS;y7}D{}NGQUKFVZpC_|d`< zvPKlLRvYa616xbo2!^HU&k(*&yY^v6Ewo<}uqsd`EF#u&b=?s0{+bH9O25?HGpWT% zyTdkI!MqzL_KL+sw7^zo#cAy1MdT_Y_uO+FxXU*fS;q_$AUbzdyd@z*DCS4b=8_gL zQ<~}ZIu>)`1~71eGGWo6NUzy`$__Ci^n>+`0+9pBg8w2aAI(okTui)op#UR4PCaHl{I)Z6`+sNeFt;(Zs<-w;>l=hywR5N<1J2_zV*rN zfVS-3?Vu{{j8LlY-M#Q2#luZ9n}-xZZnVDSV3*SUF_D{_bUHgeq~u^#>GnF2+fx!h zJKjugv|s7=oYMWjGj?O-`8Ku-OF6gu@67(YKI1~pR|B7}y}93b@k8{VM=Y-XiFpIY zN3=!lv0mcr0o+_1__EPv^O=BMdDLvCKH=?zw`@3L z-cN(QIIm~XRB;b8D+2usP^~v0s~U*v$|nw*3GPa7{r{IFSXqNmf9qM|?OB6pdIVnL zy;dOJ1?T4l{M47gxg0X)jz{PUm9H4lwF_FtSv`xo_W0@9iKJ_1T*KaX7Ipq0`agJk z%cwY-Z*LR`PH+qEZowUbySuvt_kkoZSb_x)65QS0-95Ow1qkkXn>^1w|8rhh_uE}- z@2cOns-CG`)xD;xdpujCTUX)BxvS;~Hm)SEKT))-4uleB4n$+~ibhi~xcn0~aWZgE zgal+Ja&6>SXWaGOda})w%z?ePy@<?*!@#_oDIWTk%Uy zy@jU{dPRB>BY4Ey9oz6OrY^9J?;HJ>f%y!gMvYp~G>NOsHz!wukGGoRA=4JBpi_j8 zN2Lr+1d)&PqhBa)d(oJ#h6tR9kMKwDr3QP^F!P4NH+Zdv{9hf;TQFHq#M40JyQu>g ziYZblm_)k9j;LlRraSv1Jw>7x_q(dFWL}CED%53K)Md1bC=H7!88t9iG%(`nLlWo_{{L`a>FH?>`Teer;p`_E zfnPZUlp&-zVM>r}Y=*fs&#}5^4?`^#r9=IO?M^CfOv1ZeIL2J6eT=7r@q(Tr9kZ%z z#KCl|pL|a=_QSXQ9}Ab3iK_xMv8Wv_(*9nljbznVgEwTjK8?c<$x4(Si1ChJX$Jtv-Sre$!4s zyfDw?xJO%FTp77cTHME9g3MnMu2g7uN=(4AhQHj?#~+8x9~XW@tan2SNBxGhnW;2= zHQm{5;mN3RvQqTcVO$6 zwat+6ZS4wxA^?mWUfbDV(jE>P2E@O9T#>MFMb%zM%A;dN3zFPTcXNLUit1ZJC;> z*o~m51@zzAGwxiiM8oxCq2G6QW^|(Y8C|TxmNN%ZvGLe1Ikh?a-62pkM>isj;fi;C zZBR7p&{4WNhqx-N__P-!#c4|H-VAZ6nz+FH+(w2p3~+b)00(zSsyRGoY(b!0*Qs{t zTZODy2WdfIcMAJ<)p(f8cmbB7$Jc^D02lR?U7HLR%d|rDEssxt@J2Yoa%`ST$$5Dv ztm6lzZ~F+E*#Rqh1?!lcW7|`A=2t(J(+3e*GtpwPO-0G5PfEw#2)hPnt-9{ziM>*~ zy%mV>LX-|;Z{TPwJO1%QElWjCt(fDloZ;}|x8C$lZBg&Uow7Yw9P2?-TCMu|M*qBj zDI~H!R?25{>(4e(bO>3RKo4gAp5m&GcH$JygAkIHFbhh)&gm>JD!zwCS#MY?j92-P zclVyr7s5yX@pexP?O;*u7OKVyszy&a7ZW*`%E*?}1)sD1^{HRAx2^h~EV!tP{vtY$ zhNeqT}i&39$kZU`~ufPkuDle(dFo&?bt)NV)w^U`!jDianLU#5Oue+)tjFr2$5UN z-gOj%`9d2p3i+7P{T6nj29QKoM{y6fGgJP$Ckzua7v~M^s_p$l)J6|~5 zA-`N7GsdEL@CjpteyJumi+d3_mc88OhgOToe}+%rHmf0u_~n6ri*V&;D7yYwd8gR+ z28NY0V1AC>o*iGNW<+Za7U{5egbm1d}ZylE~65>V-L(!7^e*g&E`*!!FRFmX-0~hvG}%?!=TSw zw;nw2Hcw%uHSj>t1P#vgucQ$x1LK|WNQQ_I(!l>h{>dUl zjwb=m>#ya-cqb$VXW#=~MxwC|+T%+TOORgjs+$D%=wOc1vU*>9p>vhn<>VP|{t?x8 zab=r;G37};Z6K?>b@yB=7h)qo(&0g85ob8F&PT>soA{Qh-^6P@ zf$~*Z^{V`}1fX+5oJ+3|p>l}FnBNspr*NGlK)a-x5I$aDEr@5*+cRP&uSm^T^yXBm zlf+LL@frS6z>Ule~gJl7e0kS3F{-1qm6e<6>AD8 z)k9&Ln&f)An zQ9Uzpad^<(GMvga^%ixo+~E{Mfw3R4Z+q9Yv2Tml%R5*OlQjH{9v^3X+Yz2&9~Dly z*KvidQU$LJhFl5K7_{r*h8&2OTWW+y26h+xMNEzF_!g$j6xA zD%jKECU@j@5`Qp6`|X}B#0%Qvo7TLpAi93XS);nG6VDY*A^so`5UtMuhL)mP(A=Ih&X!B*|_UbB` z1b1lgq%tjzNDXA>eOYYF3qHA5C}D8?X@y=_FE=RAB@}RE!e?j7x6rfft`E`)op4qt zIC^6|=bB)!|HjSm#b=uM&!IvQtY1Kj>s+0A60f$jD3lH>`Q95H?2tCzGJ+M+3SrG zX`df+4G^ERQJc3flU05x#re?Ro3!_CVg6>Wo)@?^AY)WM`+gXL0jq-Ca*hoIQp;o8kLiBu5)+(BdkHUL$)LMyz#+&gngvGMZTpX zvvpfP@o#?v#(gBZZC*e5&j5ou*Zlq_fY>SO`rP*_$j4XkI9K} zKO@z(zJCVzRRSYEBRr~|DggrxhH76P1_7}BRs=A${o%73;sxHbB?)xj5_r1 z5BJ$#-M(?AQDfuYTX7XI!XFpNGhZ+O@{!08IQdB9!Die32c!FS``VysS^JfN2=33C$ zgL^Z|BgRb<<|$2Qy00+8GxVd(Db2c)zc3^i;}PLDc3r6>9R>{h%y`RwYSkHexbKSd zh<97PKK>syZl~8QZZlRJ;%(9S17aJn_o_1?@ZH`&NDI4-{G|?62 znfjLCRL;rOp<@ji{N}I3-MRMvPXF`?v|+h>ska`xcVk0$&!%77Bac2o2qFslrG0%q z&PQzZa}YhrK+RMFax3yt4($<=Ct&?;2Oati6@(R93M3B|Ry*|iTYvU{r0fCA>+0Yq z#)@=_BP+irMpI#=BP;X=9b@6J`EjTRogN=@bgKk^lK<}XqaoM;&ZjaR=D#cd50Ne!N7q4r;WzE`GpfGnHzpn{A5KI`GL$m2!Ij-G9u2`n%oW`dM^1i3%%(v| zM^1(Q)liYQG&?=Adg#r%##&+XGf>UCJwE?i56D}S=KA>Cmi|+|Q_%U4`60`1UD*HI zgi*p3AbJA*ZqI&Uega*xAaLZ02^nlpk)<=A|L$Oi9`_~uHn35`;z9R`En{5l^6qH( zkLqdqrC2fB$uy>Pz1%D}^jp21lYnmx)WtEZffR%ugXbc_?HZkGHz>dg;5l*K406VQqm0TXzc}8&X6Yi8adc)?e^_hE{5<*$_fj zA;2I`tI5m~=}s6ALbxebTSO_?Th~R|@R*;N&n4`;S!D3yWc=t!;z2+e{}FSnTWq@B zlSuOF2S#eRbq2%0UNQrO!$iX$hz1d%Q-?0}&rvL;T0NfPe-Ja5J{5(1MtR^tK94@8 zNYqy(a>C8BFQeR`#}!I2pbCy(f0(0+_)TrjF@Rfl=uPfCvlV!#@oS={Q&DW9-Lq6E zP4xweUU$c7L4k)}7ux}5nV#gREEK)Og?LvZQ!9?WnpjjkKw!)Jy^HJO`Y+O7CR*Ly z$$?aMU3|zGN={^Hda*SmqM~BIzELo^-s7Tx$tnYrClmuB`eizNhRTqoj&QJXw4slr}#~ebQmuxh)|6Atp2(R=q?-j-8&Fj7J$&+K;O@y>$z8uK$ z23|E=%u}C%e4~`>^PD_!d(WM>O?$@9A3aN}(rihaI9jUpZ|#ubP|{TuFMLQyk15GI z1?lk0VO3N>V~IYpyex!d4T|IV9yDPabYDd%zw&TjZb*SZytO8&u)HTTsqnw^f3$yC z54`v!dC&Xcnt;JqiGYM$&jC?ZEzUhmaNYN2jw4vs`F z!s_Wu`fna7AqF;D$HA?GM=c02$O;5wwi8)GZ%iHOuVY!Be|*{rNS)JB{N)929o5jG z0FMslsTo55@Yq3W?Te3V|nE@>SI+$nrghoBca$?M0^_pAI}p zIouQOPrt(=%&rCcf6GJupdo>WHr6Cpjtq&si0uXno!e9F`TALuyAhIjfthOWiqG^$ z1Z%7x#8%#-!Xp4u;xTmC@-%9W?hP7#&$h5#I%*YUmk_g&PzgPsyNuzdd}@b*l#Gtl zCg%eud>pr*MTM94%)G;g6c}JNx-|TBMP`-|Gf;tW!7*SPg?l?O9eDGEeHW2r_HfTr zBPYW(56zM2Q9BWrnEQpKx<(EiVbcLbcVljBU3>%q9+ZwlqY5fr%HPg>av=$z%=Pdb zXns2xwe>M-)Gy+)_Sj+=>cOvh8)8(U!|1J!h=;k$iRwBzWt*J*hFGF?)OPPpDpJ+q z1KRyZG{=vN48pr~)f_DzBk8IReih%!%tyF8Q(+anedj?sHJNF!b2%HFno2P_mNIR1 zROxIV#U$T^J#E1v^pilh$!brJ)NauV<>ryLWjUqA^tK7O=uA%;DgV;2AiAPDl$^Xt zA6_v;R=AiJI=AkDSeBk|u#m!&ygdIrz>9^vmwe0Ic%1BHn)Er20nKSQoDU#37B*rPX_Ms0U5|8vWGz1d~eF7WW%3@ii$@ap7$ zw!D9IaC0$nu(EIkcISAjD?~27M{C{F`mS9lD;_*>UFZKN*CsMf^RpQ3J2o`Akkm!R zg}D1Ielr5m2@hA_+bzNN8_SdhyZFZ+U}ZmFOaO=aZTm^_h5gZ}wsw?soVs{$^I8Eot zO-}Qf=>L3E)HLD(za=H?Gm=3YTH-tR?TY?$UN_$T=MRU4mR2Sk$mHJSaYnO}X*n3B z+_(0y0!;jYMjwlneh18@T1c>EGh!@UE%MCERjtS5NTvs&9|YF%;jd_n#GEU|2~vGP z-7sX17Yas~#-#d|qe>K|1*Hce)ju<-R}!x^t^uF9i8b$m;=u!)9vea!#@W&=&`uQy z^&b?QYa~L=dSFZuia8a^1zNY)J8g!(%s9rGBub(<<@)QW24zm~DhwI5BB?*k78FTOB>kZma#nC!$uCIb$uQ zu3(a2krAhdMieG7!Tj83yn)K0S!a2Gsbp^Ir&puF4>dI5>21X#$a18h&UZGxLkt0Q zgVq*?LabZZ*z&kpCv+V(h+c3JZe0yJ4i~@ik|i3y^8V2Aut*lC7CVAnF;=IQ!H*ag zHBwT#*tulFr3md<;qpriUbrf@A5)p|(`S2jj1hQU3SGaFW zMuF``z1d-dJJFPOKECX#6mRX3Kda8VYs+m!m8DrLPczCuLoD}w?v$PT@HW9-{REq1gckm{%m$MsR=9Z6mfwvT73_-~7)>K{Rc9^A4B{H~_!CUi@{l z8jF*OnXQSHh0(ve*24btNSRiJhBEggJBRY#=KuQ0nh?8;=I?mmmE_oO{xiMY-CQ}i z{%z(lb4zjI5${HCM>lbh5wbXo?yrH-RDusW zo+p0(H*H16!@lTQZ{A^uybFcC^B1io%#E0kY6$Vyez-9zM!|w-wRvH?FfXf}TeL0z z^X#%9+GJ6h613N4z`P3ez za<6(`{b>i^HO?ix{Ba##(|K-f*T23~&41Jz@Nm?Jqkibj& z*WD-HCl6~c&%%~3QdLJ_M)1Wb2IE8ijxZf~`)mEGr~SgqmC}n z9q4w6rTy$a65MhmHQYv`@mzLz($x0Sx|aqvS%_TodF~|v30?${_&Dm^wb!SC_g3l+ zjjmaczyediOL*FKuC?OY?>pDN+*ov0-!hDh0j#w?5l|9KpBJCPZjX*-b>91c5? zDV!QRzc{Jhp={F~mCCDZ)5BM6b0~FHDe&BH^fX!pda>aR+v?p+uV|>!eq;t(5EsMLNW4@(AMWkap@BU@N3;9JFG!07X}_fPMpmQD&2PJ7?xm&#jr z9Ne&8$B9@EKry&UdXiqrGw{HK1LxH~3P>Pr!tE#Kuz(iu7$6x{0Ja21l=EloSJkMg z9>})tc-C&EbfHPF+P&W4&|ziK1t0^vyR|l4-RT0gFx~oD!~cbp>_lvk7VA1bwKrY) zTytL|;lxtx)^_1&jko6{NV3_ox=KZH}YV1WUkzDkY6aC}kq=tvGEp~oY zom=a8)szV6Y7#RsME+mY+aW<-N2BqT^STPArPP(0vD(ElB{P(>HW;>?GVCp*j#}v2 zhcf=SmK15)=`jEa#Qzem>bU=r(;;^Wl`~tPqbd8*ddd_hh)dxUtj6Pntp7xjH{X~G zL&r4Y`&gOKS_qI9g1~HKMMd(AHtTV-I-ZRpEhiG{F{d z@Q%pz35lgw)YXHOHZfH2O=Ok8!2OdMBPvvxpU{-<$jqd@2lmv8|@DOHKm9p;CaYweHmrG;{DSEA$j`ThOOb_AT#@K<-1SMjGy$)@F zP7z?E9T8sX%6SX&WR^MJ+@e~N=w7Qmte+}N<)(y}H z3@Q4yQN=(+tSylXHt3-0tIBJw3vwwHE8A2w@OWSJw@&)EZu__1{97{`z_PyD84c)J zZ9bHV0bevh)L}62MZ<2>uTELuWdk(|@Vb+1*n6H61o-E5G3R3Dmv@~0dQZyBHre?v zE=Be%ai!M(70F1|SM@e+l0*hbN-@_1m)~k!nVsQ`l1}Pvrs!t&tzu|RBW68Whe6Ew z*NP%}*s`K`C+04)T7HDtSi?A(bm?*wx!r`*6}hcfM1<#jq9n*mJ2nPb&vvf=8@J~sEgVKR+Dy3}bD@{Pol9WMPp<#f|SPk9B&~n5SM=(_h zxj>Xb+m+hX!`#!0RW=bu@0Rg@FKl{1>q0j}i_Ccy%LxU@(WfvAGm*>)PGq!M{G@E4esiC9;sO%PhB(VS1#qQ00!ldX=U?Cz$Jx ztmhsia?2$o!~9X^zhKpT~sG@)G= zrus%tO2+Dya2kdvZ7uH`s|<+{0&=43DDVxu94!en-G*{3!!out{I0(~N(@=I+dBZW zdW31*OF)6^>H5L9)Qi={k6R0=!X-Q!sijfVH_rCevv-W)O`>i-1hvOP*Sm$TWC9qT zK?*%jS77dYnIkzmV6Rg~+HH*fflAqqW@>3v^Nkg#`pOMLa*C0vJKZ&eR6HNRStZ0; z-wp-5-T*lp&Gcy94nd;@1i!8UuWGZu>J~3i-&h79SP8+&MFI%M0~Q6~7zJoL2C*AE zl7SVVksLTwVEtfF_2ZTTM9nTML41r(a$AtAzOVg9GxI+}ixi~&Q;|r{Ye6L|r4Eo> z#v#$Q57u9OmF0xcQNM1l&>TW%m{A;;AJ8N1-mOdqH4phOuP`}-nL)S|Adqbv(h;SV^KcB-9yenVU|N^e_vhdxpJ3?_C$EgWxXawmsE+}F68Kf zu%!vMH^*c-TZSFA;NefmT@C2R@EI!l)*P_WR=4VlN7UY1>^4Dgt9WI)xWX#u?&ir; zT-`L2K{~K;s)E}I(AOgim;Lm2N zKMM?=p4Glc42i9s)qQD5cGdpqk@Q>rukzuA7PPRE>nCb$R00S zeAl&wTS+^{>WVo6%vxI&eN#QOM0Ss_KS4&}HSfm77yC;uc++cCVAC(>cSHHFe4$4a zF+843GT(iu6H8UY6MM9L=qIzIylmyq5Jhh)&PAQ^O9Zh!v0qFnC2vaM1I< zW&Rl(*JO}oU&R`n9)cnA^~4eDBN3dK2-(!@mEeI){dRCo_nN87D?$`NrUGG;+6`|t zUgIZa0g(HF3a4Dt?VJRrhaqo^x>O@-2l$r>K3*5@uu^}I+iA0`G;1)=;=+pD!c6g-2j0c|ro zEvfaK7yp-pL=ppR z2(S>qJ^(`ktN~?AQVi1}Gz;(RU4jkqpiKjDU1e>l%5Qrjj zrguO#sfBC|<#t}VwRz)$%{}SlV*jCRQy5>dY?O4ad6Oqev25RF4O`B(2_&KQP?o4Y z)ymMc2e1DWG!e5qc0~gV%a~G!E?gShcE=$E?!3wLE?hS~ z;Y}$D*u2S~Hzf_m@sJj*+t-E% zljvhOUmK>A(U6yEqH&lmcxktaw<&2vsli{o+}V=5ytuH9$d zS4ED=aXId*;(6y;5;%8Cw=AzQcE}LpB|PW>7t!Q1F5qV1+_|lNeDZoq-5z>cc|CV( zG`4F2XT?dno7YQi@<^8#U%-n}`IrO)@ERF>qImUUYXk$A1q?1!H-FcynC<7k>sG|F z@awwuG5TTe^$bhm^5PF%Q-&fp*uF122BEdV)?U6f`Xgxj__@eoEGrROx z^^Qj(!K=*gkw43#UGLGr1R5W?{(_>G_4d*I5IiV^YoYGHFD%SJ8fcjwrug3A;Nk*G zRPw-81$o!;i;oJ#B`YPw{W}~8@9*%wLd*yNBl!xI0k{kiU_dSdWJ#D0BxX<z=T+KJ!O&i4dx!Zxlfvhf$@9#f}r zHXU87h7Z`cYu1X|H+ThyPmg6-*Q~fA-Vov@ahcUWCCF89GkCz2Sk4%zxe|oW9MyB% z9`m~2q%W8U=0BI*e9M`;u zS++7EIF0&>w{C*u+QE*4(0W*5%cc>_W%vYV52LHJ=VaURg1K~B zkfzovNAuu1)s-_l?p|TjZZmJjqj{>1}3E zzl6#>+3$_BZk(pkLpIu{TNu~IC91+W{@iB42;Hx1Xyf+Ya~A2b4L;_R77BvSsa2F! zvP$~63?ZfDG4q;fIh$!)9+wJeZ-oVTA5XU%KHP{n>_tG6op#609lfz*Pj6W9i484H z3Q68eS1%c)a?p#&u^Aq6q}Tco33u}F1uWZDKpCVE70(48-)V)Q*SIkQ=pbW zBdT)JOGI)NH78AJQY?nklczgYcu zifICQnBj(8qyi+f+}q#JsdI(+}n4S zMPFsP+#1`u&{|u?k+Q=nkKI*(9OmiQJgQ?B%RWzg{VUNs9p|y^j4kXk zD-N|@eO`rwSlv+^C z)j_}f4Fcv{BC%pgb)=h~q?z*mMvo;hHPxy+M0inYJm!a2>gJBh<&SC;_?@St)qZN9 zo%UJyISd~)+22f@1I`S)Dh<`sHHk6cmM3rln#0@lQ9w!x4pnMEB)N5I4%tVFTeJ zY1*-^YZt9w@58P)!r5Pu>d@!dLhHh{d)77=S!cP-ArqGo~tUu&a>vfdZ`@U3#%Mm z8`Fl_nW^A3mac9lz4Ru%NF=-qF`d&0H3iYC=xnF&#H6Ym#h*x3%Be|K4y#Ejaj~*$ z-8ssq9+}NO$4flpt{iPw4ZLL824v4mfK`s_7m6F&M0BPb!K+?d6SCWeMHqMKt}825 z0~*t^-AUH!XP-wkm(OHXdXdK@mEy+_G!lJz8_%+`a3-R%pslr45IM5oahlFzvffIA zOjz`vNuWHS%^bK1(zo*-T$14|26W z)je9(lkXYoJ-6ys{$Y}2;%?1hJlDDlT_|cAnm&hvt~pRFVgj|9=xo2u1NLppK7RJ{ zs$JIBoIdvx8;0XynhOcV;6^Tbjj13%qfYWnPiv?RR@sa|`;M{po@VueW;K^8B-VR# zC+?P-`|66Jlusr{Xj$foJI^rkO9>`@?Vj3XDufh0urg&2h$FfAFca#eKwOtOwgyS~a6DMC?n5Q;!yM zXrUHMXkiz#3ZQB9pz=r5oRG$Uw)ea7`$Pa9#(XVpLXmZ;mu~du>;#Ch0tH=)yLjf)VI0@h; zz)3yY)_aLAjx{rQNLe^p6|bt)ZRv)2N$Ab5>r9a)WuhZ(A)9Zbj}iXwl~5h)NB)-DzeqO`93(*W$1x|^iGgNnDI}fFt%o)i8RSRwXI|Anb2~$Vi9@M{MUr*+O$V#3 z;$mBk@$MqmK_VPQ1365##?VA1WR~H0saa3vwCR(&Tp#k6D{&~wr&{KwK(LOwTY;Lk zN|pv3gY4y(inrNtVb~I)-4S|`@i&`1c!Ee!!-~`_f0UtVzI@Ej`V@p8%!*WMop@D- zjqJ)#!%{e7W|^Nx8f&7vH;$cA+TtdUUYAd(>HkD0^}{$o_G2cS9XcgHc09D+2r_M_ zjt^q|Y6S04g+-KXso^0h#1Wx+Th;3RW!$`|G*>T!O!1Z$HBtNI1JC#Vfn6OcXDe>= zV138m=rr*9=^DP6U+Wk;>DqDQ)~(4noq9@GXgj!;K3&2?&FTgH=s2$tBG;c`k7pAv z{=}&E&G>5eBUP|Bb0i(&{oiU>mlq+?P+xYVFleP`eBW!J1`MI) zu1?;El3vB@QgMs6mq6n;<2YSUGdZ+?= zK-}@x06PDA-c~j++$`!9Nq2r;ro4&?90S9To6kV?3p2H)jJfS#C){v<+ui+ah6=?p zpryPxto)N#^@*2(L5rTHDvrqN+)Qt?mx%@Xwl|;>-s6=ray@Tq@&r%2M*Kmd2K;aG z1@}0I^Z?^2Z@J3q!RFJ?ao&drAnw5|{Q`fdlzBD%F=dX{(f#cCbgxCy3kca0-aDc+ z)WSWnV%z>F7KX1}ZS~WBMtVW)9G&CU+B4&Ri=tQY%XPoVp8JsAQ@t?ytH(k6Q|5$M z>bd62pJwnsb>z3P!yoncj$l5w)r^)I@WY#|3)r2~=cRP?RBqbWrV{sCL|&Vsk=R3i zZR!N`pL)rxjxh^}XtuW;CVw@MtcG-K;#?CHozrb>y)6Nvr zv^Q3Ad+#Ds2sLom^f#du3(VCGzDyNE6Z}?;C<+7V{g&jto=gR-Cv~cHVHq(h?q?1X zjz3)G-P8?Qmi%)Wvt*}xo8vkx&^5A{S4n76%>-QTXt=RVz6{?=)PJa8M1=Buu%~){ z;O*lnioDJj*(1~=)JQl)4IJam<0)dEOGij`Wpq|IDAOZR#;I&89CmMBj+ZELJaAc& zthYcvOm5N#o4SovcB!~GIy5iQ?!DV6Xwt9Wveyy!Djs&1bIVFG^UnsnH><0H&ovVc z>)M#YfYE7up59L}1HW2e8!XU)ahoGyPj%&S0=im)<^EJPur;m~SvYL}*{h!Hgw?(A z7%QU+{+xI!s`1ax%D0yO>GUS-yI-*qRBHyM&ozH`!UJk(UX^i=K=ugcy{i6ov(QmV z12RQvWw!CPqvz>AsOmU>6{dZ_G0jFTl)^Iu$AtWIg{$e+6`!p+)s2Gr=qKS+)Pj8; z!4BR|DcJ=^zS|x!@+VX%2V<`}BbPFh`kEpMJZ1d(z__wFn}S|*$Z&JwI0Z z>wpBO64-M)WpzK3qs-?;{vvPCVpI@~`=h?evtGhc{k@++n<#ppRKFH|*Fz+TL9~H$ zH5-17b+s6t9oR#Hweh*{0ow$2xSBM(QLs_F z0(!gQcuwT9z;xHR0(0UUBH@DIHD_t`_N@wXpMG?S$B69ETcUm}m9Tznm9WhRMB&aR z<9p}FEOMWND1ZU4gJ6KEBp#=SLvIVUu+G$a^Ray5Jyou-;|DtsIJM+Of2JtATBtgS zj$&UZQ`1cA|0Dzyz4AW>0c(3*@o8)-QvGiQot_)5fZ|5hmaM)TO)=NurfdLcyt!cL zMjUBPOo>|0KXsi#+AXJ^zCL)QtQFj?{EIjMRQ(r;1E}^dQm++kpI#sATB6Y!4r!rs zmNRLf)d@=SEKjKFd~d7gniIyf^VE@uaFUuRdSP=i z4WD_@qQ~H`>USzgh2v&8s_FeqIYLU>^IsN0b!peBgHvtn-T+L$PF(;XcoBr7bf;+f zKz#&qQRobOQnY-2g$92iBn<%V|3c_jI5r#jFt$6@R((}-A`dk78-PzWCnEs71EA*+ z=>AF{M(rCW?w>2`iEoVEgDqA}u1J@N?Tgjx82$uWM-&+`1o)RO=$**OpMFZGya#Q3 zcefvmR=PC0(?*YjsXMC2cO$E`cBJQ9t%)*vWWP`C%SF2DJvr93Ae(U;d?X%QyT2^5 zP@eJ{Zb@2(<+4DZzD%=6Nd%=#7{a3Lu>C@tio{$T>^Re>rWeJT1m{@)u3wbXmX?Ms zcnYj57=m9ZzovB>xzAtxJhsf%+hxzHfg@sg@)IsYw>`fVau=1R1{^11jE`s8rWU25 zxb!`xN0qR_HZN;&$>ojcL{bi!wmPzKu0T zPmv;kThKKa;PjjiQIDyuBQ8eFeboT3+T7YCcDd;MvVHE6BGKL{w7As7PuI$rRjQXT z61djGDM8dsIP#$Ioxwl8hTHFwWal(cMWHB2)TV;Gd7saxN^CT}T+>+VAweS2h*qyb zbJ)I~=Gf(9Llv#KY^0{0s`=+=3zauUtXTsd*PCVYO{rA_yEen*$zN#0LQ&FB*pw|) zU`XEUKdb3-P8%4jjasM>-RLvF(AmE`U_SNN9?%!OOKZPHqT({s$EnP_q^rW)YAD9% zI7fZS$iWMK-WPQ^7%w+Fu1q~`D4spVs1bD|fQ*w!Rd0x@{)Mk!e|SBdRn$K8DWm}@ z)~5+8Q1__{s#(}v2dhY0Lj-=`7Eu(YkO98Rh8F&~u#l7|Ki=P5#RptU>X|21Tt|yI zb0mf6Z}dr0q`+2K8BO$R4u*q2git3|TEtqz6sFUK0g>-x&VmfZs3QJHk4fq3SjnVR zj>)5(XiKYb4*vf#-D^V8h3_E78|vu!Q_Z3XL5kqEtNYH#G{-?(wB(S|ZehcS;FZ(E z4|ytx6pL|+mu)Hl3P%R`KiB+-M~WoQ2}^!CjELp8@j~;Xze1XqLwYOM&X|trQt#Fj+zB*f?a=+5+El?)b=KLUZ1QftHXWLQkiHjDPsz; z`nYt%KE9=;gw(JpMlu>#N?ot%lcaXvc~j_MsVQBU zuH4)XJVmmw8d}>86O6}iXF`+G!KHFK1jEhLy(_)Sv~42SSfT-zF#oXIS}0sS32k|o z&$SpV@4jaz!STn2z5jF{>Q7pH6G?|ayg`E~`c00B+)%V7^IJ%9ctx|{>}DvE2zgHh zy?tQ0Zg@p$CvNf&XasPjj?DXRmO5Gl|7X+U7-jAmd3t8m@9*6ny3UR0Me{#?#VF|` zR#A0pg0qz(E}e9Avy~dkA}!j(;@~Sl>2A9J^=|s95Q+tvu_2ha^vIs}J9HgZA5=DT zE_NpN*UYva;@R!7q^_prkH%5zz1^gxML|q=qfK4L)tsnmjn#z}Of2Tc)RCO;%_Rwl zan6&w4pQ;omRx`r&`K`qX|2z8(isrwIUwYoM!OG4VL5}}ig9YW_DVMbcdXhuP~}A4 zA`VSz=B*Bnn+EGE;Jn#Bpe0DHnc6Q%m9+Z9!Do~IONKu@V)3Kftl}0OP)#eEA^edh zoOj;4JztGLv~$xm&W?p5NX44p&*_k)foU4O8X|9A0PAd)Mm~S}PRgIJIFe_?6e8H!K$01~Zht*d>8>ufM)pk@6saS3D zH*P_O>2ym*^k1pN%Ah+^#h@ho=_o~EEhMBqG4RE^ASL?l(Ks&p&WGa*Jp|9JG!?`+ zej)t24n-U!@T(J>wo?gMF<4w!8H+DFOS`znjr} z_%82XqyyJf0i=rw$o}SF8#L&LP?4y^V%Sb{Lw0zavnG*>VD7j65-lImF0a@FGRo`U z`nRoe!QX$9QbF`?wFR`UfY#_8wD;2_>HeV>tcX!N7cIy8VQj|M69WX%Hy0)T6CI4O z1{k;=%jfMa+#Dj~hho19wb1Z0aIpig_o!ep@4R$Gti5ye40=QBwXg!~_B3EJe|ss2 zSbG_2O_24f+6N`B0}Fx$F!$82an5YTC;)MnFcU&C!SjV8Nk{L+)>DV1$6ND zQ7w9$hws;wN3&4kI1i&hWu{d_u82iMHl~_~%9xdWingY+`^uQrCGF#Bga0>R9&p?LwAB85Gf?pHG8?Rk0rLBHtDU zyxYcDMmQMAW)Em@&6{XdJs7K|4LcJ5IZraKhts&`U=~>`h08+Ul@b*u7HXPdB9R#E z>@1FMX`=%%~^7&ikID2^id?q=M6ED;irHc+gDW|U_VOH9lumy_??7AT=#a!!}S-{a#eLwh5a zs=gMQuZ7BMq48R%y%t(PVgKr4kAYmhHGMqedYJw$$VUo=C6SE#o* zK}z8+R|*F}8#0IN{HoyVobZ^X{X)j9O6#z#r3J3ZP2k6uwwpb~uDwmi)aE5?x?Nu8$Zs=+&EfH;Y3t{JvT;d*ZnyAN8PaUusxiZ3s zn#Xp=g*B)#Tfq`J%~9e`&S(;2OdrH9_WkU0#>V%}Ri8KimR;KC#y78)88h+TFy5H! zHL?4$`*(;z)+6DtM38SrtWwnBZmWi#`qb$Ohuf@`*6;ZA`sHsv8-+@5_%ge7{_s;N zM1GnmT|W8ocSr<%gYkhGxD)P;)6j?A)-LnGz?5!c)?7yORO$%ip$ztBq+BgLYp;P> zCOaIEm<39dIWYx3AqsJPFm2V~v)(-B?72;!H?E*(V5~1lgDP zNQ5^LHfXvz6TUZQbqY$P78yCn6CzN#Y$fQ|0l^jPRko(p?GEEm3gI~v3>BCzd$7??; z;)UMrFcNSPBE(|y>tIPm5!DylgkO`yz%{A#{U-aa{dI{4g6vgVM+sK%qVIO;Yf#4A z7a*CN(J&cw3~-@9N|cPwT6$qTL`N{D$Jy+Z_?0?7DkpQmAt zetj@761IA~19gn;gUO#?YVNYts_as#3&8f;i|Dtk&9a8E)8AQ$PIhIp+Vzm; z&YMPQCf@#>4fSHWZznO$GgjGQy|2 z^yf0=ok_UbD5>(0@zc-E##ZJ;wW$IX{QrM$%U5ZMZA9h;(lrh~V_ zSc06y7TdpR&MrrX5(*%|wiWR&S<_p~MDSdZl3UBpHzY~Fv?= zeZ(`!`X@J{tohO61~;Ru*@D^Yuhw528z%m}wLA@)m?OrVU{m>YAMP%;wOe+f!KVG` zzU-ohEt9Xr*F5c zRo6W*>PDk1UlVc;ZVuEncYR*EO-_Ac7Be1I>}B}F)>~E#2S%MmzLt%8&5_{^qs=0p zJD@=RwJ~rW$DaGiTa=U;`S%80UCeNDow}ugf!%!&KLo~{)oHjo@oY|&e}7aRK_F4> zd7#E!D~;GxB%MqA3&5`dv#Hv8bJK{u8_bG<=3hmbl#`wp$xJoyzC>7 z^RwSNIukoHp0mD{bs^OZGt&e{cAc;9X(fhWN)rR`~O zlm?E55i3uRRI%>RbqI~JL$_?sf0AoqB?%2XYHZ^ivk$(@Um zW3DZfnU5dq>?&U<05al>OS$Xd-8FyyAve`v_x9HuRA;9E4kWv%uWT<*PIJ`ZbfNRJCmYT#^i z>rDMc&}z1?C?=+0x*X-k6apzL1v7|Rd>Q2`IrvyyMVNWt*=s&bNzR&H`nJ%7Re~)vo*>B-meHyDv5 zs9yI!dl}&oon4|tLCiG!wW+fbno^ z=_;s=uGHVbrmxh!;f^X&sKo1uvDobDE%5=LtBp)PV;V+ah&E}mbD(}V>Kmj$3?oQ* z>_n0}5s|VqF>M1|4x-gE-r(Vidoj0QexT7ST&vDI%34AeN+5G`mNINpZG{#2{`HCuFK&KR#nv`?BO}*<&;P&9ru@F{H6Ve zhno(f{5Mv!>)#wS7Y$ZWmh=ufBnvx)p9O9|8IZe3ukWYwGQ9rAK1pa=R)CtRcUt5a zCuCl4lE><7Dj722)FE6HOy$T#;22syD+)+u%MiA{i=0^ufXD1Y*t`X@c^3BSerMwv z-^YwGvfvcVlL?lis@Pl>cSLW~=dwdBQeKy91TcIqtz_!HrP9*XgVezWR2c@HGeyh^-CVLs57W zzTuF_gB>&(*Xtk{VpcFq-_7`Hl)VpaUnY$n_9nH%16)GumHNW2B&T-!@eT8CZsoy9 zn(tIQ-N;&)&mV)(R_oVfq-0&Zo3ZplaKms8~u3h&hW(fS6V-0>h82R03Hf zLXFBlJEtT@WI|ES^fRASjLUj*JiY)jDPIs~1!)i2T%=)|^+45Bz483sBKw}(K2c+v zYjmrgz+glrDMpFsHk3xhWxUf=abo54jRvms<&MBOS~p^T@j*{0gd&2OUBt3PyB&p= zUe2Y|sUPrm=NHM@Tr=gPLax}!JL>wO`>cg6tn^k0m<-+WM=Lur)w$nPFHNBg(G6bn zS_UQB+U7Qad^6=^!~z(yE(-L&bTTdx4GVpX$s!7>Xf{-%f_}_98k9&1yq|wQC5s+f z%?>yohxr#yC6e0gHj#WYxsJ>Y1L-^8QBg=tHh*OKdLM0TUCK{WNk(L zMH%KI*7`qw*UH)~MXZ=eAn#~fc1I9_VUf+=*4gvo`~()q5EY@cLXZ9kOVt)g`-ZI6 zKtT)EHg~liC&x_fz~6ak4QM6t>+Uk=@8)E$Z1<0yT3C0ux!cWpKL$w?>TVquAE^A{ z_IOOXJv14TaNzvYRDIV}uDPr&yY=?Su{~(@{H%LPZ|*5>yTS52G(Rl!0@h8KG5d7! zgNVWvpOCyrik?%&r(jPtj~}&9=ZLEDJ-UL~Z>4)nK6pzzK@#Y3uQlDmSSi?@2G(tc z&8u(|SU=i?90oI93;fxvaF|m)=i7{*#duXZ@28{2skEXu>$DZ(IB!M5y_`UpIHBB& zUjLi5;TGxXo5Ijg%|aHz#J87!Mf=#ZQg%!?pX+(I>-7wC*C`Iv-%FHfQ9Yg1%O(8n zA##Q1@A0^F=Fh-k^U>G`xn-I;=J_++2He_EUELy*F`?cvQDd2=FHOH#6uJ9sG}W0Y znq=e zc9`%N%D_1KlCgl&a{Rk0Y}bLu3;HL-iz9~GP)mk#JL z!K{*Qd)GHh%}Qfd4}R-JtRQXBX}-Sj+3c8}QZK!Dal^#j{KFA*xrlK3+>f*1i$*ce znO_VN%E#{ZS4{oBhszz!1vGQX4!NmB*BQQPtVZX&CdR&2OA|Dobh+cK6Kyn0%g7{? zg1?spw!Y0$G{)q+r{swpP_#{1}Z{zh;lj%h1zvy5e>l*zZvX{9H|1)v2JjIOP-bV@&ESrQSNG8(CAv zulw6?RG{R+MT%v_X#ecJ_oR(9v^4=#q>(kvzGrLTJSIggE#By} z;~ZZanT3Pv0U9U0YL~+itOAp>hSOe({e#QV+1cNI`~J&h!*A$8!4c2dMQ>XuMLM%0 zNdn>;G11Vy`=YbgG`w@D=?}TZ{7&?^5C_~}`KT!=t};a;?YCd~#b&q9VOokkL;gv0 za7;*ml+kYXZeor}nvLytvN8ejRl5<+*g*|_(Ka;9FLSlJC@4z#*ih#$x0r!h5TabW z(L2TIr&g&%c-||~_^jsGk&zsTC&`+cc|Xj3L38^!eT5syXm!01@+dxi`dRzO8@NFVg`Cab^NPOSiu_Mkzdfn z(--*D=c$xztYV?^mq+0GvWVIB?a=zUkoqL3lH!E9;AW+x|2Q?u3FOr}Zu8R>cJN==L~Rnl*7U9gqh3=4>|72TAq z`m?WSoMW=(-RzJsvSVy_T+7gi2++R#_W8h?)mq!{@ygsPaKIl+V`ZrJ{FDSe`e4uE zT@dh<6w90OFv!r-IV@%soT_V2?NR*owoW!b)ax5}E#e4%KlCJlWGB5qdEwIE=^BQ_ zn`)Zaa^!L!OXD1GhPuUS(@?9BV@P0t( zrg!*F9pLz5UJ8|}t2z$5-_MwiG8}n8UX%zcG9!Qu@=^fJP?q-sSCpkshJK3^0P0c_l>fH{TkC#bgWL59?;j|80Mq>@@0i+NVm)EXstid*^_id*h30gLb$o&u1LZKSNpr6||;%XG#ecFr9~U5H%{* zOd1au!WNr6+99pE@>&7gm#wcEYw()mJR(k3%YdJi#6LGM-Q2cDCg5(Rv?>6+!RF`> zSAe^fb^N6snE2%$_EZEDzY!k8WXG6g|+Z{F^zRV>pC+Y3;^eG622H z@J%?Fj^_UZe0h^zpGdDAC}I7KTwn^L=n~qYTxRz)#i4GJ6bcY9t7P^=ye#@MVSGWI zxcl*!sykson`B0?KnO^PzAVCXq&rT4VxN$?Kn|!oYETnAqWE##aP^h#m1uUvm!&?z z{gLE*GkP_i|DVJvP*j-1U3Gxsr}A?o_cg6t>bgz0S%zvl5}Nbw3&PkS`*@P%7svY@ zRH5nbNRp8OGX96okM=w8{-I5PRQ{n^fH?o5Hh`Q$bqMSX61y93Sm-~fH7R{Xl*D&O zQ>X7532j4UivOVo)$=2eK5BumcA?Yo77WT%iK5BVpWv1$`W-Ty;F|pAX;O}HLco-; z^A`e5N8F4FT%AwMe)I5xMox=a`e6lHGJF|%j`1Jcqz9Uksh2}praF~PB z`~NB8K=t>Z(Lq~>MhL4tDA*I6O3n`?FaN_H0WUr{`vpw(16DO^kE#)ws!`;8Q22v2 z+kZ(o7#{t|kxcwiwC=9)}*hS6h%l9PIy_m zdva{_;yl&`GY0w;ju-#-HQ z(fw28P#kIxBm@k*TW7^moNG(473G*GATF%&m-mK|<@#jpY2YdsWEHs^o*m+qqY>TS zT%@ZX#CuFcPiJiDJXgYc5!-^7F#_2UX-^aQ4))VN_n(yNRqJ;<^3E(_nujwfE$gXq z5=#fCI?um;AXkjq9y0;nV$-&vq8C?jb~N*I>%+)U%-d^5sB2V84JziWFL&rC|9Uo^ zLh>+-t45Rx`jS=@isL)qRN9(Va;tKtWlt{SBnrEhTDuX5C$`mO*>&lQipwSEFD102 z4J+5}%pXSIah`T=MLNp8=Wfk1(E81&Ui!16`p;VFOhX}Xfj?nJ^Wx9+im$sZZREK0 zE$==kPox%Bi&oV!6F&A+C^?vkOYJP#SY;}1?iaRPigS$XCAH3=4)m;?ww=;{{>m}o z^sQx5ocN0?bLhQR^-VvQ-Y-V;63acG?;6+fD|mAGdC8nN`wOL^6RYV;xczP&LXA+x zl?VQfDDN7*klJ5$2SH}a2cm61vmtv$bw8v3*{Xjw_@6EMXOkfxS1|_&3?=h189m_g zynl53KU)X4BHaDD!LQTR0$6&3oIF3b4Rws{@t~7MtYZgStC%50yBQ z*YKRu@+@*im2zNLqrlnxd;#seUJd8GUJe9Z5X3-G0YL@?Z4ki3UA+bf3g7^Wg0C0B zBwlQ!W2&{O1M>T`c3R^-ZbA=Bi56sZw&f!s)q0F2luDqAkOLAbWdi<@Py#BPnb;I&A*g!WCFw{e#ckf8q!r7Z!|hgE_@cz z9D!)pCZc}%Le9Asm~nz!LEmlI%whUfoR|4hB8$Q%kgai72+Diq_)r9)|1-!9<=rmx z%mvV-5%QAE+p-co#VploM08SQW>pdXx+$9PUp_zs*As!{gDf;s{QF{j^7pRTA>jTrxryDmZHmb%TWbL zp6w|E0*g#BAmb!F#klcvikAR^A>HsuiS!;eTdS)Mjw?@m2AVWTwmW0$9t*nDATT6p zt1rQ4zRp@GA$Y`eZ$4(D7SL0qQOsD~>*IQe2AxPsAJhRAZyII#X-7f4@BQ zG}Pf_UHCjlv*wM@*fP>hO9>0o$eB4-rAj~sW>j%h_vGyY6AFRhQg;Mc#d+@IoxzCI zbL}B+7V-mYd=FHRKFXr6zvgD!@l=~v@Y6eevfaH+^;JbgpQh_7$lo3+D{-QWEE1*5 zK-05R&w3-{zdqN&iyX6~3Ro#~-$Y??@2jiTy*GBqpqhSs9rF%sZDp>4(4saHFzhOK zPUd6tlt0`~vTJzXFy8(m=T1Lfi&R(OIZEB8)kC zsVIUV@!R;}>~l0ujE%8MMSNBMTJ^Mp7iuLlD8+5foEw<_(w)t&x;Q!;NG`_7?rgQ9 zG*S77wIo~?-53E2`-B8th;x=t{8CVBCHwIy<=ehyKH|hJfUokLAFSz2ZQyg_nMu?k zP-yVg>aH`u6qDQYT!UN=recriaYSRq79oZaH+#aiG;GF(cC{_CW%gMD<*#1h=5ub& z6jLdcY=$PGQVvxiH@}M?E1P){D89Y?K4Kz6R6zwTyRucN~Lnt=qRkw!fALEHV{QGin>r(PYCM# z3i!m(aW%coalR<=CdAEmVyZWyQsRH@tpgtRm(}Y*1vWL354(T<+#Mz9Ca;)m=^BO2 zC4<#b?K->=@ok%^7FHmMEb^jMvTCP)%}K5@1oGcyE^>f&+pWI?Ro`eE#s<3zvq}I5 zklMkFo4*!r=@y-qayS!|nU<0UH~Qa$o`g)M5WK*lRN`+H@gxIMJN2jxHl&$jiUvM(~&R3{N)nBZQH3BeGf*fpZ9ZHhNE?WM!;e=8#3I=o3Y7P}@4H zJ7{G)6aQGfWxSFL^}6LN4ms^8Sap15JPW&JNkBFmm911#_)Kuf>2GzAEX3*bHtm3? zmik4k!S@?j(IT;W`?wuP#I zy^EJuE8vIp*UKZYgHpXyL4WeFd*?Exbf>xc+RJX4A|Sfopc=!wK;aZYb6wa;k%Wo) zLnA3g*@vvPT=fvsgQ?PKR-=rYGg?f_>R~UBce!R|j#&%&LZ6r&vxrrvdeARZdgur! z175Os21c92c@ri!jvq`bJ}q4`r>lc@|GH?V0_&Db!fs#*F0o-e?Lgpp!}uY02B@H z&f_WzuY+_P)|!6f4c{&0%BjaB%oUiFSm zoX5)|3L-FC!R&|YT513hSZ`o9QdXpaIaaz95_CZ>z+E?tx8--kpP5KW(6xFjB2(sk zzrPeHK$UR%lnddK_J4oK#>FG>Nem}_IRXvp>S`6!`?7mEXK)uq%+Sfag5l)4i+Ao8 z-H990MCK*cs947=O5*t258|vH1)OyMMrNww_rCUl?h;FsYCLnayE1pVaR8b`Nx`499`JdZS$p+>y4^?-XmEfkyBbPGjPk4`#0tRf zI6YNQz|Q%~Y!M|&%vh`=er?yzO*?{gv*k8q@b8_&*i>q@rDODdo{J`AgE7!k-L3VP zYUBYiB@4#yJwf$KPdRa)iIK(~G5=(nW_JlB3Yx@wkPa}6ShvzA3Q85KaCy?BSX)?U zWK3jraV8D5aAZkto%m%D#M;F+y~j;}AN19%GHuPTgBJJ%5Lwv;s`Frojbf&&1k{zL z*K0z;b!`%Zxw+kkiaO>OzgGEDIEbK<&&tW{lY9O_ppj)0f;7 zaWG(9n=fr9nVq}ioL-l#f{eA6SrBo8G_|&uHj5Q{QT}oT=2Uc>C13gsreGcIq1bB4 zV~;^GW5pzW264o8@@(@axEW}G>4#ar)i+*j?=^_SQ~?FGiu&7N@GPJr`^(kdaL3v? z3TJ!pKI19>KK2AT&4v{R&}m=rDNE)HesX~9jg};zy9yR`clzOZcRzzl6x0rP6||S& zWAKdbg#SPU8T>bVgBg)$oQ$h1FMZ@w|q zOT^$@q?_I0hEp#bG41mbGjstNu`L2ytcgDl$e1xV927%MQs+o*snaPV5j#EZL|v?( z22ZM-rH`hPYUTF&3KY}jYd3Hr$s#aq>Y-M5|kM!!3_xfr6z>z>^uyWpDcVd)qVN?Ut)ku!w zOy~UFjm)slEMMP?&#XZ{tRV^b#N({bn9vq)jN-s-B5MO9TF#wOS}esp>jfj4(VY<( zt4^~bCm_0eIVwvP&FZJCpERj!JRj6&Le1O?Q_(L|O^kJ6vi868US3UM;J)0zu27Q_ zp=EgkHLEvSAI`2CO%yTJX7-xEpdPHy4$n-Tv$&xW3 z=QxV&vP@mSgw~)gF50s;-Vow5Ocv|E(_&4$+Ga})PwBDeFvrexRr)Wsa9YzgjM!qVpm@YwceVoR z!ILgbnxEhUs9&ku)}Cxz7YsfYp173gKk$`CyQ;5@WJK#cO`z^*`r50}F5P|jX(ku3 zbE*=tlWLpEF5qa!gXZh7cfCB?s)2v3;zP&#e8j^B8L1*MeOqBQ~jZgmW_~EuK z1>?5)&XPKJbt>EDrrjmXGCGHL&bIhR9?mVoveT{;X2qQuI};s}N18ilFFe0G6?ORw zl;*#~>GjU9Mn@Q{te2-KxP8Bivq9-qe%+^&TZuwuk?cPtp)W&7*%y#gc@vL_>C^rm zjk>b>S;4U&+a=7B#H3ux4#GT<#r~eud5!a=xQ~a!+UOXUEN?QAQab2pOX6kM@WPrq z1&vqnRMa~JjlHq%Dq>UCNnd77Z6pUbZ{2%r8syk8c zbn8LRip87kPU}PwpSk_lZ-MceSSxDBx+bZ=M7k5wv^*Rcf?X1rFmj%ql9h3Fe(}~D znvR?pXG&Sbxpv2D8EwtZy3Ag>*NcGN>Scg1vF1-^OR==XWj8w_gn1t>+GkR9CygDV)qH_RXne**lo`oR!t5s1=&*f z3G=mDd9&485wlgi>)qPJ1qkP1N_5I)!2R{UX9FnO%wz+!hWCFOQ6TVcLkN5ksq3@5 zf-5l!?9eb)ZU}a$27-u>_1@vkkSa^Eg$hT)Q?o@uP2;s%sM#tfXhF0G_v0?8=~0## zXoS*No@JeMQmv*~vqJM_RgZMYvjcibu_722pK`i(wEFnF|LsoCIQ${;)cBj+bM;5B z)38c774JU0(~7XsBo=edWs_ZH(CVzAO<}BM`P$A{JN9;_!(191Kxl(6yV+4Ztj!#L zNEB0-Hf)OAhan-tG*g%2EWJqm$vZ0GuwmzpBAm20P1(f6i5wO@hYJ*-hIb2KT;~l+ zf!8-B7PLTaeHYZZ z6J9aQ{WY?Svi_82L%)A1C1&Z371^*hom9XT|6V^8aGVQ@sn?V7L6e`dxZ33=ls#n(vQ{Nhr zNo&@kV=?J-ALKy%}w#KFiwB#XSb5*C*BO z>q8yrpgbab`mvf*XDg_re~1ueQJ*M1G}y7pftPx3SKxJN)f z>NWX&&fcOn*Z%ipVr0iXSpib>*rznoJBO@*KGLYCjP~YumcmGJUv$=9)&kQus`J@$ zcnO9yKQ4}Ec{86Z^80!|Srl%>ey6(2LKst8C}5BecNVf#|BIn~RDjcb&lY5$<3ofO z0t{z}&d1Lw;-EnXzD4ey8qvl8Ghb-(g3M%3X3@OBWaDNLgzPsY{04(X0R1qsbpo&G z_AGy)*{QJXbBMEk@3d`{e3KW#b=lRoXvUUAJGqQPXq|?J;g|pe$a82lDLUmQGd64_ z3xvLV3{PnmI#&KUU5t`uekJjYT}0$%vNDIO$IRNS#d6pNb>(?HVxRkV_4T-Y83%q< zq`oB>nHvcjS)QZjyc7w`z32#lEhp8OCExJo7#@yja>Bg$Qkt>UKgu7D@aFt?JG)94 zmvUnexVi78#^FSM=C-h^LC1M1m2G@r9h(Ba@VLXk8A-3FtdQa;ejMvD98MM5Ujt_* zBeiE~d`k=`)=YaqX?-`}}K4sVoxJiYZ_iz&% z3736ed?JZoF68ikfUV%1X4V56ERGzD!&27H+8`qh>q!n5^pVSz9~Q zTRukHBO+T@Dw(v?fYiSNj0#K@$!6wv@a`(;MtTzB^q z!#}d&O*$YhzSK(R*6J{hj(sSu%Y-ETW>|Z4r(270EpTj5&hc7KpmdS*GPI0#!8WdQ z&?+{IojAOVRx8=*LJv8GMY9@EjMyeB5CnM_`Mo>ddWhBmRys)2P4r5@`cjK{mu z?>QvDm8AQV-^ssydB5c*-S=p4T{f=0F@Jh_#Fx?hQMqbyb5hF72Pl7@VHRv5Y^;l> z;OF$(j4$Sm3F%^$qeD&#iD%_A`*}~kxbJHt&EfKr9D_fzV5?tz%$ur4#sqQqMc$(m zy7sATD7Qc7N;76Sb^KJ*yG}a(n2B8R=<&sXirkH6Nr;9_iteRqTxH^pD*w8z@^SPm z__n-!3Y`q@%J+ig;yc~riiY9Bkdp6hY9*c47B|J0W(r=VI;CyyOa=bw-b=CSZmI+F z%%)becXq8Ob%(Z`)jv8KUlmijRbJ@q9lm&NQ>2ZO>e&444@!FrjLO)qc1b1phqz^i zSsj&_ckOQ>S6sz@j7?Gh+doKuAi;V96N&8Oe5yhHrCc)UmKC*gX6Br~1<1=74-f0d z?S~FYqMD-5%RaN*$fJ&Q+|--Oyy3xoo#{2vx_A8WYT0Tv@^qy`@A5DDpNr2IHG{TB z@vOfEACy9K*v$9s@eyqmwnOCHe!uNj$6$Rf{%PC=iZ@6IhMiB%YdP#`x$i zIc;cO7Z(wbS>r)v0qQkuxuAJs*@G73|;BAsG%I_^4wS z?B3V=DgL=v7nvCLQNyk~S;I#xzqKfS+c108Tite`-n)6OsP=HKpMV%~hk_(x{GcQ< zG4G@CLtcH9Bpt83_bn2iaO<*3c} z+U{^hPr3`bmNIwQ?&!vhx(gPSmPIU0pMF@}Lm%Po^a{)IYh)1f-W(B=o~RcpLwvk~ zLxVaK$tZ&DDvP!$%qUWD9)LS0hVR!qkW?7YhF2a?o0Z`3R|Zw!elz}u+Za>Vp^joV z5|;E4vY0f*la%vRr-s#F+-GhKhS8;n_7vL7zil@R5`MT=J=NPr_mJml?DQKSMeNkEhaw8zzYlp7h+GfX z8q$7FJ`y4pq(0dcf6pJvDC#1?%fwA*ol4j{gKLba-(hPEsMWBwr{BtgS&+WUL(xSa zkusqQ*X2+kj)S-UTxanEI^4lGoog|XD7$SKQMsG*!E1hB(EWt(K^KX7D4_`0dZUc} ze(s@wVoOYP3-avexQ_<*S+$PH#DD@mqL*N+$=mrW*-C^s^316($O%G~6h(VT;N?M9 zMpQ;mDG|km5p>b4vqE$~84sw)R#Zm`Me>9-x*uA51x3@^Yea+DZt!yFuy+B-_6lSJ zFCkxllmvyhf;xCtfXWcUK`{Uta8M4ichaNM=Cz0B;M#0~o<(x)0}NOJQo`gpdqdz{ z^VN!uq=dy#OyMovlVVqnXsiEv^BzcCIHLcH&31ebeRR)X9|FXizia4zUbjA=Mr5Q( z-|D_8J&tldT|%gp;tD9@bZn5v!86|_V0Ua#R+@mRjwge6eySkUF0EJ$qRNdo!4PWx z)+h$ioZ6cJI8=bcf!pUbazY!8(Y8BaUQ^sW%2^1VnLTrdSR+7H|I!dTp>e4MH;!;4 z1vi#(Lkyjs;{yQ+1o*0+IQRmS7H~B8QiB`dAwE;ChQAO~Y{$n@{Pu%M$&C=m6_xs= zpk4O-46FuuOzTvqf0Q0Sc$HdL$sK9|+}=g>g~H5O9E~@{8qv#mGIzkNaKNbQI5Jex za$Ev#o{y2 zNY6NEs}{FZKR?gsS;^^`F3_Hy(}GSXrFw>4D?8aM>03>`O8sF6d%ke-^Mv{&(zOmXF7 zun?7Ls+*XQgh=wXbH|23H#wvcd8ijV652JBjI~Y|w|00PS@)yONgKcTU^p@vX#57)d zI5g!Q+_`x(XeRM>{J!C_>U7cWQs(h>*MR_cMk`J35OO3*vQ(j8yna6#{rMqcmZR+R zU4*po0GU*$+LzEjm7U-DgFfBc*BKdY?@~>v46e*u`65+DHCT@L`ua-VS-~_9u8Z^| zh)Z?J&r8{jt9Ntn%R@z7yz9iM2$@~H>Qr>K?b^krXJ$<41_fDaja#EeOlD&c6G#;% z812K#QOT3I?-W?_GVUKbI`RbUsM}o+^?&AHw>7?dMEuy``1xA|-hqd2ORkOk4J-SZ zE3TDXVX06hWlI+6_;*tIDXE2vZGGCs4UDXEW*qhF3T*TZfh3nFrE7I67|n z9PBCHo_Em8>qIH=@5djHXx`K~=4FQ6suC7!i0`;GcuD2$#L&#hlpU6|^tij*Wl zcL;b)q=>ItY0P!?)uB6HTGC4Gw94b@^fK2~3m%rg4+~;C(|9fp3vBcB%!`wt*L*Uz z52g&{;kzUKJa$?EC|YF2gjelamNzs^uO4co^1SdyZuUla$!1A<)`yqO$CfGCM2=W| z8T>9$Vc55k-`M>w(VS6*DJH1?Mt^(RC5iYPRhYI){0PmLz)u0K3`d8~!S4qr0tsRk z-aO>5-?wL7NtDTm$Dg1E*yD4E$j6_=0BD2*NdPVZxP1%2AzJT8mIE5>_2#Cix8a+= zyb;(l!%$EGNk$FGkHK)#5Kc;pvh{srVZjbQ))ADZ=yy6M@+BJYTSqh!BvklEO2J8d zI5~y5cx?5O_@O`M*jwj#B=frF#f|MY#CP6aCJD9ITf0S;;$mr%0HJyv>vuE9Ct z?OtR4E}~KAD=!&}jjl-!-((b-*QmXMnk`cBI66Gu_%AL8kI$(&RdvTzW-VR`77S0m z|NAG7;x|`e|fNtROp!9b||X?n`8UCn+_Y29uHF^_xH3Hmx(DEq9gA*<2MezbTHSrFj$Wy z)ifN_N7U4-^s`<{Nz4pxNOJ$8V{{#6J}iy7YgNO&>YzUH+Q<(QFwHL~{Arn>wW@)$ z{WbK=iM!!b1w?yj7`g*JY2=WQ)aMDA=470fPx+%Zv*6)kB3MLqS96miSVB0|xVUg% z>Xb(ALRPGC@`PEyG^Udz27iZ9nH9EX&<7uw{55HMNAKI@to25Mf<<>W z3NKhD=^XDLP5qCC!s(tBj8&c$e{)ofU(N48C$0s(SqH)vyvc{)|1pye03-ms;XOVK zB(;eHFaign0F=Uk1OQ;ve2n3y_3_3Tiv^FU_Y~PzM9?0WsMjg*8%1U#DBC>^0JvO- z3KU5Sid>}uKnPwo{6};Hl0LzIL|@<~H7drvCDrti1#voff^>F925pR%E3Vd`{Z)J7 zS!+n^7up(63rJ}rPYwFKmulD!RNdZITyeoGICxjfx1gMAO=D@HDNHs(_xGi1%v!6b zUhEF^{-8oq<{VObFjip}8?2Ea9-f);Dzn_&&C)AH>(BWJdhPYr$lvbz4p`e#4Qs80 z^xAhb%j&7`4SMF+tRY0QQnANkkpiZxvm|LvG$Fd>v{H6AeATxyv9lNYCw=Yt9vQa! zFRn-}KUTl3@`$TkS-2v4gR_{FGDm-D8j}_M{GzZRP^;*|l*h!yXL4p-Wjp6GNHN=sOkOa<&_elow(>d zro1$+1-d<~;G>z)Ob7Fcz~01iQp#7ZAy`3eq5Nk3OYnYXp8@l`4qq^jH_>7INZCGFQRX@{*$V+XD-oamBsOz$P$1^EUIhAsH^2T_+l zB0nM)&K8cKtU=@t9E7Kcgs99og3<%cd4?gFnPc&#LFG~Lf3W8=Vwa-Da;SZJh6NiR($p6-q8O{l+*;A1H7Urt(}5ls=lw=*gXnzSnR zO35gZ*$q51bq!IBr1E*q5f~rCkXOg^N#CpxR#PKWHu(}`g&}O(dLLf{8g#-~a}#Xw zM@mhLOq}Z|Z^z~V8nA3)BvkgF(B5QX)b49?N!qB&dLlp@Q|y7O#V-e|uMjYGWe^DI zwKd{CGPyk0Fl?utWR;_ida?VM7HnMC5Jk=*ca5bV9fVrrEy_@mxh^!#_00zSX}e2l zaieHs$>mH!>OJLn=4!86J!yF6Krisr;k4Xy9L=lNdspM>&kCrOcbTta%8jkn67nK` zD~abzxn}*y_K0cQvRq7(Xu#N>PrH{H;EB5C;Cz-J^Ga-|->hvM!l=w6 zKe|RLx%m3R_0vU6ep%(-$3v#w^P6ELpVylFgGo|ne0Zh z-Ub_7S;BsZAqXIn2WCJ0b(IV{hyuKW!~?Jkzret+VViIu0zeWR{8#sS&|980qz6t9@#rN6g`p z7bo9LtxSlAk*=?YQIhLDYeglq29TbNH_Q*;?wpQ1szJtR%jdQ7A{+vTV}0B)*SP=&SU)W`3b6!~7iz z6Wi7G=X>Le2^D=abp|;sj@QYQSO7bJqd3@pqE&OLgE?}(rI1rpiaqu8tT5jT_e4kIjG}YfA@D+JYf#7fP77@AcGb+Z1$2dfF z2oN?@Byj^pwBT=5B9sU{V*#ib+PDz5JuyIBQ6Th0`lDhjVL;e);@%+!Y2$``bC81I z5FNauM(8035jSX}j6ua9q@JXBdP#*V@Y6%wh;BLZ-Cn>5j%9RUD-LK2ZU|@#3D6dO z!JsV&V|dZ$AfPSO#X*CG!W#@OqJfLVfhZ6z!h(w^frtk#3IZY&1JG7yPaW~eyeK2P zomjz1+zRAHS7^hQ{OL#tPU5a85a|L@JY3`mM5nKSs0l7=0HW&WKr{sxy$2$$|5n*` zfHkpg>qzeeLJeI+qz46oC?FjvK_UVIQbd}xAVqqwiXul4M2gZwN2(wtfLK8w6hS13 z1q?-cM|hk2&OPtk^E~f+XFg`;Uu*sU+G}R-$%H-0mqU`%VJ2xnN<1Xh0MariAhjNn zEC6Yk0gx^qW|9OX%Q)rhd1u{wmm(QzVYw)g04s@RIYZ9fdEUhKcM<_Owo_LvoZ{}u zXY-40bk@pWWzFUVAWHtK2`5=a`IzqWDA?5=K4n1w>Kp*z0pQ{xU+IXwe(hK#q1h@tj{M=RSdVR3u{iB*^!%0bQ_Hy-0yWN!!$b;+=3TQzq@=`(IBLET6zG)HA7C(jke zx$`B~V_Yax8&ervL^=C)CA06CDf3}5r_m&j!me@sxVpa$q%*ikarT=_W>=aiTVpYe zKvC2+ZV*@Zw}JZ%F5;a1D9P*`GvzZ_OaPiR585~%SNH3HL>&H3S{GT@faE7yglS1d zD}U0L$o4AaK)J}-lHaB^g3w10@@z>RI{oQYGa>BZknAUYw+yesdc%wp3qxWCt$s;E zvRCqdH_f+hB%x)lRO@AvE>o}6C? z(|f-^2SE#X!75PN0;SZQ!62Zl2Fm{xWI4<6xzxe{aNYcfPoR1@Es?v^21$RySifgz zNrAu!+$e){V$qtkxPpW`C-+C;9{w?TrvYNkLJ73+|~($ zMI1PY1+{3N&#k)fTZvTKSMsgIuiM<(<7*`UZ1S#vqDw+O9#1b{<|PnK2jn6^2IK7?nIk~k0JN1rD;0Uz5YUs4@MVx>Tf#sDHoiZ1x>w zHyQ39k5@#~dKR)w=nK@RBVDEZ2h3+5R}O1fV`Ca;nM&M?;1jyT1NIWw>b*sEX==PV zLvbaCk+no-BO2j3B5yKgU|gS`pTXeLYOHc}cu1y0BCH*~gugEsft{ma;NQFaZSSky`ul(g$nQ9Z6)yco?3W zU%Xh(5@lq!l%3gbkCYF?`Cr|MUg+VczL})Lu)*%ju_rctg2(8cDJCSHu5u zlci_0WAk5G017|#j1NeXn6Iq0Se&`nl=+W@$pfJ*>`UQWOi5u`rcKwc~DG>Ig4BSkpeqZzJQZ{J{#0(1uJ>9Ea)+ zOk-xRy}kS$9PTPSChmm-4eM<;rsG_A9vkUm`45)PxhK|M(V@8RQ&mViYl?7w;(sTN z??6fxq3Y4%R#;f&aFY3~wv>NVRvvItf&L~l-}D))=Ngv3c2A@+L>hPbaF^5t6Wwe9?HiS6H`*}?{?MR)QUb=NBW zI|n`=-N}EUv!-+V_V?Rd+=JXQvf#sXHb!=QBTltn6mrwlz ziqN}iT=EQ|($gnCSiUo@seN}0G1x7*W7z{)t3B}!hW$Pbb2~c?6X0B`4R6-H*LDLz zD|KD_)xfv&iIHsS>?i#Kbzcn-95v&A1jI7sEYS1rAjPkJpN+ovq{L8@VT9J+*hk3h zDeLudTG%-4o%tB^4ULi=h_u8kC8n^Hwew!S8bp28U5M)T(7}7Ypc|Nq(np;&`Cb$q zw_51uC1;Og%7LTevsc+QrIDwPjz4__*Wp~kHnSo}Xo+Z3p~&+(VGu#i^&^&M!?eT; zz@Y&g`yA^>K3oJ26mY1#2)poFt<*`#=$eqiQ&y{S+MMq(uUaRw%4)jZFHJO=TuQy2 zSpKHH6}NXgO~mO=JKQhE3oJ&U0fhVR(r`08ID zMFTTBDR3cF59q*DavU)XOc)A5!Gxg*m@rJC^I!`#0uzS!p+?bxYKL>qNHAfT#|9>; zRRFMq0w8t>4n2wh5Dq;uhv3ko3V`~dCj>mVY1(8@Tn3*jrMj3rv+xr`O-594akB4h$ zafh{N4V>FD*`$Ym-zT$aO#imh?m^s2VWeVaI#^4497V_zgeuhR;tiu|ybc1BA4iR= z3ktgu*HdWe;g&zYh(yz%4gxbDM-AqU(!;m*B;HMM>6Qp>vQb3^qXwX*LYpvvGzSop zVZq=oS8cLM7abU;2kn^?(STOJq+(v)S&M!wVw-2n25v%lzGz|F$z&1RgV%ZR&+BM~7a~p3IVZ5FG&6C7 zGMLy%(r;w#*M9lekfu-d4_uI1Cv!v|_TMvd(dSCKP<*j_itS?tIs4W8^U=GCyf0Jx zdE5i;hw&{|Twc4?mqQkA_29GXSqHYO1o!=!;In=H@UKYbdA_dQlQ}fc1WkNZbElD}EBg6g zk)}7=hF|%&e+|Z_THh(^TZfA(ZF)6%KCxJcLp{@AH8 z6*a>Fz3ktQnrkZ=^lkc!N|A0B3?bV2E~N&iKa6NG^&BqpQjm9VZkI+^Ck?wFT}Q6E z-pmM1Eqp5XNqL7rRb=-h_Q||d+DV0d1}COx)dQI#2b?#UzS)Vqzp%{trb82V@V_fbzv{vI!j@GVnb?{`A^XZl3&UzvbM#Q>WLKb30r- zzJFCc==?D7He^4w_Q|8oz3AE}d7FDMM=iM@+b+HFUX!bG$s?2-hP}rrH>7&Aj_g|W zP8``)bo>L-m&w*(kl3aN|RcArbeO@c+%j9*F+VJsB%< zuH!15SH8%}Xr9fGA5TPdJGPl4zCerA*_JE6jfy?4-n&)Sy~^E@-xw9YB6Vwyn>lWu zZvJaHs$Ok8IN zI(4$tw&H6@i$*5k%gT>;dZR>RnXeH-yYu+ItF`$*tchA$ZQ$&>u{C+6i(xCIiH^@z zy|vlsL+9hl7$rKs6AG=Eq?#x#e1SMUU$gqp&W`7FUa@<^z(SDZ!EJ&uD}_SL*smJ zJk+}#{O|?!2h*;2XvEabWCY#v+e=;Wt$x~AjYN}+6VV}xXEY=z=VG^gXH6_6-rbdD zqY<(FqzB}ct=@DoTRE47LG$y>>*5u>&K6j8hY>{U8^UD>C)UpX8$xv_twtmq&nO3& z0{MPV_sui9YzWmHE*6WcR`PKw9o2)d-ckJ+xHswpoOd)+EjjchkGsc0gr|G+<08Eb z4`!jzm+9Ufch0)LTy}5NW!p<%OPUM6?rl(|jN+#>YUKSBu53n+6I#>Q!9TUFn!Az%yiMrmzNL1w?q-XQNF7~=f4mt~7}h$I)g7FA>UP-W zLR)sMOWRmgqI4d^994kMF+m-+?e>#sxuuq zQLc`$w=8M6&c&e>$==jbPq2t!6TnXOY#1`TEb7HFi5hCYLL4mtzz19~6e;w)y0&_+ z5TAoJ<5N$IU*mCL)QneIoZH^8UoIjj;Uh9HHW5rRFBFdaXt=J?_J+mHtt}+w6(Qbf z+VZ9qchYuyi@tH&>niTmCWnVlTqj0lI{Hrkd^@nIe!F}#RxGmZsK;a6^jugh?(*cf z7$y4HzBjv0T{NdX!UOd)Y3F4eYA%nr=G8>O@L`~<(+BnqV{r!GJK+wB_9gUu=1=)t zs$n#Gm<+iaj`k9K($xVqEH%C&G_8H)C)Tkz3etdK7g2eACT`Gw=y z2V+zUY{5ZEMb#$}K}V$DUx0SPw0S0tbH4^??xAGaX_n6fJw)i^?$3d;Uz5+nwGYYL zst!vwT`K}tPk1mkZKxh+qVU<_aeyY`wG}>adC93;ia?M0?40QmW-rNu(xfVDnNnN{ zdQ%{B;w}D^LR)0x*()}}Oh;=2#e3}EtEd{DVx2!-VhAn)Bjn9^#H+$pa2hQGb9Z0? z>3Bw3`WWFWj~~)*B;gr3XfLFfa3{t+mNMyhav2)?jXc5_tC1{=-aBWNYg;5u=@}H9 zbdtXQ8@b3uB>v0l-XvA!q71Q&rVOyU)YlIQp}_2+cQA&LytE*99l-6x)2`5Q!@SR_UG0=JK>52p^!@klFsRV>qroK0~xJ>p_qlCqVc5h!Sy z(CLOJi^6qpB=?8ypp`MmFzq^C8*{}lBmPs8{U~1TZ}Q8upjn%e1!{g|j@lCes!21& zFio}?d_FIuu|FS`=W8h9_uh>rQVWZp zS)_{@T>Zw}C455;+eEUN?OhS=60Wu#nxH`yqwGw7>mD4I@RlZd%&x6p={hIYhFgdo zT%C59^=xjq{)OfyQ*y4is|+>mr4sKG+{D7!HD(!JV(ILfOeKz3F}u-r(M1b-wx4Vb zrzbYgZuG$vYCEyR+Z1Bd{DwL01zs`TC45o}q%JakA>FZ_A!fDYW4WH|^+-_i<{r05 z&J-+)#5CK>AoGxjDkIbGhd^&HO6ZWx%gCGcMp5qAVglZr>qk-6LWy8pcQs#=E1sgn zPRVOM+)A+RW)jQme>8@9WY}Fh`1@lIzFwt zui()ga@o1WH8zg1(z!$;5>qg;(WkdJClc-AS{i8xd~OGTkr6bE zSGV(Xb5gYKac`H4yt=J$uKSZkU7a?hdGC6o{%?$v;SD|+4;nB(N9NDIPQo03T?C6P zgXOs4Mdxf%q@`qoRU{ll)`&ztDj_#@H&~sT66=0p zRadT%)j0xo^|mo@8=S{nhhyfzPCqr0v9Zwtb&;l9z?zTsL^I~?=)5(2g_K)4?r(r@ zc5@GiiKe>g+2^$~(H)x*$h-vQn{CuUmSus-f-1!wwGg(wTfFo7#ru%+oHI*Q4`lgY*^c z3+a#Q1*n?5HzI?X_uB7>bI@bRp14Tjw0PIF_csaSLJaNLyu?C0iK}WHsl;i1#zdJ5+T-#Bop4j6 zFE>n>>FU;=n8UsJ_nT}q@}c1wh(yw=MXUys9sg0L?A&yhG5XkV{dF#}8u0dDZJt8X zTtX~vYH=J1B;F}7nj@hhu?T*Bf-E~7Tj+KcB9Rz!{lrvw{Yq{yjkmhhHs;p3MABvg zeawBA5Ue6`)N|pRIvrQ{lvFIPc$s<``mUui>?IwD?oPqXDRlW?bU#tpq{$GJ$!j$x zLc1%qw6&kFejgp=q)6cL5@7xo4rG1N}1&nQaZBciZ_thpaF=KnWMqu5V4gdbArmvZTTw z7Z}9n?aD;a;pLt>#J$&2sdGzq%isF830;hSt{9R;elPY}HG6+DQ12O)8e#MqxFxPT zHVJkJ4|LPIb-qU!n7n7FGesU`)|}JXeQ-{{`?j_@VyDqNtXYFdrNO{q8TPShQ{Wi% zfdZieyv6%GZEL`~w9{BMpiN;**jS)c5RDuki!q^(O@1D>#2)2Hwe2nPnjofdZymI6isM)mg3B~w0n9J|4Oa*T+TCH;lhv1S-G7{A6s~5 zImCFvt)-H2yakjB=guVKUtFSa=x;Ud=yJ%EwL1=F|FOaO2D7x+Xl??dshgU(8H*ET zqje)u5D=1ke-=JXi zX+6=E#`)7|K|w4|q=x$X8$$DQI`%$%lRS6;RO)O>M#18i}M3D~-q|fTNwk7i}BW2C``1wN)-|8zu<%Z{8rB zgIZ*`mO^~JL)Q6q*e2Vy)$;i=Lq3*sH(Q+967K7x{=teG(mt{=HSM zQx09FwhE2xRytVnA7Xj%X62Ih86hExwrBb=qM4Daj`a~#teEiR7J;*!+wxh_r2Z_j zyj8?wRsDS}`VHb_C`(spa)5`uKz|CJDS4DM8|LAJ-R@`7}C-h)UY&JjJbV)EMivqBcPhi+MyJSnD&2d!|$3q69v4gAGSyFN5lB*`IAtpQ~p1X#sX-pYI zr0=(IWjbPlY1ib_U7}Kw8#vHN;FzRxkK*?Losph47?A=k*!{6N@0ZChQa$gIVNpG4E883F#Bm+v{l5=9OalQ z;wf}MCueruEK3z}W8%yNN3=|H+jFDa>`T-$a&G>RcH$njaSM^L-)`s)dl=5inQtq4 zwdvSal$>&eUJJ`s^v9d+PvqH?ae{?(F{id3qF$#FnZni16`bUW$zvVLXGq2^oUuqE z96I$)sa%#;DGqu>Zsnz1qyY5oEuF4-o^Uk-9|{n0gU5C9?uEvGXYM6#OTsDbSCa4-3 zo(5`H+2#itZ#?Zn^txn-P@a%aahuyUIlNap@jD1Oz~z& zh;@|C*0#U_Ln5ga4{looA8XE=Iu4toZ(tEf)Z6X7` zi@t7WuwaM{lQ?uc4YwyxWcb))!+0Cy3Vt_DcTZj?WKJj*Z`{F#IXVkAcpEM7UEJ** zZkIoVzQbyIzi+bP|AU9sOcqxEXOrFf2Y!nUQ)!SZ+4wfxo;{IqarXvz69hcoF56oc z>f7Z9G#3nyP;gLkKp+r0$lW3mdTbIRTgwK4ToZyoz~3KBVbmdXyXNH}b5d3wA$!fu z*H6aH%h_8_1(2k;jKs2fTn(PN?;#bLx&THwQF6#U$na|uf z+LRdrxhD#N@c&U41X37P0m}bXGGiSx4Q&lGjlY)Fw`%b|9hAia%7Xt#CZ(gl&V<&{ zGC^zqHBV;=-qH@}y}-)*A9<+6ex1icUq{F2uW3rg)Rbv~oEoem|B)u^Z_@aAW9&Sf z0-QX4b)F!4Hjhq$G)S;Q|05mo_jGc0c5Ys7es*@Un4rHFv#LK#hEqZyUzi{eaI*hc z3ZpcR|MxM;IeK4na{PrfH0l8+1qi-_mE{lNVF$%a{2}$kIQacS%l}A0TAC38sg{L6 zK+AtDpjpX3v^Si7p&Y9)Q1Avr!mH@7hnu1JyYg^sTyyYq_=UR3aqa0e7z!ga5C|BO ze=LPj3YY(__VT;o;N{}v`wO|iu=^$t5OIO^@EZE}QW$mK=65;9!O`8p#mVk(3Q#+B p-kkgZTyLC|e<|Spzccvz`6`_LLrx7UJv_fGkZRCP<*SF*e*wz&z{dap diff --git a/venv/share/python-wheels/ipaddr-2.2.0-py2.py3-none-any.whl b/venv/share/python-wheels/ipaddr-2.2.0-py2.py3-none-any.whl deleted file mode 100644 index 51651f3f89cd5c05147ace01413ab35a1df993c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19706 zcmaI6Q>-vtuq3)|+qP}nwr$(CZR6XvZQHhOYyQc7I+L9H(8)?abSkM{)k$?LNCShQ z0000$0K}CZD6MS+&@~_e0GQwd01*9`wRA8vF>#`0qGO_Cpfj;_cA>SjGqa}`R8^6X zS5l^P@o+KCl#M4AcM7}vpuTMPJ|B>3te>B`mUnB~uwm6^&g;OKs5DV^^Ce+#O3FE$ zfcCa$gTaS=C(=M4U@$N?915V-*8=jv`2qP#e~+YTG+*saKvW#5o_zN>iao}scW<4m z()ayG=Kr}b#k$aPd#P|?qvX}I6q{8|wRK_Jx?K8d<;3OtHS=+7>-NXsnX_#^b=6f> zu~>C~VxI5+Qkr#qI_c758wcX|r?q8xzv{BF?TM{Z=28k? z$NmqWWsPbJMoZQP-EH=5MMl;Nx6=zGL;A&f8j}T@!Q9JiZ~OkZCK}&k0pi zoIJCK^&i}Z<@Iq#>;-jk)70oq417`FToFQ=eO^^`>HvD;R?#E!0ty=?eU=Z9JNNBlDW4E=e$Eqj%ebm-ZA=tZMSASvuRXDs}d)3;VfE zt*yQ2g)Xy6JXxLBnr0s1Rk+Q+V8>pR)Dd#iW+ZGymvKAeyPfil>&f$P58E*~W9CWV zI14G=DeWSDfBZ)0rE1%BKTebMU5p&tsD|#{|nn;r#f%{h?4VF(`2(M$HJ+9 zqwa^NKOUCjcCuP6ZS5mSOxv3ys-m-vQHejJgRdJq8U4CGleId9q}YAE+CI)~qL-SQ4t;N zuB{Y533m_NyLYsy_gRyNt}B$Ju5@kevPorj=gIf`LJSvPcEg0h5%OBEZuVYG(s`cE z-K#qztM4xHLxFFr9&4&tQf^SPXvHm-$QCoQO#-opvb2@6`?5eJYqx$=Hb`>L0 zKg`W@T91~pGMQR^MUAp=>@eh)bU|rZsTr>w@GKBhj}jYi6lY-G8B-h3j>_DweQ;qj zG>x56BVR&5R&p!1VKdIxrR|g2WO4fu>}Cw9VSW+JJv*y)Zm5R)#9phOp(u;twsw)3 z!GdIown9GZDyh-Uv@ZqG@3?2jOxY^Q49|>|N1=_7a=ADUES%Y@Bxq@Z4RP8S3&3Z z=i0oxAU2yQk1d-N*}SYReX_-1)nExG3VW|*v=3dKa35aGwGxovzn~-hiIakj{#nek z^t>J1U2Op@a8sUjO=Q!))O-H6d(tXl57r&jhP0rF*axg#f*EF;21JY`YjMKZX1HuO zUP!V@)IxsCZ826uw(&6tv$!Uv`}jqmXXEOwv#;j#La^7>*euTZX%KMk(ETp)lX(=p ztDql_y1jbpF_IBmYx>r^67{`VYQo1p@Z5l4XbqBSEPX>$!Qf{kdvV?U1j0rf7ZQ|G-fiCaqO>Mh61`g}14)#!Lj9~%}0pmV0U zNZxg8pjX4SHy{QRy8?CBP7&ftG7+S*QIb%Q{h8tYY?Z{A-mb&KrhU2s=dvD6WD?hG zfy6p653#p6Pp2hPzAOs;ohR1kUfdqixqlOl<`G8%-Gk8I37}NkGz8b8{0#iuk2 zV&c6gLTZqs8#^w774xa$fQ`UoVb_$%e&3pg2S5W~47B|yu&H|9#J=JAOzk-I@)CWs zf{#@?vzvei$k7#$vHx#v6q)-~U+6Z1xK4~F2o#u3)_Bj{{$YAk2t
    `Y8|bJQ+E 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 A=Kufz diff --git a/venv/share/python-wheels/msgpack-1.0.0-py2.py3-none-any.whl b/venv/share/python-wheels/msgpack-1.0.0-py2.py3-none-any.whl deleted file mode 100644 index 960cfc2f36dc7e532d0b22cfa3a21282dea634f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75866 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 z 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 L_^v1YuTTF2fK-pO diff --git a/venv/share/python-wheels/pep517-0.9.1-py2.py3-none-any.whl b/venv/share/python-wheels/pep517-0.9.1-py2.py3-none-any.whl deleted file mode 100644 index 2d9cd70fe7368835a1859cc8cfecdce30e625b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22249 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 E0g!2qN&o-= diff --git a/venv/share/python-wheels/pip-20.3.4-py2.py3-none-any.whl b/venv/share/python-wheels/pip-20.3.4-py2.py3-none-any.whl deleted file mode 100644 index 8fad3e23d70d644c68935418c227a2b95b470910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311145 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

    uXarfq-nlwG0-7M!j&mPp&9hx76_-wd;dZ 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 P(z@n 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 b|L(a~RX_mpP~ZU<@Xr(|Kkmf={uK0oJ)3Ad diff --git a/venv/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl b/venv/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl deleted file mode 100644 index c00743d08a2ad3323977804d8573926153e2db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122731 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

    J}iv`NIEV%A6O89TxpE~1cyXD1&)>u3}8 zXf2zcs>^y&tF+uhT03aI^RoToiod&>SAT=bA4u%i0sTReiqy#R%~jA2UcBmiBr9GZ zOCi^r-s&3K6)Tm-gglp!$LRKRdq)iH|P zAQDp}E}397+_B~^l@+Tce-_P)M%CU9;3#4P==wg5hgQkA#2*^Vsom8$msH96=?EH+ zS2~sfE)+NMl4d>?F8AbT@^_-cOic#^&O#8qph_viN;&;x^5JyqgwLraFLw8uIDyNdNKZxlMly- z=}QJqidaanJ%{Y?Mml;ja{e6|F;n`Z=qDvxLWHwFY{)7oG~Mswv8TbbqQ1~07~wUb z^-4=c*NCIjZ`IPUj9Ac#v+BxBR|v8@D$=^~k^z<_=hwX3xu$}USd5TaVX|e*;%Z`G zz3VQLnsgu3omduMCA702ZfCq^5gNC_H{lguea(=F*haYZE}2^TtM|_eSOBc7I6H$K zyEVKc3k|b=peVAgHRYc*)~(5OmJkSX@Y?1irPdY)DZ(`5hR?%CQ^xrAoIZi&B#A$00!>*z0$K`FRuUrwI zumgzwO09UrnVBd}aoX8PI-9mbyxd%{K8^&E?Ofhd#+W7AI1Nz&PPt`U!WMio0+tZp zrRIN_Gy=`yrKVFWW2U`Rx57QWX37ntfbB78$+EN^)WDX63h1} zlyt1`dWl7f*pWj2 zZ89-|Zr^G$>MiC6Gp#9V3}FMOf8;_j3sGdQ!jJ|NV|B6cK<^##Zm|ORar+Yw&~h8w z{JO7te8Smnjb4W(&gS53YjFR*RRgiXxA-m^$=cirYDAA zwUnq|z3A<6+%9ibE@kt~0k!LHh_EA@@Rzc5g3jx)EvhqaT+=58zj2hDhg1=}`!EA_ zg#Uj4a6pg0ikFpM0?)+VYVi^vQxt31{Ky$QK7)~}foR`R8G(#nbsal?)6^cD9L({6 zE|v8OHpDE9{p}-4{6c{oF&!J(I;hNW=P_om3&!clVG0uR^_McweB;OGblY1xGi?N7 z(BjZ0#YPqnwf}wa>LskVB8?~MKkMupOTg>NQ0=@IYTpbxkJj;G1!)|9AXf1wtr7ga z(Ya|^)=fiEdWy~gr#gt2W8dd0!bb~$fxFu+J?A%CjUy+@2 zK17v*HV$^YDcIWdH++1zbO{TbK%lhc$myzgnhF5(RA)K#x}`j)v!;7*1Gc!z8Ge+@ z6b*6t^NW2YkB{?F6`vV?(PNyW64N_uk;gLM0%p}#2Ua5o^@8oO>56XQG<=3h`6!)0 zZ?QxQT^R(JS%Q+uv5+%nbtoITp=^(nAc3Wb&-slFTl$ir?NaA$W;|-1IO>rr=Uh@c zL>IlLO2L1dv|Kl_=ws_93}9LEuG)vqVzNiGK+*$!c@T79pmul-OkfnxP^~?$q+E$y zMW#&xav}2`CuLeB#$AY**XRlM*nLpzuG+BKzeb6PJhasjFy{@AcIX7tqv-|h(fo2< zF1nbdpPCD!MU}(QtOeA-ig{saZ;v&8vccUtiWx4^sU zmY8*B{sLAu0RZ3SqQzWXa$qjQO%s#31%Y__b%)xW#}Dlu*lezaH9qw4MpZ@gW!8lP z1V@>Q4iEDgtGLVgiOKdvdR4wGE1Q>GMi{SN?ecy;ir&+(1}+y1?-z}Ms04s&0A~^c z*0tg+S~Vi3G$oE66uuL!ZR&u$lz|qt^b{?$#G7nb$;PQDJv~iG+%<#vPSdk<6~q@4 z2csZZr6bCMZp4B72zr*X%!b%fW!WW70ru{q4p^u)eK^WlR0|07WLN~u^Xhft&qf-aix2ImxYoOL~RKRXW(uZ4aR5HIVLCpCdk3UT93ic z()cXPOJH=$=ML$9B5Antd8I<`R&-MHDKCsu?e+*Ya^%pLOVUv&%{{xReFw^1615@s zmLx=yHA*EuHwZX0HQwcH5|a*v?=>mA&;LKlZ!0X|3a&4U^xSq?i5pml1FT<2^guJD zAit0Zf*UQQ)l^};+{YYIZ?mpdNMAKFojj=1JLtO@>*^7;1whv==jcVMNoCl~uaaKQH^i=jCQV7x5xPhTS0O z-lr80Be`fbL2-i$ts1op>a_`azFuB3aZ2Z?TMyP3+Qlq6O*joOaa{T)W(8mdAi6?n zz@bef&aO>2rb`D|EGKJH@geV0Hby`7q!HJyl^vIDGvLhH>eFV7wDUGY(mDEke7wnD zC6cT~K_Qb+FG?fNbC|;(^txqoKX@`eS{H>pE*qB4E1#-n%xQ1u)%_ZPR@Z&1ns7Kl z+i#+dG#!a`5N@kG@42-b$#w4ANyp<X8 z?9Zq33?tV|Vs%&01gv9aZtph&rA`^$5VvTm4*PY_-B{_xk!-V zM3a(D9bwrAjnga+;^-s_PqUL?6pf>ewY6TfzP9Fy39_>b^Y* z`h2U*%O@ROOcIRmUge{FVro6$pauL8#HZGX_3rJMPn+YKs;P*RUVddAavJeZog)yg z&UWQy<9HNX|r${=q9j|CAWUW=jjx zUWHC>E8tdjIF|Yt`ROMw=9I|u1#GWq08=Dq7z?GaLY`7VzQ>*f=(-1FROkq@Mw}UT z7pqiCDNO5PWRJyMN0_=3wlqKy=0BqCh!RMZm~#Z9y2#DvAvzaQ?rnjEQ^`7vb#;n+ znODiCmG@fNz)521LNfLw?`9M|H$Ewq^bQd3_gDIxb@YO8@2_;W>C+BR}Ct=O`hq-#6;0dskQU|@!|Hjxn zbIA@qDU}am0%+uMx=fQR$Ei%sN7J!0k}GQASB!jusAP&#O=|-l&zxrQbbJCj;a@_R z>$o)69z%1FNx8yS)a4O8K+mBqKJ>A{9IBW5K{+TuTp_`)69w!EstHoEG_F9BW`?wn zLYMUV532m1MwNAL__F~`I}_F#US=SdTsKK8PJ4n1AKxcv3 zXAJ4I^G24Fe>q?=R2$aCj8b(GyxHSYPi&V311(3~+=KN^E-Kr!vm1IV94q7vh4v4S zaGxb7^D}YWL!W3B*BntxmlHZ^HVT447bj{@k>H;(=jdW;XTZmqs* zbV!>nE<+>!J8E>I&WT3;AmdH5H>0|_Y(ANoE!;Oxu|SF4XL%o!Aw!#8;A~J(d{N20 zw3N#wesd-YVPt0GIq7Vbfo(I{T|gK9a6knN=4N0y;Qd*iAq$u=$9$KLuq_psj&Kl9 zCM9Le>yDFA&f)3MJGw}xbjIQ|;#i8=5z-Yd+qg)pYsG(HQbBC%5*$K3Rv%K45P@KJ z*msDJtw%<_JyI@aoEDwj)3=MWr|iOGYWkq0iigLpX=OBts!ggJD&r_9L}$l3tpPlt z?10$n53bF4J6Q@Cz>)zM4*+V@F znG~jMy0k#&Xo{Fo8X*Z7eQ0k&{h1uQxy_dVgXM4||!_dA`t?fMzwqO1| z*m?DAH`w`p`{j4L2T`#5x80Y)|Nimd5T3tyvHSAyAb9mAc)Gv+@&|$fMV{^+{)khz(VrLC)YIMI z#Vh!^xBKif_%Imcp+gdpx4cVsqgT_&EFK~vhMX)MX9f*dGz1DTSN~c+exN&GY0X+U zR{wtK-z@z*C3L~NS=KBQ-TvD)%eI|zm2DDg^_>uYrPwK62jg^1iZa-XB)n-pFJybc zWP5HPUHXtIw$bf28!!JBd*{42v@n5n!de=Uy-wI`atWuOI5saQV(Ou7Vr$DoKTB>K zTgHYTIDVmP<^lj1Y6IDc7qg05g2!5>X#u56`ehaTwA*OP0Mv>luM?6ANSh2iN!9}G zdS#MPVmcB3S-_VqAL=OQjm~3}b3GAx-=0*nyu=F;Ii<^b(BTl6-D2c7>XAnqRO}5D z3|VQiK58d0e@99ICbeYf8kj6+%c#C7^%>b}mAa*wu6FyRBx0mIU%>>8Q<-HKI>Z&h zsgFy~cAszmxPLhO>HEFI-68PlHwTF7;BEG{dRs^#kR(p>GGYE$Nk(HiIBz zv4*DRcpw-&2RG@sUFkn0favnLp?bm>=Y{noe$rH}jE5HyuWyc3z5gMIVVpc_5BF$~ zcqr7uuy=@LwlH6<6A8&m-de`M?J-L$G3J)6^sIzasj7NTk<&Px=n}SR>%D(*5xp1B zvx_Xhf^C?noQ@1^|529%VF;F6IX@wyM^0W`Ka@RlK0}GfX&;dKCLyD8yK#DHxvx!z4TZ#{pNbnfS1Qm}jDKjC%=}u?N~S(xM+0*RDXfs(1Mdj{m6K%1JZ1V_z8F3-P8#J6IrP5XAMS7N!p&CIHnfF7Zccb`Z28k4%CEl-W1{59xzM-Fm z>w3VjeyDdNvG8%DPFes3*!}gjjW2L_(*8A_A6!9ApuV_!1D;l1EH)o^jLXb)H_v6Qm}Ub7JQ`-d+htDCj%M(EJ#lv`oE$&5wvkYtf8mxZbd119Od81)Tlb z-NLQtnONNB@GjH0iYq&H?_T8~1wr3+LzF`-fH1jADNaglK|F2W5EdzHXS>>EE~4PF z=ItP!;OadF_<9+iK>-RVdOO+OSpRkkkf%FZ!ZX6Z?5Z>sKW&C<>l=>-gF!C{F?|Xk zE?DbDxNT&~<~rRMZ@PI#ZEiyd>IfBfZrK6F!d7d%83);$R@&KZbz>cg>o>5AJ1HKc zj-Hc7Vn>FoUJtkdqqzn>xp5W&UvFyJ(4;HQalSp7@Qr!t5sep8TanNPHR2G9Rtz{R z3KottJ(*Vq0%Swd+IlObhe3ufUmfmlGFj_XWWjx0nfDu;n!B$`$d+$wXaolxnzVOQ z0;Hdk-Y3qKfF7fIC>^QoG2&bsl#9)nL8hWeLi{o!5(*Fp>k3AZ&d@k^5@YmuG)OV_ za}{Z%hW7V-PCWqp=Qv@G>{Z*N$0sL6a+y+m6V#N(?+klSVci|9)IpY>aR&@;?+}A7 z+P6Z2vRTuRwX(yT$LiaY)ly*9r%bi|HQKdKo$dNYee7%iu#cyAfk5Y2Pd2E;-YVM% z_tBit>_{`o6>WDd!GI-3z#z%SC6ZOxx!+(J28TM@Z0P8nHE*B1q;=;sX)`ZX#yLWu zvfqZ?U`O2n z+zdspo7y^*_=FrMNy)`#YXee#?Y!4rxWU(ShM;)#XssK`8MMkRVB@sJw{5Y5V9GR5 zXQqbKwhT*o>dx%Lh{6=X0P1l}kjA;3sAwjmKn_8~3LB24x=S3-4RF?c2M=+r3`vpg z3rQrCY4*Kg7^Qn5kWREoK~g?PS76IJbjZA}w`uDHD2Gmo zpP<@!ZC-?*W*k%nXA_BC`6AQSw$^{7U591HaofkE?r9d5XyX~-X`pvw?N+Chk4C-W z2kHlATj%2lMsw79LFe8r1O$ zy}PecjO_-rG0qeA`B0%GrBfJqn;N$S2j#le$XQp~6YQ#BjC8BSh;MqF(g$POrl+>$ zMtQDHLgtw=hr~Dr@p%%DIV4;>L0t*f*0=43==m`X%IR}Et8&YZd_~J~`h0Zrar%6G z8*=)rYDi9>JE^CZ$#1TB=KlU2FMdq0oNvY=VMcgZ^)NN>uq;QZMQv`iOI0vf~hd zs)i*wC}rcb-gQJ`T%HZVQKa2c9KcjcrYvA-jD<&uPN-WaQnE@7G~=;p=H{{e`-wl> zBUVm$Q4$wKKzMe!d5r&Bl@`y&gAbn$&qH*_{wR~QgL!^wihMKVOb|{>Ou5Pv*r#Cz zWUtc3#kZK58t^J}L|cSq!%VgiF`D@Tz#lV;2)*ONF>QZp8AS4bQwl{B1vl<)uSO~& z=R>?ORU5@f)w+`;Aeu@H%c7Jta#5t-7zPWni?HKGt?sk{p2iilit-}}4t#QAsfTR! z2q(|6NbSc#X$5^lyf*jDyal-{eYsvy)-d47~Q{H?l8B=;M&v%FYWMM)WfWs zHTjGn2t$zLS^#Q9Bjdh`1fkc2i5|4CL=R$hnc$EiW^pxIAUf6@j4jyP=#F?oCPxZa zuZ4j%;*cB-T7t9UPK_%(w7eX$o>Xd$G)`+ljfx5bqTGOc&NiUJj?Ci!Hf9gY?YTDi zP#ZF!&*AZM60b!zb@-M830>g>oH9`1w2Ux_780;EgyTDH*EWT~UNxT9Axm zH+iTfMbW!yo}dFhL~r>{&2BM1C+jmZ!7@f7-Z58r&aJ9sIwQS5EG8y<7n;OItWOID zBpP8$wL;aZ@35-#BEPb;5*!*QXnk#v<#G^(Lv}@pny6-dD7V+y&5Z>Tqx?`<35j{V zXg3%%1suzA=rmhOdqXtD*~9xuoc*#+rEDnKEJ8&5mCw;EykShk*7J1%hXSmcj_C@1 zkZIIu{ERzO&vI|KAorW_n;#_B@q9YPHJylNEp$iRUVQ-q>LO%XWpl@t9l(PmRe6jiKv5R2d{Nb~BHPL@MJ!@<59A^*W?hxHFG(2{JF=4d%<{5opDxM2 z%ZVDA@bpVim-$XSI&W)csk%O}9p==<{gw)c!-i44;2y{7 zR_0VLSr`t%h0BAQj;EIEbSL6FY4-W<&^B^cKktSPK5STmp+woLZ+8kd?ipOm5NXA_ zbI<{RO#3izq}aq*hV|-R$b(w^X*4V%ZSxJQSjj;jUUNC8gqMr9^H$NJCz-ZvF&0qW zd2TAQX~u;mJhHY`TqxAptklAk$wng6Uco#WkI{Gi_mKF)Q~&x(wgHR<-ZO4AH7BtK5e^Nj7r8ppEx_& z|9=b0kMj>1S`E#CQ17h1J=LiTJL;jTZeE6k`eMs9K!_xT;g(~@9~m(mPPAWtkPR6q*_F&YFc6luJBob;?(C3TN-}!w$|9ykcLowWNC+GtMkM1 z%Uc_Mc}smh-lm5ikE?DAYr6G9`6!FzwhQEUSsWi_Vf^56)`ts+g#0H>UBo`;^W z*orN;rDbx5LWCu4$UM}89mN^Jc!?<#JmXzFT!OFhWmjyBDYQEq8M0MNUI$03)t>RXu3nI8b+}$~Zr{wXk8NDyew{ z(HBWWS~12%ut*UOtS?`5FT6fZPh9Lb;?C`XlTA#^rF4q5XVTN51KU< z3UqC*54>>rsu(9lGRAbSE!&w;_4D*JZzE`hYm2C%vGku_I`{xG)+B(Yo<`sOC08PP zg9L6v_zM22#IJkqEC63QQJZRl44x1!7fJsM1F`6~;ovpH{1%~mq2+#rasH58FFJv$ zkBSiJK3~3^>z?T)-2!ImGRDu+rHr4uEN5NsmP=aKyTh{9b?>mWoek?hb`85b9DZPZ z3{O)^5r&Cn6ESHSC%?{<@aS0j^#A61S7Tpc$?FBJE8!1xX~&@a$i!RLw=OOh=7^_{ zwt5#f_{SRmm}~rAoqLOy6CQ^pECAl(6v>RUTC>|aS@xeuxS%*?Axl5H8I- zb-C_CYxE+nhV^<4?$thVfG4(mIk^^hm+@<^5ca;+#pvE&`Og9Pq+%Y_BNK3pN`T61 zPkTcU<}niBn|=7Jh|4a4F>LT$eY6$@YsWQasBQ5#z|;~N8Ix<}YasUB7DmW5K|9E6 zONpSb;9ezUKhNmEaDrwj(uiZ8@Ep*YOfJRXq5>?VK}LRxk=@kozskTClUYxV`1*jv zr?`)IGx+`9VHCXBJHSXl=m1{7;aq)qVd!nf1Zy;EkTT)T_G50&WXmCEK{dMqdn9Zb zT$}sdJmGUmpa3pv@^ueWS=4W$uOmcSThz98$xHRuIFhT2-ql>6ZmS`jwQU#o1leX( z3Bw>JqWM#40d)w>Mf|?h*pHyufsW`F-iKdg*1EcKkH*y=W3bs^NSLJ zGvDBCyL1#?XFa+miQ+v=!gNW34Z?MR@4L^b4alIt5^J63rNybL4+uY=*RYJ<{DY{5uFzQM2E;uV<46IxBXk#*L%CtWfub?qgjIFUnB2D74Y)#2K z5CkeC2K+;)l8)nw!@`Ww5blK@KU%ht1A(0o?<9wVg9U8o zz1852a__@}>}W@z2k3aKdPCsGIces`Ibqvg!{W?NG&U;Y@?7TSBq?=J2$n0{_9=!> z%`hye@hQsnJTF8pdTQF2ZHs3@5H#kuQJ@CDaDps`UH=eEbGxduX*iu)Sk`L~nw~b9 z50H1u<==wMts(QeHwLTOW!$QTTJz(Mp|=DtEKK+wTY`l)!W3tU#({+|XD5?o5o2~~ z6H5Gs-uirY28=LkdV3zqk&_*(Q{DoKQ}Rj9t=KKFn?*sMiL)|qre?GmqtSC%+$RYh zo-yZw<%=ZC^9qB*QMY(AX8)#N=V_7DQDdOlw6Ohr0c;J+a=K@Wdfr^KOC7y19$9&8qp-4@izxnvh=E62MzY+~5WeT}v| z&eaNnmyyGqd}hZWRZ)D}$~=L393Gg}qu2$a8YaWQpR`TJZNASmh$c|$2-!FH18nFg zm^_R`Nyw%RNsX_$e;9LTE$px~eZ)1y$JWm$H+G~0ah&5l&~!7dqYELqLc3PPhT3m1 zvZp2pjJQXQIjw=3ZFQ04%6g8h4gx6xbs}*pk9tb4!d~^%ZD+Ze=yJAZKk7`z)E?BV z8+YxHV%-=&C-DES5ycrlZhY#c^$pfZu~`BGpHk=}5=C}0MfyurMuF+8AnC6I<634W4So2tt ztLbWSXt7+*fwFBg|qmvv;GW9ivS)&EWOETlJN#xKKNVo?sjn zt*@Q`q)!xr1a-&}-$s;}&Y%_;d5h;jE|hKv`_s}LgleFn)u^LtSmu<#<=Z5iY5Yz_ z#u~oZ{&~3f@(@G|K++_hEt7T*aQA3%LRuM)qa6BR2fMIVmERl(Tv2gcYLHG?J;{XU z1lK@Lp`PHW9?yq~(u|X^kc*pj4S45$J<^&VQ&KsQs%C^EiWkCXhi=wYJ*W5$l!3%K zVC}pYJW()FO5lXSWkl|gcbM%~LsCa+7AEKjY)de;z{TTsN6Vd2)!~bTAQt(s8GxnU z@9!RI#R#zCZvGPLF99)VJWe zFQ;Gs`J2hbFXid@o3H=eu`5d+Zvx?FccP4DL^*`OC?R((GuwM_U@Qj#;x*RCM!G@w zKF`F1p!<*R{Se^w>48sK+pNQVK__+JrrZp1>tJaG+}Jh#fgcYLztZ*}|L~MoA8FM8 z(uJ|C6!&{ssapcoA4bOFqY-~=qazW6JHuZ>C^sL29wEL#Zh^M;p6|wFs zWv6UHy^RyD?lgRP;JKPvaL*(OclXg12;nR+y-?_F&*OxjYm8k~$90o2OB?OgpdYgF zEwQ>nNOznhXUvlo#;iWv;?hyzX92QZh>J0~0-zPTwFF8V>HL2#E!Q$Il+8*MY5aol zB9&f+`N%ld1uCIx@!{r%Nm(BPgn_QeY-ii-qB5SxMs}lC@~DxKS zy;rBfD`@Xo-QEjq?>p7r0k`+`nzh^q&>mFzJGR%d?r`OAQA`8%1aq(K+G52$q%6z` zgQ7@rspFYa$j6dbXPR-UnR$kqZX_>-K3!aGI;4clP4FnL8Q0t;evi|$^9ojOb%lC$ zXENB1O0x*#z+_5)4Rumen4zOgR7SPvX&&Rfe9J(cGLJN3RUq~@%i|VrZC?Znd1ZQ2 zMW!FsBCk4}KG+v4?aI`)t+@@5Z`KNc@3c)Cm~rop@S`Zq*;I^L4m#Z&t3tFnTQkxH z0z5&X$e&)g(;57drx^$TL%Ba1o=%YQWg%3wEQ0>n$pdA>92cYWTj;YEgptfBjveM~ zU9`uSbdPj;tu*{G-F2z$NcMKp5E%>FOrXvee(r_fM^jx9LYC>SZn34^BeR=XT2Uf& z=obbmB$bBfdtgVOV|(E&Ap z#^Caspsch*Du4rvQaYHP2nC-k*efVijQ+i!#AEaKcR3t=_Bhz%E}HNcc!}uGo;BN?9-tr%#f$p)x`UF@MFevy-fZ#8I!RPpo1)^pBwmOnpp2|l-wc>7SvX7t_ z9RI<7J?s})VbkRm@J26;O9V=xI!+GobRSoFA&$GP%=o(`OQ@i-cfyc!2ou+fd&$Zi z)wpJ$fb*ql%iwkkSS)i^YQy2HwK*MM@sp5<|N z7wzL@9o=1;&{1C*Ma@h?9xmT}g`XMb;oib<%CAl-m0{Q!MBi>c?0@!`j>~SDA5kH! zHeh1tpiIvx@Bb3Xfg-_E0A^B#A15(-E?|XfjwYp_t;BS?2o*U2LBucmhXzkiJS|Y^ z)_~YFk@i6X#X0-QLXP2;Hxwi&oBZeK)#qtYKfHR(!bO zFdmP!ryR>ct!oqG8p6P-{Y4E%TLB` zAqnGf&P6DE1Gj2fLeT5w=V_}UHn*ThNX8NVLvQfQXRTCipQCs}BTD?l_o}eO2WoJPv5DWZs zZ2#M48)p+H8>V3}r0@X;fPXSwqQ;%Y-=KioEdKrLp z`3zJ2m2l>nu=)4S`}fl{i$I_SR-_@Yp>vU(&9Ru_ZH>272*Xh9=q`v<3m_4_H+W7< zt^4o34C#KDMdbH?gNmd28K-Kljm6!`rtVVV4A8Ov{=bqU=Umh`AwKRkf;5B$dW}Ix zDB^E|qH`7~DlY3;xUrHr)cvIV?U~yzqa)!OzHV=J4a?rXNx_b%)g_~@;jAwNqO*9{ zFls2Zd0GPxIvE-(4A7+9NZ()(g;qxK(Y<7cu0|5EB%XdNnUu;#x>sMjNygVeF&@X# z>3nJ&+p$g!BOi_C1(|S{12N9Wb8z%96DGQ^1c zy2%Giy6Bx%3uld&>&HG)!p|~t^317GsJ~?bSVP-q!WQ>=;N19ybV*8~+>n z>bA6QOGU63XUQ2G?~;da#}=*38Cj*ZGQr$Byp@Z~FnMvFpgU1QVNTGD@z;4gL2l2E zt43+3d2_I^Tr47LuEskIehs?=EM%?MaSa5cctXqdUFZwbaHj zsD%~b_`|ucfT9{bx9C*Mup0*h_~V=fjRQeb8(>8^m9qmEvZ3U~-OrQ1wdrI@L;W1r z{2yn>f8*J)M*DIt;zyeIKlBLyp|rr`{>`IDc=sVw|BtpM|El<7djE~n`>I&J#6Q+V z|FOpZLy3UL{SVI?he^8o)c>h%jiW>59~1meYRo7u9IaHgjYQ zn^bS=Tpef-D*;*14rqHaQT8uv)#NqP*h2+3HcgsmHr`@OQnWowCH_bEe)ooQ5XU33 zC?yT7+suvfqOPG!zU~+ihGz9QZDF45ZsgOns!-F*@ls1863IU2a=%%{m-(I!rJA%} zQ(zjKaa_fYNy@-RZP>xSb$ZH11=C2^gbEf@8xdlhD7CUmxpApMx=87kfy&t}eprJ#K2?UUGZ^P7$E4ztfu8M2;rEH* z-9`>t+URtekLP&NcrxdF#3u<^BeN-EnFCqX1L&7%kWcDS6(h0@!AxpaLfB?z-}ao> zbuCI1t2_!2S!MeiyaGO7q+^)`u~0K7U}R^VU7^ReLlBjz^VeeJU>l-dB+t0#PlMm zs0N~3A9YNvL@5RB7?A9Yq55a6g@t6*>aW#;QH~A}1}h1Fl1bf61)h_IF98_`VKO)y zV4B&fXkOW6ew=eq4_cPa0O8HIYHbM?>)7FB*(^SzqM1(=bX3PXmqV#a$*f&5Z)1Up zbpUJiO`5qMxmLwc)(IeWGKqf)9^Tj8yZS831*osPj0gKIFisgH8aqKr@5=K+y8-{l!k9x&APF5 zJHlTlJ{bk;8;^o_*Z&N@{$|bWuW>H(8oR$>$0dcIfYYuAYvFpd-t!d2lbtRstas!x z{uZE*0O%JE&_?oX9f7c}9%9gJ5D|hedQlK!M4!!dO8CC{rLT+4hW`u=f4$mh0EH`# zW_=xTOgBt&`(fC&u*&Wu$wemc_$~dS&Okr2Y^AX!H zngTcT9~B+7AB;eP%%{#{cE~h1mx|OT{$!-#Fn5@n0s3jMU@LL&E!Ql|w|D3L)%eB` z;v(sw!=|7dr~C{aV_7^4KT)WCoIMF2BU+wBj{z%BdL2XCgWgVviveOMQyydNOH3O< zGA<)h3F?%hH@Z<(IYP!BqcWwDW!G%Wtu_d@(S|e2C8V(!sS?6S7ep8;F=8t8;Cw!f zvp!lm64NF{f%r%p=&4)dWC3UdP#XB6kaxO|n#m_|nQ|mvj5S@L^aJaMxSEoMB9k=g zW~d*df|D7LR~OA1a$j@abQ+Ob3#3O$YJ<*Co8k7;oo9o=04Aty--r3ZEyf#O%#~wW z_y0v3`ojG=SV1~dd-iH)#NiMGRj)$RRMsGl9W8h=TUd>woRwxuD3THC5Nge;ZVWg7 zp&1IifyUuwt9`%OBCMFv#T!l{g{fd!Hlg(;+7OEWYWBm-7>FPw(S$ztso#g_R=ag{ z+%DhjVB=cVVwhADp>iS$7|(pf@rbFfLi4AX=`JzSUlEkljX&KKO5Fh;IX4&_j0;36 zEvLbEv`fLi8Re({DB;j0_BJbn5jOHD)rK8GJJ!#wNSi@uqyUKp2ImGe*i2Q2FQ*cy z`GqqHDt-&{kw;E4n&f4zau8ib8yY>qS`bAN`GzudJ184qOJ)odaVOudK%P1Q6!{WW zim!5#h0Pi06rCQbtWQ11w?=0gtuIc%Yzlf7ta{@AaExy{#t(^)T&A+56-fdQ z6%}lfxg{3M&V?47w9Y-rr=>c+4bw5dcJF2vOp%H3Eo~}o)&AhVE95d`tzbG1+zb;G zCcTZJa$-f=0e+pQNT3NP#32SqFhI^bLq#ZF6XRQ@W(~f}r6z^5NsMz^noUS2n2w4Z ztB^xVIX|&BBtB(hkdv`ofJ`vro5a>H+OFJQd$S?+jj`j8oV%)eP8T)CR)M{a8F>~E zg)}>l5?ujeA|({W5H{}D%E!gjC5tk-m~-T38hYEYxmOLu9FUD9=$RGw2}SCgW^; z>vk2kbXourU%L`~se-WWX);!lw|}geW1NV>1uyKXaXz;pnG4W{Br$9h?r{vKVhO?X zO7;*+8-zY50IH57U$^pxja@c@7DLf&M+!SV<($eZPF@>rl6Hu)rBR!r5HXYFg?Or< z^@$zad2f!0PWH6nMmn00nisiHG*%H#3$YJm6oJhtx~1UJrw47>JJ?5YC|ih@L5E0p zc{bqJjva*ha4#`va1CUjIdHez^-0F_3^g@!UEfe4;|I1TUq$Vz)LOCMQuB0@#}W*; z9AWY*IJk{aN+SD;W{s}~Ya7YNBOfTGIA0yudeUFtXg&t)c*7cXMBCCqLSY1>?;Z-i zLFYM<&}W^GGZPp^^t!%;_D;lq`6^D+k`s2qi4Omc)3dZv$JXw^(^!AdGBs76b23hE zwMT>XF9z#he&a=-voX^O`Vfp-wHg-&%LunIz9V>Y?9S6NDsEEnQQr^eHZ<*}=OcRh zVB?Vo`0c3NL*YmCtN~eOqD{Qz#ut*Mmn5Ae4bQjt_WdcH>RW(E?j^t%p0J9yqjL|9 zFYeg;B7rl$IElBRI`}Oxi~SbZM0isVX{~Xu;foa6y58E?+8xmAy|HSc1!IfCEzJ=7 zwD%}W&K#~1p$_b{f$HFv zDzQJ~if`Wt9%S*&<1UVgW-j)MKYJIY$i&`W5y#;vS97P8e>tD5C44HkEX{6-cl(RmlJf zf|ZgY?NHoWxV9fF`OKFrjl(?PV4501)fdC8l(n+_Tpyh)xu);o(M9(GOJX%&2y0bn zQPgLY^wP|eF|{42uY$yW?!L{s9MoAGZowoTdy((r4?q62CI}i6u24Xju)szl{KqpK zEs!)c2i0;-feb{Ui(w7$uo2>cXG@)Wd~VV8?5l5TW=v_pUE&M0$1|UT_cX46CvOFv z@cH)P_I|J9kp3(Y#p-h`SSPL*siV_`2=x(_M4v4l(FRKBZfcecIK!R~4^9Ql2L-e+ zQI)D*f4#@~q~Ko~&h6Z@9oP(ZDL|uEhxZYTg@~%8S+e?Uw$CJfH0jM;Wj#;xlDh$4 zH~YIk@9e%l+Lh!y6_w^$`*nC2N2_1*1A&4v{$ zT*}<_o_B}Snt3@+*APtDpMJvm#SbxpdFZ{3(7W392?~d!s$nXQieds25u4{*NW90d z@+k;Y+5+7%BGrJE<4o#zo8ij^>LFh$42;6@WrAB~oqY-a<1ul@NvhWzOBSF_$2Es; zkJzCko?OM(CHMDEeWVuMKDq{TbcYGdiwe6pv(xyRl_B)jf4dE3_AtpWT^QE4`1QbF z=41xaHgw7FLc$M?J4-H;;sb^)?X5a+DgF_MZk0)jVp^hgL+8hg#zdMt8gr*{$&FrE z%?tv>*vGk8X*3NK`SQ?i#CMp3K%NJF|&<~pan7qPdFw0gLlgX9|%vWMx=L|FoF0>7xx)d>pmM;33*v(kssAa3K zSL$M4&kR#=%ehPZ_%H%A51D+kbn;*^_UJ6JXUKUaJKf-O z!*Gf5=}tqF6V+7K_g1^p+9BoiO3g^b)QguZ1d_L8O{EtA$b0V#9JTm~xiBnB?i%d7ME% zi*!_CnEhdgmVD=bb&NiZWVgIgac~!G@yh6%tZ`ju^HwQH&l#=Kj^oE5548|OzfCD- zh3fFF(~xBpcfOU_(k3%J+kL+MZ0fv5l2l zC5$Mj31N#Pf~r~Y*mJT7A{|>Gf}j#cgKY`yX%yH}h#h#x_W!VGBjf%ZMH{c!;@e&R z-SUc6M$sI4Hp^Fwn$$zzjH!1Xx=?w;7EoUOqgj~!7tPXTQib({rls_qMG~tL}LW%N@ zRzxWj+J*WyVLsxZ0Jx!1K1Vc);*^devEaq(rll}Z=2WJRm9m&|ND_gf9YGk3dF+gW zm#+>Rg*o^G-h696U61TnyRf<_=hG@Em-3wlG!sJAe9_#GoWM~+i(n4h7 zm(DDb!jzI1qiT1Q&|%iTwe0b+Hrv~8rS$4{hj;%-@6PY+)vHb-^0%>iRk;AzN-0sr zYUSkZmWe*~+-;fMZGC8^?Jd_w<3O`u!L%G?+Q1n{Bc`g4N0GmeeD`mV?f!c-T6#60 zqu$~huFJScC9Ym(jC408gbePQx8pS}|82DA9QePWwfb4RXW=ITujtwWj zZCEOG^GGy|wOf)sIun5uTF@KUUMSrHE%(la$uJs(#H^1-JyfW$W?;hiX$sX! zUsBTO78NyqFPCILFD&}~d~6ahO2=WNKar>5<~8qf-CCQH?xV;qq}M<_Yd$gr8mvCi z`d2M_)Foh0q;HV=52#!N1C6XZTc2=7hVZnJz&zC(E_m zLIKxlGb)Eul&ccD8^Nd%|4e6=5^9qNeH=AM)AOlc%3>5jA?(m_+I)?w#$ptFMzr2y zrdAJIS(rJ!ZZUIAPg&h=aONjAnpzsf51CuouUo7hd8*vWdl0PqbWzG)nPg0{dJB&< zf{FZ4*gkgCmKoKLY7Te2oT{vf2Ft{%K7L-;QIfNEcryv;!wrpoT6Te}>61h#C|#1! zL$NT>rCfx^`l`Q7bdvdJ619ZgCwKvhbV!mP>3g_7#U;T@O!x8-@^p!1?&v zyrK*-rlACH)+{ZiX_rgTMuXUKaq=_UoI*hmog<}oB0-vpJ;ZcbBsu_rpH=4rmXVc~ zj#F%Lglqsp;@&z)B?5@SN~y>2Ml9RuI<@z$rSPLdrGgc|y9qdwDzz?G!YGBV!A6+=Z($s&o{y$YVDXXoSzLb5b+E(TQ# z!#nSBf&`-SsI7x4OT^KbZLFB8*zT307&A1vT0DAMdP^3Q2Bks4|jJVboCVAVg=LWU1WC1obq@VFp8A z!DQwVv4Y*9jkE5d6QF_Z1-RGP50FSZ+uPgfKC?64E)sl5QOK?(n28wTjT4lR5y{~J!QTEFZ=M+YiF;!A;}Ds!Otk3r4@RRA;JDLDRP8K z>2GmID^QJR+(>cZApx@Di7H)O6v%I?9rm09<#}FK97ce&6^7xBq-s#zqF1tt`i2vt z0${fu8TKVmyafTk0x_X439}QVC*=(Y%aKFFL`0i2GFM`IqG|fhwmLF{024gvNN4YF zKkx56d*S!vyGP8Vwqj}{q%t!1mu_T?d{kZzd6$+JYwDy*davB-M4eUi()deM$9h*3 zD;tmsw$|yiyR{ZE!@@7IQc7=0dLVJ6C}%ao%?MY0{Tj_M zlpffG*UV_C$Lf*Z^*eua_3IUyV{NqR;42W)(V#>9ZY!tEIMi<&Q*{S?wkG!>OeN@w@Ch*3 zu1V)Vr8U*-VI#-}`%;itU5Xxl1 z5BFXkIt{T@v8*X7(C!Gh@(+Bj-uIhK&mTCwl8K9`D!>ZOz zxbxw-$}WV;5pF+t~bGc?6X?~=o0do;7(7qcx zn5Psl^H6?8bq|a-IT|FX=2b09P-xjwif}jb$c6Pd>*v*Zkzds=;*AXqIW$!3%NQP; zo2(m9!v$r#lPX%bgd^-f4@eLARzq5`%{JbHCLuJiCu?@Q^bk!l&9>=~ipCy~SM03s z;-IC+R-f%MAAJ#+i`1i{Uo8@OdpP6fS&3mZ;}^FLQN{XhPGl)@#%o^(yCw%02i$Cz z2PokAWS@C2|}5Gz7e_rx{`eTS*fToyu4y|+##4nRKm zX*2x1j6RpEO>5+yy}t3@-nbi^;sPPX?E`gSaq}JuG(nkHC?sXrcPPc8OBAItWZk)_ zaXH3$Q&GI&CPmIzsboy^D48iXA^Lq{4EX#kOaEEt$4E0&S60F6>*^dcJtUHRPa51a zEN&5W@~+OG#`Zb1Qc%EPN$9excpZ95w`{?-BC*@Y36j*&xh?RYu)PCHT3GCMs*i?C`5x;o9 z7JYFO?!5SI=h<)1{;~rUk7jXuGq{jKM|)f?5q_nlhiR?kB}N^)wU5|h|1gh+LZ!>vYUUHvWe9ng zMgaf1P;PPTF&m5w(7s4M&KbOC!$1!XC~SpxR*f7^T0?lx{@Vfgz!=l+LIdmJ{c zCN0W#7DZC7EZd2ntJoe}xwB9TPm63xjJSnOT2>^@Z+~mSQb40g%1f4chcl7MZlF*o z0EI%KmOS8_7ofb>Mr$JA-r)}c?j;)MFx^)VH-I0N$UthQDrOip-*nfoKi4dstB21H z@nNvCB{GJB;=-Xg3Eni2?-%OX%34I~8D*&?cWF#jshyj1bCaUA`WT{G6Cry2ROR;w zs0)7&ZCXXtnvZfGzumEW(UJSZrSwHd?Vf!@LPM|LoyqqgU-`y3?rGfZg?}tUW`B;d zPDob+u-oToWz&Oyf`wFB8 zUs;2`r(}yedJlNlus>s|^A`Z>S;RA>fQaiFgqLmPBfKa^fTY>82J*1WE8`HlN)>n2 z#)1PuQ%#MX#asf?A~O*Jr>1t}I80D1&mPVf#Jc@!}90*H4eBcS7uNyBFXOTw8ZM9V^$LA2v{lPt0h02NN;m9Kc4k>mUT%7Mv192JxpfN`-x;#;qqagC~1ewZj>P z|G+OJ{6Z!Y6gUGj&kvl^Wr|duoqoan*;(DSSRQjY*x)Zkvw&lgc6Ul@gW~7jNfhh! z?uJBhR1A7QpVTCW#;tgezv~2=y1J^R&KPaiZf?rWTL?ikuC62=F(Yzw6F{Z-We`Fm zMl94i+^)p|0&v9@iNG8yj`gyG<;W|>r%pL`dAnUJfvX)IRTfa4T~tJ(WH3?)nR*ND z6U|_XKDe^u53`my zbq@&(&Il~4ad8%x{nMz!1;c`aQ$+N2p`7kjl0VBd5_FOUm!G+uRz3>FR-hUQLc!6m zDq|zbgg8H+hcG}ykjzfZ7#6InX}h4LMM6F;9cz>*v#r;2`8~@d+h&P-CA>|1+gs{h z>B>!SyK?FK)*G6&1cULYVxmIDLB9tM!;A@akUS3p+9>58XTtFMyNRa0$!Rq`B; z4yXT~B$9R<&bo&^Web%<4q>Nkb8YqTwwQF_y#^!5i>H$Xe8GN7ou1T{X3I z^?C_vU@xfz+AKq*zJzpG>fLJ&qyNe-3~vM#h_yIr*8NDuE)Mm3cMG@uGF6?us3Hd0 zdn!v;Qse^2J(yXo_Eon#py)}CaB2QUy0lDA;6(DjzH_!F&rwU|M-$GlP zfWT3@IHx>BeRK&qQAeASVvd@bwM#VNemnDqV2lr#x_0KNK7|$^WZO zDwtOn^W&s?TS?J!@N}!S6QlXrY(?}!^W8%&wB=UQ$f>0lw|krjD$b*ir8y5C@P8i# zx>7P4Uwak2mGvoi3p|&JpVmcR=uB3kUzOsWq_`L3+4IqdIOPfr=kqJz^fzn?!p0ov z+L)j<1_RW2tAs)k3TrK_fTT7J^Z+G)U5>gk9l!0Ps+pWI$mj&&H{frsV>s1U_Xfti zs=h;UQS!-UaN05V-_9p@p--D}l|>)XtfABP_8N>d1&q0zo%MC1HPwTx+NViOIVe+7 zg&HOJK4u;>6}^C8z4Jkl4vOCS&nIco+K3)JO#kPzJLyL2LA*fwS;K1RxXCr~8&}3} zP#^yR5Vcjbme5P(R26ih3I+T!9bXnQq&V+S?4Dd94{8M9wf_2>`Ot_lEPK+>HcGPA zfBb1a{yD)t10*gQ7&&#t=qw-Q+#tgkYWrSia{gW>>d?Mpe{NTZE`cWEdhR6*c1?_V z>YBDMGBj6)&LyRl7sgllFKNttxiVyaehc&RKZo73V1dzZD|ksAoSqD*e+wBo`$F1h zWW&w<4X~j;B=aSJb-~0IPwCwfK^z&!}BN#f8(Je>ak7Le5wx=D6wD; zTZ|}?jb=?PwRtvILTp2sDCkkm!3vdR#p2{QZi0q5Iy{^m9!?JrNAV3bwL2)rDk`E0 zzru1_s${Ix5wdKS3mq#)-RMJaDW51=k?wP3iyJ11pErR}2Pvj-Pth^_Z!?Ow-n`n| zk>-@~;Vj1I2fL5G=OcQ)|IB+lrN?`(y~ii?_?cV!CLrDL4scOy1F>d6s!?1a-~=4N zv1==(grbr_fD8X72V{9G_ppW;NLTXDrm{pymVl&}w%3XqWcXkFdXQ&tbK6i=$hJf` zO+}k#=-R-|U0g(af$eu`8o5=24qKrArh?OlizACX=fo&|q}|hWX*H?jLtNfg7DuZ5 z-aHcg3B?b+^>tpU*sGi+)Y$`9N)YJ+SS5htHhnXR+29*K?R4H_u~*9D+_~?@2jji* zU_KmqXjaF@&w6h&WyvSvGj$0Fs%LCu`fp@3s#$hS4m{I*GKS$Ty3=gZH#r;^9)1D# zXdED{MSdAk0Rmmm0~}}ZPji|?!L{$Nb=$ZVQW?jA6FSQxaysgV2+7qMTgA?Q)J}&VAT4pFbQQL;;~_~r4O2Z9PXH+_#yWj1xC zgfYJf0Qp#%g9R6jEE^3(7m?eu3_|;%!Sj(K zPe;9vvuKn>^(xEd_TvUvF4fxxjxTPeOPwC)Z{I&Zc*@Cf%)J<%>C!l^mo#{R$)I}r zk*5MW?>oC=S&33I5TKK2c?S|H7~trLg;r9Ne5fGKL322X)S{la=*bCP=`Z&FbDSB~ zr`jAo#{3o-eh6nm5%c3tM-+7Y1LhsN>?6D5S$}GrR5+$NC9aKg%=9o3MlooycyXf>#uX;UZ@J$LQp7Vp z&Xq%9fl+VKceql%UwH6VdRa{m^shDq2*=`FiJMD+7`D;;u3pYB@Opoy`luK`hn%fg z)E|%Y`?)by2qLd1<7t^u2e0DXdcP%q$MLxxcVDvhjN}_$bx!*7KiH~6It11nJg!`E z+}oAcnsY4p$g6CHop9wfwvyRLa3Pu=e#~XKRAZ)(1Mpf!2$RvjmaN_PS-E}|*xz{V z>eZ`Y>M5N#N4#?Ow_|7$uS$yfG1rHYa;k79f$n&CtSr-jlCZ{SjmdP3`OfUD1_>AV zMCnp7q@u+ohhfmOw>c$IP_ro@(s|wSr?ZCO4ZJm0)=hOz^AV+8DHFrC!JacUXz6 zoaNwSnYYQ_Y8 zR2KC)Ae%0Tz~g|@1L9Md%s+4rg)-U)hMvFq9*!6$;ng(f15d#0sRQ$MhBn?JQo839 zVa+e7iFV(yf>CLSR9#LW;jAuGQD-pHg?zqm%tBnZ34wrY*T20kAJu>{JbgEV7SZa# zD}G~47BChg<}dE@@RQLiZngc<+cDZi1gehRa6XyMzDOpyW|Q{8pqo!3iHLsD$GwZ#SBVHHMa^X>MLyO9pjCDbVb1H4AAu(y=dOuGQHWHEG>ch6tv-T9Ob-BH`w{w?k#Hxeao zMKu;Tof=jgT_lZ`EkqPC`LK`skk?{KMerK)e@!_xx>CmNU3ryml!3ENdT8S%kEcDD z!3@jRC@7%iF@}0mPFtw{6L#NP$yf?_$)S~5rB_?4f!sgggT1IiM}Lu)HVUe5xtqzi`ee2UA@ z6m$Y%irgq_8n|R)oJz)lriX9@U|JFT)cdDcm3p$5H4uRb&~9xW1#Do1W-g7~H5Amt zi8ft>VEsWQN`K_PK@$gEH2^lOW-~;@4zRiyt?ZW)E~G_JM_VGL3T3t+2M~T#xRgbJ z9%n)!PxGQGbif3#?%)QI<4yt6Z|jj3PHrv%CV6#Vtqi!RhrxE_<$}C0 zS$xevZCBN|8Mnk518yTP+Tq;bab5?TWJePp&LqDRJMiAb=hU2Gll{L#JJk%a8rk#y>@S zbgiiba(=iL)tYG1Z6B4QKrk%V&^vBzJcu4NTMt`bM3fbIQJ7mOTRTdlc8x3Wcc`^m zNZQpePhU<~7e-CQoWOdn5L8E(w-r>Y-T6LU_^=`Eg8Srd(P;V4O)f8Y^VTza+c9-p z&iTS(51_a~8zj6g8E*z$aim1zNF%UKhefy*Wf2zInr!T62vZ?Ucm#rqi^?&974%?t z7D_M51>TzZ-x|LvV+vQ?$+f5xkaR*FTHudWAsF4E)unBMhGP}YN6n}d&o02^rmZ=RU43JEtT`|(X|TzpMW^EJ;;W~y)1gS88zNvbWyiB z&hJhtVjhKVy{aX9wRe5EIKRT2rz$JYdqt$x=ROl}wfS$$dTYQNAOTH;Z7q$MI2*85 zR|x2y=t9!Itg(>Ou3~c(kH+Q-J{w?Mwrtjao0EEvrbH}^b)7Bh-FW(^5T-$bS}aTd zVFk*cKCVcq`}=1+J6M6(USa;8f-!5L5R#4v$3ihaq1H$orV1+x!`JU23|m@gq4;{S zP<$u4pk0bkMKwKYz+@Nos$VQeUw=|L8n6Tbw?FtSYV5eeGyhYTpdE$Ze8$>vm~eR) zd6_)L(6|LUw_1Oo;~|~@Z9Dfk#{ih6-hJAmft@S=IU>B@5#fCg1AN=}enOJG!;{Z% zDLnn>81R9|0LfvDO_pRaD%w-3#4n@hwE?fRE~N*x*<$`=KE*t-vxTc- zb(zwq(lWUcKZ|6`3WRL6k0@gzP{rx~Bm$<8NdBaP=JkIB&9b2RH0z#y0$YicEdJ2Z zX>|E%O(i~GQKIaQ2Ne1TrpwEdB!2z$N%Zpd?u+l9M*n!azyI=Y(RZ((K7A2A-v9Aw z^y}l6O=}Wd-!jUw_emU}gLIlxHJtHzUo$@5^rD`frKz_i3Ug}tc zCAwp1C)`x*Abc)}`?(FzYbjKhj}0N*h^hv5b2=X#05dNVip}D%F&gSfO)93jnv*o5 zQEPoYjanOiwjZvhCLz&2dbDoq!~EvzkJi(#yt-V7R|3`CSXc1OWTv_s>*+(UY6<K*s_VN=w4CteXud`#Kh%^Av>nUbOAD>Np2L8R$Wz%b1~a3ek!7B?(^J z%2ivxI?waT4?5(vznnQ7qb%ZUmxhz4$^={^yQWcE3(lyur35?4pwXUp>rF58km^=% zbunm29KHcpuUEYktZ0OB*XQw|6SBmcpbDVUsWE-(I!=%t$dG-VH!&UWWCbzY&0(Jd0>D`&tyUta zx*nQ~RY$lv#Xl(UGJ(0_2g?4ph_o-FM#einWxXC9hUO!k*GIFV0(Zlxi*CnoX1@H&JIn@e(#Tl zX;v=?1<7@z>_aDPBHUs=Ol-xJ2UERH+D`6GX`m^g{3#SR$>o0vPowwr%Ue_fMlU2n#yYutP%^uiO1xO7<=_BS80^RXS)^I@nOnuwRX> z=bziCQk6@Mtp+n|w@|B^tC%N&;+_`{Rglj@lCcd~03$Rbu?ee*=kpUL5!&qBKp3~|hV4QaOa;R4Aqy#laPIl#f-FEmf17{D>7qn* zf4{!+7kAty-&^v!HQ`ng!!+SOg?Id|F}}U4{3=raNx^W(0z|Z9^yP8s{d-uF3nN z;yRO@u499W==YreMepu?j()@7-saQ(NnaamlD{tJj{#ZVN62_=sFEriDFf2&`dCNV z;3B&$6fL1{G@1_ve2ySX&c&9OcoA!%8S@p4<(VDl0~5!mKVxfB5#}_iZHik!SSncu z<3;M5Z5129mSBL}qU4$!Vt^(Jj*lZAbzG81p=jCof0aREGj~ zys|-Cl3G-wqpuY4?Kcb0;Na!PU3#Yp7{Zo0$WLZ5RApPrMZQ!7P+WJC!6d=8_nq_% z!Q&&_!0I-Yf$h>#KXf0o^b+VJ-pg3FyMlXBb>Pq!4cWF6$G3`uU}DD9_P_yvvVSywOYuj$XVxAa)vtgwuain?)Ddh}@+n)A1xbrO3`~Yw4$Iyj@u3=F;xClUguYnumX5_rW%toGF_ITLT7%^)fxNQFPC9*)+%5{|yt9?) z*kQWn^;PuDA-t$mw(ajoTDbttP8<@F?nFb({{np7@j*(^5R@H>R0^33Ho4}9U*k$n3?b%-Uz+FPOf~610M6-sx+Xj1V;n^^VJ=m zDupk}{d8bUyMH?}2#_wK6;MI6ut^yGdAh{&8$S!KsSW6oa|M2QykN&$VaOQL5_c26 z=e6Nk%#Vf9S%|V+XKmZoDV@C&cP~q=&c2i}&pVCFt;`2*B4wDPh|8t}Hro>nwT-eM z#(xr5%gzZ{$gf4Rw z!v(VEAL(Sf@GL9X6K3)>2ITsr>K{&>qpJufzVrl);O)T{`8PW^VyH4@ky@kN?SM9| zS9}gLafE1bZ`o7OJNPm}CI3efs(DTsdvFc{tPv%P@welCk5Isw#I2NLqv5X1$91j@>Iy=7fshX2Nb(p<;4ZBp9dObHTeM{?uF<_HX{Gf=C=2HFM;6el<@08< zxw?pM?f#Z=X>Bnh852y&Uje{xz^|QV{{0wsRP={^OoarjVE@W2vYQn(2TP7g!niYV zLNb;4pA{8n?n?a7Y|)GF6$Jk3h-cfXYNUMAu)4JKXF902tN6gtt@uFa#e6UzvzBCh z{Bz!&xhM1E@pzzoKLa^X#Qk~)#Q6~}R*D6qE0zgZ0g1V8M_bIk7|(uCCW6}%#k!F( zwe!*{N>jtZ!Z$1qzxqVHO4~9f#)}Icl3}BANn|=$#-q#0_Dt3`4vtYN`rV0sd_$I6 z8RlW>MIK(1jk>r8EH$7kHK30lon8kV5RA&tFk5+%m0=2M-^)k9;6daqS@`h48Dk z)?1DB_4U@``u!1IrXn2o)z@Er`NgA#`wTi!c~`QmKVDxb6ve|wHBX)lbtlvntgfH> zFoInQbtn4C{(iRme18+YVoT{-QNW_4fzhLSim5JuYqiLEar2A1w+O4ZFui++R(~L} zp7vbucC-r1!bMs@VIUE(@1nN~xBsJ+x~)-NZKwQ1J7ifm^pOmkOF4e z^faHjRuI#3eLpA?Ym+j8w|K(NI50F|p>_vz*qxmN3@uAI!2sov7jTfPa%-646%W43 z{@OXn(7A=%;$EYvOc?|_oGYm#!&}gehVtZ~OVE1LVoI9V;7M!F=HJRYBRXY+t^%;Q zob-|5T!KU~=5+9!@DQ<)_;$xb@*b%xd8&VUHq+_jq7&j$Cfe;dOb&x6YT_%7gbG1h zNk=22Bu}#_Q#K+zRuVxqPA0jArEM|$1_z2$Zye_*V|8Z`94{4gLPEx}Jkd4Z%yiVR zO5qMpo8u|&UL~>V<$Q)$RisFIUKHpv^O_4cqE__(KnC1cUtjmL5Je~#Tt{zmyt~J= zInk56=uZ0_+Gg?RI*Oj)Mf%H0?ggo7;AgF2KH}@rk1Xrq3UUp`JOe~=Zo${*BRbck z=4Tcam&Gg}M%`&voP}`JpD%n0eEpCjsTHu;`&}f)Bp(crj1*@dQ+(}@Phs?v+F*Qo zJ*w3MP+Jdus9$~!uYc%|FrN^Xe8cD!Xt8l|1}qCCU~;UOjnRH-bg9O+5Ktd}SrRh^ zcU~BjG7}%M4<9&53bKe)qeY2`P z4wIrI?b&oCe&v|DnKPXtWrb;x(}JC)9c^BtTd=Q;<&6zjVkh^KR>aN-Lr^9qTbrnN zTib@TVU0wPB8%O9?r?e&lIEE%Wdrw0{Y9v~#0jzxFe=m^l~yJ6D%`oyU@YsLHtn6D z$&(V;#7U@JrP{m)Kh^Oj=&c^YDs;=V2?MK454E8206E=XVcdnOj*pyN`)WfdE7HPg zBz#?3RIN zpx}3i7;{kFURyKxP5AG~Ez0^sUnQx51m$EK%*k%ZAr&vsN_i76j2@9Los0rcm?r?X z%Am^@l-^9!i)`9kNfD>Y!hQ;MrG_P*bEu!1%DQmA9ua!xv@K6dCl@{1dbhTq?saqw|EYOSM`$=s z&q+N8qmkprz`zQ~rxfIWR2sU9t|zANYE|rwM=%UC zHAr)gID=H&wxevUznD^FqBT1Mv?tRsbZKa2!J9mf_OImHSLQ@FY;}S&pEP*14#d1B z@=W1)nPu{)ykxZx#5NN>+rjpm*M@ zs#q4m(~%XYE5cQT&s|QnV7v-OWl=KN_e%u3I0@`+uQUU(Cv2^-!MEcnt{*y+(##ey zSpsGrbSj2bDaO!(`AAV7-p3DL#mLihNfq?3EdAG|!?*%vXX~ml25#k`e=9$8?V7Jb zLpWu9*M!wv(%-w2w{T5wAARC@?V&eiKXAOW+>CsCsyi^3=Euh{{2%8yoo8mHJj9%4p8XMPauWGqyYdbxq87N(#E4e5f z&EZx7#GV?-+k_A^BA2?aR%RC;F<_Y6hoEs#RKFtv4KK6|GI1BVZ`$OiF+zhuZF)a)h7G z$MYfz_-B8kg>{(Q$_fy@#*YUa4S~J0FA@6QRW0lN3_O3Nh+MnT0F4v$VsB?)e*@<( zGLX5+mS(GatmD|^>+DOEpb32kY7g)Vp-EBBDJ_#^#4Mj9CGgf`lmitU(`=6X;Al>& z+l`hsTjk`_o1$eQ2}H&1yK41n*2?d1o5^}>;{h;= z)eZU3XN23>j$>3|sp(V^(OVI(Vy!y+t&V(Uefk@8r%J{?7&(;9MFLR<3QqGe%^R>3 z@iI@j8*JW3$v3IJTACzB;LSb80|C~j(gc)n~#+E^>rYas~!hojYxu{ zLZ#B@Q_-w#a6Vc%B37Wl!ghOO|FPR_ZVHk#q*L1(YpQTO8mL@BNtiWySV3%mBrfb< zSr3n!8|pGXv~DmrawRX?d-^?IabZtKV8azgGI-;Us$QyojRl3gIv;h-J7M7t6Q@6f z)!U;%M+jvWk9FPfJ13(kOOMmm`Z^{b)O`Mg9N;qib4)wU`ntQ(cu4S2EkxzRaB2I< zd_bTcLUt*8FH2t~^Xd2H0lYZu>mxhopI~}~_n7jTarbibS(^fH^4OKiVZX%Z}&hS*8pI zi|#a=a9kXvA!pFt@nAk2Y2lDm@Pv0CZ7>*c<*NI)_c0!jG3qh7=|IK#6sjE0r-N(~ zhtdAc;(gswR#PI?6l&cEXf#WD^O796q6aUVU{$m!yrL~Qf}|ous+mix%a-85q;hq1 ze8SgCcAwA24Zb#s@D%SH_SMx|5SZ;l$f>t110$@(eZ$;cz!(sV9;}Ug&?A!K`i)?z zPWzZb9xbcpvkBjE;Hz*;+Tr=AUT(?3C@ZLU8mExWo9{ZUG5~pw(>kXTezCI_f2oN} zT%D$_yTQD-bGB%OUIf|+B_y)dC=Wfx#<&9_hi%b zMCW3{M~X?hHOqj?2*DCx>rIsbotZOA=A~=I=<9e5SntUszL(WEY6_cZI{KJ zrk}z)+?{fepYR4Pw<2=DX^3)QjL#__#(F@9NE(e%Nv{rj5zF)K^|CfvTts2Pv_C4f zEP$|TlR?$B1#u;w+uI>K7}LWx0!8PcjvVyA^=D@SKBVd5GUTKYPgWLz zX`$ocT}!5#d(q9d((49XsRLqTF`iFJ?-6GpEvHd8?Fn(}qFS1~=yk9on1}2FB}oy) zf>VTE^h#U5uHy&^jDaf|-hrOX&|^R!s;0t2NF8N+^QqQiQ-l_H^D`=ASu%Gtli6jI z0X(*dX|TJ6R%5|&0u%jUogrN!DVr%pMV2s1-QEav+lrYfiJ8>|*r*_YDd>qEnMn_L zY`%5Px1Ll@$}?lvd7I$&NavgVE9b0w6I3gH*g?+;*q~L0)t4Yz(`3U|4K80I=W*j8 z7zF<|%}7eXg&;jrij-nuj*9tIWiO&^tr$%N)pIzWqweDUojW_sXJ_Ny9@Ht_c_Sdw zUIK3cf($zu`f4SjMxX*+P>aiPZW7< zN2&Bf=6T5Y4;zSe`d;h_RLf_j`@CT1|NFnN0^V2U@_=eD%^Zfa%o3N4LGJcxMNX7CAAM=T|(O4HO4&*qQ$M zm5PPi;RV~lr#C5-rRF-YD#-Ya9w|*+hc#?B^|*Pn2*>Ui`SJ`;HS8S~MsaH^zHuUG zGw)Y^qr728Wb1UP%wA1sj8c;{vI|331em{l`9J;;N@Xt22u#A(>CMrA41~~5m#lA? z92Kh58lSO&AEI4Zf>TOAQuXTYE^*Pr$!|}i7iGmm7>@v7F1!HUgY(|cMN|xW_#gb~ z0po%{KcB?ajCyCsOrVPX(?o*vOC@yR*z0MOv{ey0>r7s8h5Al!x5z@(7;kM4jQCIojC2{sGe+aaAN2r#6&Oo0;)0KnSXUt#@CMV zT^P^Y-Wc93N~pryx*yb%mi|JDxGm6(36KGvhmtXnkwlpozuM6$&kIG1U9CYQD?m|s zVr)-TBflaexC8%>P6y-TY!IF01CR&`dWbXARmYp~Ch%}OPUBSNQp-If1~ciuCvd`> zKC=+{PGx-JIIuSq=T`Enwi_S;6XdiCg93tNayHU=%1XSb2d3RU5lf(cE_W}@riz*N~kbqia#s7%2K?xz+i=!b2j3B!86u{MYK^P zG700PxQKUhR&av=&1p-4t}g`6JfSCn z=Ka8Klj*oO?;;sTrr)e|TCjMX(XL**wT&n{j=H@lKdIRZ*o+r$uN<{Yc^{BHMj9NE zw>tU~$Fzeg#~7*dGL?X8t@Rqb>Y;4LY8>e2hW4&tTOvCqwkCtx8Gz(IaT_vB8*6d(<$=iw}QzZtSH9=F$ zO=}5==Jlv%B1-9CQZ-;xHN#~)Cj(@4qhwzX8_U3&xTL+r*}Y%sz|v1c_Z0v}dr6o! z`f?P*idUVwx$pK?+43UB#1UUj^SAx+yl_&uF5eGEC1%wxXkAb9E;>$W@4A!eSlP2s zR3c`rnicoam|>z25CBsRk$5Hgs}+`pSyV&&hiq0;df#&WCOHD?`!L5Xiwq9JhB!qI zf*>CLgLI*qqBIp!lbE5R?Khf!GaR*l^|jqCDl%G|t@wt8Rn&3Ola2TW(0!bDGj;^) z7bezJrcd0egUU-O6*i~V&Qx<_-3$_!zpuwPR;;B4l$CieFEG$>N}A!lE2rDEZ>efe z#yZ6j79_C}1o87J?ofK?BFn~}uVRFOs$zPROVaxvj9=4W=F>9E!#JcBcXxDi7rGO} z7J(hkO1D0h-pFc6MYB>i0sWa_5fmTw>YJ%370yMzhXL|nJ$Gg^4h}S9H9dk^wtNW& zId^HYFm>@cd&6e_r zZ!Gnt9E~EGb0EJLVYp+;XCi%u@1=NN2qkas;m; zc(HLy#zPc4&~Y#qFMC=Xuz<*k9?ls>&K1j06?Juil^6=}JEzWP+Y-4D|EoxFy>72A z1S^odB-o1(H;Mib45^bB-E5M-hNH*3*V*V)Il3B+?45rBhE#+JNb%o_&FH6wkjE&n z#WX&Ihq1iE!ONv4G&Vr%`fl1eE(Td~wx%7p-S_d~C{CyNx8n7TUe98;FUq;i$d4dx zzdT7$Lqt?B@&PPC9qwaZa8F%Fh5+0BW!~?e8@7r%sGN@L!UaB3+fu>nc$l5%c#P#_ zAU(B=2V)>5H}PxvYgH>Y&YL#4pzWPr9m(5X{ckBG7xeFNAhOaX?;UJyFrA(~m! zbbE$P+_1a)F*HQZisR`p<2y^P8w!Mqq=J7k9pVETX2%SvveaFr4WT<84Dzmy3Zbg$ zG6t>yRzRu0CVn_9Y9m5VS&G(as-m($*D_%An7Lp`frwBtI@V*5;$i>SjE^eBwomgB zSug>$tFIWL5yBsqq`;C^FF_U(-fq_Xj^foi+$&khTab;vlWi*fVuT@DGg>2d{#v^SL zOU2g&Zfo>NDB9^h%&X`I4vZfIpw>nd?e1=GJcu4|ZSU^F_np?pg1fPHyY?8>0^4NF zzQJaSySwJm#shvtg|_GsycMN(bVXmQfTN{`Q;N(*j?wec3^-DU@hm;wjIt)#7bYY( zADbVJq*9Q#id)YVZBhi90(a`f0CNCLgwLk-Cf-vRDvlG@1yrF-sIG#dL~SWb1{KAt zFNeqDfed%;9?6Lvhoj8ds#vI5On@60fn*Q>6FtYKL8u8s8IS|d%-qv@bOLz?Z$gSD zeo5lzDvo|OJ)M&sKSp=K^+raT>_Mmb;xy{3mg7{ec>cV(9L=(Ke`D}y5e|abAb*<= zwm0gABxIApsFpR=FUFi@)9{5pbZ1>_a50QmKiZ;$n*vd9$g^8_PBAg~Rl6?^Zn!1< zoU)^qW87&9ueCOh0tTLmo>qy92?A}@OVL2^gSLVe+RtmPfVE&Cq8ANt!c#H<;MyPU zz1vXln;c*!>8HMbn@cS(1W5&^fum(#Me1@!*6esF5a@kNR0Ls)tuc5a$BmshjpA$N zj25*WX-o-XmqR}E!WRl3#{D~roFKHJNC9%5Y;WT)?e(UghG?v&B4Ln3arQF&Y`pM;N1vgj0qLQY#(}@LywSXs^K1QcNz2R*w(sF`qSF)q9QbWY>UFOnHFptN*Lcpu!sMQo1?>=KnJ+g zJu}8kdZR)m5pM|6NX)2-)DcES*U&qPfu?$>b`&#T_{(!IkKNvt9+De-Y$BtELirqP zEl$yD_yBmolhlsbnb;^(90ySqEc^xJOw@uv4HDqZuR@rf5%|dfy zIv$qd?f^aBj8UEr>GgG=$);`p%A3HpFNJd#K!dF=Y|L!4eM~WgCWi(>t)nD22O}lg zB1%~9BI83Vg2&kd7>>1lrUa{OLl%1TOwlqn)_0qzt&FygcOsAgd(l>Z2Z^+GzrPc0 z-G`?m+&~6QIT;&_9M&n8OA;T)Y1}Ubal?cGaG2~4#sz7nP<4vy=^#5T5~%B)3s9oL zqngJZ7z)Y)oaKYT;V!Dac~EF`Kv=Fm3OZd!3yaEaqE<-)*K``R1cj>sY@TRqk=~QEzMw-D-u& zMoQI{@_u*Jb8j(W%Nf~`0@)9RK{Qz8j9H@w88nq|2nkm&q#R4bRrX3VUP;_3a%stX ztKD*w%Sui`Ih5%yGj84(frrt^@t#1LE9uHXIn4wErUlF?vtF-oqlvkk*WQT$zKJEyzt<#nN)t!eyp&vF&l*$cF%+4p0PR*fP{UtSauJ2tz{ z-qqH@?&F;so3%;rF4?8oIgnd;o3RNMMUA81>p^x5d-Lu5ee^5b68QGKKXPUTyWGgj zfx*v3@1(WyU~pdae*T%io&WrEYhz=hw2d%FC%_AY{B@Mr5h_TpkECGUZhwWZxFLAi z^4_-iHM9;dHy)I34yYsJl{h-_bNAX(MMYs4&~G!}4DU^1nhf+?l~WwQ9JovYAfBwW zMt3+^d8HG*@Zx==mfjotOO_XfY#nYv*YR2~MPj0l(qr~su{RLS+eqC{r+Ag! zK5E=+{$=f_Z^7bqt;LJM&PV<3*)-ACpv?gXI+)fD*WcCZY3mDeZPQJ@?9R$fLTg{%ww-os^Ctyclm2Y)xUJG^5Uw0>FC6;ei{-w9bvwM5efTb+6H|sj7^o5BUFukq0ep^ z<|<&gHkl!wv`~+xQxb$Dx*A<;;k1l^v31&3k8>+V7$~M8`)Z`@YI*_-l6Ep0MLi-b#>#E{T7w4iS+^<4d8s^=O!5;0ifiTl z@%*wzR|*JXxA9L{I-S3Gpv-db=!s{~LX*vCqHhkx9rwfwlR`Il}_Qr!`RCO+3Cwk?;ukLdk|9w^lP4i#o{i$&8qg18JPe{4$s?d1ODS?z-Udt4e zKcDtbE)g?W`jnz)gi(*1F9QjLce6y|}*{z1S@a zLz12_I%myM=G+e{bE#402N<>AtnffFJYC1j2OAIJB=Io9_TgXSc?r+)hyj0~LHgz& zHgs|)=Sb03V}4}k13K;h6;s@LhO_>3aDq8-SXZcus|OS0GS9;c%!0)Ubp~}a11}n} zJIG{>8rp}+{%JNBw|~UdP-L=Rmy)#?;|sl||BdwKlz(YHjh^%iJpRHos~P&PSln~g zL%B;*l(H+M;JuJWi#rhvFu~yKpP=6>l#VN=nmPb9T4r{cM93J1HjVCOB5=bZmse-5 z9iz6MqkU%-5_hIjiJ@M~xU!R@f!qeks;l{&_w}sT)5lkC6fvPm#p?Lf-l?CkfxFER z#y3BvVYD8#(DZFa!2zGF#$RQi&I&g52MMd=rR>%|*p=C%p?n(QNzDi|od23NYc}YV znnskt8p&c^RyiOi8qon9fAK}i>QZ_6W)y1HxvPad*vY!3`sc<+ak{xeKg-~n z)A{HiFJ?tj%6PxN9<^H0#zvH7(X(gKdKRtsqE_Y>f?C1rcDkVq1g~9~$(t%kENxE> zy!rx+hnLYg(5(k6pYIgU#!mJYi|_&+*+L9w{n;Q7V;G24V+;Wn;5@SI;KE@CJ;M%Q zb@pf*1;_uTh!6DzDy(B09#+ekBvu<;2S=D z06)HP`0_Hkw`)KA123xo_xX$Op1k}4zdn2Unk<6x&-X81zj^AqWq%r~w24(eFX+su znD5Jz=%vGaqaP6NcN*>+hWq%EwbpL{E>!skz%2)3piIZ*`w#7kj2sT9(?~OFzLQwyOZ5bz_VD-~RfUSdUY^kl$`&S!`epc4 zZa!>%4$#yz<6=VCr{D16fAdS+3`{qS`v)G`uus98N*{1jPEvS;!HQHo6|p0v^bc;a zYjLNsDQ;L3K|KND|I~$1?|AT6DK)B_0^d2!k!Qu$g7k*5k|t^K7AZ3s`y_^c>GxrI z^^>WOu=G)SRM|)m5ihoF^&(w=m!BE}Xa{eVu?XF&&s?U!4R85})nz625b?MBqc z(&YuqMsvw*_#@2+((*DPb%dhMK9KUhpe5@3cVZ*zS<q?8Gaquj6K% z#t|S+A|Or)c8aNs3$3lY#SZF-RNXSR`fHggquvKLeLvW??(B@3SMOZ3Lhsaut!k&H ztW_7f)0SvOyEFzFfu8iL|%jg zJyRMKyww@0@5}A7lu>nUYu4Mr<%s#R$B{DN-U11DnxAaPXS3O4^ZtFaOE)k2=Y4J; zILk2JF>ki+XFCzT1(}OkIuE>cV_LpsAiq+jL$nr8d`|-G;}yb46!KL9%zWJ)d86?d&=88ayXUV zcx!iu=0`H56W42W0L^aq6I2Kp<~ zQ*5O2WM#*su@fyB|FD+F3TcrRZ$u7hz5M?E=~mz0S6zG*hFJ{+m#0N|Ux=>$5|UQ% z`&V+NRoE;CsG&XenHac+O_a%m4p!;CdpJ{Y$6Q1h$|wt6RH<|Qy9_L&llBm!Fs8+Y zPA$$LjfP!}%Z<7a^!j+yM5AVS?qGex?(Kla$tC%GE3>Lub}CxP^tDP)Sl+7;!Kjs@ zMCvCrQ*;0g4n&MM3xu`0uwxqAN}>^QuZqYiuStpoF#p$2ec|bkk9+4qwRQ#X7h1fdVOmj z^jzh;=R`AVpzhtfG0EstzA3>(QBG&fg=!YPx}2TKXvlPqK(pRn#LgfZpL_SNVmesE zhP?+T!SOJkqB9|(3C|eMn;VOx2|0*OHrUXN*s|$m5+(7dXl*iF0A>K!Q+l38> z27QFU=r8^NsSz~0AX+G&^xp~VW{$y<>p(E5jBG|WiYtRw114UPVR_u`#a^e|eFTG9H}{W1`zbT&DI;^~8E1O98Jt*Qz;q%u3hZE;MM zg9QW6?1i2uFcRZP(}ULvQ^aYsgOA8% z>TUVl=I#}Os8Xei544P902)yTvAd2`&+6L3$dzpf!dag6*tgpNbVVGT8e#iMQD0u@ zyVSlTcJ@r?uBG)ox?D!XP*4-$uc%20kUCUxb#hiL7$>X{($13CG;%8v<6BE%4RTci z+uD-8Wns=NH91+uL-WY4F;Cn;>u!)p1WX(RR3GAFlN#02aF{YmifLlLz(V^K=(p|U zJblYbWcWgn#PH2gSsPsn(tn~h2RuBcnK|Wa5M|GGU07>SX19vcMENCjhGn(~(W@B) zhH2pC2vHWb&$gqAxy9yXgil*TI>Pd%@~zOcsA0r-;)={{IDovia>HM6-d?PC_dkiD zc?sdvqU%M5LbZ8S*SD1~X5xs$>{CwL>4+LL`{#D8R+5O{poIy=@5RltP^MLSi?#CK z4U0-<4DqU#7!7B5Y0!m?ntT0|lYSSSAdXdBH?zBwxtJqB;dEjd>o?d)35(TtQd9hP zTj}S6**Eax^V8WkdRrw(zs|NFnjlii{iqs@Ouhoz>yPCak# zKYe!Ka60|s_4Dt(KM3%^{s;~=FO)q{LgpDy$!~c)*{3AJ132ezTSxz-2Iq>Y`>bB8 zS4Por4EMD0H*iE?6T=~v$>lCe%FVS>C5pC5FfO^)#SK*m9&B>{FG}CU= z!!gPuS<&yBwAWezJc84;9$0|FlOJ8-bT$p8X+XC_tdnEz?7*-@6#K?Y!zXZ3)BYO< zKu~d;7ikf6rDQzeg*ciI5Ax{{8mHO14|A86v`Tc${JNg9ho0qh*a;oOouUAQ@(T$4 zH}&Kj$y#wrn5l1bmRRGj<6Pgxvw>QsT~{11$P85%5SIt3KrB-v!2Vy1-Rp6Mn*@br zEJIKh@p^P0kbP?*2q2rKLFQP3*cd(L7LfdUAQKc>WsA_oRtg&dGK&Xw0oxr5-GWMK zfC`zjoUU3Vb)l4_8lw;vV--_IFrieWT{pwla6In$W8LERt{g^xqv8U|ZQ-UV&=*t3 zOpvlZSL39#y0U4PXY0%~4l%_%OT2+}+oCBj%xQ2G-yRS9GqeHuM!Sc~8qVypfgAK( znwnLs?IerTL_9~eFq~01RGvdi;6m)X;YmXGPDb^cDDhdGTS~aH;D+fkBI7_xPQSSK zNJcNBf;!u*06AR@l6SGCFzXDn^4M@kMc6T$3Q`cbal@LMPGJ@R^92T~BYtRQ^t4ZD zA-&Y;*2=VGeS_hk@}9OswN(I=GCV0&fvpgjIh?+xLYNhr0K`tqp{`t`@wnFDy=Z1_ z_h(XTphqooDzT{QUZsT1@oV>@`zRD`*y6a{s!Fd#jTK5C1qFB8!v$87kJcXC`@(A* zp4I(_jg3a5)pDN!FkrlM4AeZFaMa;SN!n|t-F}otwKb^U1{Pnt2VcH8I&v%(OK7xh zr3Xj0lC0xn2~}utHn2Q?;h(M6QOU!Z6K{Ai!qK!?`B@sN;TmI!PRLag>#Xs5Qx!O` zI5M>-Brc2alPo33^N8BBDOF(VZPyd@;7Bx}wJ5>NDrvpm-h3z=w{d4uc2#h=pr3fQ z&|BsS&4J5k3${BxSllg2#l-s4<+ryZKbs)Dvl}rbfTFEvqy!K03EHSs2a)!L64fO! z@9?yzZrkl$YkvZK+1u-5PnpF4S{l*@S)#ZdLw4>b(=iqvnuc|U5Z;cxz3nW(fErH| zE|g$G1|oT;a*{s2Ow8FDU#@s3Tyzz&N@)ryvZz5JG!D-Ap{mi#)bl>*qOZPs zwkqbfM!6H*k;;7KOR!p76%|` zY`gGr*YjC0C*VSuwH>}e zSS4Z8q<&?!NZ$FS>>2?=54zgWNlD#6IW;geu-4J^rsK&(r%yVWWBf~KdXS^BiFVj< z&F_V=u!_M_i<56R+dsvJqr>Up;n6kxisL%|b9hK^-W^@PlObX1_4>V9eXSPPN>OZ_ z*b}|+9M6qpOiF@aak>PRxJC`u1S+-KGF0OFT3m}4qoQJ6SX6%bR3y2sWGWxEj}HE< zQc``y>lUBz7@J|-%S+wu>?gH3nU@Ew{Y7i4zL!rWHa88dVx_=Y9Q$xPPGV&*4d3gO zmYUqkC>?DY+3<7Qp_XqEc7dBFKI29{37B~@Fp(@d0W_%qpcrWnRi$64FH}pb5RVPh zj13sVzJCHQsj`6vZ|dK;R}Vq`t!YWcqHGvj)m2-n-?}B``B&0Lk=X@_a>~lpA-ZT2 z2UqB}>?j9d;yb!O518Z1A+pfrOtIQ7^1PPNm57B`4*i~r0HczCQ}?t9Wm>u&5J1=i zI-3wjMKe$v^;RSw(jbrX*+rg@1l|nL$=YoK>w0GOKPp?py(>$v8z<|By5W&}Su*TH zg{lguXKvJpmUtuQ&lVj>gYyz2g9ZAI&F4xNLElD7La z#c;LC8g>W++Glm7?GkgbY(zWW%c(UTmN}$Ev?Cp062^Pqof~Z2NQa72raRVtGo^b< zGe@C-QPmu&DQvF~^e`+;rj7y8)rGqX<3YzCOs4_lp3XR+J`yrI8H`~Nm_a*63VCc6SEddow{4)>JHEvgc z-G8Yc*ISmgLnEEy2S1wwJY?8zNtC;MB+@e>!|x?b~(uR zc&^o5upOh;-i|zklNkTT^-5P^)uALNzsta4&KlNb;9BczKEz#w7y?*H8i(-6Sa2j!LJ?!?#(lQq7B+~9?KZ`>!H#t6NJp^fi`bm(2BSP~* zVeS39^r<>h(TPtt_Df=3=+D1&=utgy*X$z`pZ?bK=ub6s0)+f`B+9Bfz!IaiF{ZTs zQL|nar8Oztvle+gip;m=d)ZayzE-9wrK_=QumdCWwFq$6RQ1{*=lII&F|3M%aho>% zW)`#qMQz41bylXkTuZqc?9X~LQng)kccnmNJ5Cfx^WNjZxO<))S){J#BxUnpzfgNdrIP5nIaBe{j8(f5M@h zpsPKw7;{u%%JZvA(;3&>uF+9^k{e4W6KRu)%FS7og{7o65mZjD7*h!iiP&p)n2oa2 z+#wR>$8+0G%t6;+h!Gs0%K=c#u=X zHq!R@In^_nvGI`UC2#4HUyeCovD-SSQsz@MNMeh~Zzw`B(1hKyDc~-F9G|d76xn9l zDdCaGPn@i$#x6S~OZ1ek1LF&zikmY<>|MDNW?{Haie2ZOg>Z@OCcnC3-mYUkLy3Xc z*X5({;L+}eQ^o!D!2WvdHum^&lBLIK*KP6fW2Z?jxSROW=kamYDm~dKJrS+%*{@Gr zL}1AelXvN5>3)WCnVg;$K2_Amx`yJ1h$)ZXat&=qZJ7(Tm<_!R!qZ={378vr$SN?T zTLBzyp1{c-H}<%P;SSa$1ak+88eVZokK9wbtx>0)1NFf4?`G_^rPUNJGsga;p`~Xq zJTZzBi}IR)=#XHllWcf9s0K$4=^CEXTd$jLFBxoIb+BG)Z)+<`4ESqF#%mGUR@8&> zhb?%>a#aYMZNx@3>y17(W@vLQK{+iubQz9&^MTP6S@{hCIt9s;^kAAJ4Mimk!l&y>t2j9B!bGb%=6o2sPyTM#5qXO!kZdF$h%~(muLV~3kx8> zVw90jnQw%?--A7;q1uzB9YO{c?9w~@bGce?Oec`z*I$+wh4zu32nji6_bl(8 zzsmC|@9*UZh^RS0)fVMHu5T()Pbm53)4ee+aEjoaN_K}T4u1RDw&XYMM(e1opHM}2 zmXySg@Bn=V3uEB9f%ZY*In4%I?eFVD7rD8jKlTKu5dj9%ORM-bqlEH_D6S=R_xs7XV`DAcjdb4GtluLa{XGhUo zb;&UT5v0X*Wrh$h_8kW8B-F8KfjBjHd^p2!UOKt3Nr?LV#gnHm(4j3+d46CosYqnx z&LeSUU1K2ny5rT;r>`R~b5IG6UAh8}hVY|CY7qoI`l9}iFI-Ie`aCC7oD7wLiB9vP zxA7PICH=#le@Vlq@>!`=K~Zxp5_%7&hnA6oKwKn9c3={O&(gQ)!UrOv5GWVcHzO)p z5?;~h>F1uU8Cg3IiAf`(Kt7SWk?OgBPm=f)&QP$thm&Y@TyWg@D4UFnSclb1Ydc$?NAY2eAn_p+ zF=22fg;VYGFHo%5LWXSD*8B$3VQ zX-=Vbid{s5hC zU;yNGU%+ze{^32c9=dmQjo&`IPgX-X9{27`JFPvy>T+OkL|Vrhs&G|=WA*)eQM1{M z?%ls3J2E7OZC*FK^;x6QJ}eI39Nqi2(b$m#OO#*U3__rWpgOmN365W$;Mx@pHK8}< z>~gj>tV9|Is74d$c<=_fKpExx_sQ1kaCF`N>2P#}WU^rH-(Q6?_X*(y!`Q=Ct6Hry z_T9JFVNT8U3t5p*&{#z|Iac$4RoK+NNeZj#U~t(X7)Fjgn`$`f8dhM^>q>g<)#p#2aFGP(ywSc~anW zH*<@Z42!X2qn`uzB9M0vy_Exk6QGWP-9gRnjW&_J0~{EQZ8?A{XAY8D*@m)BqDXEH zjO3<*y^xJAyn^lKf^*iwprOaRcJl43Fry}91dJNh^bss8>Zc5lFjIROwBKMS^q?si zM`@(ItE1@W`Eb%OAr#dv*~7}?$xw)&;A<)!T<#{mI*hrN>|3<1g%Ei_`NrFTeU?y#>X3FdG1cVvN7hN+{o9 z2Wx&c>ko71Ej|!v?qB`*RL`@3OhE$X4wz_VEmki zLqtw=UOz+AvZ|L)G7Mc*{SN!(y{D^18?w`R=VS(OUwNVT7bWJcusd7e0DFhRx}jMS zC5A%91XW3GQbiS#5Dxs)F|ZpnxI_~f7mlaQ2i!|f)=EzvG+Pf_kG^&ve$iat$TuE% z;PXby)5-e@S4w?9`AD573&THrZ$+M>g*`@-BkpCfq)*SD-Im}}UTzE9*Mg|6y%<+@swpBjv8y+pX6&vW%p*N~Ky|nw#=hUs#d}iu%S* z+KAaw?9zeEu)dL*dpgbuMeS1O)xLIa2sKP%m~58T%6l}dCZA|mtUA%Mm+sHx`s1UU zdRtC4;#10ED9%`Pwjg{8z6#*bF1k(46bh9LP++wr5g{XoYpfDMCvTrk+qVEgY&7fT z-Tp8etbn2$rp9V1YVEbg(YJ@aHOIfv>G;PXr*4@eeXEnY$ux~EF2G)|dAuiadlI;u za3&|In(m{n_LlVoIdto>?WcZ}4ZP#O=xMLdK3SOOdK4HUp5kVe7!eK5a6ubL$_09V zhPPfuesSa~q>iD~wLj$Ia>0D5HEQxs3XL^X{ZRi&vq3yq!E6L5;}mdoS~dN!VOpuB z74xA)EtgiVIO!3rm=6toXj3mw_QU33?_SN(sG7}x!E}G-a<|H*Nyrj+8>4Wce2?&? z9U6SKK$SWnfNj#wpC0KS*Mz(CsQzueqAx0mMOl0C$vWu{XQ1UJWVjOJZmA!A>a2a}ACF}u7i#=O8c0Gmi@DJn`kETkW zlgwb}kG7((bdzeQ@yG(5Jb@4ORL)1y4c-Ss-SB|v%bO%Hy4OJju0xb?=d5V7@`atu zU)afv-n%J#@}_pb$NjtRtU{rhu9(joH%WW5**L0u55L_!Y`Kr>SMJRJVRx^DrFa&- zd$%e6A0;Nh>sj_T$7p)QIhr-$qHfpW|DbVpzsp_${D=&iq=Gm(8P2xjyZ>n19X9Uv zVrfNWm=S&giKQmX&pN1D*U=^Hc}FYUoA^Z@G0AP9h#Er80|L|#4c#fI@JzXRtMH-d zo}fWNBNP1Mgi0{ox^c8%0hKk;24Lw}l;uE{;<7+pvsKhCg{>*ySxNf)&O$0Sx`8H5 zT;tZ)Uw;h;=Ej4T<3(Inf8nR?&^f`nDV*BV=s`=LuuH>C^W*KTb22Jhy5Yx7-mE{$ zu%a{=35xM4j$oZ}@SW;79kX>{!p-~bEfQKpgOrjrzjd;fD|EOYw^cKE>joDZ6-q;FsTGkvLslZNbb|S}xRdaLLTxW5LiERV

    !X+1JgP;!W+aQf}5t;;-{?i}`DudBlz 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 IhJStge^sd!k^lez diff --git a/venv/share/python-wheels/pyparsing-2.4.7-py2.py3-none-any.whl b/venv/share/python-wheels/pyparsing-2.4.7-py2.py3-none-any.whl deleted file mode 100644 index 9dbd8f99a8d9d1b793785eb8ea9a77e56535ebd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72626 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

    jN;Hl5_CA@In;Y1+&W3 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 z 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 HU$6cL(vW!< diff --git a/venv/share/python-wheels/resolvelib-0.5.4-py2.py3-none-any.whl b/venv/share/python-wheels/resolvelib-0.5.4-py2.py3-none-any.whl deleted file mode 100644 index f4a8ac2ca5f7db96c9efb4527d540ab1f84d9ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17707 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 diff --git a/venv/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl b/venv/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl deleted file mode 100644 index 6220a531e41109070bc9f0df914f9c660e3625f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11776 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 diff --git a/venv/share/python-wheels/setuptools-44.1.1-py2.py3-none-any.whl b/venv/share/python-wheels/setuptools-44.1.1-py2.py3-none-any.whl deleted file mode 100644 index 5e86760e88483d1324b38929203adc3c6de001f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473123 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

    !X+1JgP;!W+aQf}5t;;-{?i}`DudBlz*uY0H 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

    qB28 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

    >@XOM3Mbv*4+`g>sBi6Q^ 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%0Dd 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

    8t3C=_V%v6a7>c1|67*kX_V=#;Z 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 z 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 LkG@I)-vs>+1^{+9 diff --git a/venv/share/python-wheels/six-1.16.0-py2.py3-none-any.whl b/venv/share/python-wheels/six-1.16.0-py2.py3-none-any.whl deleted file mode 100644 index e84355959366631d01facb65d9a5c4b393b7d0b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15791 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 z 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

    fUHAYOk(vI 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

    ~8b{_gcY7XwT) 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 YNrL_(7W*TC1{I(T6ac`<;UAy=4}8TfdH?_b diff --git a/venv/vercel.json b/venv/vercel.json deleted file mode 100644 index 21f3c25..0000000 --- a/venv/vercel.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": 2, - "builds": [ - { - "src": "./index.py", - "use": "@vercel/python" - } - ], - "routes": [ - { - "src": "/(.*)", - "dest": "/" - } - ] -}

    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 z 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 z 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%0D(-|d4ev*;#QfHo;5)Q?z|Mr*2E;`P;}WCmx&k> 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%0D>n*>5rXVVLO1E(edHVV=AHzfrN~W5uVq3? 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 diff --git a/venv/share/python-wheels/html5lib-1.1-py2.py3-none-any.whl b/venv/share/python-wheels/html5lib-1.1-py2.py3-none-any.whl deleted file mode 100644 index bc7f105c890f54f7c239a9fd1f7a6b95f1a7455d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116071 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