From a0daf854e5aa1fe2e3ed9a3bcb2bdcdb3aa3071a Mon Sep 17 00:00:00 2001 From: Rahul Date: Mon, 15 Jul 2019 02:27:46 +0530 Subject: [PATCH] database connected --- week-0/day-3/my_todo_app/todo_app/__init__.py | 102 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2770 bytes week-0/day-3/my_todo_app/todo_app/db.py | 0 .../my_todo_app/todo_app/templates/404.html | 3 + .../todo_app/templates/add_todo.html | 16 + .../todo_app/templates/todo_query.html | 18 + .../todo_app/templates/todo_view.html | 26 + week-0/day-3/my_todo_app/venv/bin/activate | 76 + .../day-3/my_todo_app/venv/bin/activate.csh | 37 + .../day-3/my_todo_app/venv/bin/activate.fish | 75 + .../day-3/my_todo_app/venv/bin/easy_install | 11 + .../my_todo_app/venv/bin/easy_install-3.6 | 11 + week-0/day-3/my_todo_app/venv/bin/flask | 11 + week-0/day-3/my_todo_app/venv/bin/pip | 11 + week-0/day-3/my_todo_app/venv/bin/pip3 | 11 + week-0/day-3/my_todo_app/venv/bin/pip3.6 | 11 + week-0/day-3/my_todo_app/venv/bin/python | 1 + week-0/day-3/my_todo_app/venv/bin/python3 | 1 + .../Click-7.0.dist-info/INSTALLER | 1 + .../Click-7.0.dist-info/LICENSE.txt | 39 + .../Click-7.0.dist-info/METADATA | 121 + .../site-packages/Click-7.0.dist-info/RECORD | 40 + .../site-packages/Click-7.0.dist-info/WHEEL | 6 + .../Click-7.0.dist-info/top_level.txt | 1 + .../Flask-1.1.1.dist-info/INSTALLER | 1 + .../Flask-1.1.1.dist-info/LICENSE.rst | 28 + .../Flask-1.1.1.dist-info/METADATA | 134 + .../Flask-1.1.1.dist-info/RECORD | 48 + .../site-packages/Flask-1.1.1.dist-info/WHEEL | 6 + .../Flask-1.1.1.dist-info/entry_points.txt | 3 + .../Flask-1.1.1.dist-info/top_level.txt | 1 + .../Flask_MySQLdb-0.2.0.egg-info/PKG-INFO | 24 + .../Flask_MySQLdb-0.2.0.egg-info/SOURCES.txt | 10 + .../dependency_links.txt | 1 + .../installed-files.txt | 9 + .../Flask_MySQLdb-0.2.0.egg-info/not-zip-safe | 1 + .../Flask_MySQLdb-0.2.0.egg-info/pbr.json | 1 + .../Flask_MySQLdb-0.2.0.egg-info/requires.txt | 2 + .../top_level.txt | 1 + .../Jinja2-2.10.1.dist-info/INSTALLER | 1 + .../Jinja2-2.10.1.dist-info/LICENSE | 31 + .../Jinja2-2.10.1.dist-info/METADATA | 67 + .../Jinja2-2.10.1.dist-info/RECORD | 61 + .../Jinja2-2.10.1.dist-info/WHEEL | 6 + .../Jinja2-2.10.1.dist-info/entry_points.txt | 4 + .../Jinja2-2.10.1.dist-info/top_level.txt | 1 + .../MarkupSafe-1.1.1.dist-info/INSTALLER | 1 + .../MarkupSafe-1.1.1.dist-info/LICENSE.txt | 28 + .../MarkupSafe-1.1.1.dist-info/METADATA | 103 + .../MarkupSafe-1.1.1.dist-info/RECORD | 16 + .../MarkupSafe-1.1.1.dist-info/WHEEL | 5 + .../MarkupSafe-1.1.1.dist-info/top_level.txt | 1 + .../site-packages/MySQLdb/__init__.py | 98 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 3584 bytes .../__pycache__/_exceptions.cpython-36.pyc | Bin 0 -> 3551 bytes .../MySQLdb/__pycache__/compat.cpython-36.pyc | Bin 0 -> 379 bytes .../__pycache__/connections.cpython-36.pyc | Bin 0 -> 11237 bytes .../__pycache__/converters.cpython-36.pyc | Bin 0 -> 3639 bytes .../__pycache__/cursors.cpython-36.pyc | Bin 0 -> 16443 bytes .../__pycache__/release.cpython-36.pyc | Bin 0 -> 348 bytes .../MySQLdb/__pycache__/times.cpython-36.pyc | Bin 0 -> 3640 bytes .../site-packages/MySQLdb/_exceptions.py | 70 + .../_mysql.cpython-36m-x86_64-linux-gnu.so | Bin 0 -> 170320 bytes .../python3.6/site-packages/MySQLdb/compat.py | 14 + .../site-packages/MySQLdb/connections.py | 329 + .../site-packages/MySQLdb/constants/CLIENT.py | 29 + .../site-packages/MySQLdb/constants/CR.py | 103 + .../site-packages/MySQLdb/constants/ER.py | 825 +++ .../MySQLdb/constants/FIELD_TYPE.py | 40 + .../site-packages/MySQLdb/constants/FLAG.py | 23 + .../MySQLdb/constants/__init__.py | 1 + .../__pycache__/CLIENT.cpython-36.pyc | Bin 0 -> 943 bytes .../constants/__pycache__/CR.cpython-36.pyc | Bin 0 -> 3014 bytes .../constants/__pycache__/ER.cpython-36.pyc | Bin 0 -> 30876 bytes .../__pycache__/FIELD_TYPE.cpython-36.pyc | Bin 0 -> 882 bytes .../constants/__pycache__/FLAG.cpython-36.pyc | Bin 0 -> 663 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 262 bytes .../site-packages/MySQLdb/converters.py | 126 + .../site-packages/MySQLdb/cursors.py | 487 ++ .../site-packages/MySQLdb/release.py | 4 + .../python3.6/site-packages/MySQLdb/times.py | 131 + .../Werkzeug-0.15.4.dist-info/INSTALLER | 1 + .../Werkzeug-0.15.4.dist-info/LICENSE.rst | 28 + .../Werkzeug-0.15.4.dist-info/METADATA | 133 + .../Werkzeug-0.15.4.dist-info/RECORD | 119 + .../Werkzeug-0.15.4.dist-info/WHEEL | 6 + .../Werkzeug-0.15.4.dist-info/top_level.txt | 1 + .../__pycache__/easy_install.cpython-36.pyc | Bin 0 -> 275 bytes .../python3.6/site-packages/click/__init__.py | 97 + .../click/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2618 bytes .../__pycache__/_bashcomplete.cpython-36.pyc | Bin 0 -> 9076 bytes .../click/__pycache__/_compat.cpython-36.pyc | Bin 0 -> 16749 bytes .../__pycache__/_termui_impl.cpython-36.pyc | Bin 0 -> 13984 bytes .../__pycache__/_textwrap.cpython-36.pyc | Bin 0 -> 1297 bytes .../__pycache__/_unicodefun.cpython-36.pyc | Bin 0 -> 3329 bytes .../__pycache__/_winconsole.cpython-36.pyc | Bin 0 -> 8741 bytes .../click/__pycache__/core.cpython-36.pyc | Bin 0 -> 59865 bytes .../__pycache__/decorators.cpython-36.pyc | Bin 0 -> 11570 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 8572 bytes .../__pycache__/formatting.cpython-36.pyc | Bin 0 -> 8515 bytes .../click/__pycache__/globals.cpython-36.pyc | Bin 0 -> 1844 bytes .../click/__pycache__/parser.cpython-36.pyc | Bin 0 -> 11433 bytes .../click/__pycache__/termui.cpython-36.pyc | Bin 0 -> 20782 bytes .../click/__pycache__/testing.cpython-36.pyc | Bin 0 -> 11586 bytes .../click/__pycache__/types.cpython-36.pyc | Bin 0 -> 21829 bytes .../click/__pycache__/utils.cpython-36.pyc | Bin 0 -> 15210 bytes .../site-packages/click/_bashcomplete.py | 293 + .../python3.6/site-packages/click/_compat.py | 703 ++ .../site-packages/click/_termui_impl.py | 621 ++ .../site-packages/click/_textwrap.py | 38 + .../site-packages/click/_unicodefun.py | 125 + .../site-packages/click/_winconsole.py | 307 + .../lib/python3.6/site-packages/click/core.py | 1856 ++++++ .../site-packages/click/decorators.py | 311 + .../site-packages/click/exceptions.py | 235 + .../site-packages/click/formatting.py | 256 + .../python3.6/site-packages/click/globals.py | 48 + .../python3.6/site-packages/click/parser.py | 427 ++ .../python3.6/site-packages/click/termui.py | 606 ++ .../python3.6/site-packages/click/testing.py | 374 ++ .../python3.6/site-packages/click/types.py | 668 ++ .../python3.6/site-packages/click/utils.py | 440 ++ .../python3.6/site-packages/easy_install.py | 5 + .../python3.6/site-packages/flask/__init__.py | 60 + .../python3.6/site-packages/flask/__main__.py | 15 + .../flask/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2086 bytes .../flask/__pycache__/__main__.cpython-36.pyc | Bin 0 -> 378 bytes .../flask/__pycache__/_compat.cpython-36.pyc | Bin 0 -> 4576 bytes .../flask/__pycache__/app.cpython-36.pyc | Bin 0 -> 74542 bytes .../__pycache__/blueprints.cpython-36.pyc | Bin 0 -> 22883 bytes .../flask/__pycache__/cli.cpython-36.pyc | Bin 0 -> 26254 bytes .../flask/__pycache__/config.cpython-36.pyc | Bin 0 -> 10123 bytes .../flask/__pycache__/ctx.cpython-36.pyc | Bin 0 -> 14284 bytes .../__pycache__/debughelpers.cpython-36.pyc | Bin 0 -> 6544 bytes .../flask/__pycache__/globals.cpython-36.pyc | Bin 0 -> 1690 bytes .../flask/__pycache__/helpers.cpython-36.pyc | Bin 0 -> 34528 bytes .../flask/__pycache__/logging.cpython-36.pyc | Bin 0 -> 3099 bytes .../flask/__pycache__/sessions.cpython-36.pyc | Bin 0 -> 12184 bytes .../flask/__pycache__/signals.cpython-36.pyc | Bin 0 -> 2363 bytes .../__pycache__/templating.cpython-36.pyc | Bin 0 -> 4942 bytes .../flask/__pycache__/testing.cpython-36.pyc | Bin 0 -> 8653 bytes .../flask/__pycache__/views.cpython-36.pyc | Bin 0 -> 4759 bytes .../flask/__pycache__/wrappers.cpython-36.pyc | Bin 0 -> 4252 bytes .../python3.6/site-packages/flask/_compat.py | 145 + .../lib/python3.6/site-packages/flask/app.py | 2466 +++++++ .../site-packages/flask/blueprints.py | 569 ++ .../lib/python3.6/site-packages/flask/cli.py | 970 +++ .../python3.6/site-packages/flask/config.py | 269 + .../lib/python3.6/site-packages/flask/ctx.py | 475 ++ .../site-packages/flask/debughelpers.py | 183 + .../python3.6/site-packages/flask/globals.py | 62 + .../python3.6/site-packages/flask/helpers.py | 1153 ++++ .../site-packages/flask/json/__init__.py | 376 ++ .../json/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 11556 bytes .../flask/json/__pycache__/tag.cpython-36.pyc | Bin 0 -> 11055 bytes .../python3.6/site-packages/flask/json/tag.py | 309 + .../python3.6/site-packages/flask/logging.py | 109 + .../python3.6/site-packages/flask/sessions.py | 388 ++ .../python3.6/site-packages/flask/signals.py | 65 + .../site-packages/flask/templating.py | 155 + .../python3.6/site-packages/flask/testing.py | 283 + .../python3.6/site-packages/flask/views.py | 163 + .../python3.6/site-packages/flask/wrappers.py | 137 + .../site-packages/flask_mysqldb/__init__.py | 100 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2821 bytes .../itsdangerous-1.1.0.dist-info/INSTALLER | 1 + .../itsdangerous-1.1.0.dist-info/LICENSE.rst | 47 + .../itsdangerous-1.1.0.dist-info/METADATA | 98 + .../itsdangerous-1.1.0.dist-info/RECORD | 26 + .../itsdangerous-1.1.0.dist-info/WHEEL | 6 + .../top_level.txt | 1 + .../site-packages/itsdangerous/__init__.py | 22 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 972 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 1134 bytes .../__pycache__/_json.cpython-36.pyc | Bin 0 -> 827 bytes .../__pycache__/encoding.cpython-36.pyc | Bin 0 -> 1599 bytes .../__pycache__/exc.cpython-36.pyc | Bin 0 -> 3188 bytes .../__pycache__/jws.cpython-36.pyc | Bin 0 -> 6647 bytes .../__pycache__/serializer.cpython-36.pyc | Bin 0 -> 8002 bytes .../__pycache__/signer.cpython-36.pyc | Bin 0 -> 5763 bytes .../__pycache__/timed.cpython-36.pyc | Bin 0 -> 4529 bytes .../__pycache__/url_safe.cpython-36.pyc | Bin 0 -> 2518 bytes .../site-packages/itsdangerous/_compat.py | 46 + .../site-packages/itsdangerous/_json.py | 18 + .../site-packages/itsdangerous/encoding.py | 49 + .../site-packages/itsdangerous/exc.py | 98 + .../site-packages/itsdangerous/jws.py | 218 + .../site-packages/itsdangerous/serializer.py | 233 + .../site-packages/itsdangerous/signer.py | 179 + .../site-packages/itsdangerous/timed.py | 147 + .../site-packages/itsdangerous/url_safe.py | 65 + .../site-packages/jinja2/__init__.py | 83 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2498 bytes .../jinja2/__pycache__/_compat.cpython-36.pyc | Bin 0 -> 3306 bytes .../__pycache__/_identifier.cpython-36.pyc | Bin 0 -> 1809 bytes .../__pycache__/asyncfilters.cpython-36.pyc | Bin 0 -> 4761 bytes .../__pycache__/asyncsupport.cpython-36.pyc | Bin 0 -> 8110 bytes .../jinja2/__pycache__/bccache.cpython-36.pyc | Bin 0 -> 12682 bytes .../__pycache__/compiler.cpython-36.pyc | Bin 0 -> 46863 bytes .../__pycache__/constants.cpython-36.pyc | Bin 0 -> 1672 bytes .../jinja2/__pycache__/debug.cpython-36.pyc | Bin 0 -> 9305 bytes .../__pycache__/defaults.cpython-36.pyc | Bin 0 -> 1422 bytes .../__pycache__/environment.cpython-36.pyc | Bin 0 -> 43233 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 4982 bytes .../jinja2/__pycache__/ext.cpython-36.pyc | Bin 0 -> 20073 bytes .../jinja2/__pycache__/filters.cpython-36.pyc | Bin 0 -> 34380 bytes .../__pycache__/idtracking.cpython-36.pyc | Bin 0 -> 9911 bytes .../jinja2/__pycache__/lexer.cpython-36.pyc | Bin 0 -> 18535 bytes .../jinja2/__pycache__/loaders.cpython-36.pyc | Bin 0 -> 16542 bytes .../jinja2/__pycache__/meta.cpython-36.pyc | Bin 0 -> 3633 bytes .../__pycache__/nativetypes.cpython-36.pyc | Bin 0 -> 5096 bytes .../jinja2/__pycache__/nodes.cpython-36.pyc | Bin 0 -> 36630 bytes .../__pycache__/optimizer.cpython-36.pyc | Bin 0 -> 2002 bytes .../jinja2/__pycache__/parser.cpython-36.pyc | Bin 0 -> 25307 bytes .../jinja2/__pycache__/runtime.cpython-36.pyc | Bin 0 -> 24572 bytes .../jinja2/__pycache__/sandbox.cpython-36.pyc | Bin 0 -> 14168 bytes .../jinja2/__pycache__/tests.cpython-36.pyc | Bin 0 -> 4378 bytes .../jinja2/__pycache__/utils.cpython-36.pyc | Bin 0 -> 20835 bytes .../jinja2/__pycache__/visitor.cpython-36.pyc | Bin 0 -> 3318 bytes .../python3.6/site-packages/jinja2/_compat.py | 99 + .../site-packages/jinja2/_identifier.py | 2 + .../site-packages/jinja2/asyncfilters.py | 146 + .../site-packages/jinja2/asyncsupport.py | 256 + .../python3.6/site-packages/jinja2/bccache.py | 362 ++ .../site-packages/jinja2/compiler.py | 1721 +++++ .../site-packages/jinja2/constants.py | 32 + .../python3.6/site-packages/jinja2/debug.py | 372 ++ .../site-packages/jinja2/defaults.py | 56 + .../site-packages/jinja2/environment.py | 1276 ++++ .../site-packages/jinja2/exceptions.py | 146 + .../lib/python3.6/site-packages/jinja2/ext.py | 627 ++ .../python3.6/site-packages/jinja2/filters.py | 1190 ++++ .../site-packages/jinja2/idtracking.py | 286 + .../python3.6/site-packages/jinja2/lexer.py | 739 +++ .../python3.6/site-packages/jinja2/loaders.py | 481 ++ .../python3.6/site-packages/jinja2/meta.py | 106 + .../site-packages/jinja2/nativetypes.py | 220 + .../python3.6/site-packages/jinja2/nodes.py | 999 +++ .../site-packages/jinja2/optimizer.py | 49 + .../python3.6/site-packages/jinja2/parser.py | 903 +++ .../python3.6/site-packages/jinja2/runtime.py | 813 +++ .../python3.6/site-packages/jinja2/sandbox.py | 486 ++ .../python3.6/site-packages/jinja2/tests.py | 175 + .../python3.6/site-packages/jinja2/utils.py | 647 ++ .../python3.6/site-packages/jinja2/visitor.py | 87 + .../site-packages/markupsafe/__init__.py | 327 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 10933 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 725 bytes .../__pycache__/_constants.cpython-36.pyc | Bin 0 -> 4225 bytes .../__pycache__/_native.cpython-36.pyc | Bin 0 -> 2077 bytes .../site-packages/markupsafe/_compat.py | 33 + .../site-packages/markupsafe/_constants.py | 264 + .../site-packages/markupsafe/_native.py | 69 + .../site-packages/markupsafe/_speedups.c | 423 ++ .../_speedups.cpython-36m-x86_64-linux-gnu.so | Bin 0 -> 38875 bytes .../mysqlclient-1.4.2.post1.egg-info/PKG-INFO | 102 + .../SOURCES.txt | 49 + .../dependency_links.txt | 1 + .../installed-files.txt | 33 + .../top_level.txt | 1 + .../pip-9.0.1.dist-info/DESCRIPTION.rst | 39 + .../pip-9.0.1.dist-info/INSTALLER | 1 + .../pip-9.0.1.dist-info/METADATA | 70 + .../site-packages/pip-9.0.1.dist-info/RECORD | 123 + .../site-packages/pip-9.0.1.dist-info/WHEEL | 6 + .../pip-9.0.1.dist-info/entry_points.txt | 5 + .../pip-9.0.1.dist-info/metadata.json | 1 + .../pip-9.0.1.dist-info/top_level.txt | 1 + .../python3.6/site-packages/pip/__init__.py | 338 + .../python3.6/site-packages/pip/__main__.py | 19 + .../pip/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 8498 bytes .../pip/__pycache__/__main__.cpython-36.pyc | Bin 0 -> 374 bytes .../__pycache__/basecommand.cpython-36.pyc | Bin 0 -> 7210 bytes .../pip/__pycache__/baseparser.cpython-36.pyc | Bin 0 -> 9271 bytes .../pip/__pycache__/cmdoptions.cpython-36.pyc | Bin 0 -> 12929 bytes .../pip/__pycache__/download.cpython-36.pyc | Bin 0 -> 20310 bytes .../pip/__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 10483 bytes .../pip/__pycache__/index.cpython-36.pyc | Bin 0 -> 30245 bytes .../pip/__pycache__/locations.cpython-36.pyc | Bin 0 -> 3869 bytes .../pip/__pycache__/pep425tags.cpython-36.pyc | Bin 0 -> 7464 bytes .../__pycache__/status_codes.cpython-36.pyc | Bin 0 -> 338 bytes .../pip/__pycache__/wheel.cpython-36.pyc | Bin 0 -> 21655 bytes .../site-packages/pip/_vendor/__init__.py | 111 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2797 bytes .../site-packages/pip/basecommand.py | 337 + .../python3.6/site-packages/pip/baseparser.py | 293 + .../python3.6/site-packages/pip/cmdoptions.py | 633 ++ .../site-packages/pip/commands/__init__.py | 86 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2028 bytes .../commands/__pycache__/check.cpython-36.pyc | Bin 0 -> 1269 bytes .../__pycache__/completion.cpython-36.pyc | Bin 0 -> 2600 bytes .../__pycache__/download.cpython-36.pyc | Bin 0 -> 5385 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 0 -> 2582 bytes .../commands/__pycache__/hash.cpython-36.pyc | Bin 0 -> 1923 bytes .../commands/__pycache__/help.cpython-36.pyc | Bin 0 -> 1074 bytes .../__pycache__/install.cpython-36.pyc | Bin 0 -> 10221 bytes .../commands/__pycache__/list.cpython-36.pyc | Bin 0 -> 9685 bytes .../__pycache__/search.cpython-36.pyc | Bin 0 -> 4164 bytes .../commands/__pycache__/show.cpython-36.pyc | Bin 0 -> 5335 bytes .../__pycache__/uninstall.cpython-36.pyc | Bin 0 -> 2560 bytes .../commands/__pycache__/wheel.cpython-36.pyc | Bin 0 -> 5422 bytes .../site-packages/pip/commands/check.py | 39 + .../site-packages/pip/commands/completion.py | 81 + .../site-packages/pip/commands/download.py | 212 + .../site-packages/pip/commands/freeze.py | 87 + .../site-packages/pip/commands/hash.py | 57 + .../site-packages/pip/commands/help.py | 35 + .../site-packages/pip/commands/install.py | 455 ++ .../site-packages/pip/commands/list.py | 337 + .../site-packages/pip/commands/search.py | 133 + .../site-packages/pip/commands/show.py | 154 + .../site-packages/pip/commands/uninstall.py | 76 + .../site-packages/pip/commands/wheel.py | 208 + .../site-packages/pip/compat/__init__.py | 164 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 3957 bytes .../__pycache__/dictconfig.cpython-36.pyc | Bin 0 -> 13604 bytes .../site-packages/pip/compat/dictconfig.py | 565 ++ .../python3.6/site-packages/pip/download.py | 906 +++ .../python3.6/site-packages/pip/exceptions.py | 244 + .../lib/python3.6/site-packages/pip/index.py | 1102 ++++ .../python3.6/site-packages/pip/locations.py | 182 + .../site-packages/pip/models/__init__.py | 4 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 223 bytes .../models/__pycache__/index.cpython-36.pyc | Bin 0 -> 827 bytes .../site-packages/pip/models/index.py | 16 + .../site-packages/pip/operations/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 137 bytes .../__pycache__/check.cpython-36.pyc | Bin 0 -> 1424 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 0 -> 2881 bytes .../site-packages/pip/operations/check.py | 49 + .../site-packages/pip/operations/freeze.py | 132 + .../python3.6/site-packages/pip/pep425tags.py | 324 + .../site-packages/pip/req/__init__.py | 10 + .../req/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 404 bytes .../req/__pycache__/req_file.cpython-36.pyc | Bin 0 -> 8419 bytes .../__pycache__/req_install.cpython-36.pyc | Bin 0 -> 30120 bytes .../req/__pycache__/req_set.cpython-36.pyc | Bin 0 -> 20967 bytes .../__pycache__/req_uninstall.cpython-36.pyc | Bin 0 -> 6282 bytes .../site-packages/pip/req/req_file.py | 342 + .../site-packages/pip/req/req_install.py | 1204 ++++ .../site-packages/pip/req/req_set.py | 798 +++ .../site-packages/pip/req/req_uninstall.py | 195 + .../site-packages/pip/status_codes.py | 8 + .../site-packages/pip/utils/__init__.py | 870 +++ .../utils/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 22743 bytes .../utils/__pycache__/appdirs.cpython-36.pyc | Bin 0 -> 7701 bytes .../utils/__pycache__/build.cpython-36.pyc | Bin 0 -> 1315 bytes .../__pycache__/deprecation.cpython-36.pyc | Bin 0 -> 1728 bytes .../utils/__pycache__/encoding.cpython-36.pyc | Bin 0 -> 1018 bytes .../__pycache__/filesystem.cpython-36.pyc | Bin 0 -> 583 bytes .../utils/__pycache__/glibc.cpython-36.pyc | Bin 0 -> 1366 bytes .../utils/__pycache__/hashes.cpython-36.pyc | Bin 0 -> 3242 bytes .../utils/__pycache__/logging.cpython-36.pyc | Bin 0 -> 3898 bytes .../utils/__pycache__/outdated.cpython-36.pyc | Bin 0 -> 4223 bytes .../__pycache__/packaging.cpython-36.pyc | Bin 0 -> 1986 bytes .../setuptools_build.cpython-36.pyc | Bin 0 -> 327 bytes .../pip/utils/__pycache__/ui.cpython-36.pyc | Bin 0 -> 9583 bytes .../site-packages/pip/utils/appdirs.py | 248 + .../site-packages/pip/utils/build.py | 42 + .../site-packages/pip/utils/deprecation.py | 76 + .../site-packages/pip/utils/encoding.py | 31 + .../site-packages/pip/utils/filesystem.py | 28 + .../site-packages/pip/utils/glibc.py | 81 + .../site-packages/pip/utils/hashes.py | 92 + .../site-packages/pip/utils/logging.py | 130 + .../site-packages/pip/utils/outdated.py | 162 + .../site-packages/pip/utils/packaging.py | 63 + .../pip/utils/setuptools_build.py | 8 + .../python3.6/site-packages/pip/utils/ui.py | 344 + .../site-packages/pip/vcs/__init__.py | 366 ++ .../vcs/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 11102 bytes .../pip/vcs/__pycache__/bazaar.cpython-36.pyc | Bin 0 -> 3655 bytes .../pip/vcs/__pycache__/git.cpython-36.pyc | Bin 0 -> 8795 bytes .../vcs/__pycache__/mercurial.cpython-36.pyc | Bin 0 -> 3568 bytes .../vcs/__pycache__/subversion.cpython-36.pyc | Bin 0 -> 7107 bytes .../python3.6/site-packages/pip/vcs/bazaar.py | 116 + .../python3.6/site-packages/pip/vcs/git.py | 300 + .../site-packages/pip/vcs/mercurial.py | 103 + .../site-packages/pip/vcs/subversion.py | 269 + .../lib/python3.6/site-packages/pip/wheel.py | 853 +++ .../DESCRIPTION.rst | 3 + .../pkg_resources-0.0.0.dist-info/INSTALLER | 1 + .../pkg_resources-0.0.0.dist-info/METADATA | 13 + .../pkg_resources-0.0.0.dist-info/RECORD | 38 + .../pkg_resources-0.0.0.dist-info/WHEEL | 6 + .../metadata.json | 1 + .../site-packages/pkg_resources/__init__.py | 3125 +++++++++ .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 95310 bytes .../__pycache__/py31compat.cpython-36.pyc | Bin 0 -> 657 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 154 bytes .../__pycache__/appdirs.cpython-36.pyc | Bin 0 -> 18580 bytes .../__pycache__/pyparsing.cpython-36.pyc | Bin 0 -> 201076 bytes .../_vendor/__pycache__/six.cpython-36.pyc | Bin 0 -> 24451 bytes .../pkg_resources/_vendor/appdirs.py | 552 ++ .../_vendor/packaging/__about__.py | 21 + .../_vendor/packaging/__init__.py | 14 + .../__pycache__/__about__.cpython-36.pyc | Bin 0 -> 690 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 528 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 975 bytes .../__pycache__/_structures.cpython-36.pyc | Bin 0 -> 2832 bytes .../__pycache__/markers.cpython-36.pyc | Bin 0 -> 8855 bytes .../__pycache__/requirements.cpython-36.pyc | Bin 0 -> 3851 bytes .../__pycache__/specifiers.cpython-36.pyc | Bin 0 -> 19794 bytes .../__pycache__/utils.cpython-36.pyc | Bin 0 -> 459 bytes .../__pycache__/version.cpython-36.pyc | Bin 0 -> 10569 bytes .../_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_structures.py | 68 + .../_vendor/packaging/markers.py | 301 + .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/specifiers.py | 774 +++ .../pkg_resources/_vendor/packaging/utils.py | 14 + .../_vendor/packaging/version.py | 393 ++ .../pkg_resources/_vendor/pyparsing.py | 5696 +++++++++++++++++ .../pkg_resources/_vendor/six.py | 868 +++ .../pkg_resources/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2385 bytes .../site-packages/pkg_resources/py31compat.py | 22 + .../DESCRIPTION.rst | 36 + .../setuptools-39.0.1.dist-info/INSTALLER | 1 + .../setuptools-39.0.1.dist-info/METADATA | 67 + .../setuptools-39.0.1.dist-info/RECORD | 155 + .../setuptools-39.0.1.dist-info/WHEEL | 6 + .../dependency_links.txt | 2 + .../entry_points.txt | 64 + .../setuptools-39.0.1.dist-info/metadata.json | 1 + .../setuptools-39.0.1.dist-info/top_level.txt | 3 + .../setuptools-39.0.1.dist-info/zip-safe | 1 + .../site-packages/setuptools/__init__.py | 180 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 6246 bytes .../__pycache__/archive_util.cpython-36.pyc | Bin 0 -> 5094 bytes .../__pycache__/build_meta.cpython-36.pyc | Bin 0 -> 5867 bytes .../__pycache__/config.cpython-36.pyc | Bin 0 -> 14323 bytes .../__pycache__/dep_util.cpython-36.pyc | Bin 0 -> 813 bytes .../__pycache__/depends.cpython-36.pyc | Bin 0 -> 5239 bytes .../__pycache__/dist.cpython-36.pyc | Bin 0 -> 36818 bytes .../__pycache__/extension.cpython-36.pyc | Bin 0 -> 1933 bytes .../__pycache__/glibc.cpython-36.pyc | Bin 0 -> 1503 bytes .../__pycache__/glob.cpython-36.pyc | Bin 0 -> 3801 bytes .../__pycache__/launch.cpython-36.pyc | Bin 0 -> 812 bytes .../__pycache__/lib2to3_ex.cpython-36.pyc | Bin 0 -> 2391 bytes .../__pycache__/monkey.cpython-36.pyc | Bin 0 -> 5133 bytes .../__pycache__/msvc.cpython-36.pyc | Bin 0 -> 34498 bytes .../__pycache__/namespaces.cpython-36.pyc | Bin 0 -> 3636 bytes .../__pycache__/package_index.cpython-36.pyc | Bin 0 -> 32218 bytes .../__pycache__/pep425tags.cpython-36.pyc | Bin 0 -> 7296 bytes .../__pycache__/py27compat.cpython-36.pyc | Bin 0 -> 769 bytes .../__pycache__/py31compat.cpython-36.pyc | Bin 0 -> 1508 bytes .../__pycache__/py33compat.cpython-36.pyc | Bin 0 -> 1361 bytes .../__pycache__/py36compat.cpython-36.pyc | Bin 0 -> 2165 bytes .../__pycache__/sandbox.cpython-36.pyc | Bin 0 -> 15681 bytes .../__pycache__/site-patch.cpython-36.pyc | Bin 0 -> 1464 bytes .../__pycache__/ssl_support.cpython-36.pyc | Bin 0 -> 6744 bytes .../__pycache__/unicode_utils.cpython-36.pyc | Bin 0 -> 1127 bytes .../__pycache__/version.cpython-36.pyc | Bin 0 -> 286 bytes .../__pycache__/wheel.cpython-36.pyc | Bin 0 -> 5781 bytes .../windows_support.cpython-36.pyc | Bin 0 -> 969 bytes .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 148 bytes .../__pycache__/pyparsing.cpython-36.pyc | Bin 0 -> 201070 bytes .../_vendor/__pycache__/six.cpython-36.pyc | Bin 0 -> 24445 bytes .../setuptools/_vendor/packaging/__about__.py | 21 + .../setuptools/_vendor/packaging/__init__.py | 14 + .../__pycache__/__about__.cpython-36.pyc | Bin 0 -> 684 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 522 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 969 bytes .../__pycache__/_structures.cpython-36.pyc | Bin 0 -> 2826 bytes .../__pycache__/markers.cpython-36.pyc | Bin 0 -> 8846 bytes .../__pycache__/requirements.cpython-36.pyc | Bin 0 -> 3839 bytes .../__pycache__/specifiers.cpython-36.pyc | Bin 0 -> 19788 bytes .../__pycache__/utils.cpython-36.pyc | Bin 0 -> 453 bytes .../__pycache__/version.cpython-36.pyc | Bin 0 -> 10563 bytes .../setuptools/_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_structures.py | 68 + .../setuptools/_vendor/packaging/markers.py | 301 + .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/specifiers.py | 774 +++ .../setuptools/_vendor/packaging/utils.py | 14 + .../setuptools/_vendor/packaging/version.py | 393 ++ .../setuptools/_vendor/pyparsing.py | 5696 +++++++++++++++++ .../site-packages/setuptools/_vendor/six.py | 868 +++ .../site-packages/setuptools/archive_util.py | 173 + .../site-packages/setuptools/build_meta.py | 172 + .../site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 18 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 699 bytes .../command/__pycache__/alias.cpython-36.pyc | Bin 0 -> 2392 bytes .../__pycache__/bdist_egg.cpython-36.pyc | Bin 0 -> 14373 bytes .../__pycache__/bdist_rpm.cpython-36.pyc | Bin 0 -> 1735 bytes .../__pycache__/bdist_wininst.cpython-36.pyc | Bin 0 -> 936 bytes .../__pycache__/build_clib.cpython-36.pyc | Bin 0 -> 2407 bytes .../__pycache__/build_ext.cpython-36.pyc | Bin 0 -> 10006 bytes .../__pycache__/build_py.cpython-36.pyc | Bin 0 -> 8531 bytes .../__pycache__/develop.cpython-36.pyc | Bin 0 -> 6385 bytes .../__pycache__/dist_info.cpython-36.pyc | Bin 0 -> 1352 bytes .../__pycache__/easy_install.cpython-36.pyc | Bin 0 -> 66239 bytes .../__pycache__/egg_info.cpython-36.pyc | Bin 0 -> 20935 bytes .../__pycache__/install.cpython-36.pyc | Bin 0 -> 3932 bytes .../install_egg_info.cpython-36.pyc | Bin 0 -> 2916 bytes .../__pycache__/install_lib.cpython-36.pyc | Bin 0 -> 5050 bytes .../install_scripts.cpython-36.pyc | Bin 0 -> 2237 bytes .../__pycache__/py36compat.cpython-36.pyc | Bin 0 -> 4582 bytes .../__pycache__/register.cpython-36.pyc | Bin 0 -> 552 bytes .../command/__pycache__/rotate.cpython-36.pyc | Bin 0 -> 2538 bytes .../__pycache__/saveopts.cpython-36.pyc | Bin 0 -> 883 bytes .../command/__pycache__/sdist.cpython-36.pyc | Bin 0 -> 6347 bytes .../command/__pycache__/setopt.cpython-36.pyc | Bin 0 -> 4561 bytes .../command/__pycache__/test.cpython-36.pyc | Bin 0 -> 8120 bytes .../command/__pycache__/upload.cpython-36.pyc | Bin 0 -> 1350 bytes .../__pycache__/upload_docs.cpython-36.pyc | Bin 0 -> 6059 bytes .../site-packages/setuptools/command/alias.py | 80 + .../setuptools/command/bdist_egg.py | 502 ++ .../setuptools/command/bdist_rpm.py | 43 + .../setuptools/command/bdist_wininst.py | 21 + .../setuptools/command/build_clib.py | 98 + .../setuptools/command/build_ext.py | 331 + .../setuptools/command/build_py.py | 270 + .../setuptools/command/develop.py | 216 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2389 +++++++ .../setuptools/command/egg_info.py | 696 ++ .../setuptools/command/install.py | 125 + .../setuptools/command/install_egg_info.py | 82 + .../setuptools/command/install_lib.py | 148 + .../setuptools/command/install_scripts.py | 65 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 136 + .../setuptools/command/register.py | 10 + .../setuptools/command/rotate.py | 66 + .../setuptools/command/saveopts.py | 22 + .../site-packages/setuptools/command/sdist.py | 200 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 268 + .../setuptools/command/upload.py | 42 + .../setuptools/command/upload_docs.py | 206 + .../site-packages/setuptools/config.py | 556 ++ .../site-packages/setuptools/dep_util.py | 23 + .../site-packages/setuptools/depends.py | 186 + .../site-packages/setuptools/dist.py | 1070 ++++ .../site-packages/setuptools/extension.py | 57 + .../setuptools/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 2387 bytes .../site-packages/setuptools/glibc.py | 86 + .../site-packages/setuptools/glob.py | 176 + .../site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/launch.py | 35 + .../site-packages/setuptools/lib2to3_ex.py | 62 + .../site-packages/setuptools/monkey.py | 197 + .../site-packages/setuptools/msvc.py | 1302 ++++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1119 ++++ .../site-packages/setuptools/pep425tags.py | 316 + .../site-packages/setuptools/py27compat.py | 28 + .../site-packages/setuptools/py31compat.py | 41 + .../site-packages/setuptools/py33compat.py | 54 + .../site-packages/setuptools/py36compat.py | 82 + .../site-packages/setuptools/sandbox.py | 491 ++ .../setuptools/script (dev).tmpl | 5 + .../site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/site-patch.py | 74 + .../site-packages/setuptools/ssl_support.py | 260 + .../site-packages/setuptools/unicode_utils.py | 44 + .../site-packages/setuptools/version.py | 6 + .../site-packages/setuptools/wheel.py | 163 + .../setuptools/windows_support.py | 29 + .../site-packages/werkzeug/__init__.py | 233 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 4783 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 0 -> 7139 bytes .../__pycache__/_internal.cpython-36.pyc | Bin 0 -> 13250 bytes .../__pycache__/_reloader.cpython-36.pyc | Bin 0 -> 9764 bytes .../__pycache__/datastructures.cpython-36.pyc | Bin 0 -> 100821 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 25772 bytes .../__pycache__/filesystem.cpython-36.pyc | Bin 0 -> 2125 bytes .../__pycache__/formparser.cpython-36.pyc | Bin 0 -> 16178 bytes .../werkzeug/__pycache__/http.cpython-36.pyc | Bin 0 -> 36147 bytes .../werkzeug/__pycache__/local.cpython-36.pyc | Bin 0 -> 18601 bytes .../__pycache__/posixemulation.cpython-36.pyc | Bin 0 -> 2699 bytes .../__pycache__/routing.cpython-36.pyc | Bin 0 -> 64381 bytes .../__pycache__/security.cpython-36.pyc | Bin 0 -> 7723 bytes .../__pycache__/serving.cpython-36.pyc | Bin 0 -> 28613 bytes .../werkzeug/__pycache__/test.cpython-36.pyc | Bin 0 -> 33590 bytes .../__pycache__/testapp.cpython-36.pyc | Bin 0 -> 9306 bytes .../werkzeug/__pycache__/urls.cpython-36.pyc | Bin 0 -> 35814 bytes .../__pycache__/useragents.cpython-36.pyc | Bin 0 -> 6568 bytes .../werkzeug/__pycache__/utils.cpython-36.pyc | Bin 0 -> 25309 bytes .../werkzeug/__pycache__/wsgi.cpython-36.pyc | Bin 0 -> 33401 bytes .../site-packages/werkzeug/_compat.py | 219 + .../site-packages/werkzeug/_internal.py | 484 ++ .../site-packages/werkzeug/_reloader.py | 334 + .../werkzeug/contrib/__init__.py | 16 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 681 bytes .../contrib/__pycache__/atom.cpython-36.pyc | Bin 0 -> 14149 bytes .../contrib/__pycache__/cache.cpython-36.pyc | Bin 0 -> 32570 bytes .../contrib/__pycache__/fixers.cpython-36.pyc | Bin 0 -> 9507 bytes .../contrib/__pycache__/iterio.cpython-36.pyc | Bin 0 -> 11062 bytes .../contrib/__pycache__/lint.cpython-36.pyc | Bin 0 -> 408 bytes .../__pycache__/profiler.cpython-36.pyc | Bin 0 -> 1525 bytes .../__pycache__/securecookie.cpython-36.pyc | Bin 0 -> 10744 bytes .../__pycache__/sessions.cpython-36.pyc | Bin 0 -> 13142 bytes .../__pycache__/wrappers.cpython-36.pyc | Bin 0 -> 12363 bytes .../site-packages/werkzeug/contrib/atom.py | 362 ++ .../site-packages/werkzeug/contrib/cache.py | 933 +++ .../site-packages/werkzeug/contrib/fixers.py | 262 + .../site-packages/werkzeug/contrib/iterio.py | 358 ++ .../site-packages/werkzeug/contrib/lint.py | 11 + .../werkzeug/contrib/profiler.py | 42 + .../werkzeug/contrib/securecookie.py | 362 ++ .../werkzeug/contrib/sessions.py | 389 ++ .../werkzeug/contrib/wrappers.py | 385 ++ .../site-packages/werkzeug/datastructures.py | 2852 +++++++++ .../site-packages/werkzeug/debug/__init__.py | 524 ++ .../debug/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 13213 bytes .../debug/__pycache__/console.cpython-36.pyc | Bin 0 -> 7247 bytes .../debug/__pycache__/repr.cpython-36.pyc | Bin 0 -> 8569 bytes .../debug/__pycache__/tbtools.cpython-36.pyc | Bin 0 -> 18482 bytes .../site-packages/werkzeug/debug/console.py | 216 + .../site-packages/werkzeug/debug/repr.py | 297 + .../werkzeug/debug/shared/FONT_LICENSE | 96 + .../werkzeug/debug/shared/console.png | Bin 0 -> 507 bytes .../werkzeug/debug/shared/debugger.js | 210 + .../werkzeug/debug/shared/jquery.js | 2 + .../werkzeug/debug/shared/less.png | Bin 0 -> 191 bytes .../werkzeug/debug/shared/more.png | Bin 0 -> 200 bytes .../werkzeug/debug/shared/source.png | Bin 0 -> 818 bytes .../werkzeug/debug/shared/style.css | 154 + .../werkzeug/debug/shared/ubuntu.ttf | Bin 0 -> 70220 bytes .../site-packages/werkzeug/debug/tbtools.py | 629 ++ .../site-packages/werkzeug/exceptions.py | 774 +++ .../site-packages/werkzeug/filesystem.py | 64 + .../site-packages/werkzeug/formparser.py | 586 ++ .../python3.6/site-packages/werkzeug/http.py | 1303 ++++ .../python3.6/site-packages/werkzeug/local.py | 421 ++ .../werkzeug/middleware/__init__.py | 25 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 704 bytes .../__pycache__/dispatcher.cpython-36.pyc | Bin 0 -> 2393 bytes .../__pycache__/http_proxy.cpython-36.pyc | Bin 0 -> 6350 bytes .../__pycache__/lint.cpython-36.pyc | Bin 0 -> 11687 bytes .../__pycache__/profiler.cpython-36.pyc | Bin 0 -> 4433 bytes .../__pycache__/proxy_fix.cpython-36.pyc | Bin 0 -> 7621 bytes .../__pycache__/shared_data.cpython-36.pyc | Bin 0 -> 8296 bytes .../werkzeug/middleware/dispatcher.py | 66 + .../werkzeug/middleware/http_proxy.py | 219 + .../site-packages/werkzeug/middleware/lint.py | 408 ++ .../werkzeug/middleware/profiler.py | 132 + .../werkzeug/middleware/proxy_fix.py | 228 + .../werkzeug/middleware/shared_data.py | 260 + .../site-packages/werkzeug/posixemulation.py | 117 + .../site-packages/werkzeug/routing.py | 2026 ++++++ .../site-packages/werkzeug/security.py | 241 + .../site-packages/werkzeug/serving.py | 1074 ++++ .../python3.6/site-packages/werkzeug/test.py | 1146 ++++ .../site-packages/werkzeug/testapp.py | 241 + .../python3.6/site-packages/werkzeug/urls.py | 1134 ++++ .../site-packages/werkzeug/useragents.py | 220 + .../python3.6/site-packages/werkzeug/utils.py | 836 +++ .../werkzeug/wrappers/__init__.py | 36 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 1632 bytes .../__pycache__/accept.cpython-36.pyc | Bin 0 -> 2161 bytes .../wrappers/__pycache__/auth.cpython-36.pyc | Bin 0 -> 1650 bytes .../__pycache__/base_request.cpython-36.pyc | Bin 0 -> 22634 bytes .../__pycache__/base_response.cpython-36.pyc | Bin 0 -> 23280 bytes .../common_descriptors.cpython-36.pyc | Bin 0 -> 12149 bytes .../wrappers/__pycache__/etag.cpython-36.pyc | Bin 0 -> 11691 bytes .../wrappers/__pycache__/json.cpython-36.pyc | Bin 0 -> 4273 bytes .../__pycache__/request.cpython-36.pyc | Bin 0 -> 1767 bytes .../__pycache__/response.cpython-36.pyc | Bin 0 -> 3278 bytes .../__pycache__/user_agent.cpython-36.pyc | Bin 0 -> 795 bytes .../site-packages/werkzeug/wrappers/accept.py | 50 + .../site-packages/werkzeug/wrappers/auth.py | 33 + .../werkzeug/wrappers/base_request.py | 693 ++ .../werkzeug/wrappers/base_response.py | 702 ++ .../werkzeug/wrappers/common_descriptors.py | 322 + .../site-packages/werkzeug/wrappers/etag.py | 304 + .../site-packages/werkzeug/wrappers/json.py | 145 + .../werkzeug/wrappers/request.py | 44 + .../werkzeug/wrappers/response.py | 78 + .../werkzeug/wrappers/user_agent.py | 15 + .../python3.6/site-packages/werkzeug/wsgi.py | 1067 +++ week-0/day-3/my_todo_app/venv/lib64 | 1 + week-0/day-3/my_todo_app/venv/pyvenv.cfg | 3 + .../CacheControl-0.11.7-py2.py3-none-any.whl | Bin 0 -> 18720 bytes .../appdirs-1.4.3-py2.py3-none-any.whl | Bin 0 -> 12139 bytes .../certifi-2018.1.18-py2.py3-none-any.whl | Bin 0 -> 150807 bytes .../chardet-3.0.4-py2.py3-none-any.whl | Bin 0 -> 133328 bytes .../colorama-0.3.7-py2.py3-none-any.whl | Bin 0 -> 19915 bytes .../distlib-0.2.6-py2.py3-none-any.whl | Bin 0 -> 141707 bytes .../distro-1.0.1-py2.py3-none-any.whl | Bin 0 -> 11733 bytes .../html5lib-0.999999999-py2.py3-none-any.whl | Bin 0 -> 112620 bytes .../idna-2.6-py2.py3-none-any.whl | Bin 0 -> 56485 bytes .../ipaddress-0.0.0-py2.py3-none-any.whl | Bin 0 -> 17503 bytes .../lockfile-0.12.2-py2.py3-none-any.whl | Bin 0 -> 13506 bytes .../packaging-17.1-py2.py3-none-any.whl | Bin 0 -> 24058 bytes .../pip-9.0.1-py2.py3-none-any.whl | Bin 0 -> 159152 bytes .../pkg_resources-0.0.0-py2.py3-none-any.whl | Bin 0 -> 115663 bytes .../progress-1.2-py2.py3-none-any.whl | Bin 0 -> 9606 bytes .../pyparsing-2.2.0-py2.py3-none-any.whl | Bin 0 -> 56411 bytes .../requests-2.18.4-py2.py3-none-any.whl | Bin 0 -> 88788 bytes .../retrying-1.3.3-py2.py3-none-any.whl | Bin 0 -> 9480 bytes .../setuptools-39.0.1-py2.py3-none-any.whl | Bin 0 -> 455758 bytes .../six-1.11.0-py2.py3-none-any.whl | Bin 0 -> 10720 bytes .../urllib3-1.22-py2.py3-none-any.whl | Bin 0 -> 124700 bytes .../webencodings-0.5-py2.py3-none-any.whl | Bin 0 -> 11646 bytes .../wheel-0.30.0-py2.py3-none-any.whl | Bin 0 -> 48886 bytes 707 files changed, 107503 insertions(+) create mode 100644 week-0/day-3/my_todo_app/todo_app/__init__.py create mode 100644 week-0/day-3/my_todo_app/todo_app/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/todo_app/db.py create mode 100644 week-0/day-3/my_todo_app/todo_app/templates/404.html create mode 100644 week-0/day-3/my_todo_app/todo_app/templates/add_todo.html create mode 100644 week-0/day-3/my_todo_app/todo_app/templates/todo_query.html create mode 100644 week-0/day-3/my_todo_app/todo_app/templates/todo_view.html create mode 100644 week-0/day-3/my_todo_app/venv/bin/activate create mode 100644 week-0/day-3/my_todo_app/venv/bin/activate.csh create mode 100644 week-0/day-3/my_todo_app/venv/bin/activate.fish create mode 100755 week-0/day-3/my_todo_app/venv/bin/easy_install create mode 100755 week-0/day-3/my_todo_app/venv/bin/easy_install-3.6 create mode 100755 week-0/day-3/my_todo_app/venv/bin/flask create mode 100755 week-0/day-3/my_todo_app/venv/bin/pip create mode 100755 week-0/day-3/my_todo_app/venv/bin/pip3 create mode 100755 week-0/day-3/my_todo_app/venv/bin/pip3.6 create mode 120000 week-0/day-3/my_todo_app/venv/bin/python create mode 120000 week-0/day-3/my_todo_app/venv/bin/python3 create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/INSTALLER create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/LICENSE.rst create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/METADATA create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/RECORD create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/WHEEL create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/entry_points.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/PKG-INFO create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/SOURCES.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/dependency_links.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/installed-files.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/not-zip-safe create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/pbr.json create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/requires.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/INSTALLER create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/LICENSE create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/METADATA create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/RECORD create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/WHEEL create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/entry_points.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/_exceptions.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/connections.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/converters.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/cursors.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/release.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/times.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/_exceptions.py create mode 100755 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/_mysql.cpython-36m-x86_64-linux-gnu.so create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/connections.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/CLIENT.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/CR.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/ER.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/FIELD_TYPE.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/FLAG.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/CLIENT.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/CR.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/ER.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/FIELD_TYPE.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/FLAG.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/converters.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/cursors.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/release.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/times.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/INSTALLER create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/LICENSE.rst create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/METADATA create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/RECORD create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/WHEEL create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_bashcomplete.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_termui_impl.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_textwrap.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_unicodefun.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_winconsole.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/core.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/decorators.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/exceptions.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/formatting.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/globals.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/parser.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/termui.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/testing.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/types.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/utils.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_bashcomplete.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_termui_impl.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_textwrap.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_unicodefun.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_winconsole.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/core.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/decorators.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/exceptions.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/formatting.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/globals.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/parser.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/termui.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/testing.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/types.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/utils.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/easy_install.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__main__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/__main__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/_compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/app.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/blueprints.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/cli.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/config.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/ctx.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/debughelpers.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/globals.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/helpers.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/logging.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/sessions.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/signals.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/templating.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/testing.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/views.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/wrappers.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/_compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/app.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/blueprints.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/cli.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/config.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/ctx.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/debughelpers.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/globals.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/helpers.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/json/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/json/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/json/__pycache__/tag.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/json/tag.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/logging.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/sessions.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/signals.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/templating.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/testing.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/views.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/wrappers.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask_mysqldb/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask_mysqldb/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/INSTALLER create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/LICENSE.rst create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/METADATA create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/RECORD create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/WHEEL create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous-1.1.0.dist-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/_compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/_json.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/encoding.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/exc.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/jws.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/serializer.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/signer.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/timed.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/__pycache__/url_safe.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/_compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/_json.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/encoding.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/exc.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/jws.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/serializer.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/signer.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/timed.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/itsdangerous/url_safe.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/_compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/_identifier.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/asyncfilters.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/asyncsupport.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/bccache.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/compiler.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/constants.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/debug.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/defaults.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/environment.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/exceptions.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/ext.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/filters.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/idtracking.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/lexer.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/loaders.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/meta.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/nativetypes.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/nodes.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/optimizer.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/parser.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/runtime.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/sandbox.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/tests.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/utils.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/__pycache__/visitor.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/_compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/_identifier.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/asyncfilters.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/asyncsupport.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/bccache.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/compiler.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/constants.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/debug.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/defaults.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/environment.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/exceptions.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/ext.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/filters.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/idtracking.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/lexer.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/loaders.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/meta.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/nativetypes.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/nodes.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/optimizer.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/parser.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/runtime.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/sandbox.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/tests.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/utils.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/jinja2/visitor.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/__pycache__/_compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/__pycache__/_constants.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/__pycache__/_native.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/_compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/_constants.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/_native.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/_speedups.c create mode 100755 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/markupsafe/_speedups.cpython-36m-x86_64-linux-gnu.so create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/mysqlclient-1.4.2.post1.egg-info/PKG-INFO create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/mysqlclient-1.4.2.post1.egg-info/SOURCES.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/mysqlclient-1.4.2.post1.egg-info/dependency_links.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/mysqlclient-1.4.2.post1.egg-info/installed-files.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/mysqlclient-1.4.2.post1.egg-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/INSTALLER create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip-9.0.1.dist-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__main__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/__main__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/basecommand.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/baseparser.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/cmdoptions.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/download.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/exceptions.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/index.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/locations.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/pep425tags.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/status_codes.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/__pycache__/wheel.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/_vendor/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/_vendor/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/basecommand.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/baseparser.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/cmdoptions.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/check.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/completion.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/download.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/freeze.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/hash.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/help.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/install.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/list.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/search.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/show.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/uninstall.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/__pycache__/wheel.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/check.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/completion.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/download.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/freeze.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/hash.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/help.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/install.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/list.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/search.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/show.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/uninstall.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/commands/wheel.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/compat/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/compat/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/compat/__pycache__/dictconfig.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/compat/dictconfig.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/download.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/exceptions.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/index.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/locations.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/models/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/models/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/models/__pycache__/index.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/models/index.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/operations/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/operations/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/operations/__pycache__/check.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/operations/__pycache__/freeze.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/operations/check.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/operations/freeze.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/pep425tags.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/__pycache__/req_file.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/__pycache__/req_install.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/__pycache__/req_set.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/__pycache__/req_uninstall.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/req_file.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/req_install.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/req_set.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/req/req_uninstall.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/status_codes.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/appdirs.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/build.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/deprecation.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/encoding.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/filesystem.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/glibc.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/hashes.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/logging.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/outdated.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/packaging.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/setuptools_build.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/__pycache__/ui.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/appdirs.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/build.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/deprecation.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/encoding.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/filesystem.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/glibc.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/hashes.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/logging.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/outdated.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/packaging.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/setuptools_build.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/utils/ui.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/__pycache__/bazaar.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/__pycache__/git.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/__pycache__/mercurial.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/__pycache__/subversion.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/bazaar.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/git.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/mercurial.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/vcs/subversion.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pip/wheel.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/DESCRIPTION.rst create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/INSTALLER create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/METADATA create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/RECORD create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/WHEEL create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources-0.0.0.dist-info/metadata.json create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/__pycache__/py31compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/_vendor/six.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/extern/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/pkg_resources/py31compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/DESCRIPTION.rst create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/INSTALLER create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/METADATA create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/RECORD create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/WHEEL create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/dependency_links.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/entry_points.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/metadata.json create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/top_level.txt create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools-39.0.1.dist-info/zip-safe create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/build_meta.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/config.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/dep_util.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/glibc.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/pep425tags.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/py33compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/py36compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/wheel.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/six.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/_compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/_vendor/six.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/archive_util.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/build_meta.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/cli-32.exe create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/cli-64.exe create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/cli.exe create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/build_clib.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/dist_info.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/alias.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/bdist_egg.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/bdist_rpm.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/bdist_wininst.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/build_clib.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/build_ext.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/build_py.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/develop.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/dist_info.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/easy_install.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/egg_info.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/install.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/install_egg_info.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/install_lib.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/install_scripts.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/launcher manifest.xml create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/py36compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/register.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/rotate.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/saveopts.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/sdist.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/setopt.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/test.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/upload.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/command/upload_docs.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/config.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/dep_util.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/depends.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/dist.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/extension.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/extern/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/glibc.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/glob.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/gui-32.exe create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/gui-64.exe create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/gui.exe create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/launch.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/lib2to3_ex.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/monkey.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/msvc.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/namespaces.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/package_index.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/pep425tags.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/py27compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/py31compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/py33compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/py36compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/sandbox.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/script (dev).tmpl create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/script.tmpl create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/site-patch.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/ssl_support.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/unicode_utils.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/version.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/wheel.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/setuptools/windows_support.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/_compat.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/_internal.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/_reloader.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/datastructures.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/exceptions.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/filesystem.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/formparser.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/http.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/local.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/posixemulation.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/routing.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/security.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/serving.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/test.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/testapp.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/urls.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/useragents.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/utils.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/__pycache__/wsgi.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/_compat.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/_internal.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/_reloader.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/atom.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/cache.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/fixers.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/iterio.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/lint.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/profiler.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/securecookie.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/sessions.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/__pycache__/wrappers.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/atom.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/cache.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/fixers.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/iterio.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/lint.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/profiler.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/securecookie.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/sessions.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/contrib/wrappers.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/datastructures.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/__pycache__/console.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/__pycache__/repr.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/__pycache__/tbtools.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/console.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/repr.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/shared/FONT_LICENSE create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/shared/console.png create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/shared/debugger.js create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/shared/jquery.js create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/shared/less.png create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/shared/more.png create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/shared/source.png create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/shared/style.css create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/shared/ubuntu.ttf create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/debug/tbtools.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/exceptions.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/filesystem.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/formparser.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/http.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/local.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/lint.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/dispatcher.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/http_proxy.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/lint.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/profiler.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/proxy_fix.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/posixemulation.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/routing.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/security.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/serving.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/test.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/testapp.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/urls.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/useragents.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/utils.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__init__.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/accept.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/auth.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/base_request.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/base_response.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/common_descriptors.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/etag.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/json.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/request.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/response.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/user_agent.cpython-36.pyc create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/accept.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/auth.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/base_request.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/common_descriptors.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/etag.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/json.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/request.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/response.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/user_agent.py create mode 100644 week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wsgi.py create mode 120000 week-0/day-3/my_todo_app/venv/lib64 create mode 100644 week-0/day-3/my_todo_app/venv/pyvenv.cfg create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/certifi-2018.1.18-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/chardet-3.0.4-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/colorama-0.3.7-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/distlib-0.2.6-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/distro-1.0.1-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/html5lib-0.999999999-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/idna-2.6-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/ipaddress-0.0.0-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/packaging-17.1-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/pip-9.0.1-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/progress-1.2-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/pyparsing-2.2.0-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/requests-2.18.4-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/setuptools-39.0.1-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/six-1.11.0-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/urllib3-1.22-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/webencodings-0.5-py2.py3-none-any.whl create mode 100644 week-0/day-3/my_todo_app/venv/share/python-wheels/wheel-0.30.0-py2.py3-none-any.whl diff --git a/week-0/day-3/my_todo_app/todo_app/__init__.py b/week-0/day-3/my_todo_app/todo_app/__init__.py new file mode 100644 index 00000000..e4b10c85 --- /dev/null +++ b/week-0/day-3/my_todo_app/todo_app/__init__.py @@ -0,0 +1,102 @@ +import os + +from flask import Flask +from flask import request +from flask import render_template +from flask_mysqldb import MySQL + +# todo_store={} +# todo_store['shivang']=['dddd','dssdsd','sgfdxaf'] +# todo_store['rahul']=['asfda','asafa','sadad'] +def create_app(test_config=None): + # create and configure the app + app = Flask(__name__, instance_relative_config=True) + app.config['MYSQL_HOST']='localhost' + app.config['MYSQL_USER']='root' + app.config['MYSQL_PASSWORD']='2020' + app.config['MYSQL_DB']='todo' + mysql=MySQL(app) + + # ensure the instance folder exists + try: + os.makedirs(app.instance_path) + except OSError: + pass + + + def todo_view(todos): + the_view='List of todos:'+'
' + for todo in todos: + the_view+=(todo+'
') + the_view+='---List ends here----' + return the_view + + + + + def select_todos(name): + # global todo_store + # return todo_store[name] + cur=mysql.connection.cursor() + + cur.execute("select todo from todos where name=%s",(name,)) + print('fdf') + data=cur.fetchall() + data1=[] + for i in data : + data1.append(i[0]) + return data1 + + def get_todo_by_name(name): + try: + return select_todos(name) + except: + return None + + def add_todos1(name,todo): + cur=mysql.connection.cursor() + cur.execute("insert into todos (name ,todo) values(%s,%s)",(name,todo)) + mysql.connection.commit() + cur.close() + + + + def add_todo_by_name(name,todo): + #call db func + + add_todos1(name,todo) + + @app.route('/todos',methods=('GET','POST')) + def todos(): + if request.method=='POST': + name=request.form['name'] + + cc=get_todo_by_name(name) + # return todo_view(cc) + if cc==None: + return render_template('404.html'), 404 + else: + return render_template('todo_view.html',todos=cc) + + return render_template('todo_query.html') + + + + + @app.route('/add_todos',methods=('GET','POST')) + def add_todos(): + if request.method=='POST': + name=request.form['name'] + todo=request.form['todo'] + add_todo_by_name(name,todo) + return 'added success' + + return render_template('add_todo.html') + + + + @app.route('/delete_todo') + def delete_todo(): + return 'deleted todo' + + return app diff --git a/week-0/day-3/my_todo_app/todo_app/__pycache__/__init__.cpython-36.pyc b/week-0/day-3/my_todo_app/todo_app/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..872a28464be2693ff66fc38f1a7290e68a00eafd GIT binary patch literal 2770 zcmZuzOLG%P5T2QRXf4YR3>3C`iGUN7*p@L=C6#h0k}@O*Fa(hhwu;)UcScCIq_t<( zfVQNQU1d0M<3}WaX|LpxzmQY9d+}OOmTFtAneLwMuOG8FCnm}t-hcD_uQA3xu#t}i z{2h4AJs^@v-eEreiVp7zUvT6t;4R-G-Ui zxfJijkV|X8w}iCUm~@D9fh!T`0XIfmd5t9?x6j{N{prNsLP>X@bM}<=&e$v|ZI|_* zoZxn;@9G8^?HWY_elgkM?dEmXZ4{hM5^pHNV0})`A9(wGh+cZ~y!?W880=h-7iq_)olE;%UY6AZ2D0ECpmufR2|zL1?wKU) zMJmt=&}qL^K@|6z?HActCyv5SD>jK=e(((N3VwOmc#_#Vj*FGw8h0Q2_Ug*&ia(jl zJo>TGc>3`1dS)lFjD0U(UH_>78$q_=X&~5N1CjQSzn&eib@qIECu&|V#{#2S||7JBS zb4cCyl9mcyw$&>Qb;@-4i2T>6x8km<>#()gsjn-uoy0r!FbbvW_Lo{=v>hg`xL1Fr z)b`R!U55RooAqu#K&wHxvr{jaAZYj6Nf0dW^s_Nq#pBLn@OT>IHZSvO?(y_uq!pAW zsxPk*_U86-p;6%HfD+<&8Xj{W$Q!oBw)j3_1ck~6ko)M2hSux( zfdHImhW5aMBDJM82L-{|?kXT{K~dNn={2J|DoP08YE#GE9O~*TM77!ryXuDp<6BMH z)Yw2ZH!DNM^gyK@_cAxy(9b7qy?FT&U?VD!^Km{k^&0G~%d&hWH)5{#p&1(N7J zrk#+S1*Y%4VFSRUL5+$dr$JARZ;&4~u2B|#PoeXbS>RDsV?laOmGuuvpf3`Cyf0dERSGwoRW;4b;H0{rpE z99~D~s*6}vwd%{T10(YKf>~TJwVIcR+<40cwaF)f(Jc2hL4NnsjG_g&7Hu=r};hQ0*0D8kgc zwQ_5@m2^Ap_fW9uWHAwF5n>+)(R7NI;mXtfeBIWFV&>)^XLd8zU5&2Ra^x}*MW8%~ z=M*UD);f#A8ibt{>s|DKteQZ-KP}n#E&ih=Un4tSOQnG6HqDUD-f2rt3!`4+ePhUYY5;EyS%olLIh&dZ8eE%Ib43;uQ z4pm#`wm5k%7dmOBE@586+(syh!ayT9UmEZj^nqSfpeZZ4w4{d2y&zYP3H8$Wh|x{7 zLB%W5%O@paL>97p5yYu}KH zmz5qi?rIG)-O({j^qT9BC-7=@^qyeBJl7L=C|07risTv+3<<^x!A%WH#YRJe=4U=M zjsrq<^Cb`_Dg-_zz_SDlkV)=ZUb!++aVuWMnLjmOnX&Z}+UFZJPk#km<}~r$kHVzd nr_}osv>MQ5A~z{oQv4ixa>iTh#&WNtZe!}`e)hl>`a1su23Cnu literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/todo_app/db.py b/week-0/day-3/my_todo_app/todo_app/db.py new file mode 100644 index 00000000..e69de29b diff --git a/week-0/day-3/my_todo_app/todo_app/templates/404.html b/week-0/day-3/my_todo_app/todo_app/templates/404.html new file mode 100644 index 00000000..78acf0ab --- /dev/null +++ b/week-0/day-3/my_todo_app/todo_app/templates/404.html @@ -0,0 +1,3 @@ +
+ 404 not found +
diff --git a/week-0/day-3/my_todo_app/todo_app/templates/add_todo.html b/week-0/day-3/my_todo_app/todo_app/templates/add_todo.html new file mode 100644 index 00000000..b1eb7558 --- /dev/null +++ b/week-0/day-3/my_todo_app/todo_app/templates/add_todo.html @@ -0,0 +1,16 @@ + + + + + +
+
+ + + + + +
+
+ + diff --git a/week-0/day-3/my_todo_app/todo_app/templates/todo_query.html b/week-0/day-3/my_todo_app/todo_app/templates/todo_query.html new file mode 100644 index 00000000..3906b73c --- /dev/null +++ b/week-0/day-3/my_todo_app/todo_app/templates/todo_query.html @@ -0,0 +1,18 @@ + + + + + +
+
+ +
+ + +
+ + +
+
+ + diff --git a/week-0/day-3/my_todo_app/todo_app/templates/todo_view.html b/week-0/day-3/my_todo_app/todo_app/templates/todo_view.html new file mode 100644 index 00000000..eded0180 --- /dev/null +++ b/week-0/day-3/my_todo_app/todo_app/templates/todo_view.html @@ -0,0 +1,26 @@ + + + + + +
+
    + {%for i in todos%} +
  1. {{i}}
  2. + {%endfor%} +
+
+ + + + + + diff --git a/week-0/day-3/my_todo_app/venv/bin/activate b/week-0/day-3/my_todo_app/venv/bin/activate new file mode 100644 index 00000000..91a6196c --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/activate @@ -0,0 +1,76 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "$1" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="/home/rahul/Desktop/academy-hackathon/week-0/day-3/my_todo_app/venv" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + if [ "x(venv) " != x ] ; then + PS1="(venv) ${PS1:-}" + else + if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then + # special case for Aspen magic directories + # see http://www.zetadev.com/software/aspen/ + PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1" + else + PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" + fi + fi + export PS1 +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r +fi diff --git a/week-0/day-3/my_todo_app/venv/bin/activate.csh b/week-0/day-3/my_todo_app/venv/bin/activate.csh new file mode 100644 index 00000000..d6782920 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/activate.csh @@ -0,0 +1,37 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . +# Ported to Python 3.3 venv by Andrew Svetlov + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/home/rahul/Desktop/academy-hackathon/week-0/day-3/my_todo_app/venv" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + if ("venv" != "") then + set env_name = "venv" + else + if (`basename "VIRTUAL_ENV"` == "__") then + # special case for Aspen magic directories + # see http://www.zetadev.com/software/aspen/ + set env_name = `basename \`dirname "$VIRTUAL_ENV"\`` + else + set env_name = `basename "$VIRTUAL_ENV"` + endif + endif + set prompt = "[$env_name] $prompt" + unset env_name +endif + +alias pydoc python -m pydoc + +rehash diff --git a/week-0/day-3/my_todo_app/venv/bin/activate.fish b/week-0/day-3/my_todo_app/venv/bin/activate.fish new file mode 100644 index 00000000..c086bc77 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/activate.fish @@ -0,0 +1,75 @@ +# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org) +# you cannot run it directly + +function deactivate -d "Exit virtualenv and return to normal shell environment" + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + functions -e fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + + set -e VIRTUAL_ENV + if test "$argv[1]" != "nondestructive" + # Self destruct! + functions -e deactivate + end +end + +# unset irrelevant variables +deactivate nondestructive + +set -gx VIRTUAL_ENV "/home/rahul/Desktop/academy-hackathon/week-0/day-3/my_todo_app/venv" + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# unset PYTHONHOME if set +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # fish uses a function instead of an env var to generate the prompt. + + # save the current fish_prompt function as the function _old_fish_prompt + functions -c fish_prompt _old_fish_prompt + + # with the original prompt function renamed, we can override with our own. + function fish_prompt + # Save the return status of the last command + set -l old_status $status + + # Prompt override? + if test -n "(venv) " + printf "%s%s" "(venv) " (set_color normal) + else + # ...Otherwise, prepend env + set -l _checkbase (basename "$VIRTUAL_ENV") + if test $_checkbase = "__" + # special case for Aspen magic directories + # see http://www.zetadev.com/software/aspen/ + printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) + else + printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) + end + end + + # Restore the return status of the previous command. + echo "exit $old_status" | . + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" +end diff --git a/week-0/day-3/my_todo_app/venv/bin/easy_install b/week-0/day-3/my_todo_app/venv/bin/easy_install new file mode 100755 index 00000000..cdffadf7 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/easy_install @@ -0,0 +1,11 @@ +#!/home/rahul/Desktop/academy-hackathon/week-0/day-3/my_todo_app/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/week-0/day-3/my_todo_app/venv/bin/easy_install-3.6 b/week-0/day-3/my_todo_app/venv/bin/easy_install-3.6 new file mode 100755 index 00000000..cdffadf7 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/easy_install-3.6 @@ -0,0 +1,11 @@ +#!/home/rahul/Desktop/academy-hackathon/week-0/day-3/my_todo_app/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/week-0/day-3/my_todo_app/venv/bin/flask b/week-0/day-3/my_todo_app/venv/bin/flask new file mode 100755 index 00000000..2a0ea856 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/flask @@ -0,0 +1,11 @@ +#!/home/rahul/Desktop/academy-hackathon/week-0/day-3/my_todo_app/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/week-0/day-3/my_todo_app/venv/bin/pip b/week-0/day-3/my_todo_app/venv/bin/pip new file mode 100755 index 00000000..100fed76 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/pip @@ -0,0 +1,11 @@ +#!/home/rahul/Desktop/academy-hackathon/week-0/day-3/my_todo_app/venv/bin/python3 + +# -*- coding: utf-8 -*- +import re +import sys + +from pip import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/week-0/day-3/my_todo_app/venv/bin/pip3 b/week-0/day-3/my_todo_app/venv/bin/pip3 new file mode 100755 index 00000000..100fed76 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/pip3 @@ -0,0 +1,11 @@ +#!/home/rahul/Desktop/academy-hackathon/week-0/day-3/my_todo_app/venv/bin/python3 + +# -*- coding: utf-8 -*- +import re +import sys + +from pip import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/week-0/day-3/my_todo_app/venv/bin/pip3.6 b/week-0/day-3/my_todo_app/venv/bin/pip3.6 new file mode 100755 index 00000000..100fed76 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/pip3.6 @@ -0,0 +1,11 @@ +#!/home/rahul/Desktop/academy-hackathon/week-0/day-3/my_todo_app/venv/bin/python3 + +# -*- coding: utf-8 -*- +import re +import sys + +from pip import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/week-0/day-3/my_todo_app/venv/bin/python b/week-0/day-3/my_todo_app/venv/bin/python new file mode 120000 index 00000000..b8a0adbb --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/week-0/day-3/my_todo_app/venv/bin/python3 b/week-0/day-3/my_todo_app/venv/bin/python3 new file mode 120000 index 00000000..ae65fdaa --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt new file mode 100644 index 00000000..87ce152a --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt @@ -0,0 +1,39 @@ +Copyright © 2014 by the Pallets team. + +Some rights reserved. + +Redistribution and use in source and binary forms of the software as +well as documentation, with or without modification, are permitted +provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +---- + +Click uses parts of optparse written by Gregory P. Ward and maintained +by the Python Software Foundation. This is limited to code in parser.py. + +Copyright © 2001-2006 Gregory P. Ward. All rights reserved. +Copyright © 2002-2006 Python Software Foundation. All rights reserved. diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA new file mode 100644 index 00000000..625bdadd --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA @@ -0,0 +1,121 @@ +Metadata-Version: 2.1 +Name: Click +Version: 7.0 +Summary: Composable command line interface toolkit +Home-page: https://palletsprojects.com/p/click/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +Maintainer: Pallets Team +Maintainer-email: contact@palletsprojects.com +License: BSD +Project-URL: Documentation, https://click.palletsprojects.com/ +Project-URL: Code, https://github.com/pallets/click +Project-URL: Issue tracker, https://github.com/pallets/click/issues +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* + +\$ click\_ +========== + +Click is a Python package for creating beautiful command line interfaces +in a composable way with as little code as necessary. It's the "Command +Line Interface Creation Kit". It's highly configurable but comes with +sensible defaults out of the box. + +It aims to make the process of writing command line tools quick and fun +while also preventing any frustration caused by the inability to +implement an intended CLI API. + +Click in three points: + +- Arbitrary nesting of commands +- Automatic help page generation +- Supports lazy loading of subcommands at runtime + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + $ pip install click + +Click supports Python 3.4 and newer, Python 2.7, and PyPy. + +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + +A Simple Example +---------------- + +What does it look like? Here is an example of a simple Click program: + +.. code-block:: python + + import click + + @click.command() + @click.option("--count", default=1, help="Number of greetings.") + @click.option("--name", prompt="Your name", + help="The person to greet.") + def hello(count, name): + """Simple program that greets NAME for a total of COUNT times.""" + for _ in range(count): + click.echo("Hello, %s!" % name) + + if __name__ == '__main__': + hello() + +And what it looks like when run: + +.. code-block:: text + + $ python hello.py --count=3 + Your name: Click + Hello, Click! + Hello, Click! + Hello, Click! + + +Donate +------ + +The Pallets organization develops and supports Click and other popular +packages. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, `please +donate today`_. + +.. _please donate today: https://palletsprojects.com/donate + + +Links +----- + +* Website: https://palletsprojects.com/p/click/ +* Documentation: https://click.palletsprojects.com/ +* License: `BSD `_ +* Releases: https://pypi.org/project/click/ +* Code: https://github.com/pallets/click +* Issue tracker: https://github.com/pallets/click/issues +* Test status: + + * Linux, Mac: https://travis-ci.org/pallets/click + * Windows: https://ci.appveyor.com/project/pallets/click + +* Test coverage: https://codecov.io/gh/pallets/click + + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD new file mode 100644 index 00000000..fc9c6316 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD @@ -0,0 +1,40 @@ +Click-7.0.dist-info/LICENSE.txt,sha256=4hIxn676T0Wcisk3_chVcECjyrivKTZsoqSNI5AlIlw,1876 +Click-7.0.dist-info/METADATA,sha256=-r8jeke3Zer4diRvT1MjFZuiJ6yTT_qFP39svLqdaLI,3516 +Click-7.0.dist-info/RECORD,, +Click-7.0.dist-info/WHEEL,sha256=gduuPyBvFJQSQ0zdyxF7k0zynDXbIbvg5ZBHoXum5uk,110 +Click-7.0.dist-info/top_level.txt,sha256=J1ZQogalYS4pphY_lPECoNMfw0HzTSrZglC4Yfwo4xA,6 +click/__init__.py,sha256=HjGThQ7tef9kkwCV371TBnrf0SAi6fKfU_jtEnbYTvQ,2789 +click/_bashcomplete.py,sha256=iaNUmtxag0YPfxba3TDYCNietiTMQIrvhRLj-H8okFU,11014 +click/_compat.py,sha256=vYmvoj4opPxo-c-2GMQQjYT_r_QkOKybkfGoeVrt0dA,23399 +click/_termui_impl.py,sha256=xHmLtOJhKUCVD6168yucJ9fknUJPAMs0eUTPgVUO-GQ,19611 +click/_textwrap.py,sha256=gwS4m7bdQiJnzaDG8osFcRb-5vn4t4l2qSCy-5csCEc,1198 +click/_unicodefun.py,sha256=QHy2_5jYlX-36O-JVrTHNnHOqg8tquUR0HmQFev7Ics,4364 +click/_winconsole.py,sha256=PPWVak8Iikm_gAPsxMrzwsVFCvHgaW3jPaDWZ1JBl3U,8965 +click/core.py,sha256=q8FLcDZsagBGSRe5Y9Hi_FGvAeZvusNfoO5EkhkSQ8Y,75305 +click/decorators.py,sha256=idKt6duLUUfAFftrHoREi8MJSd39XW36pUVHthdglwk,11226 +click/exceptions.py,sha256=CNpAjBAE7qjaV4WChxQeak95e5yUOau8AsvT-8m6wss,7663 +click/formatting.py,sha256=eh-cypTUAhpI3HD-K4ZpR3vCiURIO62xXvKkR3tNUTM,8889 +click/globals.py,sha256=oQkou3ZQ5DgrbVM6BwIBirwiqozbjfirzsLGAlLRRdg,1514 +click/parser.py,sha256=m-nGZz4VwprM42_qtFlWFGo7yRJQxkBlRcZodoH593Y,15510 +click/termui.py,sha256=o_ZXB2jyvL2Rce7P_bFGq452iyBq9ykJyRApIPMCZO0,23207 +click/testing.py,sha256=aYGqY_iWLu2p4k7lkuJ6t3fqpf6aPGqTsyLzNY_ngKg,13062 +click/types.py,sha256=2Q929p-aBP_ZYuMFJqJR-Ipucofv3fmDc5JzBDPmzJU,23287 +click/utils.py,sha256=6-D0WkAxvv9FkgHXSHwDIv0l9Gdx9Mm6Z5vuKNLIfZI,15763 +Click-7.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +click/__pycache__/_unicodefun.cpython-36.pyc,, +click/__pycache__/_textwrap.cpython-36.pyc,, +click/__pycache__/_bashcomplete.cpython-36.pyc,, +click/__pycache__/formatting.cpython-36.pyc,, +click/__pycache__/globals.cpython-36.pyc,, +click/__pycache__/exceptions.cpython-36.pyc,, +click/__pycache__/_winconsole.cpython-36.pyc,, +click/__pycache__/decorators.cpython-36.pyc,, +click/__pycache__/__init__.cpython-36.pyc,, +click/__pycache__/types.cpython-36.pyc,, +click/__pycache__/parser.cpython-36.pyc,, +click/__pycache__/_compat.cpython-36.pyc,, +click/__pycache__/_termui_impl.cpython-36.pyc,, +click/__pycache__/core.cpython-36.pyc,, +click/__pycache__/testing.cpython-36.pyc,, +click/__pycache__/utils.cpython-36.pyc,, +click/__pycache__/termui.cpython-36.pyc,, diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL new file mode 100644 index 00000000..1316c41d --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.31.1) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt new file mode 100644 index 00000000..dca9a909 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt @@ -0,0 +1 @@ +click diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/INSTALLER b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/LICENSE.rst b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/LICENSE.rst new file mode 100644 index 00000000..9d227a0c --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/LICENSE.rst @@ -0,0 +1,28 @@ +Copyright 2010 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/METADATA b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/METADATA new file mode 100644 index 00000000..08fcc912 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/METADATA @@ -0,0 +1,134 @@ +Metadata-Version: 2.1 +Name: Flask +Version: 1.1.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: Documentation, https://flask.palletsprojects.com/ +Project-URL: Code, https://github.com/pallets/flask +Project-URL: Issue tracker, https://github.com/pallets/flask/issues +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Framework :: Flask +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application +Classifier: Topic :: Software Development :: Libraries :: Application Frameworks +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* +Requires-Dist: Werkzeug (>=0.15) +Requires-Dist: Jinja2 (>=2.10.1) +Requires-Dist: itsdangerous (>=0.24) +Requires-Dist: click (>=5.1) +Provides-Extra: dev +Requires-Dist: pytest ; extra == 'dev' +Requires-Dist: coverage ; extra == 'dev' +Requires-Dist: tox ; extra == 'dev' +Requires-Dist: sphinx ; extra == 'dev' +Requires-Dist: pallets-sphinx-themes ; extra == 'dev' +Requires-Dist: sphinxcontrib-log-cabinet ; extra == 'dev' +Requires-Dist: sphinx-issues ; extra == 'dev' +Provides-Extra: docs +Requires-Dist: sphinx ; extra == 'docs' +Requires-Dist: pallets-sphinx-themes ; extra == 'docs' +Requires-Dist: sphinxcontrib-log-cabinet ; extra == 'docs' +Requires-Dist: sphinx-issues ; extra == 'docs' +Provides-Extra: dotenv +Requires-Dist: python-dotenv ; extra == 'dotenv' + +Flask +===== + +Flask is a lightweight `WSGI`_ web application framework. It is designed +to make getting started quick and easy, with the ability to scale up to +complex applications. It began as a simple wrapper around `Werkzeug`_ +and `Jinja`_ and has become one of the most popular Python web +application frameworks. + +Flask offers suggestions, but doesn't enforce any dependencies or +project layout. It is up to the developer to choose the tools and +libraries they want to use. There are many extensions provided by the +community that make adding new functionality easy. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + pip install -U Flask + + +A Simple Example +---------------- + +.. code-block:: python + + from flask import Flask + + app = Flask(__name__) + + @app.route("/") + def hello(): + return "Hello, World!" + +.. code-block:: text + + $ env FLASK_APP=hello.py flask run + * Serving Flask app "hello" + * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) + + +Contributing +------------ + +For guidance on setting up a development environment and how to make a +contribution to Flask, see the `contributing guidelines`_. + +.. _contributing guidelines: https://github.com/pallets/flask/blob/master/CONTRIBUTING.rst + + +Donate +------ + +The Pallets organization develops and supports Flask and the libraries +it uses. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, `please +donate today`_. + +.. _please donate today: https://psfmember.org/civicrm/contribute/transact?reset=1&id=20 + + +Links +----- + +* Website: https://palletsprojects.com/p/flask/ +* Documentation: https://flask.palletsprojects.com/ +* Releases: https://pypi.org/project/Flask/ +* Code: https://github.com/pallets/flask +* Issue tracker: https://github.com/pallets/flask/issues +* Test status: https://dev.azure.com/pallets/flask/_build +* Official chat: https://discord.gg/t6rrQZH + +.. _WSGI: https://wsgi.readthedocs.io +.. _Werkzeug: https://www.palletsprojects.com/p/werkzeug/ +.. _Jinja: https://www.palletsprojects.com/p/jinja/ +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/RECORD b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/RECORD new file mode 100644 index 00000000..0f253174 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/RECORD @@ -0,0 +1,48 @@ +flask/__init__.py,sha256=qaBW4gy9Xxmdc3ygYO0_H214H1VpF7fq8xRR4XbqRjE,1894 +flask/__main__.py,sha256=fjVtt3QTANXlpJCOv3Ha7d5H-76MwzSIOab7SFD9TEk,254 +flask/_compat.py,sha256=8KPT54Iig96TuLipdogLRHNYToIcg-xPhnSV5VRERnw,4099 +flask/app.py,sha256=gLZInxueeQ9dkBo1wrntZ-bZqiDT4rYxy_AQ1xraFDc,98066 +flask/blueprints.py,sha256=vkdm8NusGsfZUeIfPdCluj733QFmiQcT4Sk1tuZLUjw,21400 +flask/cli.py,sha256=_WhPG1bggNdrP0QO95Vex6VJpDqTsVK0z54Y5poljKU,30933 +flask/config.py,sha256=3dejvQRYfNHw_V7dCLMxU8UNFpL34xIKemN7gHZIZ8Y,10052 +flask/ctx.py,sha256=cks-omGedkxawHFo6bKIrdOHsJCAgg1i_NWw_htxb5U,16724 +flask/debughelpers.py,sha256=-whvPKuAoU8AZ9c1z_INuOeBgfYDqE1J2xNBsoriugU,6475 +flask/globals.py,sha256=OgcHb6_NCyX6-TldciOdKcyj4PNfyQwClxdMhvov6aA,1637 +flask/helpers.py,sha256=x2Pa85R5dV6uA5f5423JTb6x4u6ZaMGf8sfosUZ76dQ,43004 +flask/logging.py,sha256=WcY5UkqTysGfmosyygSlXyZYGwOp3y-VsE6ehoJ48dk,3250 +flask/sessions.py,sha256=G0KsEkr_i1LG_wOINwFSOW3ts7Xbv4bNgEZKc7TRloc,14360 +flask/signals.py,sha256=yYLOed2x8WnQ7pirGalQYfpYpCILJ0LJhmNSrnWvjqw,2212 +flask/templating.py,sha256=F8E_IZXn9BGsjMzUJ5N_ACMyZdiFBp_SSEaUunvfZ7g,4939 +flask/testing.py,sha256=b0QaEejx0UcXqfSFP43k5W57bTVeDyrNK3uPD8JUpCk,10146 +flask/views.py,sha256=eeWnadLAj0QdQPLtjKipDetRZyG62CT2y7fNOFDJz0g,5802 +flask/wrappers.py,sha256=kgsvtZuMM6RQaDqhRbc5Pcj9vqTnaERl2pmXcdGL7LU,4736 +flask/json/__init__.py,sha256=6nITbZYiYOPB8Qfi1-dvsblwn01KRz8VOsMBIZyaYek,11988 +flask/json/tag.py,sha256=vq9GOllg_0kTWKuVFrwmkeOQzR-jdBD23x-89JyCCQI,8306 +Flask-1.1.1.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 +Flask-1.1.1.dist-info/METADATA,sha256=Ht4R6TpTKOaXOmmQHhEF3A0Obpzde2Ai0kzNdu6-VWQ,4400 +Flask-1.1.1.dist-info/WHEEL,sha256=h_aVn5OB2IERUjMbi2pucmR_zzWJtk303YXvhh60NJ8,110 +Flask-1.1.1.dist-info/entry_points.txt,sha256=gBLA1aKg0OYR8AhbAfg8lnburHtKcgJLDU52BBctN0k,42 +Flask-1.1.1.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6 +Flask-1.1.1.dist-info/RECORD,, +../../../bin/flask,sha256=TttPRVqz4RkGT7p90cPdE6kJR3CJXxHr3NnsJM8O1f0,275 +Flask-1.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +flask/json/__pycache__/__init__.cpython-36.pyc,, +flask/json/__pycache__/tag.cpython-36.pyc,, +flask/__pycache__/globals.cpython-36.pyc,, +flask/__pycache__/cli.cpython-36.pyc,, +flask/__pycache__/__main__.cpython-36.pyc,, +flask/__pycache__/__init__.cpython-36.pyc,, +flask/__pycache__/signals.cpython-36.pyc,, +flask/__pycache__/sessions.cpython-36.pyc,, +flask/__pycache__/wrappers.cpython-36.pyc,, +flask/__pycache__/app.cpython-36.pyc,, +flask/__pycache__/templating.cpython-36.pyc,, +flask/__pycache__/debughelpers.cpython-36.pyc,, +flask/__pycache__/config.cpython-36.pyc,, +flask/__pycache__/_compat.cpython-36.pyc,, +flask/__pycache__/logging.cpython-36.pyc,, +flask/__pycache__/ctx.cpython-36.pyc,, +flask/__pycache__/views.cpython-36.pyc,, +flask/__pycache__/helpers.cpython-36.pyc,, +flask/__pycache__/testing.cpython-36.pyc,, +flask/__pycache__/blueprints.cpython-36.pyc,, diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/WHEEL b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/WHEEL new file mode 100644 index 00000000..78e6f69d --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.33.4) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/entry_points.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/entry_points.txt new file mode 100644 index 00000000..1eb02520 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +flask = flask.cli:main + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/top_level.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/top_level.txt new file mode 100644 index 00000000..7e106024 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask-1.1.1.dist-info/top_level.txt @@ -0,0 +1 @@ +flask diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/PKG-INFO b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/PKG-INFO new file mode 100644 index 00000000..2068ec3d --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/PKG-INFO @@ -0,0 +1,24 @@ +Metadata-Version: 1.1 +Name: Flask-MySQLdb +Version: 0.2.0 +Summary: MySQLdb extension for Flask +Home-page: https://github.com/admiralobvious/flask-mysqldb +Author: Alexandre Ferland +Author-email: aferlandqc@gmail.com +License: MIT +Description: + Flask-MySQLdb + ---------------- + + MySQLdb extension for Flask + +Platform: any +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Topic :: Software Development :: Libraries :: Python Modules diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/SOURCES.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/SOURCES.txt new file mode 100644 index 00000000..4241f4ee --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/SOURCES.txt @@ -0,0 +1,10 @@ +setup.cfg +setup.py +Flask_MySQLdb.egg-info/PKG-INFO +Flask_MySQLdb.egg-info/SOURCES.txt +Flask_MySQLdb.egg-info/dependency_links.txt +Flask_MySQLdb.egg-info/not-zip-safe +Flask_MySQLdb.egg-info/pbr.json +Flask_MySQLdb.egg-info/requires.txt +Flask_MySQLdb.egg-info/top_level.txt +flask_mysqldb/__init__.py \ No newline at end of file diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/dependency_links.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/dependency_links.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/installed-files.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/installed-files.txt new file mode 100644 index 00000000..c587222d --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/installed-files.txt @@ -0,0 +1,9 @@ +../flask_mysqldb/__init__.py +../flask_mysqldb/__pycache__/__init__.cpython-36.pyc +requires.txt +top_level.txt +dependency_links.txt +pbr.json +PKG-INFO +not-zip-safe +SOURCES.txt diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/not-zip-safe b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/not-zip-safe new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/not-zip-safe @@ -0,0 +1 @@ + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/pbr.json b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/pbr.json new file mode 100644 index 00000000..08050c9c --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/pbr.json @@ -0,0 +1 @@ +{"is_release": false, "git_version": "1bc8de9"} \ No newline at end of file diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/requires.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/requires.txt new file mode 100644 index 00000000..941168ce --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/requires.txt @@ -0,0 +1,2 @@ +Flask>=0.10 +mysqlclient diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/top_level.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/top_level.txt new file mode 100644 index 00000000..bf683609 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Flask_MySQLdb-0.2.0.egg-info/top_level.txt @@ -0,0 +1 @@ +flask_mysqldb diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/INSTALLER b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/LICENSE b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/LICENSE new file mode 100644 index 00000000..10145a26 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/LICENSE @@ -0,0 +1,31 @@ +Copyright (c) 2009 by the Jinja Team, see AUTHORS for more details. + +Some rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * The names of the contributors may not be used to endorse or + promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/METADATA b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/METADATA new file mode 100644 index 00000000..fb4a867d --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/METADATA @@ -0,0 +1,67 @@ +Metadata-Version: 2.1 +Name: Jinja2 +Version: 2.10.1 +Summary: A small but fast and easy to use stand-alone template engine written in pure python. +Home-page: http://jinja.pocoo.org/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +License: BSD +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup :: HTML +Requires-Dist: MarkupSafe (>=0.23) +Provides-Extra: i18n +Requires-Dist: Babel (>=0.8) ; extra == 'i18n' + + +Jinja2 +~~~~~~ + +Jinja2 is a template engine written in pure Python. It provides a +`Django`_ inspired non-XML syntax but supports inline expressions and +an optional `sandboxed`_ environment. + +Nutshell +-------- + +Here a small example of a Jinja template:: + + {% extends 'base.html' %} + {% block title %}Memberlist{% endblock %} + {% block content %} + + {% endblock %} + +Philosophy +---------- + +Application logic is for the controller but don't try to make the life +for the template designer too hard by giving him too few functionality. + +For more informations visit the new `Jinja2 webpage`_ and `documentation`_. + +.. _sandboxed: https://en.wikipedia.org/wiki/Sandbox_(computer_security) +.. _Django: https://www.djangoproject.com/ +.. _Jinja2 webpage: http://jinja.pocoo.org/ +.. _documentation: http://jinja.pocoo.org/2/documentation/ + + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/RECORD b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/RECORD new file mode 100644 index 00000000..24549fb8 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/RECORD @@ -0,0 +1,61 @@ +jinja2/__init__.py,sha256=V1D-JHQKklZseXOMA-uAW7-BeKe_TfPpOFi9-dV04ZA,2616 +jinja2/_compat.py,sha256=xP60CE5Qr8FTYcDE1f54tbZLKGvMwYml4-8T7Q4KG9k,2596 +jinja2/_identifier.py,sha256=W1QBSY-iJsyt6oR_nKSuNNCzV95vLIOYgUNPUI1d5gU,1726 +jinja2/asyncfilters.py,sha256=cTDPvrS8Hp_IkwsZ1m9af_lr5nHysw7uTa5gV0NmZVE,4144 +jinja2/asyncsupport.py,sha256=UErQ3YlTLaSjFb94P4MVn08-aVD9jJxty2JVfMRb-1M,7878 +jinja2/bccache.py,sha256=nQldx0ZRYANMyfvOihRoYFKSlUdd5vJkS7BjxNwlOZM,12794 +jinja2/compiler.py,sha256=BqC5U6JxObSRhblyT_a6Tp5GtEU5z3US1a4jLQaxxgo,65386 +jinja2/constants.py,sha256=uwwV8ZUhHhacAuz5PTwckfsbqBaqM7aKfyJL7kGX5YQ,1626 +jinja2/debug.py,sha256=WTVeUFGUa4v6ReCsYv-iVPa3pkNB75OinJt3PfxNdXs,12045 +jinja2/defaults.py,sha256=Em-95hmsJxIenDCZFB1YSvf9CNhe9rBmytN3yUrBcWA,1400 +jinja2/environment.py,sha256=VnkAkqw8JbjZct4tAyHlpBrka2vqB-Z58RAP-32P1ZY,50849 +jinja2/exceptions.py,sha256=_Rj-NVi98Q6AiEjYQOsP8dEIdu5AlmRHzcSNOPdWix4,4428 +jinja2/ext.py,sha256=atMQydEC86tN1zUsdQiHw5L5cF62nDbqGue25Yiu3N4,24500 +jinja2/filters.py,sha256=yOAJk0MsH-_gEC0i0U6NweVQhbtYaC-uE8xswHFLF4w,36528 +jinja2/idtracking.py,sha256=2GbDSzIvGArEBGLkovLkqEfmYxmWsEf8c3QZwM4uNsw,9197 +jinja2/lexer.py,sha256=ySEPoXd1g7wRjsuw23uimS6nkGN5aqrYwcOKxCaVMBQ,28559 +jinja2/loaders.py,sha256=xiTuURKAEObyym0nU8PCIXu_Qp8fn0AJ5oIADUUm-5Q,17382 +jinja2/meta.py,sha256=fmKHxkmZYAOm9QyWWy8EMd6eefAIh234rkBMW2X4ZR8,4340 +jinja2/nativetypes.py,sha256=_sJhS8f-8Q0QMIC0dm1YEdLyxEyoO-kch8qOL5xUDfE,7308 +jinja2/nodes.py,sha256=L10L_nQDfubLhO3XjpF9qz46FSh2clL-3e49ogVlMmA,30853 +jinja2/optimizer.py,sha256=MsdlFACJ0FRdPtjmCAdt7JQ9SGrXFaDNUaslsWQaG3M,1722 +jinja2/parser.py,sha256=lPzTEbcpTRBLw8ii6OYyExHeAhaZLMA05Hpv4ll3ULk,35875 +jinja2/runtime.py,sha256=DHdD38Pq8gj7uWQC5usJyWFoNWL317A9AvXOW_CLB34,27755 +jinja2/sandbox.py,sha256=UmX8hVjdaERCbA3RXBwrV1f-beA23KmijG5kzPJyU4A,17106 +jinja2/tests.py,sha256=iJQLwbapZr-EKquTG_fVOVdwHUUKf3SX9eNkjQDF8oU,4237 +jinja2/utils.py,sha256=q24VupGZotQ-uOyrJxCaXtDWhZC1RgsQG7kcdmjck2Q,20629 +jinja2/visitor.py,sha256=JD1H1cANA29JcntFfN5fPyqQxB4bI4wC00BzZa-XHks,3316 +Jinja2-2.10.1.dist-info/LICENSE,sha256=JvzUNv3Io51EiWrAPm8d_SXjhJnEjyDYvB3Tvwqqils,1554 +Jinja2-2.10.1.dist-info/METADATA,sha256=rx0eN8lX8iq8-YVppmCzV1Qx4y3Pj9IWi08mXUCrewI,2227 +Jinja2-2.10.1.dist-info/WHEEL,sha256=HX-v9-noUkyUoxyZ1PMSuS7auUxDAR4VBdoYLqD0xws,110 +Jinja2-2.10.1.dist-info/entry_points.txt,sha256=NdzVcOrqyNyKDxD09aERj__3bFx2paZhizFDsKmVhiA,72 +Jinja2-2.10.1.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7 +Jinja2-2.10.1.dist-info/RECORD,, +Jinja2-2.10.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +jinja2/__pycache__/filters.cpython-36.pyc,, +jinja2/__pycache__/asyncfilters.cpython-36.pyc,, +jinja2/__pycache__/exceptions.cpython-36.pyc,, +jinja2/__pycache__/constants.cpython-36.pyc,, +jinja2/__pycache__/optimizer.cpython-36.pyc,, +jinja2/__pycache__/debug.cpython-36.pyc,, +jinja2/__pycache__/environment.cpython-36.pyc,, +jinja2/__pycache__/nodes.cpython-36.pyc,, +jinja2/__pycache__/__init__.cpython-36.pyc,, +jinja2/__pycache__/asyncsupport.cpython-36.pyc,, +jinja2/__pycache__/idtracking.cpython-36.pyc,, +jinja2/__pycache__/runtime.cpython-36.pyc,, +jinja2/__pycache__/parser.cpython-36.pyc,, +jinja2/__pycache__/loaders.cpython-36.pyc,, +jinja2/__pycache__/meta.cpython-36.pyc,, +jinja2/__pycache__/_compat.cpython-36.pyc,, +jinja2/__pycache__/defaults.cpython-36.pyc,, +jinja2/__pycache__/_identifier.cpython-36.pyc,, +jinja2/__pycache__/nativetypes.cpython-36.pyc,, +jinja2/__pycache__/sandbox.cpython-36.pyc,, +jinja2/__pycache__/lexer.cpython-36.pyc,, +jinja2/__pycache__/visitor.cpython-36.pyc,, +jinja2/__pycache__/bccache.cpython-36.pyc,, +jinja2/__pycache__/compiler.cpython-36.pyc,, +jinja2/__pycache__/utils.cpython-36.pyc,, +jinja2/__pycache__/ext.cpython-36.pyc,, +jinja2/__pycache__/tests.cpython-36.pyc,, diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/WHEEL b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/WHEEL new file mode 100644 index 00000000..c8240f03 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.33.1) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/entry_points.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/entry_points.txt new file mode 100644 index 00000000..32e6b753 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/entry_points.txt @@ -0,0 +1,4 @@ + + [babel.extractors] + jinja2 = jinja2.ext:babel_extract[i18n] + \ No newline at end of file diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/top_level.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/top_level.txt new file mode 100644 index 00000000..7f7afbf3 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Jinja2-2.10.1.dist-info/top_level.txt @@ -0,0 +1 @@ +jinja2 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.txt new file mode 100644 index 00000000..9d227a0c --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2010 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA new file mode 100644 index 00000000..b208d936 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA @@ -0,0 +1,103 @@ +Metadata-Version: 2.1 +Name: MarkupSafe +Version: 1.1.1 +Summary: Safely add untrusted strings to HTML/XML markup. +Home-page: https://palletsprojects.com/p/markupsafe/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +Maintainer: The Pallets Team +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +Project-URL: Documentation, https://markupsafe.palletsprojects.com/ +Project-URL: Code, https://github.com/pallets/markupsafe +Project-URL: Issue tracker, https://github.com/pallets/markupsafe/issues +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup :: HTML +Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.* + +MarkupSafe +========== + +MarkupSafe implements a text object that escapes characters so it is +safe to use in HTML and XML. Characters that have special meanings are +replaced so that they display as the actual characters. This mitigates +injection attacks, meaning untrusted user input can safely be displayed +on a page. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + pip install -U MarkupSafe + +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + +Examples +-------- + +.. code-block:: pycon + + >>> from markupsafe import Markup, escape + >>> # escape replaces special characters and wraps in Markup + >>> escape('') + Markup(u'<script>alert(document.cookie);</script>') + >>> # wrap in Markup to mark text "safe" and prevent escaping + >>> Markup('Hello') + Markup('hello') + >>> escape(Markup('Hello')) + Markup('hello') + >>> # Markup is a text subclass (str on Python 3, unicode on Python 2) + >>> # methods and operators escape their arguments + >>> template = Markup("Hello %s") + >>> template % '"World"' + Markup('Hello "World"') + + +Donate +------ + +The Pallets organization develops and supports MarkupSafe and other +libraries that use it. In order to grow the community of contributors +and users, and allow the maintainers to devote more time to the +projects, `please donate today`_. + +.. _please donate today: https://palletsprojects.com/donate + + +Links +----- + +* Website: https://palletsprojects.com/p/markupsafe/ +* Documentation: https://markupsafe.palletsprojects.com/ +* License: `BSD-3-Clause `_ +* Releases: https://pypi.org/project/MarkupSafe/ +* Code: https://github.com/pallets/markupsafe +* Issue tracker: https://github.com/pallets/markupsafe/issues +* Test status: + + * Linux, Mac: https://travis-ci.org/pallets/markupsafe + * Windows: https://ci.appveyor.com/project/pallets/markupsafe + +* Test coverage: https://codecov.io/gh/pallets/markupsafe + + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD new file mode 100644 index 00000000..7821e8bd --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD @@ -0,0 +1,16 @@ +MarkupSafe-1.1.1.dist-info/LICENSE.txt,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 +MarkupSafe-1.1.1.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 +MarkupSafe-1.1.1.dist-info/RECORD,, +MarkupSafe-1.1.1.dist-info/METADATA,sha256=nJHwJ4_4ka-V39QH883jPrslj6inNdyyNASBXbYgHXQ,3570 +MarkupSafe-1.1.1.dist-info/WHEEL,sha256=d2ILPScH-y2UwGxsW1PeA2TT-KW0Git4AJ6LeOK8sQo,109 +markupsafe/_constants.py,sha256=zo2ajfScG-l1Sb_52EP3MlDCqO7Y1BVHUXXKRsVDRNk,4690 +markupsafe/_compat.py,sha256=uEW1ybxEjfxIiuTbRRaJpHsPFf4yQUMMKaPgYEC5XbU,558 +markupsafe/_native.py,sha256=d-8S_zzYt2y512xYcuSxq0NeG2DUUvG80wVdTn-4KI8,1873 +markupsafe/__init__.py,sha256=oTblO5f9KFM-pvnq9bB0HgElnqkJyqHnFN1Nx2NIvnY,10126 +markupsafe/_speedups.cpython-36m-x86_64-linux-gnu.so,sha256=YAxqjdtS2XJQ043wfxMAnE1u7KpsBc49UrW9yGPiK0w,38875 +markupsafe/_speedups.c,sha256=k0fzEIK3CP6MmMqeY0ob43TP90mVN0DTyn7BAl3RqSg,9884 +MarkupSafe-1.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +markupsafe/__pycache__/_constants.cpython-36.pyc,, +markupsafe/__pycache__/_native.cpython-36.pyc,, +markupsafe/__pycache__/__init__.cpython-36.pyc,, +markupsafe/__pycache__/_compat.cpython-36.pyc,, diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL new file mode 100644 index 00000000..92946fe5 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.31.1) +Root-Is-Purelib: false +Tag: cp36-cp36m-manylinux1_x86_64 + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt new file mode 100644 index 00000000..75bf7292 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt @@ -0,0 +1 @@ +markupsafe diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__init__.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__init__.py new file mode 100644 index 00000000..92b5d264 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__init__.py @@ -0,0 +1,98 @@ +""" +MySQLdb - A DB API v2.0 compatible interface to MySQL. + +This package is a wrapper around _mysql, which mostly implements the +MySQL C API. + +connect() -- connects to server + +See the C API specification and the MySQL documentation for more info +on other items. + +For information on how MySQLdb handles type conversion, see the +MySQLdb.converters module. +""" + +from MySQLdb.release import __version__, version_info, __author__ + +from . import _mysql + +if version_info != _mysql.version_info: + raise ImportError("this is MySQLdb version %s, but _mysql is version %r" % + (version_info, _mysql.version_info)) + +threadsafety = 1 +apilevel = "2.0" +paramstyle = "format" + +from ._mysql import * +from MySQLdb.compat import PY2 +from MySQLdb.constants import FIELD_TYPE +from MySQLdb.times import Date, Time, Timestamp, \ + DateFromTicks, TimeFromTicks, TimestampFromTicks + +try: + frozenset +except NameError: + from sets import ImmutableSet as frozenset + +class DBAPISet(frozenset): + """A special type of set for which A == x is true if A is a + DBAPISet and x is a member of that set.""" + + def __eq__(self, other): + if isinstance(other, DBAPISet): + return not self.difference(other) + return other in self + + +STRING = DBAPISet([FIELD_TYPE.ENUM, FIELD_TYPE.STRING, + FIELD_TYPE.VAR_STRING]) +BINARY = DBAPISet([FIELD_TYPE.BLOB, FIELD_TYPE.LONG_BLOB, + FIELD_TYPE.MEDIUM_BLOB, FIELD_TYPE.TINY_BLOB]) +NUMBER = DBAPISet([FIELD_TYPE.DECIMAL, FIELD_TYPE.DOUBLE, FIELD_TYPE.FLOAT, + FIELD_TYPE.INT24, FIELD_TYPE.LONG, FIELD_TYPE.LONGLONG, + FIELD_TYPE.TINY, FIELD_TYPE.YEAR, FIELD_TYPE.NEWDECIMAL]) +DATE = DBAPISet([FIELD_TYPE.DATE]) +TIME = DBAPISet([FIELD_TYPE.TIME]) +TIMESTAMP = DBAPISet([FIELD_TYPE.TIMESTAMP, FIELD_TYPE.DATETIME]) +DATETIME = TIMESTAMP +ROWID = DBAPISet() + +def test_DBAPISet_set_equality(): + assert STRING == STRING + +def test_DBAPISet_set_inequality(): + assert STRING != NUMBER + +def test_DBAPISet_set_equality_membership(): + assert FIELD_TYPE.VAR_STRING == STRING + +def test_DBAPISet_set_inequality_membership(): + assert FIELD_TYPE.DATE != STRING + +if PY2: + def Binary(x): + return bytearray(x) +else: + def Binary(x): + return bytes(x) + +def Connect(*args, **kwargs): + """Factory function for connections.Connection.""" + from MySQLdb.connections import Connection + return Connection(*args, **kwargs) + +connect = Connection = Connect + +__all__ = [ 'BINARY', 'Binary', 'Connect', 'Connection', 'DATE', + 'Date', 'Time', 'Timestamp', 'DateFromTicks', 'TimeFromTicks', + 'TimestampFromTicks', 'DataError', 'DatabaseError', 'Error', + 'FIELD_TYPE', 'IntegrityError', 'InterfaceError', 'InternalError', + 'MySQLError', 'NULL', 'NUMBER', 'NotSupportedError', 'DBAPISet', + 'OperationalError', 'ProgrammingError', 'ROWID', 'STRING', 'TIME', + 'TIMESTAMP', 'Warning', 'apilevel', 'connect', 'connections', + 'constants', 'converters', 'cursors', 'debug', 'escape', + 'escape_string', 'get_client_info', + 'paramstyle', 'string_literal', 'threadsafety', 'version_info'] + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/__init__.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0fb6ca0feb25c3a587505d438d5024a72102751 GIT binary patch literal 3584 zcma(T*>V#}vMv0h~BocBsK0sRJUN{ z@J4Jb^SrUYvG4me{kl){2OImenbi_@40E+qSy@$CSy_43>eQ4O3|{`(E-1=>lvCdt z;xDm9|5X(Q6sCX*ny302(|n!jzQGJt0UZo4<7Zh`Rk+Tx@AN}myyO#*Nk<)RUiqZ{ zT?L)xAj|SF!A#tf^Rg}Cm-i<90xKXN6-;l+FS4S z`sdg=RT<{^ysEra0?SbN`9o9uTUF?XJPO_g|02WHeI?NTq`XpK3W`4{P~`KUbhf}3 zc=6pOY?rZJ>FS?Uc3I9{#ql+47PjkM1LtqZ`I|Vtg>4brZESb2-NjbIb`RVAZXRiu zB<*rnMSNM}Wr>$1UO~DCT@BYNyuu#vg-;552-7h0gThu|7Ur;Dg)?v#`!zTR^VmP) zg@3BzZ*U$i;OKFXgNrE!3vdZ%p71Az!oFf(!)3Stm*5Iqg==8Jb+`dH;T9~yZMXw> zp#=BfJ}kj9l%WDecmNM!1y*4V9>HUH0$;(`@C`hLXYd?ez#rfxRAC)9pw?Yt-#~p& zDQ!A7n%~?W?tQlf2iCGxwQB2D^>xGguu^_twL`z}#O{H|EjNg{=s0a|#i1qX%cj}t zxsla(+J{aTDI&|UJ_@Jb=fZMCI0(S9{bBUpTe3d(+;-3M!zlKKmh1OD?(-mythmS1 z!>tWE6=|U^w;sY0^xyMn29#1z|QJ=Tnj@w2l!@zRzNLrKf zSrE1dbWFO|2?Yuu=q8=eMB)%Bh2_TFkMP`0T&5M_r{qY`3qPiuP%}Mb?Qs-j*ykh` ziW1?8ODL8UXRN|Ag^!U>dd5JB$fPgDZ1%+v#G95I~(cuj+&>1sHuC|U|fV+>Nnwr+}Qk91t)O2i- z5mR5PTF;+b-_xyQF+ihs&~1@s<(+nnpasqyGA4*M0S?Ev?O%RP!C^nsxAk@Lgl2NiIJ z%c~WCXvZOhHpW%u0}nn_Joli|9}?ke`Eeye2VNe9U{o3TNX53@z>RIY+#jMN+5Ek2 z->17}5h$vu7SyBZv69N^dXw~T+kxYAbWe21)P2cSZTtPe@kT2XwvB;h+u|a!lGi!~ z$i7k;cMypT1Ub#n_k4mbzi<^GJ zTM(n>3FFW1rQ;m69a@`5Am3Mtul`k2m1FG~lgU3we*I`^(`m<{7+Re{(3WM4vfQZj zq1#90jkF9RUKXS3V4lpCGy zF{@|=Rg|$$vg?gzb$37Awum!gk^nv?6){DiNMM=(MKa4{*>Gf>GO8fXffI2#OfqTo zk|(ob10NGzfzg?g%CUT0jJDFc2plgRrnNQ2jpm!JEpeT=%r?V#Z_w|DBIb~;&g|gZ zL)P!{-kH}T>?l5B##5i{c)7glLad;m3%hQ9*8IuQIY|EFz6;(9<`l5XH#i!N3lTeY`TjX zs_nV>IKf0s^}p|+kWoDJI4h<^HfArpjF%MRp5P8dPKU=sK|a+iJr!3-1=C}@3+{1L zwV)W0B!cXiD1s7xGTHD+OY;8W8Ie39@Du?nj#;E{J&~u$*^|l9EoBN~Q{(xV9tywi z3rW5s!XqAFGEVYMtSTb|;y4nsbUtM~X4Emars?CR9ItQfth4;qPV<#5(aG(4t?_0% z9iXY2`w|ruqMoSLHyYd3EtakAyjkC>Cz;Kyoob6^8qL zE;F0;x1-(CpM-Sp6%uTfSm!9Ok!Og9G-nZ@>@6r)3d&A0_GO%i$26pXORzjTo`>a8 zR;Lpn6H)G2T2x<9*hGIpU}$Hxf@Z3QTGR}LhL*$PTu?1tQ*&xjozrGa6AQM9coFC4 d% literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/_exceptions.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/_exceptions.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..13f5773735471183a9d13e1e5741c689a6357bc2 GIT binary patch literal 3551 zcmbVOO^X{x5Y_i;<<(kVJB||wG`VCq>}nP}7~+^<8=GKA9GeXoL||x5m!w8B)8pyWHsTKAOJWc4p2Itc`(hvQKJ4J{UBs8g0P(=#UBp+!0pbIP zdx)=!YlyEod19t!EW45?CJiXKFF?`Le z&CH!3ST2{ttgthc4waq;0v16AnW4+c>CMkR4|;#sQP-pTMgPp=-*PP;X{~gGH`gzE z;vRm?054D*)iDeWQ6Du$1IaWmdhV=l-T9{*Vj5z1NUNC2Ky$}-DecU28$LN|U39}R zqd6zi!4hD8avBI;oZJeMBD6}VkY`!2fOHYWavXSdZVhh-Mp`(@Xz3J8u+l#W zp^TJ4C3O=|&?7AxcBr=xLEUe06;Or{33#VwB+*ob7+Ez*f9M|bG5LzlI7{@X6yBPRR!@oX9nS7Oul zQGd4KVrSekXyI=RS!q5EW7jblg* zbLNBLa2)V%1n9iN*Osp`xsZlT8IAQEv^r*Ko`9ASTkse+Q@N!~);yiUvD>9;#Zk3= zycVIU30D$f@NMa(Ja$^}FVLUgN{%-q>?ht#HXcpwhl();5{PRV7c5VO%VKOqDz#c+ zDNkHJql{C{6I5v>$Z$Hu28IjZWd;#-DIpCm!rf53D9W`tURMG$D%TM(vU+k2{97mM zMByJEGqOCM8Xoyhsq)yLYz!1sA3l02fkf$o97cJ6^s#X^;M2SuT7hzr2jm zI$TGutqE6(o^zV1mbUPD{NrnZTh726g^L#EB9GDGEx1Lc=wmGl=GF!exxYi#&@ZY6SGtyQMHq0jFybnwoGW5&F(4xo~Cb>n2g=XtDwivk<1G!~yl zdX~RjbzkYT42Mi+XqZeOwa09!6>g5EHwNvunXrsweS_29U`5M`1T4*}#&>|K+}%=% za3z(lJW=*6&uBaXKct@j`I=0~Dx#r-ECB~V!BB>E648vjmVPtmN*6jSb9 zPSxeQmB<=iVb&^l-j{JS&g4m$My7bk*%s{jB1 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/compat.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/compat.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d63e8704c1c866f2088b1746d568b5b22ce93e0a GIT binary patch literal 379 zcmX|5%TB{E5Of|*AJCo<5}#0s)QC!)5bB}j1PD|vL`apJU7C=@Hnvm9C-F3Z!{AX zQpK{mq;u4T5t6c$0ai_%v9w?&6P&&y7V#Mc*2Gg(^b literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/connections.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/connections.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5fd28a8afcce6fdb7c298f6d4d7493d36b77e47c GIT binary patch literal 11237 zcmbVS+mGAEdMBy7R;#`F9y?(!j#tTA>l@O8#4%#8*U6@9*|j#u4Nnr5tKsfSOOf)B z@>+s~19VfIQ=ll)x6}Rs0otd70tNav^q~*!8_}m0D3GEL1^Q6npg{ZkW=M+C+UaF& zj)rsn=DUC2@aFt{`RD)nv#$p0itMx7>CwTlnLctV6VJg!c)lkK+W@z}$IGJwN z$aZr^PNn{=lkXOcLbqrX#e2>vb<0M%J7>&wD@LU|Z_IbAMzy}DFL0$jMJF=hKd`%yCeZAY>KM2Z4mK*4Sr+2MG zo0_@q9l5&S-xX`xeqG;k0j3}5Ez7rkIrXURIC_tJyVkBVD0^6vx0#*ZpV@m>-wDiC zpZhq)Q9C%$E#39ptA1d)%;HSnkX>S*die*CNomxyupp=SVczTx{AUg|_1$*MV|JK% z{N;^WIV?Q2xZ8I3!`vq49uKQqZea60t7Xgg(tRtiWObgZyMSE2E8+PHOHx zZwG^Df>?dA9IIn>r1Fb_Hc~qorXJ&8QxQCo8UEQ5JLq!|9dy$j+hSNu74n= z|3K$z)Ux3Mx6KG7v0s?$T0!d|%(UGg%T3xvBRCVI>XcX+Yu^Q7GlInpLYRKaYBg8sa}9 z7ybEvjlx!-CKOT;M#j!|az_3a${y4Q%Y0ij3M|WV5bq+pCa>?GMi%+^vtn& zR>g0HEwDxW&a)-9jNhugU@vx-*vhfyJM0uYjkaa6@)>p(E3dF~>^#~|u?y@q{GPVY z7-#IW###HEan3$(oVPC+7wp%J*X)bNMf;L*$$s5<-G0M(;}=R+F?6VwOJRAU1BOy} z=&=N(#8ZE?+kuiv81@VfUBI(I82B~VS13uPtBx~WZJZU#P$EuytF(lC~fG*&vVj7x5IlpB}Y z%DDXE-l)_mA1n8juRr)o8_$g^!Q5yrs2pqjFHx%m^HdvESecdoKs&FD%A>j4%Cm1r zmALkl+KQ}nTM>KCjg(IHSR2oaw+h4jadlMn|0P(cDE!}8b-dta*}`~1^e>JU&@byt zV(g-5UuI|@Ddr+h3kpJbweeE0EU6f*bWR;Bozv{hu?o1(5?uEo?hyFp(K37UF!!Cx zzZor!GMzJzl<^YU-V$wGw4D`gOMrPLg84PtZM+hk3(iArXq^iqVDpbv;Cdb~ycS#p z?}2+_OwmqgzZATVv!cAM0J2MBgwlEA<&a^#&M@A5b5tPJ^oI(2Tkzr=O#iktJ~gU- zr}>Lm?=8@_ir=?K)nkHS@jH#bhxd0zi{gC&@BGEBQMPj#&%1c8;912}!}A`V_xB2* z=HmGDD35t-qtmyQ@3d!6o+`mr@t*C}aqd&7Uka|GrgYYUscWC0W?skJb?or{XoZyz zOQNQ9Zj4rF?|m9^la;~w?^u6Rfp|kHioXqRTY(LIIZ+E_G*-Sed}m4`6mbln2tq3!Nc4QL=byJmBNW zczQ{V*De2LQ+jY5=saRt{6f<({gvb8XkE9Qw&jyuiYKm#!|g&hACZLzK6^OcZrg!* zec5U;EyV8e%a82Nc9Y|!c8@3iUv`JZ(#fbN>+NhjUf+5w+R|7HyqCcZf8>Sfd#yto z3pid&5*CO^b-dyjtlfeu<+;z}ov98k0u$)eN3IDUtm(dOC%&H?LcBH$3>_n42s3DR zZLc4En2aILff?Kd9{@BT?Cmo67oL7(wF7{neOvnDw9x;&gK(#&w*Z~?+WUR!!0KW^ z#AR}0q28q9trIvWHVFnmuk^2F$S}n#qDl9JYp^yUfmEfDSFW$d3Q$raSs)^XU=UEx zj9m8V18nW-JG^hN>4E(sxJpq87{}>%;r3FX!i5VA%0sI}^CNI3j88=A`{W$cX(ya} z1;jgmPHsU=h$ZW~41tc?etN$IURvi>drK!9iv3k1rdDxDi93;Jj!9q0U?qkeu@8bJ z%Q>1oeD`Lf~fx3Ql2v8u#+ZI4hQM_fu+spaf(B{3&Yb ztHN$xy;Z+1pmgmco7d{P2$Cr}Zriggkg(Xt#8NLm2Es=ZA@+=OKVboGL4mN7G!Tl8Ouu8ok2_%vqyhBx z?MHX-qu98+t#36RY;A9Tqz`TG!PNU?A^j6L7wcO6z$3HOJ}H4xs#hcHQo~u3v1Hq# zbpdd!5$HG3yVHXsD}7>Y139Ich21LwDI9@WIF|5O^w_{*S2EYHK+$fS{28;y?Y;Jk zX+|PBB;SE3b;XneuOO{NBNO}!Pk<6(+&a>C2XN}2^=&@!Ch2$<-xvP1udmwm{kncn z?3t*K30AN`40a0K9g$BX0|YlD@t68=IHcQ7>TW7?1;78mV^H-?$;1h+;~5i2f5PG- zBoM6aBO{_8K#0kmfwzDV1H%BBH=zWloC}gEc`2V^`N7ua_I-2b%g38&or8cyPNN^r zn}inM^tcJtT~osxGIK8mNKizPPN=cnuo(O3VP4c&n59J;SWD#Lgz-o6O)CCS*?ADo zrR;cEjCH9oKSff^pJ<{ap+Ffh%D^@$p>PTXg=$|{#%iF95Ul=*_AJ|!8KRm@#^6v| z{aUEHB5fp#bC~y=@@=Q>2NX%%`BPeqR?aKKD;tT5shf~MIDcmSwvb2v4l41SP_6$! zQ+^<5_#)MED8lkY5)z;(2b2K)4qgP%7mR=eGzH~OPr zIxT_gFQfRS(xJFp#jhsQk~Ota%Y;?w3YiGtkT-S0y!2keqWFd0r+i;O%&~sAI{+zl ztTiECxDa`9@%+D{{R9x|aP3DaI5V-PaU}R90a3q3bs-^u@|Lj_B?0T;Xld5?Yc%2_ z3S&9d37MfNieIAM*HMIpBilNJ#^Gxbnwd`()jC5anmiM7IN zr2L}%HWxfqjdWO~?83~xjkIXcM{b`Jwv7cen31?p@E_)Ucs7Bt`0$JEoh`Gub9ZO+ zAz5Q%UbZ~hY@(-$aeXiszd$e+V|M4nqG6WIaYPRsEzAjJAh(i=n(UJoF2Gun+BPG- z!GA)tmlH3HjHyXMShz&BsrIl!O|b$9^Ua+nTa8bR@=xzR0nnmeKz-x0yHAYL&Q{|~ z^WOHOd&b-Sf!$d!l*`cjL}I@@Q+Z0Y5*NvGC^qM zR!lRN3esl$GZds8e2zl-d{JFgD_T)2A}5Upzhy0}Wz}W%l)9`{)S^~Je_73=wW3xq zqN2W|mgPUKn5k&XYF<58ENky-c^aKTi8b=#p;Zt%B{tGLRa%gMwHP;3ifN zHE&kii|)Ur?ei!UoTZ`;Pp4p>EZvv_n{kmfhrbA=$*kx(ij5LIw}&<045n1E6YLV_laR)qyaNh_MIGm zkHKJ{1*?we{#9%Ebk`9n>zagL0{s=*!|GihN{9$8Zuj^HXymjR47=ppUEFZJm^nlU z?JwN0$W;C#CirC(3ZxklOlLZuI@9#%3?j0y5J3@R{ihgm5@2DPV%tm?u(55P0(5Fr0_YSK{sMCo zexXYUal=Ve5SJjDI~2V+aMLZc<|S=hCRz(W&yy3d%%Z9-wC~ zn*R>!6*yx`hc0!es1F2FJomGtyH{%@GQASuj`a(KrCT%*g{egA0dvQV3+DqRP2h2{bV~t>`q(etdZi4 zPf}YDf-H=&Hc+w z`?!s^f5qdI8>SS?uvKMfd%B;kz{-)`tBRJYI$Tc4O+<~vZ6@ZQ*8b4^bhi%UM6}Kf z+nX=wylwh)V%OepBgvggP^9oGl1(zUBff}m$Pl5~n3IIrAJ2r~6BPP{n0uR_ZZ#Uv z&!pAxLn>qD@Nm)y4&0+g5|^7&ccL?#hvPyYIUuRscPCf1bXJnR4Lm;SY4Ev%D?0gQ z0ZKUV3d^1swvRBtGQdJ^*puHEh+umX! zLa~V~5(F*qJRLhwmQ@^9rXYru=H`yxxchLksbBW-Wf1RzoZLl$`Xm}G^M};_DHRkT z@dgSQ@c^27w;#w4fA}`_kaH-+5&=zs%P$kRSh%+pIxbRI!q+#-y@7~;01hPhDNPgn zDSUWZ{~WOJzjM-+U!~;`N8;i9pTG zW)oqV9=Cpc<+6W;s5PNbb_VX3dy{Bd!756wtYn3(ASO*K^{L?$SiVX54oXXy zW>_}qG6&yFqFyo0XMM|wdJ3kA)T?Q7k|!fCgC~9uFCyX=VI}_=y^4caR3ooNcpN#MfC1_^D#i6MDF1;wSD!Us;@lkqYYB`V11a5@{Gr(%H$(l(8E7990~8 z=Db3+(xH(;My?k3A$$pM;zK(T21?zWoPMHD!{Tj8)jNb+e-T9%O0=j^a^zZ}tQ8mk E8|NhPQUCw| literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/converters.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/converters.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf5dccaf49f87e91885b723ddc18a07a0120fa78 GIT binary patch literal 3639 zcma)8TXWmS6$U_%1fjcR*|K9hn>1-eS0WWDby_ubO^H;Zl%f=gZYoS?I1u+x1ceK; zSW2ZweX0A{AJAXWnfxWZcBV6Z?pvOE&Vtl!Y)^r~+1uGYw{OqE#?+J@4qpCgX-d=n zrQLYG#r{kD;(zFx#x+OdIyZbhFdRdte#XxPreg+KC#%M$p9}I%KCm21jkA8CNqjlq z4knz5VA7ckrkp9YmiMQF8D~b*TP4p2KUZv@poOL z7w6}lg<~x={;2T+xBsR&i+qAlVtb!Y@o8)y@EJaf?Gm5k^VmM*3;Z6okN6_LkL?Hi z0bj!QF<8AP@U&xa3#K|o$8bIb1`l8ozmH%E=HMYLz+?Cr7U5^`2tI*N;pgxfEW>>; z-~-6_ipZbuJyY}-imu?!d~a3J5_08xWkuK2>gS5CE4l$+;OZ|GeGXq@|5xy9q?_;* z>2DPMO3~jc`a;p)Df&{;3Ow~ba<;g2q!k~!|IBFG-tg$VIzM4@*ay~*!gCO@7lkZ{ z_`nC-Zg#zRG+9PKci>C=&hdDLfbcWPF1oH{ z!)U-l0KTGnZ5O4xXFvnNqKmM^nq9ED*OsW5D~31JMAh7W%;G2jcIJhgMJSdmkr8um z@UhMyRNL)~uGj7|0dgS1SgF{Kgn+moh1?5I*}3ZvVAHmL55rBivs*0L$zmz+{B-&-6~D<2hO&#!j!t^e zmLs8~Ib}w=FcM8Oagm{q+rAse|EJtrBFI1JCa>*E;Hjs^$FWMIs&pp3N6!sBT)Y2{ z2?!tNdlH1}r_M{)8<7OGdM}FQ+u{&23bS__MgoI{Sh_xcg`EuKO-($>5Q8oT?T3LU zQ18Ag+yGD{!c47&(1tiBXb=KZttEMTYzVfpixV-bipYxbBnWX2LqwxPD3UlT*>*J| zR3iAj&TX7|ohxv<=aGlIBudAf;394nUfWUMgVSZhPlIw7uVz`e-GN`OLVPBp ze%Woi9D?C$*KMD zTkX@^i>|k9Fte6KTNExDDu~jq}U+El{LDU$NnwLF#DyJk-icOPEWto-so@8 zzM|3iNna@%f_M_M7kMELW^f>8iCkGI=7=GG1d_x($3ZI25R2HqC63fkji7N!vqValh?BPZfs?yMSRj-#~;-H?2CMx(C$8Qa9f%dHv>khJv z1N;>Gw?w}y!2ceLr!sXbz?3^jK^|S>5~IpFh{wrG`EYfkw7x-kKZFYqE2Ayrn~xbr zrN=bQs0xVXk}_W_7{)*NrM+X4la`Wk#=#xqQiZ|7dXABcu=Wd&bIe8*KXrtp`aC-M zg7Q?Fyi{VM-vm6TEr6;Cf>Yg=_c?MZ1!p}i7xbH$Ix{Oiyz9&>fZDi1w}tC(2zo{% z(K~n#a+v7@SH4f$%qUr|kK}!KB~KS0zf)eC3@){v{zkh@W$FzSLmDQQ#Ck?`{C#o@ zt`P2!u3+iLCj|l2nH#TQic9}EL>A{o zjuxlJi_!}qzCNWL1$|cv$~2-tguLi1jJaFz=Qi}|cPdtwFfr-h!m$YFP3$FEWkOP@ zkR@tnx+2kVtjwTlgvzEW#|g?U>K+QZ5z0@>y@D)ua$CEN%HeU6JsIK;fiu-oZ7UKj zbR=aFnPfY3#}o4eleS}45lqe`(I(nNvYpxSXnk}`oVoE#6@2L`ro~%RV@}MMARV*0 z+cYpcG$ zjrw`)Z-0ZDncp7mH=GGX%IG&fzEP=E zW>w|N`YQdqf59+9v5&;mCyiNs7IW%7>{<94x~)&^lNl>xnfO}x<*7fPG4;2+Moxd{ HduQ!`-{8PU literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/cursors.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/__pycache__/cursors.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..52e2f8c7818c4e40222ed2b0e869a139e412cbbe GIT binary patch literal 16443 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 numeric_part("20-alpha") + 20 + >>> numeric_part("foo") + >>> numeric_part("16b") + 16 + """ + + m = re_numeric_part.match(s) + if m: + return int(m.group(1)) + return None + + +class Connection(_mysql.connection): + """MySQL Database Connection Object""" + + default_cursor = cursors.Cursor + + def __init__(self, *args, **kwargs): + """ + Create a connection to the database. It is strongly recommended + that you only use keyword parameters. Consult the MySQL C API + documentation for more information. + + :param str host: host to connect + :param str user: user to connect as + :param str password: password to use + :param str passwd: alias of password, for backward compatibility + :param str database: database to use + :param str db: alias of database, for backward compatibility + :param int port: TCP/IP port to connect to + :param str unix_socket: location of unix_socket to use + :param dict conv: conversion dictionary, see MySQLdb.converters + :param int connect_timeout: + number of seconds to wait before the connection attempt fails. + + :param bool compress: if set, compression is enabled + :param str named_pipe: if set, a named pipe is used to connect (Windows only) + :param str init_command: + command which is run once the connection is created + + :param str read_default_file: + file from which default client values are read + + :param str read_default_group: + configuration group to use from the default file + + :param type cursorclass: + class object, used to create cursors (keyword only) + + :param bool use_unicode: + If True, text-like columns are returned as unicode objects + using the connection's character set. Otherwise, text-like + columns are returned as strings. columns are returned as + normal strings. Unicode objects will always be encoded to + the connection's character set regardless of this setting. + Default to False on Python 2 and True on Python 3. + + :param str charset: + If supplied, the connection character set will be changed + to this character set (MySQL-4.1 and newer). This implies + use_unicode=True. + + :param str sql_mode: + If supplied, the session SQL mode will be changed to this + setting (MySQL-4.1 and newer). For more details and legal + values, see the MySQL documentation. + + :param int client_flag: + flags to use or 0 (see MySQL docs or constants/CLIENTS.py) + + :param dict ssl: + dictionary or mapping contains SSL connection parameters; + see the MySQL documentation for more details + (mysql_ssl_set()). If this is set, and the client does not + support SSL, NotSupportedError will be raised. + + :param bool local_infile: + enables LOAD LOCAL INFILE; zero disables + + :param bool autocommit: + If False (default), autocommit is disabled. + If True, autocommit is enabled. + If None, autocommit isn't set and server default is used. + + :param bool binary_prefix: + If set, the '_binary' prefix will be used for raw byte query + arguments (e.g. Binary). This is disabled by default. + + There are a number of undocumented, non-standard methods. See the + documentation for the MySQL C API for some hints on what they do. + """ + from MySQLdb.constants import CLIENT, FIELD_TYPE + from MySQLdb.converters import conversions, _bytes_or_str + from weakref import proxy + + kwargs2 = kwargs.copy() + + if 'database' in kwargs2: + kwargs2['db'] = kwargs2.pop('database') + if 'password' in kwargs2: + kwargs2['passwd'] = kwargs2.pop('password') + + if 'conv' in kwargs: + conv = kwargs['conv'] + else: + conv = conversions + + conv2 = {} + for k, v in conv.items(): + if isinstance(k, int) and isinstance(v, list): + conv2[k] = v[:] + else: + conv2[k] = v + kwargs2['conv'] = conv2 + + cursorclass = kwargs2.pop('cursorclass', self.default_cursor) + charset = kwargs2.pop('charset', '') + + if charset or not PY2: + use_unicode = True + else: + use_unicode = False + + use_unicode = kwargs2.pop('use_unicode', use_unicode) + sql_mode = kwargs2.pop('sql_mode', '') + self._binary_prefix = kwargs2.pop('binary_prefix', False) + + client_flag = kwargs.get('client_flag', 0) + client_version = tuple([ numeric_part(n) for n in _mysql.get_client_info().split('.')[:2] ]) + if client_version >= (4, 1): + client_flag |= CLIENT.MULTI_STATEMENTS + if client_version >= (5, 0): + client_flag |= CLIENT.MULTI_RESULTS + + kwargs2['client_flag'] = client_flag + + # PEP-249 requires autocommit to be initially off + autocommit = kwargs2.pop('autocommit', False) + + super(Connection, self).__init__(*args, **kwargs2) + self.cursorclass = cursorclass + self.encoders = dict([ (k, v) for k, v in conv.items() + if type(k) is not int ]) + + # XXX THIS IS GARBAGE: While this is just a garbage and undocumented, + # Django 1.11 depends on it. And they don't fix it because + # they are in security-only fix mode. + # So keep this garbage for now. This will be removed in 1.5. + # See PyMySQL/mysqlclient-python#306 + self.encoders[bytes] = bytes + + self._server_version = tuple([ numeric_part(n) for n in self.get_server_info().split('.')[:2] ]) + + self.encoding = 'ascii' # overridden in set_character_set() + db = proxy(self) + + def unicode_literal(u, dummy=None): + return db.string_literal(u.encode(db.encoding)) + + if not charset: + charset = self.character_set_name() + self.set_character_set(charset) + + if sql_mode: + self.set_sql_mode(sql_mode) + + if use_unicode: + for t in (FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING, FIELD_TYPE.VARCHAR, FIELD_TYPE.TINY_BLOB, + FIELD_TYPE.MEDIUM_BLOB, FIELD_TYPE.LONG_BLOB, FIELD_TYPE.BLOB): + self.converter[t] = _bytes_or_str + # Unlike other string/blob types, JSON is always text. + # MySQL may return JSON with charset==binary. + self.converter[FIELD_TYPE.JSON] = unicode + + self.encoders[unicode] = unicode_literal + self._transactional = self.server_capabilities & CLIENT.TRANSACTIONS + if self._transactional: + if autocommit is not None: + self.autocommit(autocommit) + self.messages = [] + + def autocommit(self, on): + on = bool(on) + if self.get_autocommit() != on: + _mysql.connection.autocommit(self, on) + + def cursor(self, cursorclass=None): + """ + Create a cursor on which queries may be performed. The + optional cursorclass parameter is used to create the + Cursor. By default, self.cursorclass=cursors.Cursor is + used. + """ + return (cursorclass or self.cursorclass)(self) + + def query(self, query): + # Since _mysql releases GIL while querying, we need immutable buffer. + if isinstance(query, bytearray): + query = bytes(query) + _mysql.connection.query(self, query) + + def _bytes_literal(self, bs): + assert isinstance(bs, (bytes, bytearray)) + x = self.string_literal(bs) # x is escaped and quoted bytes + if self._binary_prefix: + return b'_binary' + x + return x + + def _tuple_literal(self, t): + return b"(%s)" % (b','.join(map(self.literal, t))) + + def literal(self, o): + """If o is a single object, returns an SQL literal as a string. + If o is a non-string sequence, the items of the sequence are + converted and returned as a sequence. + + Non-standard. For internal use; do not use this in your + applications. + """ + if isinstance(o, unicode): + s = self.string_literal(o.encode(self.encoding)) + elif isinstance(o, bytearray): + s = self._bytes_literal(o) + elif isinstance(o, bytes): + if PY2: + s = self.string_literal(o) + else: + s = self._bytes_literal(o) + elif isinstance(o, (tuple, list)): + s = self._tuple_literal(o) + else: + s = self.escape(o, self.encoders) + if isinstance(s, unicode): + s = s.encode(self.encoding) + assert isinstance(s, bytes) + return s + + def begin(self): + """Explicitly begin a connection. + + This method is not used when autocommit=False (default). + """ + self.query(b"BEGIN") + + if not hasattr(_mysql.connection, 'warning_count'): + + def warning_count(self): + """Return the number of warnings generated from the + last query. This is derived from the info() method.""" + info = self.info() + if info: + return int(info.split()[-1]) + else: + return 0 + + def set_character_set(self, charset): + """Set the connection character set to charset. The character + set can only be changed in MySQL-4.1 and newer. If you try + to change the character set from the current value in an + older version, NotSupportedError will be raised.""" + if charset in ("utf8mb4", "utf8mb3"): + py_charset = "utf8" + else: + py_charset = charset + if self.character_set_name() != charset: + try: + super(Connection, self).set_character_set(charset) + except AttributeError: + if self._server_version < (4, 1): + raise NotSupportedError("server is too old to set charset") + self.query('SET NAMES %s' % charset) + self.store_result() + self.encoding = py_charset + + def set_sql_mode(self, sql_mode): + """Set the connection sql_mode. See MySQL documentation for + legal values.""" + if self._server_version < (4, 1): + raise NotSupportedError("server is too old to set sql_mode") + self.query("SET SESSION sql_mode='%s'" % sql_mode) + self.store_result() + + def show_warnings(self): + """Return detailed information about warnings as a + sequence of tuples of (Level, Code, Message). This + is only supported in MySQL-4.1 and up. If your server + is an earlier version, an empty sequence is returned.""" + if self._server_version < (4,1): return () + self.query("SHOW WARNINGS") + r = self.store_result() + warnings = r.fetch_row(0) + return warnings + + Warning = Warning + Error = Error + InterfaceError = InterfaceError + DatabaseError = DatabaseError + DataError = DataError + OperationalError = OperationalError + IntegrityError = IntegrityError + InternalError = InternalError + ProgrammingError = ProgrammingError + NotSupportedError = NotSupportedError + +# vim: colorcolumn=100 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/CLIENT.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/CLIENT.py new file mode 100644 index 00000000..6559917b --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/CLIENT.py @@ -0,0 +1,29 @@ +"""MySQL CLIENT constants + +These constants are used when creating the connection. Use bitwise-OR +(|) to combine options together, and pass them as the client_flags +parameter to MySQLdb.Connection. For more information on these flags, +see the MySQL C API documentation for mysql_real_connect(). + +""" + +LONG_PASSWORD = 1 +FOUND_ROWS = 2 +LONG_FLAG = 4 +CONNECT_WITH_DB = 8 +NO_SCHEMA = 16 +COMPRESS = 32 +ODBC = 64 +LOCAL_FILES = 128 +IGNORE_SPACE = 256 +CHANGE_USER = 512 +INTERACTIVE = 1024 +SSL = 2048 +IGNORE_SIGPIPE = 4096 +TRANSACTIONS = 8192 # mysql_com.h was WRONG prior to 3.23.35 +RESERVED = 16384 +SECURE_CONNECTION = 32768 +MULTI_STATEMENTS = 65536 +MULTI_RESULTS = 131072 + + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/CR.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/CR.py new file mode 100644 index 00000000..753408ee --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/CR.py @@ -0,0 +1,103 @@ +"""MySQL Connection Errors + +Nearly all of these raise OperationalError. COMMANDS_OUT_OF_SYNC +raises ProgrammingError. + +""" + +if __name__ == "__main__": + """ + Usage: python CR.py [/path/to/mysql/errmsg.h ...] >> CR.py + """ + import fileinput, re + data = {} + error_last = None + for line in fileinput.input(): + line = re.sub(r'/\*.*?\*/', '', line) + m = re.match(r'^\s*#define\s+CR_([A-Z0-9_]+)\s+(\d+)(\s.*|$)', line) + if m: + name = m.group(1) + value = int(m.group(2)) + if name == 'ERROR_LAST': + if error_last is None or error_last < value: + error_last = value + continue + if value not in data: + data[value] = set() + data[value].add(name) + for value, names in sorted(data.items()): + for name in sorted(names): + print('%s = %s' % (name, value)) + if error_last is not None: + print('ERROR_LAST = %s' % error_last) + + +ERROR_FIRST = 2000 +MIN_ERROR = 2000 +UNKNOWN_ERROR = 2000 +SOCKET_CREATE_ERROR = 2001 +CONNECTION_ERROR = 2002 +CONN_HOST_ERROR = 2003 +IPSOCK_ERROR = 2004 +UNKNOWN_HOST = 2005 +SERVER_GONE_ERROR = 2006 +VERSION_ERROR = 2007 +OUT_OF_MEMORY = 2008 +WRONG_HOST_INFO = 2009 +LOCALHOST_CONNECTION = 2010 +TCP_CONNECTION = 2011 +SERVER_HANDSHAKE_ERR = 2012 +SERVER_LOST = 2013 +COMMANDS_OUT_OF_SYNC = 2014 +NAMEDPIPE_CONNECTION = 2015 +NAMEDPIPEWAIT_ERROR = 2016 +NAMEDPIPEOPEN_ERROR = 2017 +NAMEDPIPESETSTATE_ERROR = 2018 +CANT_READ_CHARSET = 2019 +NET_PACKET_TOO_LARGE = 2020 +EMBEDDED_CONNECTION = 2021 +PROBE_SLAVE_STATUS = 2022 +PROBE_SLAVE_HOSTS = 2023 +PROBE_SLAVE_CONNECT = 2024 +PROBE_MASTER_CONNECT = 2025 +SSL_CONNECTION_ERROR = 2026 +MALFORMED_PACKET = 2027 +WRONG_LICENSE = 2028 +NULL_POINTER = 2029 +NO_PREPARE_STMT = 2030 +PARAMS_NOT_BOUND = 2031 +DATA_TRUNCATED = 2032 +NO_PARAMETERS_EXISTS = 2033 +INVALID_PARAMETER_NO = 2034 +INVALID_BUFFER_USE = 2035 +UNSUPPORTED_PARAM_TYPE = 2036 +SHARED_MEMORY_CONNECTION = 2037 +SHARED_MEMORY_CONNECT_REQUEST_ERROR = 2038 +SHARED_MEMORY_CONNECT_ANSWER_ERROR = 2039 +SHARED_MEMORY_CONNECT_FILE_MAP_ERROR = 2040 +SHARED_MEMORY_CONNECT_MAP_ERROR = 2041 +SHARED_MEMORY_FILE_MAP_ERROR = 2042 +SHARED_MEMORY_MAP_ERROR = 2043 +SHARED_MEMORY_EVENT_ERROR = 2044 +SHARED_MEMORY_CONNECT_ABANDONED_ERROR = 2045 +SHARED_MEMORY_CONNECT_SET_ERROR = 2046 +CONN_UNKNOW_PROTOCOL = 2047 +INVALID_CONN_HANDLE = 2048 +UNUSED_1 = 2049 +FETCH_CANCELED = 2050 +NO_DATA = 2051 +NO_STMT_METADATA = 2052 +NO_RESULT_SET = 2053 +NOT_IMPLEMENTED = 2054 +SERVER_LOST_EXTENDED = 2055 +STMT_CLOSED = 2056 +NEW_STMT_METADATA = 2057 +ALREADY_CONNECTED = 2058 +AUTH_PLUGIN_CANNOT_LOAD = 2059 +DUPLICATE_CONNECTION_ATTR = 2060 +AUTH_PLUGIN_ERR = 2061 +INSECURE_API_ERR = 2062 +FILE_NAME_TOO_LONG = 2063 +SSL_FIPS_MODE_ERR = 2064 +MAX_ERROR = 2999 +ERROR_LAST = 2064 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/ER.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/ER.py new file mode 100644 index 00000000..2e623b51 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/ER.py @@ -0,0 +1,825 @@ +"""MySQL ER Constants + +These constants are error codes for the bulk of the error conditions +that may occur. +""" + +if __name__ == "__main__": + """ + Usage: python ER.py [/path/to/mysql/mysqld_error.h ...] >> ER.py + """ + import fileinput, re + data = {} + error_last = None + for line in fileinput.input(): + line = re.sub(r'/\*.*?\*/', '', line) + m = re.match(r'^\s*#define\s+((ER|WARN)_[A-Z0-9_]+)\s+(\d+)\s*', line) + if m: + name = m.group(1) + if name.startswith('ER_'): + name = name[3:] + value = int(m.group(3)) + if name == 'ERROR_LAST': + if error_last is None or error_last < value: + error_last = value + continue + if value not in data: + data[value] = set() + data[value].add(name) + for value, names in sorted(data.items()): + for name in sorted(names): + print('%s = %s' % (name, value)) + if error_last is not None: + print('ERROR_LAST = %s' % error_last) + + +ERROR_FIRST = 1000 +NO = 1002 +YES = 1003 +CANT_CREATE_FILE = 1004 +CANT_CREATE_TABLE = 1005 +CANT_CREATE_DB = 1006 +DB_CREATE_EXISTS = 1007 +DB_DROP_EXISTS = 1008 +DB_DROP_RMDIR = 1010 +CANT_FIND_SYSTEM_REC = 1012 +CANT_GET_STAT = 1013 +CANT_LOCK = 1015 +CANT_OPEN_FILE = 1016 +FILE_NOT_FOUND = 1017 +CANT_READ_DIR = 1018 +CHECKREAD = 1020 +DUP_KEY = 1022 +ERROR_ON_READ = 1024 +ERROR_ON_RENAME = 1025 +ERROR_ON_WRITE = 1026 +FILE_USED = 1027 +FILSORT_ABORT = 1028 +GET_ERRNO = 1030 +ILLEGAL_HA = 1031 +KEY_NOT_FOUND = 1032 +NOT_FORM_FILE = 1033 +NOT_KEYFILE = 1034 +OLD_KEYFILE = 1035 +OPEN_AS_READONLY = 1036 +OUTOFMEMORY = 1037 +OUT_OF_SORTMEMORY = 1038 +CON_COUNT_ERROR = 1040 +OUT_OF_RESOURCES = 1041 +BAD_HOST_ERROR = 1042 +HANDSHAKE_ERROR = 1043 +DBACCESS_DENIED_ERROR = 1044 +ACCESS_DENIED_ERROR = 1045 +NO_DB_ERROR = 1046 +UNKNOWN_COM_ERROR = 1047 +BAD_NULL_ERROR = 1048 +BAD_DB_ERROR = 1049 +TABLE_EXISTS_ERROR = 1050 +BAD_TABLE_ERROR = 1051 +NON_UNIQ_ERROR = 1052 +SERVER_SHUTDOWN = 1053 +BAD_FIELD_ERROR = 1054 +WRONG_FIELD_WITH_GROUP = 1055 +WRONG_GROUP_FIELD = 1056 +WRONG_SUM_SELECT = 1057 +WRONG_VALUE_COUNT = 1058 +TOO_LONG_IDENT = 1059 +DUP_FIELDNAME = 1060 +DUP_KEYNAME = 1061 +DUP_ENTRY = 1062 +WRONG_FIELD_SPEC = 1063 +PARSE_ERROR = 1064 +EMPTY_QUERY = 1065 +NONUNIQ_TABLE = 1066 +INVALID_DEFAULT = 1067 +MULTIPLE_PRI_KEY = 1068 +TOO_MANY_KEYS = 1069 +TOO_MANY_KEY_PARTS = 1070 +TOO_LONG_KEY = 1071 +KEY_COLUMN_DOES_NOT_EXITS = 1072 +BLOB_USED_AS_KEY = 1073 +TOO_BIG_FIELDLENGTH = 1074 +WRONG_AUTO_KEY = 1075 +READY = 1076 +SHUTDOWN_COMPLETE = 1079 +FORCING_CLOSE = 1080 +IPSOCK_ERROR = 1081 +NO_SUCH_INDEX = 1082 +WRONG_FIELD_TERMINATORS = 1083 +BLOBS_AND_NO_TERMINATED = 1084 +TEXTFILE_NOT_READABLE = 1085 +FILE_EXISTS_ERROR = 1086 +LOAD_INFO = 1087 +ALTER_INFO = 1088 +WRONG_SUB_KEY = 1089 +CANT_REMOVE_ALL_FIELDS = 1090 +CANT_DROP_FIELD_OR_KEY = 1091 +INSERT_INFO = 1092 +UPDATE_TABLE_USED = 1093 +NO_SUCH_THREAD = 1094 +KILL_DENIED_ERROR = 1095 +NO_TABLES_USED = 1096 +TOO_BIG_SET = 1097 +NO_UNIQUE_LOGFILE = 1098 +TABLE_NOT_LOCKED_FOR_WRITE = 1099 +TABLE_NOT_LOCKED = 1100 +BLOB_CANT_HAVE_DEFAULT = 1101 +WRONG_DB_NAME = 1102 +WRONG_TABLE_NAME = 1103 +TOO_BIG_SELECT = 1104 +UNKNOWN_ERROR = 1105 +UNKNOWN_PROCEDURE = 1106 +WRONG_PARAMCOUNT_TO_PROCEDURE = 1107 +WRONG_PARAMETERS_TO_PROCEDURE = 1108 +UNKNOWN_TABLE = 1109 +FIELD_SPECIFIED_TWICE = 1110 +INVALID_GROUP_FUNC_USE = 1111 +UNSUPPORTED_EXTENSION = 1112 +TABLE_MUST_HAVE_COLUMNS = 1113 +RECORD_FILE_FULL = 1114 +UNKNOWN_CHARACTER_SET = 1115 +TOO_MANY_TABLES = 1116 +TOO_MANY_FIELDS = 1117 +TOO_BIG_ROWSIZE = 1118 +STACK_OVERRUN = 1119 +WRONG_OUTER_JOIN_UNUSED = 1120 +NULL_COLUMN_IN_INDEX = 1121 +CANT_FIND_UDF = 1122 +CANT_INITIALIZE_UDF = 1123 +UDF_NO_PATHS = 1124 +UDF_EXISTS = 1125 +CANT_OPEN_LIBRARY = 1126 +CANT_FIND_DL_ENTRY = 1127 +FUNCTION_NOT_DEFINED = 1128 +HOST_IS_BLOCKED = 1129 +HOST_NOT_PRIVILEGED = 1130 +PASSWORD_ANONYMOUS_USER = 1131 +PASSWORD_NOT_ALLOWED = 1132 +PASSWORD_NO_MATCH = 1133 +UPDATE_INFO = 1134 +CANT_CREATE_THREAD = 1135 +WRONG_VALUE_COUNT_ON_ROW = 1136 +CANT_REOPEN_TABLE = 1137 +INVALID_USE_OF_NULL = 1138 +REGEXP_ERROR = 1139 +MIX_OF_GROUP_FUNC_AND_FIELDS = 1140 +NONEXISTING_GRANT = 1141 +TABLEACCESS_DENIED_ERROR = 1142 +COLUMNACCESS_DENIED_ERROR = 1143 +ILLEGAL_GRANT_FOR_TABLE = 1144 +GRANT_WRONG_HOST_OR_USER = 1145 +NO_SUCH_TABLE = 1146 +NONEXISTING_TABLE_GRANT = 1147 +NOT_ALLOWED_COMMAND = 1148 +SYNTAX_ERROR = 1149 +ABORTING_CONNECTION = 1152 +NET_PACKET_TOO_LARGE = 1153 +NET_READ_ERROR_FROM_PIPE = 1154 +NET_FCNTL_ERROR = 1155 +NET_PACKETS_OUT_OF_ORDER = 1156 +NET_UNCOMPRESS_ERROR = 1157 +NET_READ_ERROR = 1158 +NET_READ_INTERRUPTED = 1159 +NET_ERROR_ON_WRITE = 1160 +NET_WRITE_INTERRUPTED = 1161 +TOO_LONG_STRING = 1162 +TABLE_CANT_HANDLE_BLOB = 1163 +TABLE_CANT_HANDLE_AUTO_INCREMENT = 1164 +WRONG_COLUMN_NAME = 1166 +WRONG_KEY_COLUMN = 1167 +WRONG_MRG_TABLE = 1168 +DUP_UNIQUE = 1169 +BLOB_KEY_WITHOUT_LENGTH = 1170 +PRIMARY_CANT_HAVE_NULL = 1171 +TOO_MANY_ROWS = 1172 +REQUIRES_PRIMARY_KEY = 1173 +UPDATE_WITHOUT_KEY_IN_SAFE_MODE = 1175 +KEY_DOES_NOT_EXITS = 1176 +CHECK_NO_SUCH_TABLE = 1177 +CHECK_NOT_IMPLEMENTED = 1178 +CANT_DO_THIS_DURING_AN_TRANSACTION = 1179 +ERROR_DURING_COMMIT = 1180 +ERROR_DURING_ROLLBACK = 1181 +ERROR_DURING_FLUSH_LOGS = 1182 +NEW_ABORTING_CONNECTION = 1184 +MASTER = 1188 +MASTER_NET_READ = 1189 +MASTER_NET_WRITE = 1190 +FT_MATCHING_KEY_NOT_FOUND = 1191 +LOCK_OR_ACTIVE_TRANSACTION = 1192 +UNKNOWN_SYSTEM_VARIABLE = 1193 +CRASHED_ON_USAGE = 1194 +CRASHED_ON_REPAIR = 1195 +WARNING_NOT_COMPLETE_ROLLBACK = 1196 +TRANS_CACHE_FULL = 1197 +SLAVE_NOT_RUNNING = 1199 +BAD_SLAVE = 1200 +MASTER_INFO = 1201 +SLAVE_THREAD = 1202 +TOO_MANY_USER_CONNECTIONS = 1203 +SET_CONSTANTS_ONLY = 1204 +LOCK_WAIT_TIMEOUT = 1205 +LOCK_TABLE_FULL = 1206 +READ_ONLY_TRANSACTION = 1207 +WRONG_ARGUMENTS = 1210 +NO_PERMISSION_TO_CREATE_USER = 1211 +LOCK_DEADLOCK = 1213 +TABLE_CANT_HANDLE_FT = 1214 +CANNOT_ADD_FOREIGN = 1215 +NO_REFERENCED_ROW = 1216 +ROW_IS_REFERENCED = 1217 +CONNECT_TO_MASTER = 1218 +ERROR_WHEN_EXECUTING_COMMAND = 1220 +WRONG_USAGE = 1221 +WRONG_NUMBER_OF_COLUMNS_IN_SELECT = 1222 +CANT_UPDATE_WITH_READLOCK = 1223 +MIXING_NOT_ALLOWED = 1224 +DUP_ARGUMENT = 1225 +USER_LIMIT_REACHED = 1226 +SPECIFIC_ACCESS_DENIED_ERROR = 1227 +LOCAL_VARIABLE = 1228 +GLOBAL_VARIABLE = 1229 +NO_DEFAULT = 1230 +WRONG_VALUE_FOR_VAR = 1231 +WRONG_TYPE_FOR_VAR = 1232 +VAR_CANT_BE_READ = 1233 +CANT_USE_OPTION_HERE = 1234 +NOT_SUPPORTED_YET = 1235 +MASTER_FATAL_ERROR_READING_BINLOG = 1236 +SLAVE_IGNORED_TABLE = 1237 +INCORRECT_GLOBAL_LOCAL_VAR = 1238 +WRONG_FK_DEF = 1239 +KEY_REF_DO_NOT_MATCH_TABLE_REF = 1240 +OPERAND_COLUMNS = 1241 +SUBQUERY_NO_1_ROW = 1242 +UNKNOWN_STMT_HANDLER = 1243 +CORRUPT_HELP_DB = 1244 +AUTO_CONVERT = 1246 +ILLEGAL_REFERENCE = 1247 +DERIVED_MUST_HAVE_ALIAS = 1248 +SELECT_REDUCED = 1249 +TABLENAME_NOT_ALLOWED_HERE = 1250 +NOT_SUPPORTED_AUTH_MODE = 1251 +SPATIAL_CANT_HAVE_NULL = 1252 +COLLATION_CHARSET_MISMATCH = 1253 +TOO_BIG_FOR_UNCOMPRESS = 1256 +ZLIB_Z_MEM_ERROR = 1257 +ZLIB_Z_BUF_ERROR = 1258 +ZLIB_Z_DATA_ERROR = 1259 +CUT_VALUE_GROUP_CONCAT = 1260 +WARN_TOO_FEW_RECORDS = 1261 +WARN_TOO_MANY_RECORDS = 1262 +WARN_NULL_TO_NOTNULL = 1263 +WARN_DATA_OUT_OF_RANGE = 1264 +WARN_DATA_TRUNCATED = 1265 +WARN_USING_OTHER_HANDLER = 1266 +CANT_AGGREGATE_2COLLATIONS = 1267 +REVOKE_GRANTS = 1269 +CANT_AGGREGATE_3COLLATIONS = 1270 +CANT_AGGREGATE_NCOLLATIONS = 1271 +VARIABLE_IS_NOT_STRUCT = 1272 +UNKNOWN_COLLATION = 1273 +SLAVE_IGNORED_SSL_PARAMS = 1274 +SERVER_IS_IN_SECURE_AUTH_MODE = 1275 +WARN_FIELD_RESOLVED = 1276 +BAD_SLAVE_UNTIL_COND = 1277 +MISSING_SKIP_SLAVE = 1278 +UNTIL_COND_IGNORED = 1279 +WRONG_NAME_FOR_INDEX = 1280 +WRONG_NAME_FOR_CATALOG = 1281 +BAD_FT_COLUMN = 1283 +UNKNOWN_KEY_CACHE = 1284 +WARN_HOSTNAME_WONT_WORK = 1285 +UNKNOWN_STORAGE_ENGINE = 1286 +WARN_DEPRECATED_SYNTAX = 1287 +NON_UPDATABLE_TABLE = 1288 +FEATURE_DISABLED = 1289 +OPTION_PREVENTS_STATEMENT = 1290 +DUPLICATED_VALUE_IN_TYPE = 1291 +TRUNCATED_WRONG_VALUE = 1292 +INVALID_ON_UPDATE = 1294 +UNSUPPORTED_PS = 1295 +GET_ERRMSG = 1296 +GET_TEMPORARY_ERRMSG = 1297 +UNKNOWN_TIME_ZONE = 1298 +WARN_INVALID_TIMESTAMP = 1299 +INVALID_CHARACTER_STRING = 1300 +WARN_ALLOWED_PACKET_OVERFLOWED = 1301 +CONFLICTING_DECLARATIONS = 1302 +SP_NO_RECURSIVE_CREATE = 1303 +SP_ALREADY_EXISTS = 1304 +SP_DOES_NOT_EXIST = 1305 +SP_DROP_FAILED = 1306 +SP_STORE_FAILED = 1307 +SP_LILABEL_MISMATCH = 1308 +SP_LABEL_REDEFINE = 1309 +SP_LABEL_MISMATCH = 1310 +SP_UNINIT_VAR = 1311 +SP_BADSELECT = 1312 +SP_BADRETURN = 1313 +SP_BADSTATEMENT = 1314 +UPDATE_LOG_DEPRECATED_IGNORED = 1315 +UPDATE_LOG_DEPRECATED_TRANSLATED = 1316 +QUERY_INTERRUPTED = 1317 +SP_WRONG_NO_OF_ARGS = 1318 +SP_COND_MISMATCH = 1319 +SP_NORETURN = 1320 +SP_NORETURNEND = 1321 +SP_BAD_CURSOR_QUERY = 1322 +SP_BAD_CURSOR_SELECT = 1323 +SP_CURSOR_MISMATCH = 1324 +SP_CURSOR_ALREADY_OPEN = 1325 +SP_CURSOR_NOT_OPEN = 1326 +SP_UNDECLARED_VAR = 1327 +SP_WRONG_NO_OF_FETCH_ARGS = 1328 +SP_FETCH_NO_DATA = 1329 +SP_DUP_PARAM = 1330 +SP_DUP_VAR = 1331 +SP_DUP_COND = 1332 +SP_DUP_CURS = 1333 +SP_CANT_ALTER = 1334 +SP_SUBSELECT_NYI = 1335 +STMT_NOT_ALLOWED_IN_SF_OR_TRG = 1336 +SP_VARCOND_AFTER_CURSHNDLR = 1337 +SP_CURSOR_AFTER_HANDLER = 1338 +SP_CASE_NOT_FOUND = 1339 +FPARSER_TOO_BIG_FILE = 1340 +FPARSER_BAD_HEADER = 1341 +FPARSER_EOF_IN_COMMENT = 1342 +FPARSER_ERROR_IN_PARAMETER = 1343 +FPARSER_EOF_IN_UNKNOWN_PARAMETER = 1344 +VIEW_NO_EXPLAIN = 1345 +WRONG_OBJECT = 1347 +NONUPDATEABLE_COLUMN = 1348 +VIEW_SELECT_CLAUSE = 1350 +VIEW_SELECT_VARIABLE = 1351 +VIEW_SELECT_TMPTABLE = 1352 +VIEW_WRONG_LIST = 1353 +WARN_VIEW_MERGE = 1354 +WARN_VIEW_WITHOUT_KEY = 1355 +VIEW_INVALID = 1356 +SP_NO_DROP_SP = 1357 +TRG_ALREADY_EXISTS = 1359 +TRG_DOES_NOT_EXIST = 1360 +TRG_ON_VIEW_OR_TEMP_TABLE = 1361 +TRG_CANT_CHANGE_ROW = 1362 +TRG_NO_SUCH_ROW_IN_TRG = 1363 +NO_DEFAULT_FOR_FIELD = 1364 +DIVISION_BY_ZERO = 1365 +TRUNCATED_WRONG_VALUE_FOR_FIELD = 1366 +ILLEGAL_VALUE_FOR_TYPE = 1367 +VIEW_NONUPD_CHECK = 1368 +VIEW_CHECK_FAILED = 1369 +PROCACCESS_DENIED_ERROR = 1370 +RELAY_LOG_FAIL = 1371 +UNKNOWN_TARGET_BINLOG = 1373 +IO_ERR_LOG_INDEX_READ = 1374 +BINLOG_PURGE_PROHIBITED = 1375 +FSEEK_FAIL = 1376 +BINLOG_PURGE_FATAL_ERR = 1377 +LOG_IN_USE = 1378 +LOG_PURGE_UNKNOWN_ERR = 1379 +RELAY_LOG_INIT = 1380 +NO_BINARY_LOGGING = 1381 +RESERVED_SYNTAX = 1382 +PS_MANY_PARAM = 1390 +KEY_PART_0 = 1391 +VIEW_CHECKSUM = 1392 +VIEW_MULTIUPDATE = 1393 +VIEW_NO_INSERT_FIELD_LIST = 1394 +VIEW_DELETE_MERGE_VIEW = 1395 +CANNOT_USER = 1396 +XAER_NOTA = 1397 +XAER_INVAL = 1398 +XAER_RMFAIL = 1399 +XAER_OUTSIDE = 1400 +XAER_RMERR = 1401 +XA_RBROLLBACK = 1402 +NONEXISTING_PROC_GRANT = 1403 +PROC_AUTO_GRANT_FAIL = 1404 +PROC_AUTO_REVOKE_FAIL = 1405 +DATA_TOO_LONG = 1406 +SP_BAD_SQLSTATE = 1407 +STARTUP = 1408 +LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR = 1409 +CANT_CREATE_USER_WITH_GRANT = 1410 +WRONG_VALUE_FOR_TYPE = 1411 +TABLE_DEF_CHANGED = 1412 +SP_DUP_HANDLER = 1413 +SP_NOT_VAR_ARG = 1414 +SP_NO_RETSET = 1415 +CANT_CREATE_GEOMETRY_OBJECT = 1416 +BINLOG_UNSAFE_ROUTINE = 1418 +BINLOG_CREATE_ROUTINE_NEED_SUPER = 1419 +STMT_HAS_NO_OPEN_CURSOR = 1421 +COMMIT_NOT_ALLOWED_IN_SF_OR_TRG = 1422 +NO_DEFAULT_FOR_VIEW_FIELD = 1423 +SP_NO_RECURSION = 1424 +TOO_BIG_SCALE = 1425 +TOO_BIG_PRECISION = 1426 +M_BIGGER_THAN_D = 1427 +WRONG_LOCK_OF_SYSTEM_TABLE = 1428 +CONNECT_TO_FOREIGN_DATA_SOURCE = 1429 +QUERY_ON_FOREIGN_DATA_SOURCE = 1430 +FOREIGN_DATA_SOURCE_DOESNT_EXIST = 1431 +FOREIGN_DATA_STRING_INVALID_CANT_CREATE = 1432 +FOREIGN_DATA_STRING_INVALID = 1433 +TRG_IN_WRONG_SCHEMA = 1435 +STACK_OVERRUN_NEED_MORE = 1436 +TOO_LONG_BODY = 1437 +WARN_CANT_DROP_DEFAULT_KEYCACHE = 1438 +TOO_BIG_DISPLAYWIDTH = 1439 +XAER_DUPID = 1440 +DATETIME_FUNCTION_OVERFLOW = 1441 +CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG = 1442 +VIEW_PREVENT_UPDATE = 1443 +PS_NO_RECURSION = 1444 +SP_CANT_SET_AUTOCOMMIT = 1445 +VIEW_FRM_NO_USER = 1447 +VIEW_OTHER_USER = 1448 +NO_SUCH_USER = 1449 +FORBID_SCHEMA_CHANGE = 1450 +ROW_IS_REFERENCED_2 = 1451 +NO_REFERENCED_ROW_2 = 1452 +SP_BAD_VAR_SHADOW = 1453 +TRG_NO_DEFINER = 1454 +OLD_FILE_FORMAT = 1455 +SP_RECURSION_LIMIT = 1456 +SP_WRONG_NAME = 1458 +TABLE_NEEDS_UPGRADE = 1459 +SP_NO_AGGREGATE = 1460 +MAX_PREPARED_STMT_COUNT_REACHED = 1461 +VIEW_RECURSIVE = 1462 +NON_GROUPING_FIELD_USED = 1463 +TABLE_CANT_HANDLE_SPKEYS = 1464 +NO_TRIGGERS_ON_SYSTEM_SCHEMA = 1465 +REMOVED_SPACES = 1466 +AUTOINC_READ_FAILED = 1467 +USERNAME = 1468 +HOSTNAME = 1469 +WRONG_STRING_LENGTH = 1470 +NON_INSERTABLE_TABLE = 1471 +ADMIN_WRONG_MRG_TABLE = 1472 +TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT = 1473 +NAME_BECOMES_EMPTY = 1474 +AMBIGUOUS_FIELD_TERM = 1475 +FOREIGN_SERVER_EXISTS = 1476 +FOREIGN_SERVER_DOESNT_EXIST = 1477 +ILLEGAL_HA_CREATE_OPTION = 1478 +PARTITION_REQUIRES_VALUES_ERROR = 1479 +PARTITION_WRONG_VALUES_ERROR = 1480 +PARTITION_MAXVALUE_ERROR = 1481 +PARTITION_WRONG_NO_PART_ERROR = 1484 +PARTITION_WRONG_NO_SUBPART_ERROR = 1485 +WRONG_EXPR_IN_PARTITION_FUNC_ERROR = 1486 +FIELD_NOT_FOUND_PART_ERROR = 1488 +INCONSISTENT_PARTITION_INFO_ERROR = 1490 +PARTITION_FUNC_NOT_ALLOWED_ERROR = 1491 +PARTITIONS_MUST_BE_DEFINED_ERROR = 1492 +RANGE_NOT_INCREASING_ERROR = 1493 +INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR = 1494 +MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR = 1495 +PARTITION_ENTRY_ERROR = 1496 +MIX_HANDLER_ERROR = 1497 +PARTITION_NOT_DEFINED_ERROR = 1498 +TOO_MANY_PARTITIONS_ERROR = 1499 +SUBPARTITION_ERROR = 1500 +CANT_CREATE_HANDLER_FILE = 1501 +BLOB_FIELD_IN_PART_FUNC_ERROR = 1502 +UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF = 1503 +NO_PARTS_ERROR = 1504 +PARTITION_MGMT_ON_NONPARTITIONED = 1505 +FOREIGN_KEY_ON_PARTITIONED = 1506 +DROP_PARTITION_NON_EXISTENT = 1507 +DROP_LAST_PARTITION = 1508 +COALESCE_ONLY_ON_HASH_PARTITION = 1509 +REORG_HASH_ONLY_ON_SAME_NO = 1510 +REORG_NO_PARAM_ERROR = 1511 +ONLY_ON_RANGE_LIST_PARTITION = 1512 +ADD_PARTITION_SUBPART_ERROR = 1513 +ADD_PARTITION_NO_NEW_PARTITION = 1514 +COALESCE_PARTITION_NO_PARTITION = 1515 +REORG_PARTITION_NOT_EXIST = 1516 +SAME_NAME_PARTITION = 1517 +NO_BINLOG_ERROR = 1518 +CONSECUTIVE_REORG_PARTITIONS = 1519 +REORG_OUTSIDE_RANGE = 1520 +PARTITION_FUNCTION_FAILURE = 1521 +LIMITED_PART_RANGE = 1523 +PLUGIN_IS_NOT_LOADED = 1524 +WRONG_VALUE = 1525 +NO_PARTITION_FOR_GIVEN_VALUE = 1526 +FILEGROUP_OPTION_ONLY_ONCE = 1527 +CREATE_FILEGROUP_FAILED = 1528 +DROP_FILEGROUP_FAILED = 1529 +TABLESPACE_AUTO_EXTEND_ERROR = 1530 +WRONG_SIZE_NUMBER = 1531 +SIZE_OVERFLOW_ERROR = 1532 +ALTER_FILEGROUP_FAILED = 1533 +BINLOG_ROW_LOGGING_FAILED = 1534 +EVENT_ALREADY_EXISTS = 1537 +EVENT_DOES_NOT_EXIST = 1539 +EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG = 1542 +EVENT_ENDS_BEFORE_STARTS = 1543 +EVENT_EXEC_TIME_IN_THE_PAST = 1544 +EVENT_SAME_NAME = 1551 +DROP_INDEX_FK = 1553 +WARN_DEPRECATED_SYNTAX_WITH_VER = 1554 +CANT_LOCK_LOG_TABLE = 1556 +FOREIGN_DUPLICATE_KEY_OLD_UNUSED = 1557 +COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE = 1558 +TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR = 1559 +STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT = 1560 +PARTITION_NO_TEMPORARY = 1562 +PARTITION_CONST_DOMAIN_ERROR = 1563 +PARTITION_FUNCTION_IS_NOT_ALLOWED = 1564 +NULL_IN_VALUES_LESS_THAN = 1566 +WRONG_PARTITION_NAME = 1567 +CANT_CHANGE_TX_CHARACTERISTICS = 1568 +DUP_ENTRY_AUTOINCREMENT_CASE = 1569 +EVENT_SET_VAR_ERROR = 1571 +PARTITION_MERGE_ERROR = 1572 +BASE64_DECODE_ERROR = 1575 +EVENT_RECURSION_FORBIDDEN = 1576 +ONLY_INTEGERS_ALLOWED = 1578 +UNSUPORTED_LOG_ENGINE = 1579 +BAD_LOG_STATEMENT = 1580 +CANT_RENAME_LOG_TABLE = 1581 +WRONG_PARAMCOUNT_TO_NATIVE_FCT = 1582 +WRONG_PARAMETERS_TO_NATIVE_FCT = 1583 +WRONG_PARAMETERS_TO_STORED_FCT = 1584 +NATIVE_FCT_NAME_COLLISION = 1585 +DUP_ENTRY_WITH_KEY_NAME = 1586 +BINLOG_PURGE_EMFILE = 1587 +EVENT_CANNOT_CREATE_IN_THE_PAST = 1588 +EVENT_CANNOT_ALTER_IN_THE_PAST = 1589 +NO_PARTITION_FOR_GIVEN_VALUE_SILENT = 1591 +BINLOG_UNSAFE_STATEMENT = 1592 +BINLOG_FATAL_ERROR = 1593 +BINLOG_LOGGING_IMPOSSIBLE = 1598 +VIEW_NO_CREATION_CTX = 1599 +VIEW_INVALID_CREATION_CTX = 1600 +TRG_CORRUPTED_FILE = 1602 +TRG_NO_CREATION_CTX = 1603 +TRG_INVALID_CREATION_CTX = 1604 +EVENT_INVALID_CREATION_CTX = 1605 +TRG_CANT_OPEN_TABLE = 1606 +NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT = 1609 +SLAVE_CORRUPT_EVENT = 1610 +LOG_PURGE_NO_FILE = 1612 +XA_RBTIMEOUT = 1613 +XA_RBDEADLOCK = 1614 +NEED_REPREPARE = 1615 +WARN_NO_MASTER_INFO = 1617 +WARN_OPTION_IGNORED = 1618 +PLUGIN_DELETE_BUILTIN = 1619 +WARN_PLUGIN_BUSY = 1620 +VARIABLE_IS_READONLY = 1621 +WARN_ENGINE_TRANSACTION_ROLLBACK = 1622 +SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE = 1624 +NDB_REPLICATION_SCHEMA_ERROR = 1625 +CONFLICT_FN_PARSE_ERROR = 1626 +EXCEPTIONS_WRITE_ERROR = 1627 +TOO_LONG_TABLE_COMMENT = 1628 +TOO_LONG_FIELD_COMMENT = 1629 +FUNC_INEXISTENT_NAME_COLLISION = 1630 +DATABASE_NAME = 1631 +TABLE_NAME = 1632 +PARTITION_NAME = 1633 +SUBPARTITION_NAME = 1634 +TEMPORARY_NAME = 1635 +RENAMED_NAME = 1636 +TOO_MANY_CONCURRENT_TRXS = 1637 +WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED = 1638 +DEBUG_SYNC_TIMEOUT = 1639 +DEBUG_SYNC_HIT_LIMIT = 1640 +DUP_SIGNAL_SET = 1641 +SIGNAL_WARN = 1642 +SIGNAL_NOT_FOUND = 1643 +SIGNAL_EXCEPTION = 1644 +RESIGNAL_WITHOUT_ACTIVE_HANDLER = 1645 +SIGNAL_BAD_CONDITION_TYPE = 1646 +WARN_COND_ITEM_TRUNCATED = 1647 +COND_ITEM_TOO_LONG = 1648 +UNKNOWN_LOCALE = 1649 +SLAVE_IGNORE_SERVER_IDS = 1650 +SAME_NAME_PARTITION_FIELD = 1652 +PARTITION_COLUMN_LIST_ERROR = 1653 +WRONG_TYPE_COLUMN_VALUE_ERROR = 1654 +TOO_MANY_PARTITION_FUNC_FIELDS_ERROR = 1655 +MAXVALUE_IN_VALUES_IN = 1656 +TOO_MANY_VALUES_ERROR = 1657 +ROW_SINGLE_PARTITION_FIELD_ERROR = 1658 +FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD = 1659 +PARTITION_FIELDS_TOO_LONG = 1660 +BINLOG_ROW_ENGINE_AND_STMT_ENGINE = 1661 +BINLOG_ROW_MODE_AND_STMT_ENGINE = 1662 +BINLOG_UNSAFE_AND_STMT_ENGINE = 1663 +BINLOG_ROW_INJECTION_AND_STMT_ENGINE = 1664 +BINLOG_STMT_MODE_AND_ROW_ENGINE = 1665 +BINLOG_ROW_INJECTION_AND_STMT_MODE = 1666 +BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE = 1667 +BINLOG_UNSAFE_LIMIT = 1668 +BINLOG_UNSAFE_SYSTEM_TABLE = 1670 +BINLOG_UNSAFE_AUTOINC_COLUMNS = 1671 +BINLOG_UNSAFE_UDF = 1672 +BINLOG_UNSAFE_SYSTEM_VARIABLE = 1673 +BINLOG_UNSAFE_SYSTEM_FUNCTION = 1674 +BINLOG_UNSAFE_NONTRANS_AFTER_TRANS = 1675 +MESSAGE_AND_STATEMENT = 1676 +SLAVE_CANT_CREATE_CONVERSION = 1678 +INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT = 1679 +PATH_LENGTH = 1680 +WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT = 1681 +WRONG_NATIVE_TABLE_STRUCTURE = 1682 +WRONG_PERFSCHEMA_USAGE = 1683 +WARN_I_S_SKIPPED_TABLE = 1684 +INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT = 1685 +STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT = 1686 +SPATIAL_MUST_HAVE_GEOM_COL = 1687 +TOO_LONG_INDEX_COMMENT = 1688 +LOCK_ABORTED = 1689 +DATA_OUT_OF_RANGE = 1690 +WRONG_SPVAR_TYPE_IN_LIMIT = 1691 +BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE = 1692 +BINLOG_UNSAFE_MIXED_STATEMENT = 1693 +INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN = 1694 +STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN = 1695 +FAILED_READ_FROM_PAR_FILE = 1696 +VALUES_IS_NOT_INT_TYPE_ERROR = 1697 +ACCESS_DENIED_NO_PASSWORD_ERROR = 1698 +SET_PASSWORD_AUTH_PLUGIN = 1699 +TRUNCATE_ILLEGAL_FK = 1701 +PLUGIN_IS_PERMANENT = 1702 +SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN = 1703 +SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX = 1704 +STMT_CACHE_FULL = 1705 +MULTI_UPDATE_KEY_CONFLICT = 1706 +TABLE_NEEDS_REBUILD = 1707 +WARN_OPTION_BELOW_LIMIT = 1708 +INDEX_COLUMN_TOO_LONG = 1709 +ERROR_IN_TRIGGER_BODY = 1710 +ERROR_IN_UNKNOWN_TRIGGER_BODY = 1711 +INDEX_CORRUPT = 1712 +UNDO_RECORD_TOO_BIG = 1713 +BINLOG_UNSAFE_INSERT_IGNORE_SELECT = 1714 +BINLOG_UNSAFE_INSERT_SELECT_UPDATE = 1715 +BINLOG_UNSAFE_REPLACE_SELECT = 1716 +BINLOG_UNSAFE_CREATE_IGNORE_SELECT = 1717 +BINLOG_UNSAFE_CREATE_REPLACE_SELECT = 1718 +BINLOG_UNSAFE_UPDATE_IGNORE = 1719 +PLUGIN_NO_UNINSTALL = 1720 +PLUGIN_NO_INSTALL = 1721 +BINLOG_UNSAFE_WRITE_AUTOINC_SELECT = 1722 +BINLOG_UNSAFE_CREATE_SELECT_AUTOINC = 1723 +BINLOG_UNSAFE_INSERT_TWO_KEYS = 1724 +TABLE_IN_FK_CHECK = 1725 +UNSUPPORTED_ENGINE = 1726 +BINLOG_UNSAFE_AUTOINC_NOT_FIRST = 1727 +CANNOT_LOAD_FROM_TABLE_V2 = 1728 +MASTER_DELAY_VALUE_OUT_OF_RANGE = 1729 +ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT = 1730 +PARTITION_EXCHANGE_DIFFERENT_OPTION = 1731 +PARTITION_EXCHANGE_PART_TABLE = 1732 +PARTITION_EXCHANGE_TEMP_TABLE = 1733 +PARTITION_INSTEAD_OF_SUBPARTITION = 1734 +UNKNOWN_PARTITION = 1735 +TABLES_DIFFERENT_METADATA = 1736 +ROW_DOES_NOT_MATCH_PARTITION = 1737 +BINLOG_CACHE_SIZE_GREATER_THAN_MAX = 1738 +WARN_INDEX_NOT_APPLICABLE = 1739 +PARTITION_EXCHANGE_FOREIGN_KEY = 1740 +RPL_INFO_DATA_TOO_LONG = 1742 +BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX = 1745 +CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT = 1746 +PARTITION_CLAUSE_ON_NONPARTITIONED = 1747 +ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET = 1748 +CHANGE_RPL_INFO_REPOSITORY_FAILURE = 1750 +WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE = 1751 +WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE = 1752 +MTS_FEATURE_IS_NOT_SUPPORTED = 1753 +MTS_UPDATED_DBS_GREATER_MAX = 1754 +MTS_CANT_PARALLEL = 1755 +MTS_INCONSISTENT_DATA = 1756 +FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING = 1757 +DA_INVALID_CONDITION_NUMBER = 1758 +INSECURE_PLAIN_TEXT = 1759 +INSECURE_CHANGE_MASTER = 1760 +FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO = 1761 +FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO = 1762 +SQLTHREAD_WITH_SECURE_SLAVE = 1763 +TABLE_HAS_NO_FT = 1764 +VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER = 1765 +VARIABLE_NOT_SETTABLE_IN_TRANSACTION = 1766 +SET_STATEMENT_CANNOT_INVOKE_FUNCTION = 1769 +GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL = 1770 +MALFORMED_GTID_SET_SPECIFICATION = 1772 +MALFORMED_GTID_SET_ENCODING = 1773 +MALFORMED_GTID_SPECIFICATION = 1774 +GNO_EXHAUSTED = 1775 +BAD_SLAVE_AUTO_POSITION = 1776 +AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF = 1777 +CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET = 1778 +GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON = 1779 +CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF = 1781 +CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON = 1782 +CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF = 1783 +GTID_UNSAFE_NON_TRANSACTIONAL_TABLE = 1785 +GTID_UNSAFE_CREATE_SELECT = 1786 +GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION = 1787 +GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME = 1788 +MASTER_HAS_PURGED_REQUIRED_GTIDS = 1789 +CANT_SET_GTID_NEXT_WHEN_OWNING_GTID = 1790 +UNKNOWN_EXPLAIN_FORMAT = 1791 +CANT_EXECUTE_IN_READ_ONLY_TRANSACTION = 1792 +TOO_LONG_TABLE_PARTITION_COMMENT = 1793 +SLAVE_CONFIGURATION = 1794 +INNODB_FT_LIMIT = 1795 +INNODB_NO_FT_TEMP_TABLE = 1796 +INNODB_FT_WRONG_DOCID_COLUMN = 1797 +INNODB_FT_WRONG_DOCID_INDEX = 1798 +INNODB_ONLINE_LOG_TOO_BIG = 1799 +UNKNOWN_ALTER_ALGORITHM = 1800 +UNKNOWN_ALTER_LOCK = 1801 +MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS = 1802 +MTS_RECOVERY_FAILURE = 1803 +MTS_RESET_WORKERS = 1804 +COL_COUNT_DOESNT_MATCH_CORRUPTED_V2 = 1805 +SLAVE_SILENT_RETRY_TRANSACTION = 1806 +DISCARD_FK_CHECKS_RUNNING = 1807 +TABLE_SCHEMA_MISMATCH = 1808 +TABLE_IN_SYSTEM_TABLESPACE = 1809 +IO_READ_ERROR = 1810 +IO_WRITE_ERROR = 1811 +TABLESPACE_MISSING = 1812 +TABLESPACE_EXISTS = 1813 +TABLESPACE_DISCARDED = 1814 +INTERNAL_ERROR = 1815 +INNODB_IMPORT_ERROR = 1816 +INNODB_INDEX_CORRUPT = 1817 +INVALID_YEAR_COLUMN_LENGTH = 1818 +NOT_VALID_PASSWORD = 1819 +MUST_CHANGE_PASSWORD = 1820 +FK_NO_INDEX_CHILD = 1821 +FK_NO_INDEX_PARENT = 1822 +FK_FAIL_ADD_SYSTEM = 1823 +FK_CANNOT_OPEN_PARENT = 1824 +FK_INCORRECT_OPTION = 1825 +FK_DUP_NAME = 1826 +PASSWORD_FORMAT = 1827 +FK_COLUMN_CANNOT_DROP = 1828 +FK_COLUMN_CANNOT_DROP_CHILD = 1829 +FK_COLUMN_NOT_NULL = 1830 +DUP_INDEX = 1831 +FK_COLUMN_CANNOT_CHANGE = 1832 +FK_COLUMN_CANNOT_CHANGE_CHILD = 1833 +MALFORMED_PACKET = 1835 +READ_ONLY_MODE = 1836 +GTID_NEXT_TYPE_UNDEFINED_GTID = 1837 +VARIABLE_NOT_SETTABLE_IN_SP = 1838 +CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY = 1840 +CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY = 1841 +GTID_PURGED_WAS_CHANGED = 1842 +GTID_EXECUTED_WAS_CHANGED = 1843 +BINLOG_STMT_MODE_AND_NO_REPL_TABLES = 1844 +ALTER_OPERATION_NOT_SUPPORTED = 1845 +ALTER_OPERATION_NOT_SUPPORTED_REASON = 1846 +ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY = 1847 +ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION = 1848 +ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME = 1849 +ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE = 1850 +ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK = 1851 +ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK = 1853 +ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC = 1854 +ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS = 1855 +ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS = 1856 +ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS = 1857 +SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE = 1858 +DUP_UNKNOWN_IN_INDEX = 1859 +IDENT_CAUSES_TOO_LONG_PATH = 1860 +ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL = 1861 +MUST_CHANGE_PASSWORD_LOGIN = 1862 +ROW_IN_WRONG_PARTITION = 1863 +MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX = 1864 +BINLOG_LOGICAL_CORRUPTION = 1866 +WARN_PURGE_LOG_IN_USE = 1867 +WARN_PURGE_LOG_IS_ACTIVE = 1868 +AUTO_INCREMENT_CONFLICT = 1869 +WARN_ON_BLOCKHOLE_IN_RBR = 1870 +SLAVE_MI_INIT_REPOSITORY = 1871 +SLAVE_RLI_INIT_REPOSITORY = 1872 +ACCESS_DENIED_CHANGE_USER_ERROR = 1873 +INNODB_READ_ONLY = 1874 +STOP_SLAVE_SQL_THREAD_TIMEOUT = 1875 +STOP_SLAVE_IO_THREAD_TIMEOUT = 1876 +TABLE_CORRUPT = 1877 +TEMP_FILE_WRITE_FAILURE = 1878 +INNODB_FT_AUX_NOT_HEX_ID = 1879 +OLD_TEMPORALS_UPGRADED = 1880 +INNODB_FORCED_RECOVERY = 1881 +AES_INVALID_IV = 1882 +PLUGIN_CANNOT_BE_UNINSTALLED = 1883 +GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_ASSIGNED_GTID = 1884 +SLAVE_HAS_MORE_GTIDS_THAN_MASTER = 1885 +MISSING_KEY = 1886 +ERROR_LAST = 1973 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/FIELD_TYPE.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/FIELD_TYPE.py new file mode 100644 index 00000000..3c4eca9f --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/FIELD_TYPE.py @@ -0,0 +1,40 @@ +"""MySQL FIELD_TYPE Constants + +These constants represent the various column (field) types that are +supported by MySQL. +""" + +DECIMAL = 0 +TINY = 1 +SHORT = 2 +LONG = 3 +FLOAT = 4 +DOUBLE = 5 +NULL = 6 +TIMESTAMP = 7 +LONGLONG = 8 +INT24 = 9 +DATE = 10 +TIME = 11 +DATETIME = 12 +YEAR = 13 +# NEWDATE = 14 # Internal to MySQL. +VARCHAR = 15 +BIT = 16 +# TIMESTAMP2 = 17 +# DATETIME2 = 18 +# TIME2 = 19 +JSON = 245 +NEWDECIMAL = 246 +ENUM = 247 +SET = 248 +TINY_BLOB = 249 +MEDIUM_BLOB = 250 +LONG_BLOB = 251 +BLOB = 252 +VAR_STRING = 253 +STRING = 254 +GEOMETRY = 255 + +CHAR = TINY +INTERVAL = ENUM diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/FLAG.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/FLAG.py new file mode 100644 index 00000000..00e6c7c0 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/FLAG.py @@ -0,0 +1,23 @@ +"""MySQL FLAG Constants + +These flags are used along with the FIELD_TYPE to indicate various +properties of columns in a result set. + +""" + +NOT_NULL = 1 +PRI_KEY = 2 +UNIQUE_KEY = 4 +MULTIPLE_KEY = 8 +BLOB = 16 +UNSIGNED = 32 +ZEROFILL = 64 +BINARY = 128 +ENUM = 256 +AUTO_INCREMENT = 512 +TIMESTAMP = 1024 +SET = 2048 +NUM = 32768 +PART_KEY = 16384 +GROUP = 32768 +UNIQUE = 65536 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__init__.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__init__.py new file mode 100644 index 00000000..3e774cd9 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__init__.py @@ -0,0 +1 @@ +__all__ = ['CR', 'FIELD_TYPE','CLIENT','ER','FLAG'] diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/CLIENT.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/CLIENT.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1632104ff8f7129dded1f97e0c6dd6b6105c4b75 GIT binary patch literal 943 zcmah{O-|cD6m~*@#7Q7P4=@WBL?Uq|q^_z8<2b>RW2YVmq}Ro0k{M!)_@}l5irPgl z&=d3oy-JV3wkxjCRi6W;-PJ#zt@pm~y>DjTS-Y+7eEsp^TUAkhD*s#+{6EJxpCAYY z6j6bSs6th2!Ir2&O>D!q*nu6f3%jBYbt;-5B9`9?28U`!~qoq{2L%VlVp`kLGA+?lX)h25ylHr z1RGK;=S7&reKJMSEG+KBT=rZ~J^9=vMS^9bSr|)_q$MlI&_bdzJ0(08B;`4V0vQp$ z`I7lElySjsmVA+`DbIK$3z?OLHg3hNZzSGoCiu{?-JJRRk+RzkgmP6?!h z^Af(4pdc|+kQgdR3>74X3KBzwlyF`G5<>-v2vx=D9zE?+@7;O{|FtE#K1} zS~6URLLGaU-jz9k18N#mEc$E;v(On&ZQo+l*L`!0Q$?Zu6hRSY=yxS+;%05&*C#DV zBB^COSS_`I%x{Y%)%ctX8LfK(pWpH#NMh|?%G=&+P4IQ^OpDg6NJPSTnre44zSEZB zOiR}#@vQ$w%fmwU(o(vRx%NCU+RJEbPqW@n*AMl#Q6g4L`K~pby literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/CR.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/CR.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e13efd15fb818eb87ed729c3c10bb8faf0044d20 GIT binary patch literal 3014 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 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/FIELD_TYPE.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/FIELD_TYPE.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d7b71d8449251a4faf40bf93e564f49eed5b6ee GIT binary patch literal 882 zcmZ|NNpG7_5CC9oV;kc*`@U2hn}b8uR5?^t6&#a-Up8Ny4rRy6q2}@8y8DuO&8E0SyD^S5%n8i7m!+Ds;1z5mESi~h*!ev;- z6@(V)|svxg@ZT= z21zW-UWdg@Y5yKjhAbNLkwKy)9j06b!)`c=dA>L550twvx~zx0N|Ht_<^@5b1Vbjr zqbLf82}9)~Ri@4MC~WX>2;%N-CUHY*G(u+voe3C?|Kb`PquJ# z2I)k1EZu9gK%BOd_|){qxn{l-h6;cCDc5h+PS|JaFzAeWYMsTGNf@a?J3!V?tDT^I z86=%>puS@4vU*R&Ag%7J{nSrF4E-RA)GIc)QhVJCHA<;)fA2tzy9ujCbn8nNtJ6=8 o7wYX_r2hHW_M&twJ?e)z>aoZ4>EnkSF)L>NyHig5XO?Gv0m-T7oB#j- literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/FLAG.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/FLAG.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14826c356d91dcb31360f1c32b9fea3ab4822986 GIT binary patch literal 663 zcmaKpy>8nu5XWg-u@xoG#~X0X;IKe|PDN2CQBt9@?AX$f>mV>bCL%10f=DM&r}hE* zAbpiSLe@@sg-#_M6zEhE{2dSXKOB#DHXH{1?>|4UI)wZp|19g15BBJf7D#|#2Rhh= zF7}{@9(cF|JJ^Rl4q$*j__zzZ7(jq~u!sAwk3$&Z0UTI+h=*{5M+xEUEIX< zDjr|c3sq^uE2D!TErb^IzT^*@@QqysWv*O8&!+ONTI2^r%P3C)|Iw0%4s9?rZiLwa~cFMuCRb-R<=TS1A-+~t=*#r*8Svt+5o~PR)JJ<7RHiQ0a-5;dcvyE)=yJdx13)b*rQ?g5;S4P#0 zFFA^JJ1Y2c#Z93q_9Vn=^oAjCM`vu^=0>5)d0n$dQ9ZI!-m$uM!n4!2OiLq1wM%^v lnr#P*cWn80s>}`fv~HjMcWZ^4QoQfm*Jx_tb-m92_8<2cu15d> literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/__init__.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/constants/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9fce9125e428dbba60b4cf38ab485e021baec69b GIT binary patch literal 262 zcmX|+&uYRz5QjI>Xc45)x9||BkkV5rEgFlEid8QSg<;JsCgjg9?rPbC57bx6wQtc= zH$8OV`}iGxGceJ3JkoUiamN_@cKlD^(vw5qI1wX{eCkpE5TuNPEt?Elf3`_Si)Eb5 zareHC)4?oR#;aZG$D6djNS int + """Execute a multi-row query. + + :param query: query to execute on server + :param args: Sequence of sequences or mappings. It is used as parameter. + :return: Number of rows affected, if any. + + This method improves performance on multiple-row INSERT and + REPLACE. Otherwise it is equivalent to looping over args with + execute(). + """ + del self.messages[:] + + if not args: + return + + m = RE_INSERT_VALUES.match(query) + if m: + q_prefix = m.group(1) % () + q_values = m.group(2).rstrip() + q_postfix = m.group(3) or '' + assert q_values[0] == '(' and q_values[-1] == ')' + return self._do_execute_many(q_prefix, q_values, q_postfix, args, + self.max_stmt_length, + self._get_db().encoding) + + self.rowcount = sum(self.execute(query, arg) for arg in args) + return self.rowcount + + def _do_execute_many(self, prefix, values, postfix, args, max_stmt_length, encoding): + conn = self._get_db() + escape = self._escape_args + if isinstance(prefix, unicode): + prefix = prefix.encode(encoding) + if isinstance(values, unicode): + values = values.encode(encoding) + if isinstance(postfix, unicode): + postfix = postfix.encode(encoding) + sql = bytearray(prefix) + args = iter(args) + v = values % escape(next(args), conn) + sql += v + rows = 0 + for arg in args: + v = values % escape(arg, conn) + if len(sql) + len(v) + len(postfix) + 1 > max_stmt_length: + rows += self.execute(sql + postfix) + sql = bytearray(prefix) + else: + sql += b',' + sql += v + rows += self.execute(sql + postfix) + self.rowcount = rows + return rows + + def callproc(self, procname, args=()): + """Execute stored procedure procname with args + + procname -- string, name of procedure to execute on server + + args -- Sequence of parameters to use with procedure + + Returns the original args. + + Compatibility warning: PEP-249 specifies that any modified + parameters must be returned. This is currently impossible + as they are only available by storing them in a server + variable and then retrieved by a query. Since stored + procedures return zero or more result sets, there is no + reliable way to get at OUT or INOUT parameters via callproc. + The server variables are named @_procname_n, where procname + is the parameter above and n is the position of the parameter + (from zero). Once all result sets generated by the procedure + have been fetched, you can issue a SELECT @_procname_0, ... + query using .execute() to get any OUT or INOUT values. + + Compatibility warning: The act of calling a stored procedure + itself creates an empty result set. This appears after any + result sets generated by the procedure. This is non-standard + behavior with respect to the DB-API. Be sure to use nextset() + to advance through all result sets; otherwise you may get + disconnected. + """ + db = self._get_db() + if isinstance(procname, unicode): + procname = procname.encode(db.encoding) + if args: + fmt = b'@_' + procname + b'_%d=%s' + q = b'SET %s' % b','.join(fmt % (index, db.literal(arg)) + for index, arg in enumerate(args)) + self._query(q) + self.nextset() + + q = b"CALL %s(%s)" % (procname, + b','.join([b'@_%s_%d' % (procname, i) + for i in range(len(args))])) + self._query(q) + return args + + def _query(self, q): + db = self._get_db() + self._result = None + db.query(q) + self._do_get_result(db) + self._post_get_result() + self._executed = q + self._last_executed = q # XXX THIS IS GARBAGE: See above. + return self.rowcount + + def _fetch_row(self, size=1): + if not self._result: + return () + return self._result.fetch_row(size, self._fetch_type) + + def __iter__(self): + return iter(self.fetchone, None) + + Warning = Warning + Error = Error + InterfaceError = InterfaceError + DatabaseError = DatabaseError + DataError = DataError + OperationalError = OperationalError + IntegrityError = IntegrityError + InternalError = InternalError + ProgrammingError = ProgrammingError + NotSupportedError = NotSupportedError + + +class CursorStoreResultMixIn(object): + """This is a MixIn class which causes the entire result set to be + stored on the client side, i.e. it uses mysql_store_result(). If the + result set can be very large, consider adding a LIMIT clause to your + query, or using CursorUseResultMixIn instead.""" + + def _get_result(self): + return self._get_db().store_result() + + def _post_get_result(self): + self._rows = self._fetch_row(0) + self._result = None + + def fetchone(self): + """Fetches a single row from the cursor. None indicates that + no more rows are available.""" + self._check_executed() + if self.rownumber >= len(self._rows): + return None + result = self._rows[self.rownumber] + self.rownumber = self.rownumber + 1 + return result + + def fetchmany(self, size=None): + """Fetch up to size rows from the cursor. Result set may be smaller + than size. If size is not defined, cursor.arraysize is used.""" + self._check_executed() + end = self.rownumber + (size or self.arraysize) + result = self._rows[self.rownumber:end] + self.rownumber = min(end, len(self._rows)) + return result + + def fetchall(self): + """Fetchs all available rows from the cursor.""" + self._check_executed() + if self.rownumber: + result = self._rows[self.rownumber:] + else: + result = self._rows + self.rownumber = len(self._rows) + return result + + def scroll(self, value, mode='relative'): + """Scroll the cursor in the result set to a new position according + to mode. + + If mode is 'relative' (default), value is taken as offset to + the current position in the result set, if set to 'absolute', + value states an absolute target position.""" + self._check_executed() + if mode == 'relative': + r = self.rownumber + value + elif mode == 'absolute': + r = value + else: + raise ProgrammingError("unknown scroll mode %s" % repr(mode)) + if r < 0 or r >= len(self._rows): + raise IndexError("out of range") + self.rownumber = r + + def __iter__(self): + self._check_executed() + result = self.rownumber and self._rows[self.rownumber:] or self._rows + return iter(result) + + +class CursorUseResultMixIn(object): + + """This is a MixIn class which causes the result set to be stored + in the server and sent row-by-row to client side, i.e. it uses + mysql_use_result(). You MUST retrieve the entire result set and + close() the cursor before additional queries can be performed on + the connection.""" + + def _get_result(self): + return self._get_db().use_result() + + def fetchone(self): + """Fetches a single row from the cursor.""" + self._check_executed() + r = self._fetch_row(1) + if not r: + return None + self.rownumber = self.rownumber + 1 + return r[0] + + def fetchmany(self, size=None): + """Fetch up to size rows from the cursor. Result set may be smaller + than size. If size is not defined, cursor.arraysize is used.""" + self._check_executed() + r = self._fetch_row(size or self.arraysize) + self.rownumber = self.rownumber + len(r) + return r + + def fetchall(self): + """Fetchs all available rows from the cursor.""" + self._check_executed() + r = self._fetch_row(0) + self.rownumber = self.rownumber + len(r) + return r + + def __iter__(self): + return self + + def next(self): + row = self.fetchone() + if row is None: + raise StopIteration + return row + + __next__ = next + + +class CursorTupleRowsMixIn(object): + """This is a MixIn class that causes all rows to be returned as tuples, + which is the standard form required by DB API.""" + + _fetch_type = 0 + + +class CursorDictRowsMixIn(object): + """This is a MixIn class that causes all rows to be returned as + dictionaries. This is a non-standard feature.""" + + _fetch_type = 1 + + +class Cursor(CursorStoreResultMixIn, CursorTupleRowsMixIn, + BaseCursor): + """This is the standard Cursor class that returns rows as tuples + and stores the result set in the client.""" + + +class DictCursor(CursorStoreResultMixIn, CursorDictRowsMixIn, + BaseCursor): + """This is a Cursor class that returns rows as dictionaries and + stores the result set in the client.""" + + +class SSCursor(CursorUseResultMixIn, CursorTupleRowsMixIn, + BaseCursor): + """This is a Cursor class that returns rows as tuples and stores + the result set in the server.""" + + +class SSDictCursor(CursorUseResultMixIn, CursorDictRowsMixIn, + BaseCursor): + """This is a Cursor class that returns rows as dictionaries and + stores the result set in the server.""" diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/release.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/release.py new file mode 100644 index 00000000..e6ce488b --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/release.py @@ -0,0 +1,4 @@ + +__author__ = "Inada Naoki " +version_info = (1,4,2,'post',1) +__version__ = "1.4.2.post1" diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/times.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/times.py new file mode 100644 index 00000000..d47c8fb8 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/MySQLdb/times.py @@ -0,0 +1,131 @@ +"""times module + +This module provides some Date and Time classes for dealing with MySQL data. + +Use Python datetime module to handle date and time columns. +""" +from time import localtime +from datetime import date, datetime, time, timedelta +from MySQLdb._mysql import string_literal + +Date = date +Time = time +TimeDelta = timedelta +Timestamp = datetime + +DateTimeDeltaType = timedelta +DateTimeType = datetime + +def DateFromTicks(ticks): + """Convert UNIX ticks into a date instance.""" + return date(*localtime(ticks)[:3]) + +def TimeFromTicks(ticks): + """Convert UNIX ticks into a time instance.""" + return time(*localtime(ticks)[3:6]) + +def TimestampFromTicks(ticks): + """Convert UNIX ticks into a datetime instance.""" + return datetime(*localtime(ticks)[:6]) + +format_TIME = format_DATE = str + +def format_TIMEDELTA(v): + seconds = int(v.seconds) % 60 + minutes = int(v.seconds // 60) % 60 + hours = int(v.seconds // 3600) % 24 + return '%d %d:%d:%d' % (v.days, hours, minutes, seconds) + +def format_TIMESTAMP(d): + """ + :type d: datetime.datetime + """ + if d.microsecond: + fmt = "{0.year:04}-{0.month:02}-{0.day:02} {0.hour:02}:{0.minute:02}:{0.second:02}.{0.microsecond:06}" + else: + fmt = "{0.year:04}-{0.month:02}-{0.day:02} {0.hour:02}:{0.minute:02}:{0.second:02}" + return fmt.format(d) + + +def DateTime_or_None(s): + try: + if len(s) < 11: + return Date_or_None(s) + + micros = s[20:] + + if len(micros) == 0: + # 12:00:00 + micros = 0 + elif len(micros) < 7: + # 12:00:00.123456 + micros = int(micros) * 10 ** (6 - len(micros)) + else: + return None + + return datetime( + int(s[:4]), # year + int(s[5:7]), # month + int(s[8:10]), # day + int(s[11:13] or 0), # hour + int(s[14:16] or 0), # minute + int(s[17:19] or 0), # second + micros, # microsecond + ) + except ValueError: + return None + +def TimeDelta_or_None(s): + try: + h, m, s = s.split(':') + if '.' in s: + s, ms = s.split('.') + ms = ms.ljust(6, '0') + else: + ms = 0 + if h[0] == '-': + negative = True + else: + negative = False + h, m, s, ms = abs(int(h)), int(m), int(s), int(ms) + td = timedelta(hours=h, minutes=m, seconds=s, + microseconds=ms) + if negative: + return -td + else: + return td + except ValueError: + # unpacking or int/float conversion failed + return None + +def Time_or_None(s): + try: + h, m, s = s.split(':') + if '.' in s: + s, ms = s.split('.') + ms = ms.ljust(6, '0') + else: + ms = 0 + h, m, s, ms = int(h), int(m), int(s), int(ms) + return time(hour=h, minute=m, second=s, + microsecond=ms) + except ValueError: + return None + +def Date_or_None(s): + try: + return date( + int(s[:4]), # year + int(s[5:7]), # month + int(s[8:10]), # day + ) + except ValueError: + return None + +def DateTime2literal(d, c): + """Format a DateTime object as an ISO timestamp.""" + return string_literal(format_TIMESTAMP(d)) + +def DateTimeDelta2literal(d, c): + """Format a DateTimeDelta object as a time.""" + return string_literal(format_TIMEDELTA(d)) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/INSTALLER b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/LICENSE.rst b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/LICENSE.rst new file mode 100644 index 00000000..c37cae49 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/LICENSE.rst @@ -0,0 +1,28 @@ +Copyright 2007 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/METADATA b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/METADATA new file mode 100644 index 00000000..ae87c929 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/METADATA @@ -0,0 +1,133 @@ +Metadata-Version: 2.1 +Name: Werkzeug +Version: 0.15.4 +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: The Pallets Team +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +Project-URL: Documentation, https://werkzeug.palletsprojects.com/ +Project-URL: Code, https://github.com/pallets/werkzeug +Project-URL: Issue tracker, https://github.com/pallets/werkzeug/issues +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware +Classifier: Topic :: Software Development :: Libraries :: Application Frameworks +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* +Provides-Extra: dev +Requires-Dist: pytest ; extra == 'dev' +Requires-Dist: coverage ; extra == 'dev' +Requires-Dist: tox ; extra == 'dev' +Requires-Dist: sphinx ; extra == 'dev' +Requires-Dist: pallets-sphinx-themes ; extra == 'dev' +Requires-Dist: sphinx-issues ; extra == 'dev' +Provides-Extra: termcolor +Requires-Dist: termcolor ; extra == 'termcolor' +Provides-Extra: watchdog +Requires-Dist: watchdog ; extra == 'watchdog' + +Werkzeug +======== + +*werkzeug* German noun: "tool". Etymology: *werk* ("work"), *zeug* ("stuff") + +Werkzeug is a comprehensive `WSGI`_ web application library. It began as +a simple collection of various utilities for WSGI applications and has +become one of the most advanced WSGI utility libraries. + +It includes: + +- An interactive debugger that allows inspecting stack traces and + source code in the browser with an interactive interpreter for any + frame in the stack. +- A full-featured request object with objects to interact with + headers, query args, form data, files, and cookies. +- A response object that can wrap other WSGI applications and handle + streaming data. +- A routing system for matching URLs to endpoints and generating URLs + for endpoints, with an extensible system for capturing variables + from URLs. +- HTTP utilities to handle entity tags, cache control, dates, user + agents, cookies, files, and more. +- A threaded WSGI server for use while developing applications + locally. +- A test client for simulating HTTP requests during testing without + requiring running a server. + +Werkzeug is Unicode aware and doesn't enforce any dependencies. It is up +to the developer to choose a template engine, database adapter, and even +how to handle requests. It can be used to build all sorts of end user +applications such as blogs, wikis, or bulletin boards. + +`Flask`_ wraps Werkzeug, using it to handle the details of WSGI while +providing more structure and patterns for defining powerful +applications. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + pip install -U Werkzeug + + +A Simple Example +---------------- + +.. code-block:: python + + from werkzeug.wrappers import Request, Response + + @Request.application + def application(request): + return Response('Hello, World!') + + if __name__ == '__main__': + from werkzeug.serving import run_simple + run_simple('localhost', 4000, application) + + +Links +----- + +- Website: https://www.palletsprojects.com/p/werkzeug/ +- Documentation: https://werkzeug.palletsprojects.com/ +- Releases: https://pypi.org/project/Werkzeug/ +- Code: https://github.com/pallets/werkzeug +- Issue tracker: https://github.com/pallets/werkzeug/issues +- Test status: + + - Linux, Mac: https://travis-ci.org/pallets/werkzeug + - Windows: https://ci.appveyor.com/project/pallets/werkzeug + +- Test coverage: https://codecov.io/gh/pallets/werkzeug +- Official chat: https://discord.gg/t6rrQZH + +.. _WSGI: https://wsgi.readthedocs.io/en/latest/ +.. _Flask: https://www.palletsprojects.com/p/flask/ +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/RECORD b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/RECORD new file mode 100644 index 00000000..dc9dc752 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/RECORD @@ -0,0 +1,119 @@ +werkzeug/__init__.py,sha256=LBPc9xBJsifxGUsUY5EkreS0o_D8ixJD3YYSh9ARtxE,6805 +werkzeug/_compat.py,sha256=oBEVVrJT4sqYdIZbUWmgV9T9w257RhTSDBlTjh0Zbb0,6431 +werkzeug/_internal.py,sha256=Wx7cpTRWqeBd0LAqobo0lCO4pNUW4oav6XKf7Taumgk,14590 +werkzeug/_reloader.py,sha256=8B8T1npsQT-96nGeVJjV1KXWK_ong6ZlTXOWgxfRLpg,11241 +werkzeug/datastructures.py,sha256=8HoA4Gu9i7ZWi5OBjx244OLWvDEE4JTQQUUTRoAYKog,91761 +werkzeug/exceptions.py,sha256=SNbLn_vitnNiG_nwirLT0k6Nf6CZ_1R0Fyk_ub2XCbE,23230 +werkzeug/filesystem.py,sha256=HzKl-j0Hd8Jl66j778UbPTAYNnY6vUZgYLlBZ0e7uw0,2101 +werkzeug/formparser.py,sha256=tN6SO4mn6RUsxRZq4qVBWXbNWNuasn2KaBznTieMaVk,21790 +werkzeug/http.py,sha256=t0ET2tySAf9ZWdEelVWJoLaZzFViYpjoUmiYHPz10-E,43304 +werkzeug/local.py,sha256=USVEcgIg-oCiUJFPIecFIW9jkIejfw4Fjf1u5yN-Np4,14456 +werkzeug/posixemulation.py,sha256=gSSiv1SCmOyzOM_nq1ZaZCtxP__C5MeDJl_4yXJmi4Q,3541 +werkzeug/routing.py,sha256=51zsLuN3qZcpRxpy3K3XoEuL8kyFfuqo28MquJsjZjw,72902 +werkzeug/security.py,sha256=mfxfcM-D6U8LhsyDK5W_rnL1oVTZWgyt-E8E4FlSdrI,8026 +werkzeug/serving.py,sha256=tUFUMg7Bj9iw3nA8ZgC_czMDJJKN7vFskajEmgEFhzE,36597 +werkzeug/test.py,sha256=Cnb5xa3vLDL0hzFCH1fkG_YRpndViGQgCh4D744iSQk,40645 +werkzeug/testapp.py,sha256=hcKBzorVlSHC-uGvGXXjCm3FzCwGWq4yjbTG3Pr7MV8,9301 +werkzeug/urls.py,sha256=8yHdYI99N__-isoTwvGqvuj9QhOh66dd1Xh1DIp0q0g,39261 +werkzeug/useragents.py,sha256=FIonyUF790Ro8OG8cJqG1zixhg5YzXdHmkZbrnK0QRo,5965 +werkzeug/utils.py,sha256=O20Y0qWk5O1IWamC_A5gkmzR5cgBd3yDIHviwBTfNB0,27387 +werkzeug/wsgi.py,sha256=h-zyAeInwE6X6ciSnHI14ImA85adV-F861PmR7UGtRk,36681 +werkzeug/contrib/__init__.py,sha256=EvNyiiCF49j5P0fZYJ3ZGe82ofXdSBvUNqWFwwBMibQ,553 +werkzeug/contrib/atom.py,sha256=KpPJcTfzNW1J0VNQckCbVtVGBe3V8s451tOUya4qByI,15415 +werkzeug/contrib/cache.py,sha256=AEh5UIw-Ui7sHZnlpvrD7ueOKUhCaAD55FXiPtXbbRs,32115 +werkzeug/contrib/fixers.py,sha256=peEtAiIWYT5bh00EWEPOGKzGZXivOzVhhzKPvvzk1RM,9193 +werkzeug/contrib/iterio.py,sha256=KKHa_8aCF_uhoeQVyPGUwrivuB6y6nNdXYo2D2vzOA8,10928 +werkzeug/contrib/lint.py,sha256=NdIxP0E2kVt1xDIxoaIz3Rcl8ZdgmHaFbGTOaybGpN4,296 +werkzeug/contrib/profiler.py,sha256=k_oMLU-AtsVvQ9TxNdermY6FuzSTYr-WE-ZmWb_DMyU,1229 +werkzeug/contrib/securecookie.py,sha256=xbtElskGmtbiApgOJ5WhGgqGDs_68_PcWzqDIAY_QZY,13076 +werkzeug/contrib/sessions.py,sha256=oVXh_7-6_CWOMxDKqcaK05H8RpYoWqAd3al-KzMFPYs,13042 +werkzeug/contrib/wrappers.py,sha256=ZmNk0wpzD66yomPnQxapndZQs4c0kNJaRzqI-BVxeQk,13199 +werkzeug/debug/__init__.py,sha256=Bo3HvgTNY4NQ_2jROTSk3r1ScZcT_g_4EnuHTjKyrKM,18275 +werkzeug/debug/console.py,sha256=HoBL21bbcmtiCLqiLDJLZi1LYnWMZxjoXYH5WaZB1XY,5469 +werkzeug/debug/repr.py,sha256=lIwuhbyrMwVe3P_cFqNyqzHL7P93TLKod7lw9clydEw,9621 +werkzeug/debug/tbtools.py,sha256=SkAAA4KKfwsXJinUbf-AEP4GqONTsR4uU7WPUloXcSE,20318 +werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673 +werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507 +werkzeug/debug/shared/debugger.js,sha256=rOhqZMRfpZnnu6_XCGn6wMWPhtfwRAcyZKksdIxPJas,6400 +werkzeug/debug/shared/jquery.js,sha256=FgpCb_KJQlLNfOu91ta32o_NMZxltwRo8QtmkMRdAu8,86927 +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=_Y98F6dR2CBUZNKylsOdgSHjwVaVy717WqE3-xJVcmE,6581 +werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220 +werkzeug/middleware/__init__.py,sha256=f1SFZo67IlW4k1uqKzNHxYQlsakUS-D6KK_j0e3jjwQ,549 +werkzeug/middleware/dispatcher.py,sha256=_-KoMzHtcISHS7ouWKAOraqlCLprdh83YOAn_8DjLp8,2240 +werkzeug/middleware/http_proxy.py,sha256=lRjTdMmghHiZuZrS7_UJ3gZc-vlFizhBbFZ-XZPLwIA,7117 +werkzeug/middleware/lint.py,sha256=ItTwuWJnflF8xMT1uqU_Ty1ryhux-CjeUfskqaUpxsw,12967 +werkzeug/middleware/profiler.py,sha256=8B_s23d6BGrU_q54gJsm6kcCbOJbTSqrXCsioHON0Xs,4471 +werkzeug/middleware/proxy_fix.py,sha256=Y86VcU2oAQ--x0mi4iFVJyEFMzp3Ao8q0zvr_SsrpNw,8506 +werkzeug/middleware/shared_data.py,sha256=6aUzMABeOLul0Krf5S_hs-T7oUc7ZIQ3B8tAO4p8C7E,8541 +werkzeug/wrappers/__init__.py,sha256=S4VioKAmF_av9Ec9zQvG71X1EOkYfPx1TYck9jyDiyY,1384 +werkzeug/wrappers/accept.py,sha256=TIvjUc0g73fhTWX54wg_D9NNzKvpnG1X8u1w26tK1o8,1760 +werkzeug/wrappers/auth.py,sha256=Pmn6iaGHBrUyHbJpW0lZhO_q9RVoAa5QalaTqcavdAI,1158 +werkzeug/wrappers/base_request.py,sha256=k5mu1UU99X_xrPqmXj44pzJbkPRpgvwMuP2j9vl8QFU,26873 +werkzeug/wrappers/base_response.py,sha256=ZA1XlxtsbvG4SpbdOEMT5--z7aZM0w6C5y33W8wOXa4,27906 +werkzeug/wrappers/common_descriptors.py,sha256=OJ8jOwMun4L-BxCuFPkK1vaefx_-Y5IndVXvvn_ems4,12089 +werkzeug/wrappers/etag.py,sha256=TwMO1fvluXbBqnFTj2DvrCNa3mYhbHYe1UZAVzfXvuU,12533 +werkzeug/wrappers/json.py,sha256=HvK_A4NpO0sLqgb10sTJcoZydYOwyNiPCJPV7SVgcgE,4343 +werkzeug/wrappers/request.py,sha256=qPo2zmmBv4HxboywtWZb2pJL8OPXo07BUXBKw2j9Fi8,1338 +werkzeug/wrappers/response.py,sha256=vDZFEGzDOG0jjmS0uVVjeT3hqRt1hFaf15npnx7RD28,2329 +werkzeug/wrappers/user_agent.py,sha256=4bTgQKTLQmGUyxOREYOzbeiFP2VwIOE7E14AhUB5NqM,444 +Werkzeug-0.15.4.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 +Werkzeug-0.15.4.dist-info/METADATA,sha256=BFCzIm51w-fKsnG13iHz4No7Upu9-y_vJUq_rkY_bqY,4864 +Werkzeug-0.15.4.dist-info/WHEEL,sha256=HX-v9-noUkyUoxyZ1PMSuS7auUxDAR4VBdoYLqD0xws,110 +Werkzeug-0.15.4.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9 +Werkzeug-0.15.4.dist-info/RECORD,, +Werkzeug-0.15.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +werkzeug/middleware/__pycache__/__init__.cpython-36.pyc,, +werkzeug/middleware/__pycache__/proxy_fix.cpython-36.pyc,, +werkzeug/middleware/__pycache__/shared_data.cpython-36.pyc,, +werkzeug/middleware/__pycache__/profiler.cpython-36.pyc,, +werkzeug/middleware/__pycache__/lint.cpython-36.pyc,, +werkzeug/middleware/__pycache__/http_proxy.cpython-36.pyc,, +werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/etag.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/common_descriptors.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/base_request.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/user_agent.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/json.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/accept.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/request.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/base_response.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/response.cpython-36.pyc,, +werkzeug/wrappers/__pycache__/auth.cpython-36.pyc,, +werkzeug/contrib/__pycache__/fixers.cpython-36.pyc,, +werkzeug/contrib/__pycache__/securecookie.cpython-36.pyc,, +werkzeug/contrib/__pycache__/__init__.cpython-36.pyc,, +werkzeug/contrib/__pycache__/iterio.cpython-36.pyc,, +werkzeug/contrib/__pycache__/sessions.cpython-36.pyc,, +werkzeug/contrib/__pycache__/wrappers.cpython-36.pyc,, +werkzeug/contrib/__pycache__/atom.cpython-36.pyc,, +werkzeug/contrib/__pycache__/cache.cpython-36.pyc,, +werkzeug/contrib/__pycache__/profiler.cpython-36.pyc,, +werkzeug/contrib/__pycache__/lint.cpython-36.pyc,, +werkzeug/debug/__pycache__/console.cpython-36.pyc,, +werkzeug/debug/__pycache__/__init__.cpython-36.pyc,, +werkzeug/debug/__pycache__/tbtools.cpython-36.pyc,, +werkzeug/debug/__pycache__/repr.cpython-36.pyc,, +werkzeug/__pycache__/urls.cpython-36.pyc,, +werkzeug/__pycache__/exceptions.cpython-36.pyc,, +werkzeug/__pycache__/local.cpython-36.pyc,, +werkzeug/__pycache__/__init__.cpython-36.pyc,, +werkzeug/__pycache__/serving.cpython-36.pyc,, +werkzeug/__pycache__/filesystem.cpython-36.pyc,, +werkzeug/__pycache__/_compat.cpython-36.pyc,, +werkzeug/__pycache__/useragents.cpython-36.pyc,, +werkzeug/__pycache__/_internal.cpython-36.pyc,, +werkzeug/__pycache__/posixemulation.cpython-36.pyc,, +werkzeug/__pycache__/test.cpython-36.pyc,, +werkzeug/__pycache__/http.cpython-36.pyc,, +werkzeug/__pycache__/testapp.cpython-36.pyc,, +werkzeug/__pycache__/datastructures.cpython-36.pyc,, +werkzeug/__pycache__/security.cpython-36.pyc,, +werkzeug/__pycache__/_reloader.cpython-36.pyc,, +werkzeug/__pycache__/utils.cpython-36.pyc,, +werkzeug/__pycache__/formparser.cpython-36.pyc,, +werkzeug/__pycache__/routing.cpython-36.pyc,, +werkzeug/__pycache__/wsgi.cpython-36.pyc,, diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/WHEEL b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/WHEEL new file mode 100644 index 00000000..c8240f03 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.33.1) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/top_level.txt b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/top_level.txt new file mode 100644 index 00000000..6fe8da84 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/Werkzeug-0.15.4.dist-info/top_level.txt @@ -0,0 +1 @@ +werkzeug diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d991216b54f0cd4c5b024bac215ba9e1e9a9025b GIT binary patch literal 275 zcmYk!y-LJD5C`zt-KgR4o`s?8%jK-rl0}M6x;CbSaBr`x1tdYw0Hpq zD!YerZ#Y`@u1HV1xRr6cbTLU|inX^^IyL5qR<;gtM;w%F%%=0M%*F#m<=2SQi<4F( zHYZW1J|yo=tbTw>6N>G(+6gk=pxdYM)jrPaWJ4X=uz2iSqZY{x*1F-c{*&teLKU`S Ter3JtjlO2Y#L3Ed&JNipfj~_y literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__init__.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__init__.py new file mode 100644 index 00000000..d3c33660 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__init__.py @@ -0,0 +1,97 @@ +# -*- coding: utf-8 -*- +""" +click +~~~~~ + +Click is a simple Python module inspired by the stdlib optparse to make +writing command line scripts fun. Unlike other modules, it's based +around a simple API that does not come with too much magic and is +composable. + +:copyright: © 2014 by the Pallets team. +:license: BSD, see LICENSE.rst for more details. +""" + +# Core classes +from .core import Context, BaseCommand, Command, MultiCommand, Group, \ + CommandCollection, Parameter, Option, Argument + +# Globals +from .globals import get_current_context + +# Decorators +from .decorators import pass_context, pass_obj, make_pass_decorator, \ + command, group, argument, option, confirmation_option, \ + password_option, version_option, help_option + +# Types +from .types import ParamType, File, Path, Choice, IntRange, Tuple, \ + DateTime, STRING, INT, FLOAT, BOOL, UUID, UNPROCESSED, FloatRange + +# Utilities +from .utils import echo, get_binary_stream, get_text_stream, open_file, \ + format_filename, get_app_dir, get_os_args + +# Terminal functions +from .termui import prompt, confirm, get_terminal_size, echo_via_pager, \ + progressbar, clear, style, unstyle, secho, edit, launch, getchar, \ + pause + +# Exceptions +from .exceptions import ClickException, UsageError, BadParameter, \ + FileError, Abort, NoSuchOption, BadOptionUsage, BadArgumentUsage, \ + MissingParameter + +# Formatting +from .formatting import HelpFormatter, wrap_text + +# Parsing +from .parser import OptionParser + + +__all__ = [ + # Core classes + 'Context', 'BaseCommand', 'Command', 'MultiCommand', 'Group', + 'CommandCollection', 'Parameter', 'Option', 'Argument', + + # Globals + 'get_current_context', + + # Decorators + 'pass_context', 'pass_obj', 'make_pass_decorator', 'command', 'group', + 'argument', 'option', 'confirmation_option', 'password_option', + 'version_option', 'help_option', + + # Types + 'ParamType', 'File', 'Path', 'Choice', 'IntRange', 'Tuple', + 'DateTime', 'STRING', 'INT', 'FLOAT', 'BOOL', 'UUID', 'UNPROCESSED', + 'FloatRange', + + # Utilities + 'echo', 'get_binary_stream', 'get_text_stream', 'open_file', + 'format_filename', 'get_app_dir', 'get_os_args', + + # Terminal functions + 'prompt', 'confirm', 'get_terminal_size', 'echo_via_pager', + 'progressbar', 'clear', 'style', 'unstyle', 'secho', 'edit', 'launch', + 'getchar', 'pause', + + # Exceptions + 'ClickException', 'UsageError', 'BadParameter', 'FileError', + 'Abort', 'NoSuchOption', 'BadOptionUsage', 'BadArgumentUsage', + 'MissingParameter', + + # Formatting + 'HelpFormatter', 'wrap_text', + + # Parsing + 'OptionParser', +] + + +# Controls if click should emit the warning about the use of unicode +# literals. +disable_unicode_literals_warning = False + + +__version__ = '7.0' diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/__init__.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd4370b7e38c0a0b1c9442397556315baad18405 GIT binary patch literal 2618 zcmb`IOH&(362~R?ZETEfKnN@k2G+nOBQ`o(orP5E&hFl>)-cRr zzsjEHYwX9U>&71TvL9eiTiFtxInHAh(LZ%oS7l}8KdWkGeBAmw%>MabRwnb$%rAZ| z^S)^w^`C4egBi$R7RUT7jlme@AV+z~QvnK8gd&xoL}e&b1uA5LmF2!Uze+WzrSExv zoa#`g37DWsn4~F~qAPHPreT_{!d1Ek*XTN2ryFpCZog;jb9FX zc4)lBBkyX?mdUKLyRH&wxp6o!BfkZ*b<{Cax`~aUP<9X|>|EIAGU=OX&AbDzZzk_a z&*mAWvds4=RBqQ7P0L#M!ssHFy?(N8|Klfnd2wm=auG+a?+X)GB3x=(>m~&vP-5NQ zKHizLl@RuRr`0|V!8w(pn;!0mNt$&*=W*QY;YK1`}en@n6+bp0pTsgO< zDbTgg13!_MR$wT4DDudYa{MQWJ$2#%>bEy5x;wD)iDQ%I?U&E*d2{h-u^b zOvdE0<%}99*v)wu<7Gqrdl9Q&bg1@)AB{dX>Z6sMTtq_WccpK5Y?CD(R;6xX8_Yb#DbbkBra9`(7PdhuhdU|m5 z<*?O0K5p-5Yu69mp{GVk=Y`h~^%Q5RD+4#aa8wc-Vf6$zu|Ag#l`s;4bH;&97*)+$ zQzJ0R*H!N9Mv;Ru9vY!?OqNt*Toyin?>vQkO9VlVSte)=C z_79#IN@blYGetX&jj*+C7k@6F3MYN|p|I5r<3!gE!eg^dMrBnuy@#)<3q5J<%Ss!y ze3nX?ef-U5V@!{KG$QY&`QjR_oX2jI=G7EuZRpN)S0awb%)W?oj69>jC^AZnGNZyU zmr^FKGHQ%*Mx8Oim}E>bt}vz_ZbfuHsc}V5#upq zhVg{)lrhVA#%M5}GhQ&}81sxKV}Y^ASYj+QRv4>{myB18HO6bk8^${0En|c6j`5!H zfw9ThVr(;7j2(mBA9HKX#e>F?E;$Z{p5y4e+0f!QrP7U!epPdA|+hA67(L;&Lac-=q#$!!v`gxu2CXhr_V;SuqyMTrG|R zHp=uKat49)LKKcKP5ed%=iH40<3U#)=khRhe#*oLtUBYr3kwNF3z3ZGy94RtymQuD zUX*`5Ur6um5gkVcGI5+{bfL=|!@K%D?<2((me0-QYq{0JW_~8WQJ5=C=4u5iTh5K; e472%MEnCly<;vNjdFsY4o7S;hK36Q}bN>U0rQF#7 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_bashcomplete.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_bashcomplete.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a63642a01cf4c8fd8e83099e311db50cb56acafe GIT binary patch literal 9076 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
  • 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 WH~DV=JG}x^VI{|Z3;I~4L;nj+osD_` literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_textwrap.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_textwrap.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a7c027db13a240bc49ef007df1c749cee35b4df GIT binary patch literal 1297 zcmZuxPjB2r6o2!_UdP#P+l4mafDk8er6v^|kWhsxfdFyX3y30%GIBhV#2c^InX#KR znmuj#9GtoEf#%97Ux5p}x8A}^Wk&P%&HFdczxmC6dgo61TmI3DKP14PurqKE&v3a% zC^TqRLr%ZEW(%Hk2H$`dTD}G?4a~(_t&yN%l8G zpz;it`xu3RoN36pW}3f-To^f2Ub8&Xk&e+8>k-yY!u}6f@VPD877Iq0OJffg75oyH z`vpY@UV3qeO|SVX@-S!iTaU%xgH`Nf4L|5Xh$i+mN$chNs;Ajl)tCnG9l4T!(un))W`2UN&dyYH76#F?HJLAlhY{?FH#f zeH!js^U_#nv?|a0=E8-f?5(P+#)Q#EGfjxDD&3uj)U`!vRBcYXAnU?)xhVTC2y5K$ zV5fNYUr&y^MSI*hkKitgG^3D-~VD72B4>2pEz^bqrNp|(x!N5 zh=+)Lx~w(2cC+#aWP2-fgW@3Gp$cO}$`;$QWO4UU0KyWp2~N&Z)Nc-VVcAXj7m*mV z2$c;jzeD8=@womR$;sx7==2r5c=R)0iIqf@h^Y92E~GueoxmNROCNc8up!>%6!GD6 zw65uuiJ2t|29{=V*fUMPFt+Fn@ujXhqLQ-@Fu*<}kx;0dFRLbt2bd)BA#nRLh)Q20 zwJ^gTP%N=v2aWv!Pql37S0A9uO;7;x;vvG3;F_|VgIy?g;%C_?BuX{K!YCC|r4~!w zBkfceD|Oiy_29AZ(vid?dr0C#692Wa(dZs5y>WVOj*v}wG9HgNHhg{weGlK3(3==pDzeWM>mDM7yke!@IpWU literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_unicodefun.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_unicodefun.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b936d32a6d4e09d5d0a4109ab14747635244701 GIT binary patch literal 3329 zcma)8%a7Z}8Rt+GMRC`TAM5qADPhD8*2roDyFd&hDQs-*)`8(JVkfQzBm~77Nt7s( zJ2TuDq)XImfSh}1FS+#G{sB4rPvEtuoO|;rzi-H0Z<9;4%Xxe=^Sxj9&Ybc8(f{!4 z)$^A1AM4c5!TKRS^%Vwgah6*BdS-oQ_IBUqHgBb^nbUWeCD^1b+)0N!++Nz;x{ANP z$J^ZftJUxF4)-woyvu#eE1bQsHdcNDZtM9^4C4l?T05`rR;(8jkbbS^+s3R43><`0 zYhh`oL3(McbwZ=dM;?QN`9ei#l*T}py?#*vD&mQ_m~D%mzjhT$m92T`i37SL6`(vj3^KhfjL9fpG_ zp3)rWTvT41hr=`)sp?#rB?Jo7L<>oe&&2txNKzrqjg6M{fW6-u%30M)_`yFdxdy=7 zyIXozY!ykdIVh8qZ-&Fs-H(&q{Vl_9GlmWJVVU)c!|FyjOfr59JRunx(cc4Bbq#~X zJmxc}`PP_=)j8(aE|cpxJ+U9DirmQ9?{h3TQy#ZqF>BRQYnn}LdByBoOIUSoaeK<- z9fBCga%SxXW7eE$mpe;_^Y(W(gA>9s?(>(%G;kYdKayGWJ`A-@mI%1eBG!TjdMtuc zi69@=%U>umcxSF4nH9Ozy&!lwPE>&Zv55AP^f2Iwit|!NBj6i|I3j$B4&o>al1$5- zm$3*`Inb#H2IUBEv)~X90=jX(3atv6PoM+UgR5*6hkBf6 z_qL!aa=Cb#ian8TbR@-B)i&Ky(k_@VrmehYr{raN+<8?WZrJ_qAmX*3 zm?PtZ^>B%9UJv83h^HZ#{}qV<7Zmxd1*dY@Dn1u3Mk~*iHvm6zsV+8z&$!gTVRCIr zk3#kE23&@v49NlM00HeRttB$jg1xe`D~_ezsV_fe7X2Yju-8^*{{^naTho^OoG@@_ zVe1YOMtf?1&*TpVpSNfoelTxMy4>ZRk&Ts4ANRg%O;(n0)2r6PX(+6M!rvPT-Gx(A z&}ZPLct;rg{ zhNSgo-kw~VLmGsFMR0z7>dH6#+``>`^U6XpJ5R}M-u|AcYuH_&U3Po!LW(=sUo`u5 ztk(FY$-2HgZ!g)Bty=`=Y~daJ336YVT;=Oa)~qfs+0X`0A5mBW&%CA#j&3YjyKtsPLb^; zGS6lr(-eQBJm)4Jjza^%s;kfvmT{I10;$a18CL{kg}U%q^@dEc*DQNg}I*qS`DhZR3gGP7K1g#J_@%Sf?X zCZrC0dAf&i^9KZt^K6)mN=gDoNj1ubWbf#W$yN;msw^mnkxE6d-7`D{&4c}M5|2r( zgmMNQbMWC)Zki>du|{SK4C6X)I1qInN|Y***A4^ZE8uR}@P~Pt=KHieZMD5fCWJ*j z@cjV4`c3d`JACx)*=G$$|8w%_`5%wrN8g^7B~26riI7Cg0{TP(uf=I(B+AFyB?t16 zaZO4tDE|*-J~K)daG+yGPi%Aij;!Lpv&w_umO8RO3M#kew{o6=yQ6>kep6Ja4jB7E zzi?TiSPO{45H;-8xcxy{yL6-c#y*e*MIg&{V7M#`!zdM#rmpx{@*GY;cfw2v*lXmlg^(T_FD`$?L@tgu@!EG4``0;`BiQ#y`o*>Ow-`;mgW zYj>mCnVUNG=*9NarvZ*chJr?Vry4~bcFOX-U^_=Rr~3aWMk3q#q<3&qlMK2U;%n4Y zG%X6%+py&a2vvCt1J<``{b9X+2fuFWm;5c@l}pt&RuumEv@EJM^jC!xLj=9x$E;Tl z^=wu5@j)yKQbJ|t3MH`|pj^g6sj9t`7b2^iou@mGs}+hA%07`6Rp-wy9!r^1J4c;c zqNtchSuCpd;7|)t27PMWe1*cU(^9Wvb z8g`GSkUS7?K-ZBV*qkst}@7ZE>JwBtNE$w%qHlQmPCax9IY+3~1-@6OEies>BD#kVn@ftge4i5zx5R_!V&a!m_bD7if z*{XdOP`ZOt+e7ijE60o-o7t@kc=tYDP{&A}BVdka(}{cxIvcBU3zPI|xPzhUpb4H8 zk*+(G&J0}^(u#EH%#}vN@+#e?cGENn2GJ?;sGE?c@$f#apZ}g3d36?p2PQmwwX@#x I&U+Vr28<}pD*ylh literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_winconsole.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/_winconsole.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..060fffaef7323c9537a015c5ae266c46b51deef8 GIT binary patch literal 8741 zcmcgxO>7%iexElp91bapre#@{zZoZ9n@KD?b~ec-jw4%^W2H7FNb)M4A{|hCkJ3;i zM}G5US*)}zmTtF2n?<$-`h^90ZF}gU=%whPK!M(R>ZQP37e(PqFYWeV6xja$Z%B%i z<;9{cO6mRI_t*dX{pZH$X!cLNOJAklG>o4Z1HVy}r;(!fO~c>@XAQ$ka^^8zH$7A5 zmS^eQ_H3P}yp+xz&*3Jw8tJC%xy_81X=c4Fqc!YCsyX6~G;?0AIqHoz^IpDr#5>X~ zc!lOs?`U((8*3i(jy1=<@#b;wI5T$6U{(sVCcFt|h>7|M?*!naH@RZ8CT&BU+{ntm zW(NIn=1n{{TIQFulhZiWJnfxsp7G9LUQUd4n0Ho;*Ux$9#JT!;?>u19D+0dZy#aW^ zyC9B>(;ddsG^%D|{F`XWQJXk}e6+(l7I)G6mhQbM&hx7n^)2MrkY7Un9`eiF@JihD z-bVfo&w20iQSS=MQ)s)&^WHUn#Cwkyyz8GE{3suLZtyXYs^92X-uq&LvkmtfCclTf ze7lw9*ZDX<{v2hDo!}=h_JlC%A7Jc%cKdtNELH!Iri~3pd zG5SA2{Tx4!`gvWyDL(BO-Ys6_Z#*}=&-exYCh}?i7Qcx6HvbmCg#3=keq+ir{4y`0 zHX~**=PrMnzk}MWm=?Fi9scf*E$<$`!l%&oIcG~o>Bb9Ur}7I1ShC_tzZ|w^8etT) z)|SOHH8;N^E1R1_#uQ~n* zGIo>P-=xyhFyJU}&@u-e|-lD|6+0kIFO4 zj~8Z3jAp6zuvOU%N@nalSXfzFUX0TZ7G`we$mc@Mgw1B9#UBJMu@a9B)Rx2Ba_#BL zi!849VuV1BfC~`(#6k&jWBfZ^{#5X@Uo(sfpNcHE2oTAYLUS7Yd znwwWQgUu_eTS0?g@oQ_>uLV!GuT~pDb)yS?Fh(_OMPWlsZSKf3m^h6T(V<<_VXyvW zEt~0a_o{SN`q2^SyfaAA0)R3)#-6#$WL~kBsmwh~S<2ouI!vW@p;UIQj>U}jgmQMx zdV1X0vv=*fi*lv|(NWoCREIHx)EEfI%B2y#X`El!x%23rzp^;DeEZIW**KTfm*yTW zpf&QHew;CC^cZ zyDfu+l6qXK)~KvS-blhlT5k7|F0ayz?3z$rF8dPoC=Xx&l{q%fOqOLiQ+|k+A(0?l zP9sG`f_;(TCKQUrEp8*Xc?!62pi5RD&f#`6lTdE4vOPC{2S@HxgjS=ZDMGxn%XSUF zk4qLi>yYY(fY{rSXw>9)Fy`Pjz^g$kP`)qF8PReEYrpZjy{CGkt0eUFqr88J0xHU= zv${!aKz0gOG0V$Pjb;$Wnf@KX%TYzCof4BDW6ps?$y;b!M~Z9!11N2uf9;8qg~}l0 zWsH?20&f%egaEBHu(}o;BA@&SfM}z)a81|hx1cfk(Y2QxIhi=KC6gOns*yu*!mnr%0&lsa>qJl02v1Yr1UTUPPy(EtG*k}bev@|P=5DG!I!@y5mL;J?tIqbVYNgc*Rgvyd z3^^~hwwkL#7QJ{{jd=>hu!lw(zPNHYL<8 -TBZbbChzn)P^7J{@3ct&X%kgMA7mP90qUFqq41 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 A>i_@% literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/core.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/core.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf183154c22080aa2d4fa421f3c2efaf900da803 GIT binary patch literal 59865 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 C(U9i= literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/decorators.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/decorators.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7aa9c60a85e8cc919b12755c0c0917688780bd86 GIT binary patch literal 11570 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 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/exceptions.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/exceptions.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9ef849ca829a310d9cb3847b0733ddb6cb2e7733 GIT binary patch literal 8572 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 Git|_Js+zt4 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/formatting.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/formatting.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d5c15805c99f3e6157fd85666976f64ff929fb2 GIT binary patch literal 8515 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 AO8@`> literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/globals.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/globals.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..54ce0ea985be0e01a8a2c6b52a233f30579aeddb GIT binary patch literal 1844 zcmZuxL2uhO6ecChaU3TDTD02^1Gr*C=Am_p4g&^b7&a6ukc%;-Icxz2n-(dH4kcAL(sifoC+xC4Qc~*-B_N8VsQ142z4yH@4iEdkUmXAZcZASiXlI15 z{uUlHhKV7DCCcyx#)#uBx(L{Sg{<=$UxX}T-Ph=%!}eGY-Vr-weRcp}x@`X?8Xn!k z|7eJ-NUE617cq8w816lQ=Q%v)E10g2EV7v4ZNQ=r(M!}pHn3q5T=w-d4A(K*ATzQZ z7H;t?{1eK99}(+-i!OZ?AaurUsdGbY%1K;m&2vj)DdI~KtK9M{J0j#f6^6t#Cv#3p z!x^E5P_m}i#Hv1lLF1U4|JkVjCThOqu_cLC8KL?0I^~+TCc!EtnbMqytN@?F*4Cuu zI;U2wI5_ag#z~pS<5@wCnKrm)gz;EuYL#y7xl2~4oCxC$637b0H}VGZ0!=}LgjId!an z<2x)i{Pn$=b47~Mr0=@%n2a-S)A8(i^M{F5!DqXSk7^^M5m^Ct2$3?z*?3I896hZ+ zjSH%2MvRbfz5(&vwn{E%*<#cDbJgumZ zbS~@Mao|3orF0}U6u=#Drl~NT(03Ub^DD^US(#gr@$a=(dN%U+s>oOxU*5XPzWMmv z6^H`|kSJsmYT#};PHz8&F^sCc1-H~%U3I5kBh}G&uoLsr*5<4JY0mhScU28`9fPd8 zHBo;c?ZouY=)`8lNg;|S^HNCmWST6VJr%#KPrUDDUPv{k(u|7h>OT0MHgahTa?dHU z4-eTZ#($3~&*wGF^)tgS4i0yP*^`QWoG*w+%6g+1Tco^F&A9Fn&x_<_)GTSgd zf)fLc0ii(OhdFl3cDNjQ_%5&-{uVk6!vH$C`SgruY6YlWu~}6R$yXdy=d|yRYP^$S z=%IStRamHE2an5!_Mi^nLyPGVoVJ)Az>@iV5f?hj?_$yMWOLw9040$a$mfGyL{nvk(oDZ=+fcS=i zFRCi?SYY=M4)r}ZdG6j4_yD?=k}D1*0_tfK&@tSst2F9Ch4yg|>-U{q{9=eF!@X+X wrkYa*Jx)7v>r}aP`)bgRe*eRcySF}jUuTMyl7Hh0#k(1V-LU_#7xkk503z`FGXMYp literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/parser.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/parser.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ee913a8de675053000e5f503b4a5a6791620aa2 GIT binary patch literal 11433 zcmc&)O^h4YeV;E5hg@p4TFLrw9cLoPmgrb()d7-5-8h!z*s;;B)k=<2Mh-d48SW03 z98zzF(k{Wx!Ryv?5CdsZ7)4Q_K~WTFiynGu(VT)Fax8l4VXn=^Hy?bdFYWL5f5YMK zdXx6n*_}5t@B97V|MU0w)l;YHf7!b7&PVHp@t?+_%fb6gxYNHt5*jTdG(&4(woE+j zfi<*SwrPY;SQ$9ON~QhtcUe*3D2dl5uU=c5iW

    B-Y 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 ZK(98;i;nkI&-H3v)mvS;zH)Y@_CL@D(+&Ut literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/termui.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/termui.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..adabc08f25a7c4dc053edb38a102702a1ce42419 GIT binary patch literal 20782 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 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/testing.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/testing.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8240d0bbd0ef2d0e910bc02e27e7588d1bf4fad3 GIT binary patch literal 11586 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 UcKN)?n8DI(=K8bN*81iD0iHx+bpQYW literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/types.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/__pycache__/types.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7dc4f60772dd1217001c02181ee751b56964cba GIT binary patch literal 21829 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 BHT?hp literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_bashcomplete.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_bashcomplete.py new file mode 100644 index 00000000..a5f1084c --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_bashcomplete.py @@ -0,0 +1,293 @@ +import copy +import os +import re + +from .utils import echo +from .parser import split_arg_string +from .core import MultiCommand, Option, Argument +from .types import Choice + +try: + from collections import abc +except ImportError: + import collections as abc + +WORDBREAK = '=' + +# Note, only BASH version 4.4 and later have the nosort option. +COMPLETION_SCRIPT_BASH = ''' +%(complete_func)s() { + local IFS=$'\n' + COMPREPLY=( $( env COMP_WORDS="${COMP_WORDS[*]}" \\ + COMP_CWORD=$COMP_CWORD \\ + %(autocomplete_var)s=complete $1 ) ) + return 0 +} + +%(complete_func)setup() { + local COMPLETION_OPTIONS="" + local BASH_VERSION_ARR=(${BASH_VERSION//./ }) + # Only BASH version 4.4 and later have the nosort option. + if [ ${BASH_VERSION_ARR[0]} -gt 4 ] || ([ ${BASH_VERSION_ARR[0]} -eq 4 ] && [ ${BASH_VERSION_ARR[1]} -ge 4 ]); then + COMPLETION_OPTIONS="-o nosort" + fi + + complete $COMPLETION_OPTIONS -F %(complete_func)s %(script_names)s +} + +%(complete_func)setup +''' + +COMPLETION_SCRIPT_ZSH = ''' +%(complete_func)s() { + local -a completions + local -a completions_with_descriptions + local -a response + response=("${(@f)$( env COMP_WORDS=\"${words[*]}\" \\ + COMP_CWORD=$((CURRENT-1)) \\ + %(autocomplete_var)s=\"complete_zsh\" \\ + %(script_names)s )}") + + for key descr in ${(kv)response}; do + if [[ "$descr" == "_" ]]; then + completions+=("$key") + else + completions_with_descriptions+=("$key":"$descr") + fi + done + + if [ -n "$completions_with_descriptions" ]; then + _describe -V unsorted completions_with_descriptions -U -Q + fi + + if [ -n "$completions" ]; then + compadd -U -V unsorted -Q -a completions + fi + compstate[insert]="automenu" +} + +compdef %(complete_func)s %(script_names)s +''' + +_invalid_ident_char_re = re.compile(r'[^a-zA-Z0-9_]') + + +def get_completion_script(prog_name, complete_var, shell): + cf_name = _invalid_ident_char_re.sub('', prog_name.replace('-', '_')) + script = COMPLETION_SCRIPT_ZSH if shell == 'zsh' else COMPLETION_SCRIPT_BASH + return (script % { + 'complete_func': '_%s_completion' % cf_name, + 'script_names': prog_name, + 'autocomplete_var': complete_var, + }).strip() + ';' + + +def resolve_ctx(cli, prog_name, args): + """ + Parse into a hierarchy of contexts. Contexts are connected through the parent variable. + :param cli: command definition + :param prog_name: the program that is running + :param args: full list of args + :return: the final context/command parsed + """ + ctx = cli.make_context(prog_name, args, resilient_parsing=True) + args = ctx.protected_args + ctx.args + while args: + if isinstance(ctx.command, MultiCommand): + if not ctx.command.chain: + cmd_name, cmd, args = ctx.command.resolve_command(ctx, args) + if cmd is None: + return ctx + ctx = cmd.make_context(cmd_name, args, parent=ctx, + resilient_parsing=True) + args = ctx.protected_args + ctx.args + else: + # Walk chained subcommand contexts saving the last one. + while args: + cmd_name, cmd, args = ctx.command.resolve_command(ctx, args) + if cmd is None: + return ctx + sub_ctx = cmd.make_context(cmd_name, args, parent=ctx, + allow_extra_args=True, + allow_interspersed_args=False, + resilient_parsing=True) + args = sub_ctx.args + ctx = sub_ctx + args = sub_ctx.protected_args + sub_ctx.args + else: + break + return ctx + + +def start_of_option(param_str): + """ + :param param_str: param_str to check + :return: whether or not this is the start of an option declaration (i.e. starts "-" or "--") + """ + return param_str and param_str[:1] == '-' + + +def is_incomplete_option(all_args, cmd_param): + """ + :param all_args: the full original list of args supplied + :param cmd_param: the current command paramter + :return: whether or not the last option declaration (i.e. starts "-" or "--") is incomplete and + corresponds to this cmd_param. In other words whether this cmd_param option can still accept + values + """ + if not isinstance(cmd_param, Option): + return False + if cmd_param.is_flag: + return False + last_option = None + for index, arg_str in enumerate(reversed([arg for arg in all_args if arg != WORDBREAK])): + if index + 1 > cmd_param.nargs: + break + if start_of_option(arg_str): + last_option = arg_str + + return True if last_option and last_option in cmd_param.opts else False + + +def is_incomplete_argument(current_params, cmd_param): + """ + :param current_params: the current params and values for this argument as already entered + :param cmd_param: the current command parameter + :return: whether or not the last argument is incomplete and corresponds to this cmd_param. In + other words whether or not the this cmd_param argument can still accept values + """ + if not isinstance(cmd_param, Argument): + return False + current_param_values = current_params[cmd_param.name] + if current_param_values is None: + return True + if cmd_param.nargs == -1: + return True + if isinstance(current_param_values, abc.Iterable) \ + and cmd_param.nargs > 1 and len(current_param_values) < cmd_param.nargs: + return True + return False + + +def get_user_autocompletions(ctx, args, incomplete, cmd_param): + """ + :param ctx: context associated with the parsed command + :param args: full list of args + :param incomplete: the incomplete text to autocomplete + :param cmd_param: command definition + :return: all the possible user-specified completions for the param + """ + results = [] + if isinstance(cmd_param.type, Choice): + # Choices don't support descriptions. + results = [(c, None) + for c in cmd_param.type.choices if str(c).startswith(incomplete)] + elif cmd_param.autocompletion is not None: + dynamic_completions = cmd_param.autocompletion(ctx=ctx, + args=args, + incomplete=incomplete) + results = [c if isinstance(c, tuple) else (c, None) + for c in dynamic_completions] + return results + + +def get_visible_commands_starting_with(ctx, starts_with): + """ + :param ctx: context associated with the parsed command + :starts_with: string that visible commands must start with. + :return: all visible (not hidden) commands that start with starts_with. + """ + for c in ctx.command.list_commands(ctx): + if c.startswith(starts_with): + command = ctx.command.get_command(ctx, c) + if not command.hidden: + yield command + + +def add_subcommand_completions(ctx, incomplete, completions_out): + # Add subcommand completions. + if isinstance(ctx.command, MultiCommand): + completions_out.extend( + [(c.name, c.get_short_help_str()) for c in get_visible_commands_starting_with(ctx, incomplete)]) + + # Walk up the context list and add any other completion possibilities from chained commands + while ctx.parent is not None: + ctx = ctx.parent + if isinstance(ctx.command, MultiCommand) and ctx.command.chain: + remaining_commands = [c for c in get_visible_commands_starting_with(ctx, incomplete) + if c.name not in ctx.protected_args] + completions_out.extend([(c.name, c.get_short_help_str()) for c in remaining_commands]) + + +def get_choices(cli, prog_name, args, incomplete): + """ + :param cli: command definition + :param prog_name: the program that is running + :param args: full list of args + :param incomplete: the incomplete text to autocomplete + :return: all the possible completions for the incomplete + """ + all_args = copy.deepcopy(args) + + ctx = resolve_ctx(cli, prog_name, args) + if ctx is None: + return [] + + # In newer versions of bash long opts with '='s are partitioned, but it's easier to parse + # without the '=' + if start_of_option(incomplete) and WORDBREAK in incomplete: + partition_incomplete = incomplete.partition(WORDBREAK) + all_args.append(partition_incomplete[0]) + incomplete = partition_incomplete[2] + elif incomplete == WORDBREAK: + incomplete = '' + + completions = [] + if start_of_option(incomplete): + # completions for partial options + for param in ctx.command.params: + if isinstance(param, Option) and not param.hidden: + param_opts = [param_opt for param_opt in param.opts + + param.secondary_opts if param_opt not in all_args or param.multiple] + completions.extend([(o, param.help) for o in param_opts if o.startswith(incomplete)]) + return completions + # completion for option values from user supplied values + for param in ctx.command.params: + if is_incomplete_option(all_args, param): + return get_user_autocompletions(ctx, all_args, incomplete, param) + # completion for argument values from user supplied values + for param in ctx.command.params: + if is_incomplete_argument(ctx.params, param): + return get_user_autocompletions(ctx, all_args, incomplete, param) + + add_subcommand_completions(ctx, incomplete, completions) + # Sort before returning so that proper ordering can be enforced in custom types. + return sorted(completions) + + +def do_complete(cli, prog_name, include_descriptions): + cwords = split_arg_string(os.environ['COMP_WORDS']) + cword = int(os.environ['COMP_CWORD']) + args = cwords[1:cword] + try: + incomplete = cwords[cword] + except IndexError: + incomplete = '' + + for item in get_choices(cli, prog_name, args, incomplete): + echo(item[0]) + if include_descriptions: + # ZSH has trouble dealing with empty array parameters when returned from commands, so use a well defined character '_' to indicate no description is present. + echo(item[1] if item[1] else '_') + + return True + + +def bashcomplete(cli, prog_name, complete_var, complete_instr): + if complete_instr.startswith('source'): + shell = 'zsh' if complete_instr == 'source_zsh' else 'bash' + echo(get_completion_script(prog_name, complete_var, shell)) + return True + elif complete_instr == 'complete' or complete_instr == 'complete_zsh': + return do_complete(cli, prog_name, complete_instr == 'complete_zsh') + return False diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_compat.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_compat.py new file mode 100644 index 00000000..937e2301 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_compat.py @@ -0,0 +1,703 @@ +import re +import io +import os +import sys +import codecs +from weakref import WeakKeyDictionary + + +PY2 = sys.version_info[0] == 2 +CYGWIN = sys.platform.startswith('cygwin') +# Determine local App Engine environment, per Google's own suggestion +APP_ENGINE = ('APPENGINE_RUNTIME' in os.environ and + 'Development/' in os.environ['SERVER_SOFTWARE']) +WIN = sys.platform.startswith('win') and not APP_ENGINE +DEFAULT_COLUMNS = 80 + + +_ansi_re = re.compile(r'\033\[((?:\d|;)*)([a-zA-Z])') + + +def get_filesystem_encoding(): + return sys.getfilesystemencoding() or sys.getdefaultencoding() + + +def _make_text_stream(stream, encoding, errors, + force_readable=False, force_writable=False): + if encoding is None: + encoding = get_best_encoding(stream) + if errors is None: + errors = 'replace' + return _NonClosingTextIOWrapper(stream, encoding, errors, + line_buffering=True, + force_readable=force_readable, + force_writable=force_writable) + + +def is_ascii_encoding(encoding): + """Checks if a given encoding is ascii.""" + try: + return codecs.lookup(encoding).name == 'ascii' + except LookupError: + return False + + +def get_best_encoding(stream): + """Returns the default stream encoding if not found.""" + rv = getattr(stream, 'encoding', None) or sys.getdefaultencoding() + if is_ascii_encoding(rv): + return 'utf-8' + return rv + + +class _NonClosingTextIOWrapper(io.TextIOWrapper): + + def __init__(self, stream, encoding, errors, + force_readable=False, force_writable=False, **extra): + self._stream = stream = _FixupStream(stream, force_readable, + force_writable) + io.TextIOWrapper.__init__(self, stream, encoding, errors, **extra) + + # The io module is a place where the Python 3 text behavior + # was forced upon Python 2, so we need to unbreak + # it to look like Python 2. + if PY2: + def write(self, x): + if isinstance(x, str) or is_bytes(x): + try: + self.flush() + except Exception: + pass + return self.buffer.write(str(x)) + return io.TextIOWrapper.write(self, x) + + def writelines(self, lines): + for line in lines: + self.write(line) + + def __del__(self): + try: + self.detach() + except Exception: + pass + + def isatty(self): + # https://bitbucket.org/pypy/pypy/issue/1803 + return self._stream.isatty() + + +class _FixupStream(object): + """The new io interface needs more from streams than streams + traditionally implement. As such, this fix-up code is necessary in + some circumstances. + + The forcing of readable and writable flags are there because some tools + put badly patched objects on sys (one such offender are certain version + of jupyter notebook). + """ + + def __init__(self, stream, force_readable=False, force_writable=False): + self._stream = stream + self._force_readable = force_readable + self._force_writable = force_writable + + def __getattr__(self, name): + return getattr(self._stream, name) + + def read1(self, size): + f = getattr(self._stream, 'read1', None) + if f is not None: + return f(size) + # We only dispatch to readline instead of read in Python 2 as we + # do not want cause problems with the different implementation + # of line buffering. + if PY2: + return self._stream.readline(size) + return self._stream.read(size) + + def readable(self): + if self._force_readable: + return True + x = getattr(self._stream, 'readable', None) + if x is not None: + return x() + try: + self._stream.read(0) + except Exception: + return False + return True + + def writable(self): + if self._force_writable: + return True + x = getattr(self._stream, 'writable', None) + if x is not None: + return x() + try: + self._stream.write('') + except Exception: + try: + self._stream.write(b'') + except Exception: + return False + return True + + def seekable(self): + x = getattr(self._stream, 'seekable', None) + if x is not None: + return x() + try: + self._stream.seek(self._stream.tell()) + except Exception: + return False + return True + + +if PY2: + text_type = unicode + bytes = str + raw_input = raw_input + string_types = (str, unicode) + int_types = (int, long) + iteritems = lambda x: x.iteritems() + range_type = xrange + + def is_bytes(x): + return isinstance(x, (buffer, bytearray)) + + _identifier_re = re.compile(r'^[a-zA-Z_][a-zA-Z0-9_]*$') + + # For Windows, we need to force stdout/stdin/stderr to binary if it's + # fetched for that. This obviously is not the most correct way to do + # it as it changes global state. Unfortunately, there does not seem to + # be a clear better way to do it as just reopening the file in binary + # mode does not change anything. + # + # An option would be to do what Python 3 does and to open the file as + # binary only, patch it back to the system, and then use a wrapper + # stream that converts newlines. It's not quite clear what's the + # correct option here. + # + # This code also lives in _winconsole for the fallback to the console + # emulation stream. + # + # There are also Windows environments where the `msvcrt` module is not + # available (which is why we use try-catch instead of the WIN variable + # here), such as the Google App Engine development server on Windows. In + # those cases there is just nothing we can do. + def set_binary_mode(f): + return f + + try: + import msvcrt + except ImportError: + pass + else: + def set_binary_mode(f): + try: + fileno = f.fileno() + except Exception: + pass + else: + msvcrt.setmode(fileno, os.O_BINARY) + return f + + try: + import fcntl + except ImportError: + pass + else: + def set_binary_mode(f): + try: + fileno = f.fileno() + except Exception: + pass + else: + flags = fcntl.fcntl(fileno, fcntl.F_GETFL) + fcntl.fcntl(fileno, fcntl.F_SETFL, flags & ~os.O_NONBLOCK) + return f + + def isidentifier(x): + return _identifier_re.search(x) is not None + + def get_binary_stdin(): + return set_binary_mode(sys.stdin) + + def get_binary_stdout(): + _wrap_std_stream('stdout') + return set_binary_mode(sys.stdout) + + def get_binary_stderr(): + _wrap_std_stream('stderr') + return set_binary_mode(sys.stderr) + + def get_text_stdin(encoding=None, errors=None): + rv = _get_windows_console_stream(sys.stdin, encoding, errors) + if rv is not None: + return rv + return _make_text_stream(sys.stdin, encoding, errors, + force_readable=True) + + def get_text_stdout(encoding=None, errors=None): + _wrap_std_stream('stdout') + rv = _get_windows_console_stream(sys.stdout, encoding, errors) + if rv is not None: + return rv + return _make_text_stream(sys.stdout, encoding, errors, + force_writable=True) + + def get_text_stderr(encoding=None, errors=None): + _wrap_std_stream('stderr') + rv = _get_windows_console_stream(sys.stderr, encoding, errors) + if rv is not None: + return rv + return _make_text_stream(sys.stderr, encoding, errors, + force_writable=True) + + def filename_to_ui(value): + if isinstance(value, bytes): + value = value.decode(get_filesystem_encoding(), 'replace') + return value +else: + import io + text_type = str + raw_input = input + string_types = (str,) + int_types = (int,) + range_type = range + isidentifier = lambda x: x.isidentifier() + iteritems = lambda x: iter(x.items()) + + def is_bytes(x): + return isinstance(x, (bytes, memoryview, bytearray)) + + def _is_binary_reader(stream, default=False): + try: + return isinstance(stream.read(0), bytes) + except Exception: + return default + # This happens in some cases where the stream was already + # closed. In this case, we assume the default. + + def _is_binary_writer(stream, default=False): + try: + stream.write(b'') + except Exception: + try: + stream.write('') + return False + except Exception: + pass + return default + return True + + def _find_binary_reader(stream): + # We need to figure out if the given stream is already binary. + # This can happen because the official docs recommend detaching + # the streams to get binary streams. Some code might do this, so + # we need to deal with this case explicitly. + if _is_binary_reader(stream, False): + return stream + + buf = getattr(stream, 'buffer', None) + + # Same situation here; this time we assume that the buffer is + # actually binary in case it's closed. + if buf is not None and _is_binary_reader(buf, True): + return buf + + def _find_binary_writer(stream): + # We need to figure out if the given stream is already binary. + # This can happen because the official docs recommend detatching + # the streams to get binary streams. Some code might do this, so + # we need to deal with this case explicitly. + if _is_binary_writer(stream, False): + return stream + + buf = getattr(stream, 'buffer', None) + + # Same situation here; this time we assume that the buffer is + # actually binary in case it's closed. + if buf is not None and _is_binary_writer(buf, True): + return buf + + def _stream_is_misconfigured(stream): + """A stream is misconfigured if its encoding is ASCII.""" + # If the stream does not have an encoding set, we assume it's set + # to ASCII. This appears to happen in certain unittest + # environments. It's not quite clear what the correct behavior is + # but this at least will force Click to recover somehow. + return is_ascii_encoding(getattr(stream, 'encoding', None) or 'ascii') + + def _is_compatible_text_stream(stream, encoding, errors): + stream_encoding = getattr(stream, 'encoding', None) + stream_errors = getattr(stream, 'errors', None) + + # Perfect match. + if stream_encoding == encoding and stream_errors == errors: + return True + + # Otherwise, it's only a compatible stream if we did not ask for + # an encoding. + if encoding is None: + return stream_encoding is not None + + return False + + def _force_correct_text_reader(text_reader, encoding, errors, + force_readable=False): + if _is_binary_reader(text_reader, False): + binary_reader = text_reader + else: + # If there is no target encoding set, we need to verify that the + # reader is not actually misconfigured. + if encoding is None and not _stream_is_misconfigured(text_reader): + return text_reader + + if _is_compatible_text_stream(text_reader, encoding, errors): + return text_reader + + # If the reader has no encoding, we try to find the underlying + # binary reader for it. If that fails because the environment is + # misconfigured, we silently go with the same reader because this + # is too common to happen. In that case, mojibake is better than + # exceptions. + binary_reader = _find_binary_reader(text_reader) + if binary_reader is None: + return text_reader + + # At this point, we default the errors to replace instead of strict + # because nobody handles those errors anyways and at this point + # we're so fundamentally fucked that nothing can repair it. + if errors is None: + errors = 'replace' + return _make_text_stream(binary_reader, encoding, errors, + force_readable=force_readable) + + def _force_correct_text_writer(text_writer, encoding, errors, + force_writable=False): + if _is_binary_writer(text_writer, False): + binary_writer = text_writer + else: + # If there is no target encoding set, we need to verify that the + # writer is not actually misconfigured. + if encoding is None and not _stream_is_misconfigured(text_writer): + return text_writer + + if _is_compatible_text_stream(text_writer, encoding, errors): + return text_writer + + # If the writer has no encoding, we try to find the underlying + # binary writer for it. If that fails because the environment is + # misconfigured, we silently go with the same writer because this + # is too common to happen. In that case, mojibake is better than + # exceptions. + binary_writer = _find_binary_writer(text_writer) + if binary_writer is None: + return text_writer + + # At this point, we default the errors to replace instead of strict + # because nobody handles those errors anyways and at this point + # we're so fundamentally fucked that nothing can repair it. + if errors is None: + errors = 'replace' + return _make_text_stream(binary_writer, encoding, errors, + force_writable=force_writable) + + def get_binary_stdin(): + reader = _find_binary_reader(sys.stdin) + if reader is None: + raise RuntimeError('Was not able to determine binary ' + 'stream for sys.stdin.') + return reader + + def get_binary_stdout(): + writer = _find_binary_writer(sys.stdout) + if writer is None: + raise RuntimeError('Was not able to determine binary ' + 'stream for sys.stdout.') + return writer + + def get_binary_stderr(): + writer = _find_binary_writer(sys.stderr) + if writer is None: + raise RuntimeError('Was not able to determine binary ' + 'stream for sys.stderr.') + return writer + + def get_text_stdin(encoding=None, errors=None): + rv = _get_windows_console_stream(sys.stdin, encoding, errors) + if rv is not None: + return rv + return _force_correct_text_reader(sys.stdin, encoding, errors, + force_readable=True) + + def get_text_stdout(encoding=None, errors=None): + rv = _get_windows_console_stream(sys.stdout, encoding, errors) + if rv is not None: + return rv + return _force_correct_text_writer(sys.stdout, encoding, errors, + force_writable=True) + + def get_text_stderr(encoding=None, errors=None): + rv = _get_windows_console_stream(sys.stderr, encoding, errors) + if rv is not None: + return rv + return _force_correct_text_writer(sys.stderr, encoding, errors, + force_writable=True) + + def filename_to_ui(value): + if isinstance(value, bytes): + value = value.decode(get_filesystem_encoding(), 'replace') + else: + value = value.encode('utf-8', 'surrogateescape') \ + .decode('utf-8', 'replace') + return value + + +def get_streerror(e, default=None): + if hasattr(e, 'strerror'): + msg = e.strerror + else: + if default is not None: + msg = default + else: + msg = str(e) + if isinstance(msg, bytes): + msg = msg.decode('utf-8', 'replace') + return msg + + +def open_stream(filename, mode='r', encoding=None, errors='strict', + atomic=False): + # Standard streams first. These are simple because they don't need + # special handling for the atomic flag. It's entirely ignored. + if filename == '-': + if any(m in mode for m in ['w', 'a', 'x']): + if 'b' in mode: + return get_binary_stdout(), False + return get_text_stdout(encoding=encoding, errors=errors), False + if 'b' in mode: + return get_binary_stdin(), False + return get_text_stdin(encoding=encoding, errors=errors), False + + # Non-atomic writes directly go out through the regular open functions. + if not atomic: + if encoding is None: + return open(filename, mode), True + return io.open(filename, mode, encoding=encoding, errors=errors), True + + # Some usability stuff for atomic writes + if 'a' in mode: + raise ValueError( + 'Appending to an existing file is not supported, because that ' + 'would involve an expensive `copy`-operation to a temporary ' + 'file. Open the file in normal `w`-mode and copy explicitly ' + 'if that\'s what you\'re after.' + ) + if 'x' in mode: + raise ValueError('Use the `overwrite`-parameter instead.') + if 'w' not in mode: + raise ValueError('Atomic writes only make sense with `w`-mode.') + + # Atomic writes are more complicated. They work by opening a file + # as a proxy in the same folder and then using the fdopen + # functionality to wrap it in a Python file. Then we wrap it in an + # atomic file that moves the file over on close. + import tempfile + fd, tmp_filename = tempfile.mkstemp(dir=os.path.dirname(filename), + prefix='.__atomic-write') + + if encoding is not None: + f = io.open(fd, mode, encoding=encoding, errors=errors) + else: + f = os.fdopen(fd, mode) + + return _AtomicFile(f, tmp_filename, os.path.realpath(filename)), True + + +# Used in a destructor call, needs extra protection from interpreter cleanup. +if hasattr(os, 'replace'): + _replace = os.replace + _can_replace = True +else: + _replace = os.rename + _can_replace = not WIN + + +class _AtomicFile(object): + + def __init__(self, f, tmp_filename, real_filename): + self._f = f + self._tmp_filename = tmp_filename + self._real_filename = real_filename + self.closed = False + + @property + def name(self): + return self._real_filename + + def close(self, delete=False): + if self.closed: + return + self._f.close() + if not _can_replace: + try: + os.remove(self._real_filename) + except OSError: + pass + _replace(self._tmp_filename, self._real_filename) + self.closed = True + + def __getattr__(self, name): + return getattr(self._f, name) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, tb): + self.close(delete=exc_type is not None) + + def __repr__(self): + return repr(self._f) + + +auto_wrap_for_ansi = None +colorama = None +get_winterm_size = None + + +def strip_ansi(value): + return _ansi_re.sub('', value) + + +def should_strip_ansi(stream=None, color=None): + if color is None: + if stream is None: + stream = sys.stdin + return not isatty(stream) + return not color + + +# If we're on Windows, we provide transparent integration through +# colorama. This will make ANSI colors through the echo function +# work automatically. +if WIN: + # Windows has a smaller terminal + DEFAULT_COLUMNS = 79 + + from ._winconsole import _get_windows_console_stream, _wrap_std_stream + + def _get_argv_encoding(): + import locale + return locale.getpreferredencoding() + + if PY2: + def raw_input(prompt=''): + sys.stderr.flush() + if prompt: + stdout = _default_text_stdout() + stdout.write(prompt) + stdin = _default_text_stdin() + return stdin.readline().rstrip('\r\n') + + try: + import colorama + except ImportError: + pass + else: + _ansi_stream_wrappers = WeakKeyDictionary() + + def auto_wrap_for_ansi(stream, color=None): + """This function wraps a stream so that calls through colorama + are issued to the win32 console API to recolor on demand. It + also ensures to reset the colors if a write call is interrupted + to not destroy the console afterwards. + """ + try: + cached = _ansi_stream_wrappers.get(stream) + except Exception: + cached = None + if cached is not None: + return cached + strip = should_strip_ansi(stream, color) + ansi_wrapper = colorama.AnsiToWin32(stream, strip=strip) + rv = ansi_wrapper.stream + _write = rv.write + + def _safe_write(s): + try: + return _write(s) + except: + ansi_wrapper.reset_all() + raise + + rv.write = _safe_write + try: + _ansi_stream_wrappers[stream] = rv + except Exception: + pass + return rv + + def get_winterm_size(): + win = colorama.win32.GetConsoleScreenBufferInfo( + colorama.win32.STDOUT).srWindow + return win.Right - win.Left, win.Bottom - win.Top +else: + def _get_argv_encoding(): + return getattr(sys.stdin, 'encoding', None) or get_filesystem_encoding() + + _get_windows_console_stream = lambda *x: None + _wrap_std_stream = lambda *x: None + + +def term_len(x): + return len(strip_ansi(x)) + + +def isatty(stream): + try: + return stream.isatty() + except Exception: + return False + + +def _make_cached_stream_func(src_func, wrapper_func): + cache = WeakKeyDictionary() + def func(): + stream = src_func() + try: + rv = cache.get(stream) + except Exception: + rv = None + if rv is not None: + return rv + rv = wrapper_func() + try: + stream = src_func() # In case wrapper_func() modified the stream + cache[stream] = rv + except Exception: + pass + return rv + return func + + +_default_text_stdin = _make_cached_stream_func( + lambda: sys.stdin, get_text_stdin) +_default_text_stdout = _make_cached_stream_func( + lambda: sys.stdout, get_text_stdout) +_default_text_stderr = _make_cached_stream_func( + lambda: sys.stderr, get_text_stderr) + + +binary_streams = { + 'stdin': get_binary_stdin, + 'stdout': get_binary_stdout, + 'stderr': get_binary_stderr, +} + +text_streams = { + 'stdin': get_text_stdin, + 'stdout': get_text_stdout, + 'stderr': get_text_stderr, +} diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_termui_impl.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_termui_impl.py new file mode 100644 index 00000000..00a8e5ef --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_termui_impl.py @@ -0,0 +1,621 @@ +# -*- coding: utf-8 -*- +""" +click._termui_impl +~~~~~~~~~~~~~~~~~~ + +This module contains implementations for the termui module. To keep the +import time of Click down, some infrequently used functionality is +placed in this module and only imported as needed. + +:copyright: © 2014 by the Pallets team. +:license: BSD, see LICENSE.rst for more details. +""" + +import os +import sys +import time +import math +import contextlib +from ._compat import _default_text_stdout, range_type, PY2, isatty, \ + open_stream, strip_ansi, term_len, get_best_encoding, WIN, int_types, \ + CYGWIN +from .utils import echo +from .exceptions import ClickException + + +if os.name == 'nt': + BEFORE_BAR = '\r' + AFTER_BAR = '\n' +else: + BEFORE_BAR = '\r\033[?25l' + AFTER_BAR = '\033[?25h\n' + + +def _length_hint(obj): + """Returns the length hint of an object.""" + try: + return len(obj) + except (AttributeError, TypeError): + try: + get_hint = type(obj).__length_hint__ + except AttributeError: + return None + try: + hint = get_hint(obj) + except TypeError: + return None + if hint is NotImplemented or \ + not isinstance(hint, int_types) or \ + hint < 0: + return None + return hint + + +class ProgressBar(object): + + def __init__(self, iterable, length=None, fill_char='#', empty_char=' ', + bar_template='%(bar)s', info_sep=' ', show_eta=True, + show_percent=None, show_pos=False, item_show_func=None, + label=None, file=None, color=None, width=30): + self.fill_char = fill_char + self.empty_char = empty_char + self.bar_template = bar_template + self.info_sep = info_sep + self.show_eta = show_eta + self.show_percent = show_percent + self.show_pos = show_pos + self.item_show_func = item_show_func + self.label = label or '' + if file is None: + file = _default_text_stdout() + self.file = file + self.color = color + self.width = width + self.autowidth = width == 0 + + if length is None: + length = _length_hint(iterable) + if iterable is None: + if length is None: + raise TypeError('iterable or length is required') + iterable = range_type(length) + self.iter = iter(iterable) + self.length = length + self.length_known = length is not None + self.pos = 0 + self.avg = [] + self.start = self.last_eta = time.time() + self.eta_known = False + self.finished = False + self.max_width = None + self.entered = False + self.current_item = None + self.is_hidden = not isatty(self.file) + self._last_line = None + self.short_limit = 0.5 + + def __enter__(self): + self.entered = True + self.render_progress() + return self + + def __exit__(self, exc_type, exc_value, tb): + self.render_finish() + + def __iter__(self): + if not self.entered: + raise RuntimeError('You need to use progress bars in a with block.') + self.render_progress() + return self.generator() + + def is_fast(self): + return time.time() - self.start <= self.short_limit + + def render_finish(self): + if self.is_hidden or self.is_fast(): + return + self.file.write(AFTER_BAR) + self.file.flush() + + @property + def pct(self): + if self.finished: + return 1.0 + return min(self.pos / (float(self.length) or 1), 1.0) + + @property + def time_per_iteration(self): + if not self.avg: + return 0.0 + return sum(self.avg) / float(len(self.avg)) + + @property + def eta(self): + if self.length_known and not self.finished: + return self.time_per_iteration * (self.length - self.pos) + return 0.0 + + def format_eta(self): + if self.eta_known: + t = int(self.eta) + seconds = t % 60 + t //= 60 + minutes = t % 60 + t //= 60 + hours = t % 24 + t //= 24 + if t > 0: + days = t + return '%dd %02d:%02d:%02d' % (days, hours, minutes, seconds) + else: + return '%02d:%02d:%02d' % (hours, minutes, seconds) + return '' + + def format_pos(self): + pos = str(self.pos) + if self.length_known: + pos += '/%s' % self.length + return pos + + def format_pct(self): + return ('% 4d%%' % int(self.pct * 100))[1:] + + def format_bar(self): + if self.length_known: + bar_length = int(self.pct * self.width) + bar = self.fill_char * bar_length + bar += self.empty_char * (self.width - bar_length) + elif self.finished: + bar = self.fill_char * self.width + else: + bar = list(self.empty_char * (self.width or 1)) + if self.time_per_iteration != 0: + bar[int((math.cos(self.pos * self.time_per_iteration) + / 2.0 + 0.5) * self.width)] = self.fill_char + bar = ''.join(bar) + return bar + + def format_progress_line(self): + show_percent = self.show_percent + + info_bits = [] + if self.length_known and show_percent is None: + show_percent = not self.show_pos + + if self.show_pos: + info_bits.append(self.format_pos()) + if show_percent: + info_bits.append(self.format_pct()) + if self.show_eta and self.eta_known and not self.finished: + info_bits.append(self.format_eta()) + if self.item_show_func is not None: + item_info = self.item_show_func(self.current_item) + if item_info is not None: + info_bits.append(item_info) + + return (self.bar_template % { + 'label': self.label, + 'bar': self.format_bar(), + 'info': self.info_sep.join(info_bits) + }).rstrip() + + def render_progress(self): + from .termui import get_terminal_size + + if self.is_hidden: + return + + buf = [] + # Update width in case the terminal has been resized + if self.autowidth: + old_width = self.width + self.width = 0 + clutter_length = term_len(self.format_progress_line()) + new_width = max(0, get_terminal_size()[0] - clutter_length) + if new_width < old_width: + buf.append(BEFORE_BAR) + buf.append(' ' * self.max_width) + self.max_width = new_width + self.width = new_width + + clear_width = self.width + if self.max_width is not None: + clear_width = self.max_width + + buf.append(BEFORE_BAR) + line = self.format_progress_line() + line_len = term_len(line) + if self.max_width is None or self.max_width < line_len: + self.max_width = line_len + + buf.append(line) + buf.append(' ' * (clear_width - line_len)) + line = ''.join(buf) + # Render the line only if it changed. + + if line != self._last_line and not self.is_fast(): + self._last_line = line + echo(line, file=self.file, color=self.color, nl=False) + self.file.flush() + + def make_step(self, n_steps): + self.pos += n_steps + if self.length_known and self.pos >= self.length: + self.finished = True + + if (time.time() - self.last_eta) < 1.0: + return + + self.last_eta = time.time() + + # self.avg is a rolling list of length <= 7 of steps where steps are + # defined as time elapsed divided by the total progress through + # self.length. + if self.pos: + step = (time.time() - self.start) / self.pos + else: + step = time.time() - self.start + + self.avg = self.avg[-6:] + [step] + + self.eta_known = self.length_known + + def update(self, n_steps): + self.make_step(n_steps) + self.render_progress() + + def finish(self): + self.eta_known = 0 + self.current_item = None + self.finished = True + + def generator(self): + """ + Returns a generator which yields the items added to the bar during + construction, and updates the progress bar *after* the yielded block + returns. + """ + if not self.entered: + raise RuntimeError('You need to use progress bars in a with block.') + + if self.is_hidden: + for rv in self.iter: + yield rv + else: + for rv in self.iter: + self.current_item = rv + yield rv + self.update(1) + self.finish() + self.render_progress() + + +def pager(generator, color=None): + """Decide what method to use for paging through text.""" + stdout = _default_text_stdout() + if not isatty(sys.stdin) or not isatty(stdout): + return _nullpager(stdout, generator, color) + pager_cmd = (os.environ.get('PAGER', None) or '').strip() + if pager_cmd: + if WIN: + return _tempfilepager(generator, pager_cmd, color) + return _pipepager(generator, pager_cmd, color) + if os.environ.get('TERM') in ('dumb', 'emacs'): + return _nullpager(stdout, generator, color) + if WIN or sys.platform.startswith('os2'): + return _tempfilepager(generator, 'more <', color) + if hasattr(os, 'system') and os.system('(less) 2>/dev/null') == 0: + return _pipepager(generator, 'less', color) + + import tempfile + fd, filename = tempfile.mkstemp() + os.close(fd) + try: + if hasattr(os, 'system') and os.system('more "%s"' % filename) == 0: + return _pipepager(generator, 'more', color) + return _nullpager(stdout, generator, color) + finally: + os.unlink(filename) + + +def _pipepager(generator, cmd, color): + """Page through text by feeding it to another program. Invoking a + pager through this might support colors. + """ + import subprocess + env = dict(os.environ) + + # If we're piping to less we might support colors under the + # condition that + cmd_detail = cmd.rsplit('/', 1)[-1].split() + if color is None and cmd_detail[0] == 'less': + less_flags = os.environ.get('LESS', '') + ' '.join(cmd_detail[1:]) + if not less_flags: + env['LESS'] = '-R' + color = True + elif 'r' in less_flags or 'R' in less_flags: + color = True + + c = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, + env=env) + encoding = get_best_encoding(c.stdin) + try: + for text in generator: + if not color: + text = strip_ansi(text) + + c.stdin.write(text.encode(encoding, 'replace')) + except (IOError, KeyboardInterrupt): + pass + else: + c.stdin.close() + + # Less doesn't respect ^C, but catches it for its own UI purposes (aborting + # search or other commands inside less). + # + # That means when the user hits ^C, the parent process (click) terminates, + # but less is still alive, paging the output and messing up the terminal. + # + # If the user wants to make the pager exit on ^C, they should set + # `LESS='-K'`. It's not our decision to make. + while True: + try: + c.wait() + except KeyboardInterrupt: + pass + else: + break + + +def _tempfilepager(generator, cmd, color): + """Page through text by invoking a program on a temporary file.""" + import tempfile + filename = tempfile.mktemp() + # TODO: This never terminates if the passed generator never terminates. + text = "".join(generator) + if not color: + text = strip_ansi(text) + encoding = get_best_encoding(sys.stdout) + with open_stream(filename, 'wb')[0] as f: + f.write(text.encode(encoding)) + try: + os.system(cmd + ' "' + filename + '"') + finally: + os.unlink(filename) + + +def _nullpager(stream, generator, color): + """Simply print unformatted text. This is the ultimate fallback.""" + for text in generator: + if not color: + text = strip_ansi(text) + stream.write(text) + + +class Editor(object): + + def __init__(self, editor=None, env=None, require_save=True, + extension='.txt'): + self.editor = editor + self.env = env + self.require_save = require_save + self.extension = extension + + def get_editor(self): + if self.editor is not None: + return self.editor + for key in 'VISUAL', 'EDITOR': + rv = os.environ.get(key) + if rv: + return rv + if WIN: + return 'notepad' + for editor in 'vim', 'nano': + if os.system('which %s >/dev/null 2>&1' % editor) == 0: + return editor + return 'vi' + + def edit_file(self, filename): + import subprocess + editor = self.get_editor() + if self.env: + environ = os.environ.copy() + environ.update(self.env) + else: + environ = None + try: + c = subprocess.Popen('%s "%s"' % (editor, filename), + env=environ, shell=True) + exit_code = c.wait() + if exit_code != 0: + raise ClickException('%s: Editing failed!' % editor) + except OSError as e: + raise ClickException('%s: Editing failed: %s' % (editor, e)) + + def edit(self, text): + import tempfile + + text = text or '' + if text and not text.endswith('\n'): + text += '\n' + + fd, name = tempfile.mkstemp(prefix='editor-', suffix=self.extension) + try: + if WIN: + encoding = 'utf-8-sig' + text = text.replace('\n', '\r\n') + else: + encoding = 'utf-8' + text = text.encode(encoding) + + f = os.fdopen(fd, 'wb') + f.write(text) + f.close() + timestamp = os.path.getmtime(name) + + self.edit_file(name) + + if self.require_save \ + and os.path.getmtime(name) == timestamp: + return None + + f = open(name, 'rb') + try: + rv = f.read() + finally: + f.close() + return rv.decode('utf-8-sig').replace('\r\n', '\n') + finally: + os.unlink(name) + + +def open_url(url, wait=False, locate=False): + import subprocess + + def _unquote_file(url): + try: + import urllib + except ImportError: + import urllib + if url.startswith('file://'): + url = urllib.unquote(url[7:]) + return url + + if sys.platform == 'darwin': + args = ['open'] + if wait: + args.append('-W') + if locate: + args.append('-R') + args.append(_unquote_file(url)) + null = open('/dev/null', 'w') + try: + return subprocess.Popen(args, stderr=null).wait() + finally: + null.close() + elif WIN: + if locate: + url = _unquote_file(url) + args = 'explorer /select,"%s"' % _unquote_file( + url.replace('"', '')) + else: + args = 'start %s "" "%s"' % ( + wait and '/WAIT' or '', url.replace('"', '')) + return os.system(args) + elif CYGWIN: + if locate: + url = _unquote_file(url) + args = 'cygstart "%s"' % (os.path.dirname(url).replace('"', '')) + else: + args = 'cygstart %s "%s"' % ( + wait and '-w' or '', url.replace('"', '')) + return os.system(args) + + try: + if locate: + url = os.path.dirname(_unquote_file(url)) or '.' + else: + url = _unquote_file(url) + c = subprocess.Popen(['xdg-open', url]) + if wait: + return c.wait() + return 0 + except OSError: + if url.startswith(('http://', 'https://')) and not locate and not wait: + import webbrowser + webbrowser.open(url) + return 0 + return 1 + + +def _translate_ch_to_exc(ch): + if ch == u'\x03': + raise KeyboardInterrupt() + if ch == u'\x04' and not WIN: # Unix-like, Ctrl+D + raise EOFError() + if ch == u'\x1a' and WIN: # Windows, Ctrl+Z + raise EOFError() + + +if WIN: + import msvcrt + + @contextlib.contextmanager + def raw_terminal(): + yield + + def getchar(echo): + # The function `getch` will return a bytes object corresponding to + # the pressed character. Since Windows 10 build 1803, it will also + # return \x00 when called a second time after pressing a regular key. + # + # `getwch` does not share this probably-bugged behavior. Moreover, it + # returns a Unicode object by default, which is what we want. + # + # Either of these functions will return \x00 or \xe0 to indicate + # a special key, and you need to call the same function again to get + # the "rest" of the code. The fun part is that \u00e0 is + # "latin small letter a with grave", so if you type that on a French + # keyboard, you _also_ get a \xe0. + # E.g., consider the Up arrow. This returns \xe0 and then \x48. The + # resulting Unicode string reads as "a with grave" + "capital H". + # This is indistinguishable from when the user actually types + # "a with grave" and then "capital H". + # + # When \xe0 is returned, we assume it's part of a special-key sequence + # and call `getwch` again, but that means that when the user types + # the \u00e0 character, `getchar` doesn't return until a second + # character is typed. + # The alternative is returning immediately, but that would mess up + # cross-platform handling of arrow keys and others that start with + # \xe0. Another option is using `getch`, but then we can't reliably + # read non-ASCII characters, because return values of `getch` are + # limited to the current 8-bit codepage. + # + # Anyway, Click doesn't claim to do this Right(tm), and using `getwch` + # is doing the right thing in more situations than with `getch`. + if echo: + func = msvcrt.getwche + else: + func = msvcrt.getwch + + rv = func() + if rv in (u'\x00', u'\xe0'): + # \x00 and \xe0 are control characters that indicate special key, + # see above. + rv += func() + _translate_ch_to_exc(rv) + return rv +else: + import tty + import termios + + @contextlib.contextmanager + def raw_terminal(): + if not isatty(sys.stdin): + f = open('/dev/tty') + fd = f.fileno() + else: + fd = sys.stdin.fileno() + f = None + try: + old_settings = termios.tcgetattr(fd) + try: + tty.setraw(fd) + yield fd + finally: + termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) + sys.stdout.flush() + if f is not None: + f.close() + except termios.error: + pass + + def getchar(echo): + with raw_terminal() as fd: + ch = os.read(fd, 32) + ch = ch.decode(get_best_encoding(sys.stdin), 'replace') + if echo and isatty(sys.stdout): + sys.stdout.write(ch) + _translate_ch_to_exc(ch) + return ch diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_textwrap.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_textwrap.py new file mode 100644 index 00000000..7e776031 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_textwrap.py @@ -0,0 +1,38 @@ +import textwrap +from contextlib import contextmanager + + +class TextWrapper(textwrap.TextWrapper): + + def _handle_long_word(self, reversed_chunks, cur_line, cur_len, width): + space_left = max(width - cur_len, 1) + + if self.break_long_words: + last = reversed_chunks[-1] + cut = last[:space_left] + res = last[space_left:] + cur_line.append(cut) + reversed_chunks[-1] = res + elif not cur_line: + cur_line.append(reversed_chunks.pop()) + + @contextmanager + def extra_indent(self, indent): + old_initial_indent = self.initial_indent + old_subsequent_indent = self.subsequent_indent + self.initial_indent += indent + self.subsequent_indent += indent + try: + yield + finally: + self.initial_indent = old_initial_indent + self.subsequent_indent = old_subsequent_indent + + def indent_only(self, text): + rv = [] + for idx, line in enumerate(text.splitlines()): + indent = self.initial_indent + if idx > 0: + indent = self.subsequent_indent + rv.append(indent + line) + return '\n'.join(rv) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_unicodefun.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_unicodefun.py new file mode 100644 index 00000000..620edff3 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_unicodefun.py @@ -0,0 +1,125 @@ +import os +import sys +import codecs + +from ._compat import PY2 + + +# If someone wants to vendor click, we want to ensure the +# correct package is discovered. Ideally we could use a +# relative import here but unfortunately Python does not +# support that. +click = sys.modules[__name__.rsplit('.', 1)[0]] + + +def _find_unicode_literals_frame(): + import __future__ + if not hasattr(sys, '_getframe'): # not all Python implementations have it + return 0 + frm = sys._getframe(1) + idx = 1 + while frm is not None: + if frm.f_globals.get('__name__', '').startswith('click.'): + frm = frm.f_back + idx += 1 + elif frm.f_code.co_flags & __future__.unicode_literals.compiler_flag: + return idx + else: + break + return 0 + + +def _check_for_unicode_literals(): + if not __debug__: + return + if not PY2 or click.disable_unicode_literals_warning: + return + bad_frame = _find_unicode_literals_frame() + if bad_frame <= 0: + return + from warnings import warn + warn(Warning('Click detected the use of the unicode_literals ' + '__future__ import. This is heavily discouraged ' + 'because it can introduce subtle bugs in your ' + 'code. You should instead use explicit u"" literals ' + 'for your unicode strings. For more information see ' + 'https://click.palletsprojects.com/python3/'), + stacklevel=bad_frame) + + +def _verify_python3_env(): + """Ensures that the environment is good for unicode on Python 3.""" + if PY2: + return + try: + import locale + fs_enc = codecs.lookup(locale.getpreferredencoding()).name + except Exception: + fs_enc = 'ascii' + if fs_enc != 'ascii': + return + + extra = '' + if os.name == 'posix': + import subprocess + try: + rv = subprocess.Popen(['locale', '-a'], stdout=subprocess.PIPE, + stderr=subprocess.PIPE).communicate()[0] + except OSError: + rv = b'' + good_locales = set() + has_c_utf8 = False + + # Make sure we're operating on text here. + if isinstance(rv, bytes): + rv = rv.decode('ascii', 'replace') + + for line in rv.splitlines(): + locale = line.strip() + if locale.lower().endswith(('.utf-8', '.utf8')): + good_locales.add(locale) + if locale.lower() in ('c.utf8', 'c.utf-8'): + has_c_utf8 = True + + extra += '\n\n' + if not good_locales: + extra += ( + 'Additional information: on this system no suitable UTF-8\n' + 'locales were discovered. This most likely requires resolving\n' + 'by reconfiguring the locale system.' + ) + elif has_c_utf8: + extra += ( + 'This system supports the C.UTF-8 locale which is recommended.\n' + 'You might be able to resolve your issue by exporting the\n' + 'following environment variables:\n\n' + ' export LC_ALL=C.UTF-8\n' + ' export LANG=C.UTF-8' + ) + else: + extra += ( + 'This system lists a couple of UTF-8 supporting locales that\n' + 'you can pick from. The following suitable locales were\n' + 'discovered: %s' + ) % ', '.join(sorted(good_locales)) + + bad_locale = None + for locale in os.environ.get('LC_ALL'), os.environ.get('LANG'): + if locale and locale.lower().endswith(('.utf-8', '.utf8')): + bad_locale = locale + if locale is not None: + break + if bad_locale is not None: + extra += ( + '\n\nClick discovered that you exported a UTF-8 locale\n' + 'but the locale system could not pick up from it because\n' + 'it does not exist. The exported locale is "%s" but it\n' + 'is not supported' + ) % bad_locale + + raise RuntimeError( + 'Click will abort further execution because Python 3 was' + ' configured to use ASCII as encoding for the environment.' + ' Consult https://click.palletsprojects.com/en/7.x/python3/ for' + ' mitigation steps.' + extra + ) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_winconsole.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_winconsole.py new file mode 100644 index 00000000..bbb080dd --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/_winconsole.py @@ -0,0 +1,307 @@ +# -*- coding: utf-8 -*- +# This module is based on the excellent work by Adam Bartoš who +# provided a lot of what went into the implementation here in +# the discussion to issue1602 in the Python bug tracker. +# +# There are some general differences in regards to how this works +# compared to the original patches as we do not need to patch +# the entire interpreter but just work in our little world of +# echo and prmopt. + +import io +import os +import sys +import zlib +import time +import ctypes +import msvcrt +from ._compat import _NonClosingTextIOWrapper, text_type, PY2 +from ctypes import byref, POINTER, c_int, c_char, c_char_p, \ + c_void_p, py_object, c_ssize_t, c_ulong, windll, WINFUNCTYPE +try: + from ctypes import pythonapi + PyObject_GetBuffer = pythonapi.PyObject_GetBuffer + PyBuffer_Release = pythonapi.PyBuffer_Release +except ImportError: + pythonapi = None +from ctypes.wintypes import LPWSTR, LPCWSTR + + +c_ssize_p = POINTER(c_ssize_t) + +kernel32 = windll.kernel32 +GetStdHandle = kernel32.GetStdHandle +ReadConsoleW = kernel32.ReadConsoleW +WriteConsoleW = kernel32.WriteConsoleW +GetLastError = kernel32.GetLastError +GetCommandLineW = WINFUNCTYPE(LPWSTR)( + ('GetCommandLineW', windll.kernel32)) +CommandLineToArgvW = WINFUNCTYPE( + POINTER(LPWSTR), LPCWSTR, POINTER(c_int))( + ('CommandLineToArgvW', windll.shell32)) + + +STDIN_HANDLE = GetStdHandle(-10) +STDOUT_HANDLE = GetStdHandle(-11) +STDERR_HANDLE = GetStdHandle(-12) + + +PyBUF_SIMPLE = 0 +PyBUF_WRITABLE = 1 + +ERROR_SUCCESS = 0 +ERROR_NOT_ENOUGH_MEMORY = 8 +ERROR_OPERATION_ABORTED = 995 + +STDIN_FILENO = 0 +STDOUT_FILENO = 1 +STDERR_FILENO = 2 + +EOF = b'\x1a' +MAX_BYTES_WRITTEN = 32767 + + +class Py_buffer(ctypes.Structure): + _fields_ = [ + ('buf', c_void_p), + ('obj', py_object), + ('len', c_ssize_t), + ('itemsize', c_ssize_t), + ('readonly', c_int), + ('ndim', c_int), + ('format', c_char_p), + ('shape', c_ssize_p), + ('strides', c_ssize_p), + ('suboffsets', c_ssize_p), + ('internal', c_void_p) + ] + + if PY2: + _fields_.insert(-1, ('smalltable', c_ssize_t * 2)) + + +# On PyPy we cannot get buffers so our ability to operate here is +# serverly limited. +if pythonapi is None: + get_buffer = None +else: + def get_buffer(obj, writable=False): + buf = Py_buffer() + flags = PyBUF_WRITABLE if writable else PyBUF_SIMPLE + PyObject_GetBuffer(py_object(obj), byref(buf), flags) + try: + buffer_type = c_char * buf.len + return buffer_type.from_address(buf.buf) + finally: + PyBuffer_Release(byref(buf)) + + +class _WindowsConsoleRawIOBase(io.RawIOBase): + + def __init__(self, handle): + self.handle = handle + + def isatty(self): + io.RawIOBase.isatty(self) + return True + + +class _WindowsConsoleReader(_WindowsConsoleRawIOBase): + + def readable(self): + return True + + def readinto(self, b): + bytes_to_be_read = len(b) + if not bytes_to_be_read: + return 0 + elif bytes_to_be_read % 2: + raise ValueError('cannot read odd number of bytes from ' + 'UTF-16-LE encoded console') + + buffer = get_buffer(b, writable=True) + code_units_to_be_read = bytes_to_be_read // 2 + code_units_read = c_ulong() + + rv = ReadConsoleW(self.handle, buffer, code_units_to_be_read, + byref(code_units_read), None) + if GetLastError() == ERROR_OPERATION_ABORTED: + # wait for KeyboardInterrupt + time.sleep(0.1) + if not rv: + raise OSError('Windows error: %s' % GetLastError()) + + if buffer[0] == EOF: + return 0 + return 2 * code_units_read.value + + +class _WindowsConsoleWriter(_WindowsConsoleRawIOBase): + + def writable(self): + return True + + @staticmethod + def _get_error_message(errno): + if errno == ERROR_SUCCESS: + return 'ERROR_SUCCESS' + elif errno == ERROR_NOT_ENOUGH_MEMORY: + return 'ERROR_NOT_ENOUGH_MEMORY' + return 'Windows error %s' % errno + + def write(self, b): + bytes_to_be_written = len(b) + buf = get_buffer(b) + code_units_to_be_written = min(bytes_to_be_written, + MAX_BYTES_WRITTEN) // 2 + code_units_written = c_ulong() + + WriteConsoleW(self.handle, buf, code_units_to_be_written, + byref(code_units_written), None) + bytes_written = 2 * code_units_written.value + + if bytes_written == 0 and bytes_to_be_written > 0: + raise OSError(self._get_error_message(GetLastError())) + return bytes_written + + +class ConsoleStream(object): + + def __init__(self, text_stream, byte_stream): + self._text_stream = text_stream + self.buffer = byte_stream + + @property + def name(self): + return self.buffer.name + + def write(self, x): + if isinstance(x, text_type): + return self._text_stream.write(x) + try: + self.flush() + except Exception: + pass + return self.buffer.write(x) + + def writelines(self, lines): + for line in lines: + self.write(line) + + def __getattr__(self, name): + return getattr(self._text_stream, name) + + def isatty(self): + return self.buffer.isatty() + + def __repr__(self): + return '' % ( + self.name, + self.encoding, + ) + + +class WindowsChunkedWriter(object): + """ + Wraps a stream (such as stdout), acting as a transparent proxy for all + attribute access apart from method 'write()' which we wrap to write in + limited chunks due to a Windows limitation on binary console streams. + """ + def __init__(self, wrapped): + # double-underscore everything to prevent clashes with names of + # attributes on the wrapped stream object. + self.__wrapped = wrapped + + def __getattr__(self, name): + return getattr(self.__wrapped, name) + + def write(self, text): + total_to_write = len(text) + written = 0 + + while written < total_to_write: + to_write = min(total_to_write - written, MAX_BYTES_WRITTEN) + self.__wrapped.write(text[written:written+to_write]) + written += to_write + + +_wrapped_std_streams = set() + + +def _wrap_std_stream(name): + # Python 2 & Windows 7 and below + if PY2 and sys.getwindowsversion()[:2] <= (6, 1) and name not in _wrapped_std_streams: + setattr(sys, name, WindowsChunkedWriter(getattr(sys, name))) + _wrapped_std_streams.add(name) + + +def _get_text_stdin(buffer_stream): + text_stream = _NonClosingTextIOWrapper( + io.BufferedReader(_WindowsConsoleReader(STDIN_HANDLE)), + 'utf-16-le', 'strict', line_buffering=True) + return ConsoleStream(text_stream, buffer_stream) + + +def _get_text_stdout(buffer_stream): + text_stream = _NonClosingTextIOWrapper( + io.BufferedWriter(_WindowsConsoleWriter(STDOUT_HANDLE)), + 'utf-16-le', 'strict', line_buffering=True) + return ConsoleStream(text_stream, buffer_stream) + + +def _get_text_stderr(buffer_stream): + text_stream = _NonClosingTextIOWrapper( + io.BufferedWriter(_WindowsConsoleWriter(STDERR_HANDLE)), + 'utf-16-le', 'strict', line_buffering=True) + return ConsoleStream(text_stream, buffer_stream) + + +if PY2: + def _hash_py_argv(): + return zlib.crc32('\x00'.join(sys.argv[1:])) + + _initial_argv_hash = _hash_py_argv() + + def _get_windows_argv(): + argc = c_int(0) + argv_unicode = CommandLineToArgvW(GetCommandLineW(), byref(argc)) + argv = [argv_unicode[i] for i in range(0, argc.value)] + + if not hasattr(sys, 'frozen'): + argv = argv[1:] + while len(argv) > 0: + arg = argv[0] + if not arg.startswith('-') or arg == '-': + break + argv = argv[1:] + if arg.startswith(('-c', '-m')): + break + + return argv[1:] + + +_stream_factories = { + 0: _get_text_stdin, + 1: _get_text_stdout, + 2: _get_text_stderr, +} + + +def _get_windows_console_stream(f, encoding, errors): + if get_buffer is not None and \ + encoding in ('utf-16-le', None) \ + and errors in ('strict', None) and \ + hasattr(f, 'isatty') and f.isatty(): + func = _stream_factories.get(f.fileno()) + if func is not None: + if not PY2: + f = getattr(f, 'buffer', None) + if f is None: + return None + else: + # If we are on Python 2 we need to set the stream that we + # deal with to binary mode as otherwise the exercise if a + # bit moot. The same problems apply as for + # get_binary_stdin and friends from _compat. + msvcrt.setmode(f.fileno(), os.O_BINARY) + return func(f) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/core.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/core.py new file mode 100644 index 00000000..7a1e3422 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/core.py @@ -0,0 +1,1856 @@ +import errno +import inspect +import os +import sys +from contextlib import contextmanager +from itertools import repeat +from functools import update_wrapper + +from .types import convert_type, IntRange, BOOL +from .utils import PacifyFlushWrapper, make_str, make_default_short_help, \ + echo, get_os_args +from .exceptions import ClickException, UsageError, BadParameter, Abort, \ + MissingParameter, Exit +from .termui import prompt, confirm, style +from .formatting import HelpFormatter, join_options +from .parser import OptionParser, split_opt +from .globals import push_context, pop_context + +from ._compat import PY2, isidentifier, iteritems, string_types +from ._unicodefun import _check_for_unicode_literals, _verify_python3_env + + +_missing = object() + + +SUBCOMMAND_METAVAR = 'COMMAND [ARGS]...' +SUBCOMMANDS_METAVAR = 'COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...' + +DEPRECATED_HELP_NOTICE = ' (DEPRECATED)' +DEPRECATED_INVOKE_NOTICE = 'DeprecationWarning: ' + \ + 'The command %(name)s is deprecated.' + + +def _maybe_show_deprecated_notice(cmd): + if cmd.deprecated: + echo(style(DEPRECATED_INVOKE_NOTICE % {'name': cmd.name}, fg='red'), err=True) + + +def fast_exit(code): + """Exit without garbage collection, this speeds up exit by about 10ms for + things like bash completion. + """ + sys.stdout.flush() + sys.stderr.flush() + os._exit(code) + + +def _bashcomplete(cmd, prog_name, complete_var=None): + """Internal handler for the bash completion support.""" + if complete_var is None: + complete_var = '_%s_COMPLETE' % (prog_name.replace('-', '_')).upper() + complete_instr = os.environ.get(complete_var) + if not complete_instr: + return + + from ._bashcomplete import bashcomplete + if bashcomplete(cmd, prog_name, complete_var, complete_instr): + fast_exit(1) + + +def _check_multicommand(base_command, cmd_name, cmd, register=False): + if not base_command.chain or not isinstance(cmd, MultiCommand): + return + if register: + hint = 'It is not possible to add multi commands as children to ' \ + 'another multi command that is in chain mode' + else: + hint = 'Found a multi command as subcommand to a multi command ' \ + 'that is in chain mode. This is not supported' + raise RuntimeError('%s. Command "%s" is set to chain and "%s" was ' + 'added as subcommand but it in itself is a ' + 'multi command. ("%s" is a %s within a chained ' + '%s named "%s").' % ( + hint, base_command.name, cmd_name, + cmd_name, cmd.__class__.__name__, + base_command.__class__.__name__, + base_command.name)) + + +def batch(iterable, batch_size): + return list(zip(*repeat(iter(iterable), batch_size))) + + +def invoke_param_callback(callback, ctx, param, value): + code = getattr(callback, '__code__', None) + args = getattr(code, 'co_argcount', 3) + + if args < 3: + # This will become a warning in Click 3.0: + from warnings import warn + warn(Warning('Invoked legacy parameter callback "%s". The new ' + 'signature for such callbacks starting with ' + 'click 2.0 is (ctx, param, value).' + % callback), stacklevel=3) + return callback(ctx, value) + return callback(ctx, param, value) + + +@contextmanager +def augment_usage_errors(ctx, param=None): + """Context manager that attaches extra information to exceptions that + fly. + """ + try: + yield + except BadParameter as e: + if e.ctx is None: + e.ctx = ctx + if param is not None and e.param is None: + e.param = param + raise + except UsageError as e: + if e.ctx is None: + e.ctx = ctx + raise + + +def iter_params_for_processing(invocation_order, declaration_order): + """Given a sequence of parameters in the order as should be considered + for processing and an iterable of parameters that exist, this returns + a list in the correct order as they should be processed. + """ + def sort_key(item): + try: + idx = invocation_order.index(item) + except ValueError: + idx = float('inf') + return (not item.is_eager, idx) + + return sorted(declaration_order, key=sort_key) + + +class Context(object): + """The context is a special internal object that holds state relevant + for the script execution at every single level. It's normally invisible + to commands unless they opt-in to getting access to it. + + The context is useful as it can pass internal objects around and can + control special execution features such as reading data from + environment variables. + + A context can be used as context manager in which case it will call + :meth:`close` on teardown. + + .. versionadded:: 2.0 + Added the `resilient_parsing`, `help_option_names`, + `token_normalize_func` parameters. + + .. versionadded:: 3.0 + Added the `allow_extra_args` and `allow_interspersed_args` + parameters. + + .. versionadded:: 4.0 + Added the `color`, `ignore_unknown_options`, and + `max_content_width` parameters. + + :param command: the command class for this context. + :param parent: the parent context. + :param info_name: the info name for this invocation. Generally this + is the most descriptive name for the script or + command. For the toplevel script it is usually + the name of the script, for commands below it it's + the name of the script. + :param obj: an arbitrary object of user data. + :param auto_envvar_prefix: the prefix to use for automatic environment + variables. If this is `None` then reading + from environment variables is disabled. This + does not affect manually set environment + variables which are always read. + :param default_map: a dictionary (like object) with default values + for parameters. + :param terminal_width: the width of the terminal. The default is + inherit from parent context. If no context + defines the terminal width then auto + detection will be applied. + :param max_content_width: the maximum width for content rendered by + Click (this currently only affects help + pages). This defaults to 80 characters if + not overridden. In other words: even if the + terminal is larger than that, Click will not + format things wider than 80 characters by + default. In addition to that, formatters might + add some safety mapping on the right. + :param resilient_parsing: if this flag is enabled then Click will + parse without any interactivity or callback + invocation. Default values will also be + ignored. This is useful for implementing + things such as completion support. + :param allow_extra_args: if this is set to `True` then extra arguments + at the end will not raise an error and will be + kept on the context. The default is to inherit + from the command. + :param allow_interspersed_args: if this is set to `False` then options + and arguments cannot be mixed. The + default is to inherit from the command. + :param ignore_unknown_options: instructs click to ignore options it does + not know and keeps them for later + processing. + :param help_option_names: optionally a list of strings that define how + the default help parameter is named. The + default is ``['--help']``. + :param token_normalize_func: an optional function that is used to + normalize tokens (options, choices, + etc.). This for instance can be used to + implement case insensitive behavior. + :param color: controls if the terminal supports ANSI colors or not. The + default is autodetection. This is only needed if ANSI + codes are used in texts that Click prints which is by + default not the case. This for instance would affect + help output. + """ + + def __init__(self, command, parent=None, info_name=None, obj=None, + auto_envvar_prefix=None, default_map=None, + terminal_width=None, max_content_width=None, + resilient_parsing=False, allow_extra_args=None, + allow_interspersed_args=None, + ignore_unknown_options=None, help_option_names=None, + token_normalize_func=None, color=None): + #: the parent context or `None` if none exists. + self.parent = parent + #: the :class:`Command` for this context. + self.command = command + #: the descriptive information name + self.info_name = info_name + #: the parsed parameters except if the value is hidden in which + #: case it's not remembered. + self.params = {} + #: the leftover arguments. + self.args = [] + #: protected arguments. These are arguments that are prepended + #: to `args` when certain parsing scenarios are encountered but + #: must be never propagated to another arguments. This is used + #: to implement nested parsing. + self.protected_args = [] + if obj is None and parent is not None: + obj = parent.obj + #: the user object stored. + self.obj = obj + self._meta = getattr(parent, 'meta', {}) + + #: A dictionary (-like object) with defaults for parameters. + if default_map is None \ + and parent is not None \ + and parent.default_map is not None: + default_map = parent.default_map.get(info_name) + self.default_map = default_map + + #: This flag indicates if a subcommand is going to be executed. A + #: group callback can use this information to figure out if it's + #: being executed directly or because the execution flow passes + #: onwards to a subcommand. By default it's None, but it can be + #: the name of the subcommand to execute. + #: + #: If chaining is enabled this will be set to ``'*'`` in case + #: any commands are executed. It is however not possible to + #: figure out which ones. If you require this knowledge you + #: should use a :func:`resultcallback`. + self.invoked_subcommand = None + + if terminal_width is None and parent is not None: + terminal_width = parent.terminal_width + #: The width of the terminal (None is autodetection). + self.terminal_width = terminal_width + + if max_content_width is None and parent is not None: + max_content_width = parent.max_content_width + #: The maximum width of formatted content (None implies a sensible + #: default which is 80 for most things). + self.max_content_width = max_content_width + + if allow_extra_args is None: + allow_extra_args = command.allow_extra_args + #: Indicates if the context allows extra args or if it should + #: fail on parsing. + #: + #: .. versionadded:: 3.0 + self.allow_extra_args = allow_extra_args + + if allow_interspersed_args is None: + allow_interspersed_args = command.allow_interspersed_args + #: Indicates if the context allows mixing of arguments and + #: options or not. + #: + #: .. versionadded:: 3.0 + self.allow_interspersed_args = allow_interspersed_args + + if ignore_unknown_options is None: + ignore_unknown_options = command.ignore_unknown_options + #: Instructs click to ignore options that a command does not + #: understand and will store it on the context for later + #: processing. This is primarily useful for situations where you + #: want to call into external programs. Generally this pattern is + #: strongly discouraged because it's not possibly to losslessly + #: forward all arguments. + #: + #: .. versionadded:: 4.0 + self.ignore_unknown_options = ignore_unknown_options + + if help_option_names is None: + if parent is not None: + help_option_names = parent.help_option_names + else: + help_option_names = ['--help'] + + #: The names for the help options. + self.help_option_names = help_option_names + + if token_normalize_func is None and parent is not None: + token_normalize_func = parent.token_normalize_func + + #: An optional normalization function for tokens. This is + #: options, choices, commands etc. + self.token_normalize_func = token_normalize_func + + #: Indicates if resilient parsing is enabled. In that case Click + #: will do its best to not cause any failures and default values + #: will be ignored. Useful for completion. + self.resilient_parsing = resilient_parsing + + # If there is no envvar prefix yet, but the parent has one and + # the command on this level has a name, we can expand the envvar + # prefix automatically. + if auto_envvar_prefix is None: + if parent is not None \ + and parent.auto_envvar_prefix is not None and \ + self.info_name is not None: + auto_envvar_prefix = '%s_%s' % (parent.auto_envvar_prefix, + self.info_name.upper()) + else: + auto_envvar_prefix = auto_envvar_prefix.upper() + self.auto_envvar_prefix = auto_envvar_prefix + + if color is None and parent is not None: + color = parent.color + + #: Controls if styling output is wanted or not. + self.color = color + + self._close_callbacks = [] + self._depth = 0 + + def __enter__(self): + self._depth += 1 + push_context(self) + return self + + def __exit__(self, exc_type, exc_value, tb): + self._depth -= 1 + if self._depth == 0: + self.close() + pop_context() + + @contextmanager + def scope(self, cleanup=True): + """This helper method can be used with the context object to promote + it to the current thread local (see :func:`get_current_context`). + The default behavior of this is to invoke the cleanup functions which + can be disabled by setting `cleanup` to `False`. The cleanup + functions are typically used for things such as closing file handles. + + If the cleanup is intended the context object can also be directly + used as a context manager. + + Example usage:: + + with ctx.scope(): + assert get_current_context() is ctx + + This is equivalent:: + + with ctx: + assert get_current_context() is ctx + + .. versionadded:: 5.0 + + :param cleanup: controls if the cleanup functions should be run or + not. The default is to run these functions. In + some situations the context only wants to be + temporarily pushed in which case this can be disabled. + Nested pushes automatically defer the cleanup. + """ + if not cleanup: + self._depth += 1 + try: + with self as rv: + yield rv + finally: + if not cleanup: + self._depth -= 1 + + @property + def meta(self): + """This is a dictionary which is shared with all the contexts + that are nested. It exists so that click utilities can store some + state here if they need to. It is however the responsibility of + that code to manage this dictionary well. + + The keys are supposed to be unique dotted strings. For instance + module paths are a good choice for it. What is stored in there is + irrelevant for the operation of click. However what is important is + that code that places data here adheres to the general semantics of + the system. + + Example usage:: + + LANG_KEY = __name__ + '.lang' + + def set_language(value): + ctx = get_current_context() + ctx.meta[LANG_KEY] = value + + def get_language(): + return get_current_context().meta.get(LANG_KEY, 'en_US') + + .. versionadded:: 5.0 + """ + return self._meta + + def make_formatter(self): + """Creates the formatter for the help and usage output.""" + return HelpFormatter(width=self.terminal_width, + max_width=self.max_content_width) + + def call_on_close(self, f): + """This decorator remembers a function as callback that should be + executed when the context tears down. This is most useful to bind + resource handling to the script execution. For instance, file objects + opened by the :class:`File` type will register their close callbacks + here. + + :param f: the function to execute on teardown. + """ + self._close_callbacks.append(f) + return f + + def close(self): + """Invokes all close callbacks.""" + for cb in self._close_callbacks: + cb() + self._close_callbacks = [] + + @property + def command_path(self): + """The computed command path. This is used for the ``usage`` + information on the help page. It's automatically created by + combining the info names of the chain of contexts to the root. + """ + rv = '' + if self.info_name is not None: + rv = self.info_name + if self.parent is not None: + rv = self.parent.command_path + ' ' + rv + return rv.lstrip() + + def find_root(self): + """Finds the outermost context.""" + node = self + while node.parent is not None: + node = node.parent + return node + + def find_object(self, object_type): + """Finds the closest object of a given type.""" + node = self + while node is not None: + if isinstance(node.obj, object_type): + return node.obj + node = node.parent + + def ensure_object(self, object_type): + """Like :meth:`find_object` but sets the innermost object to a + new instance of `object_type` if it does not exist. + """ + rv = self.find_object(object_type) + if rv is None: + self.obj = rv = object_type() + return rv + + def lookup_default(self, name): + """Looks up the default for a parameter name. This by default + looks into the :attr:`default_map` if available. + """ + if self.default_map is not None: + rv = self.default_map.get(name) + if callable(rv): + rv = rv() + return rv + + def fail(self, message): + """Aborts the execution of the program with a specific error + message. + + :param message: the error message to fail with. + """ + raise UsageError(message, self) + + def abort(self): + """Aborts the script.""" + raise Abort() + + def exit(self, code=0): + """Exits the application with a given exit code.""" + raise Exit(code) + + def get_usage(self): + """Helper method to get formatted usage string for the current + context and command. + """ + return self.command.get_usage(self) + + def get_help(self): + """Helper method to get formatted help page for the current + context and command. + """ + return self.command.get_help(self) + + def invoke(*args, **kwargs): + """Invokes a command callback in exactly the way it expects. There + are two ways to invoke this method: + + 1. the first argument can be a callback and all other arguments and + keyword arguments are forwarded directly to the function. + 2. the first argument is a click command object. In that case all + arguments are forwarded as well but proper click parameters + (options and click arguments) must be keyword arguments and Click + will fill in defaults. + + Note that before Click 3.2 keyword arguments were not properly filled + in against the intention of this code and no context was created. For + more information about this change and why it was done in a bugfix + release see :ref:`upgrade-to-3.2`. + """ + self, callback = args[:2] + ctx = self + + # It's also possible to invoke another command which might or + # might not have a callback. In that case we also fill + # in defaults and make a new context for this command. + if isinstance(callback, Command): + other_cmd = callback + callback = other_cmd.callback + ctx = Context(other_cmd, info_name=other_cmd.name, parent=self) + if callback is None: + raise TypeError('The given command does not have a ' + 'callback that can be invoked.') + + for param in other_cmd.params: + if param.name not in kwargs and param.expose_value: + kwargs[param.name] = param.get_default(ctx) + + args = args[2:] + with augment_usage_errors(self): + with ctx: + return callback(*args, **kwargs) + + def forward(*args, **kwargs): + """Similar to :meth:`invoke` but fills in default keyword + arguments from the current context if the other command expects + it. This cannot invoke callbacks directly, only other commands. + """ + self, cmd = args[:2] + + # It's also possible to invoke another command which might or + # might not have a callback. + if not isinstance(cmd, Command): + raise TypeError('Callback is not a command.') + + for param in self.params: + if param not in kwargs: + kwargs[param] = self.params[param] + + return self.invoke(cmd, **kwargs) + + +class BaseCommand(object): + """The base command implements the minimal API contract of commands. + Most code will never use this as it does not implement a lot of useful + functionality but it can act as the direct subclass of alternative + parsing methods that do not depend on the Click parser. + + For instance, this can be used to bridge Click and other systems like + argparse or docopt. + + Because base commands do not implement a lot of the API that other + parts of Click take for granted, they are not supported for all + operations. For instance, they cannot be used with the decorators + usually and they have no built-in callback system. + + .. versionchanged:: 2.0 + Added the `context_settings` parameter. + + :param name: the name of the command to use unless a group overrides it. + :param context_settings: an optional dictionary with defaults that are + passed to the context object. + """ + #: the default for the :attr:`Context.allow_extra_args` flag. + allow_extra_args = False + #: the default for the :attr:`Context.allow_interspersed_args` flag. + allow_interspersed_args = True + #: the default for the :attr:`Context.ignore_unknown_options` flag. + ignore_unknown_options = False + + def __init__(self, name, context_settings=None): + #: the name the command thinks it has. Upon registering a command + #: on a :class:`Group` the group will default the command name + #: with this information. You should instead use the + #: :class:`Context`\'s :attr:`~Context.info_name` attribute. + self.name = name + if context_settings is None: + context_settings = {} + #: an optional dictionary with defaults passed to the context. + self.context_settings = context_settings + + def get_usage(self, ctx): + raise NotImplementedError('Base commands cannot get usage') + + def get_help(self, ctx): + raise NotImplementedError('Base commands cannot get help') + + def make_context(self, info_name, args, parent=None, **extra): + """This function when given an info name and arguments will kick + off the parsing and create a new :class:`Context`. It does not + invoke the actual command callback though. + + :param info_name: the info name for this invokation. Generally this + is the most descriptive name for the script or + command. For the toplevel script it's usually + the name of the script, for commands below it it's + the name of the script. + :param args: the arguments to parse as list of strings. + :param parent: the parent context if available. + :param extra: extra keyword arguments forwarded to the context + constructor. + """ + for key, value in iteritems(self.context_settings): + if key not in extra: + extra[key] = value + ctx = Context(self, info_name=info_name, parent=parent, **extra) + with ctx.scope(cleanup=False): + self.parse_args(ctx, args) + return ctx + + def parse_args(self, ctx, args): + """Given a context and a list of arguments this creates the parser + and parses the arguments, then modifies the context as necessary. + This is automatically invoked by :meth:`make_context`. + """ + raise NotImplementedError('Base commands do not know how to parse ' + 'arguments.') + + def invoke(self, ctx): + """Given a context, this invokes the command. The default + implementation is raising a not implemented error. + """ + raise NotImplementedError('Base commands are not invokable by default') + + def main(self, args=None, prog_name=None, complete_var=None, + standalone_mode=True, **extra): + """This is the way to invoke a script with all the bells and + whistles as a command line application. This will always terminate + the application after a call. If this is not wanted, ``SystemExit`` + needs to be caught. + + This method is also available by directly calling the instance of + a :class:`Command`. + + .. versionadded:: 3.0 + Added the `standalone_mode` flag to control the standalone mode. + + :param args: the arguments that should be used for parsing. If not + provided, ``sys.argv[1:]`` is used. + :param prog_name: the program name that should be used. By default + the program name is constructed by taking the file + name from ``sys.argv[0]``. + :param complete_var: the environment variable that controls the + bash completion support. The default is + ``"__COMPLETE"`` with prog_name in + uppercase. + :param standalone_mode: the default behavior is to invoke the script + in standalone mode. Click will then + handle exceptions and convert them into + error messages and the function will never + return but shut down the interpreter. If + this is set to `False` they will be + propagated to the caller and the return + value of this function is the return value + of :meth:`invoke`. + :param extra: extra keyword arguments are forwarded to the context + constructor. See :class:`Context` for more information. + """ + # If we are in Python 3, we will verify that the environment is + # sane at this point or reject further execution to avoid a + # broken script. + if not PY2: + _verify_python3_env() + else: + _check_for_unicode_literals() + + if args is None: + args = get_os_args() + else: + args = list(args) + + if prog_name is None: + prog_name = make_str(os.path.basename( + sys.argv and sys.argv[0] or __file__)) + + # Hook for the Bash completion. This only activates if the Bash + # completion is actually enabled, otherwise this is quite a fast + # noop. + _bashcomplete(self, prog_name, complete_var) + + try: + try: + with self.make_context(prog_name, args, **extra) as ctx: + rv = self.invoke(ctx) + if not standalone_mode: + return rv + # it's not safe to `ctx.exit(rv)` here! + # note that `rv` may actually contain data like "1" which + # has obvious effects + # more subtle case: `rv=[None, None]` can come out of + # chained commands which all returned `None` -- so it's not + # even always obvious that `rv` indicates success/failure + # by its truthiness/falsiness + ctx.exit() + except (EOFError, KeyboardInterrupt): + echo(file=sys.stderr) + raise Abort() + except ClickException as e: + if not standalone_mode: + raise + e.show() + sys.exit(e.exit_code) + except IOError as e: + if e.errno == errno.EPIPE: + sys.stdout = PacifyFlushWrapper(sys.stdout) + sys.stderr = PacifyFlushWrapper(sys.stderr) + sys.exit(1) + else: + raise + except Exit as e: + if standalone_mode: + sys.exit(e.exit_code) + else: + # in non-standalone mode, return the exit code + # note that this is only reached if `self.invoke` above raises + # an Exit explicitly -- thus bypassing the check there which + # would return its result + # the results of non-standalone execution may therefore be + # somewhat ambiguous: if there are codepaths which lead to + # `ctx.exit(1)` and to `return 1`, the caller won't be able to + # tell the difference between the two + return e.exit_code + except Abort: + if not standalone_mode: + raise + echo('Aborted!', file=sys.stderr) + sys.exit(1) + + def __call__(self, *args, **kwargs): + """Alias for :meth:`main`.""" + return self.main(*args, **kwargs) + + +class Command(BaseCommand): + """Commands are the basic building block of command line interfaces in + Click. A basic command handles command line parsing and might dispatch + more parsing to commands nested below it. + + .. versionchanged:: 2.0 + Added the `context_settings` parameter. + + :param name: the name of the command to use unless a group overrides it. + :param context_settings: an optional dictionary with defaults that are + passed to the context object. + :param callback: the callback to invoke. This is optional. + :param params: the parameters to register with this command. This can + be either :class:`Option` or :class:`Argument` objects. + :param help: the help string to use for this command. + :param epilog: like the help string but it's printed at the end of the + help page after everything else. + :param short_help: the short help to use for this command. This is + shown on the command listing of the parent command. + :param add_help_option: by default each command registers a ``--help`` + option. This can be disabled by this parameter. + :param hidden: hide this command from help outputs. + + :param deprecated: issues a message indicating that + the command is deprecated. + """ + + def __init__(self, name, context_settings=None, callback=None, + params=None, help=None, epilog=None, short_help=None, + options_metavar='[OPTIONS]', add_help_option=True, + hidden=False, deprecated=False): + BaseCommand.__init__(self, name, context_settings) + #: the callback to execute when the command fires. This might be + #: `None` in which case nothing happens. + self.callback = callback + #: the list of parameters for this command in the order they + #: should show up in the help page and execute. Eager parameters + #: will automatically be handled before non eager ones. + self.params = params or [] + # if a form feed (page break) is found in the help text, truncate help + # text to the content preceding the first form feed + if help and '\f' in help: + help = help.split('\f', 1)[0] + self.help = help + self.epilog = epilog + self.options_metavar = options_metavar + self.short_help = short_help + self.add_help_option = add_help_option + self.hidden = hidden + self.deprecated = deprecated + + def get_usage(self, ctx): + formatter = ctx.make_formatter() + self.format_usage(ctx, formatter) + return formatter.getvalue().rstrip('\n') + + def get_params(self, ctx): + rv = self.params + help_option = self.get_help_option(ctx) + if help_option is not None: + rv = rv + [help_option] + return rv + + def format_usage(self, ctx, formatter): + """Writes the usage line into the formatter.""" + pieces = self.collect_usage_pieces(ctx) + formatter.write_usage(ctx.command_path, ' '.join(pieces)) + + def collect_usage_pieces(self, ctx): + """Returns all the pieces that go into the usage line and returns + it as a list of strings. + """ + rv = [self.options_metavar] + for param in self.get_params(ctx): + rv.extend(param.get_usage_pieces(ctx)) + return rv + + def get_help_option_names(self, ctx): + """Returns the names for the help option.""" + all_names = set(ctx.help_option_names) + for param in self.params: + all_names.difference_update(param.opts) + all_names.difference_update(param.secondary_opts) + return all_names + + def get_help_option(self, ctx): + """Returns the help option object.""" + help_options = self.get_help_option_names(ctx) + if not help_options or not self.add_help_option: + return + + def show_help(ctx, param, value): + if value and not ctx.resilient_parsing: + echo(ctx.get_help(), color=ctx.color) + ctx.exit() + return Option(help_options, is_flag=True, + is_eager=True, expose_value=False, + callback=show_help, + help='Show this message and exit.') + + def make_parser(self, ctx): + """Creates the underlying option parser for this command.""" + parser = OptionParser(ctx) + for param in self.get_params(ctx): + param.add_to_parser(parser, ctx) + return parser + + def get_help(self, ctx): + """Formats the help into a string and returns it. This creates a + formatter and will call into the following formatting methods: + """ + formatter = ctx.make_formatter() + self.format_help(ctx, formatter) + return formatter.getvalue().rstrip('\n') + + def get_short_help_str(self, limit=45): + """Gets short help for the command or makes it by shortening the long help string.""" + return self.short_help or self.help and make_default_short_help(self.help, limit) or '' + + def format_help(self, ctx, formatter): + """Writes the help into the formatter if it exists. + + This calls into the following methods: + + - :meth:`format_usage` + - :meth:`format_help_text` + - :meth:`format_options` + - :meth:`format_epilog` + """ + self.format_usage(ctx, formatter) + self.format_help_text(ctx, formatter) + self.format_options(ctx, formatter) + self.format_epilog(ctx, formatter) + + def format_help_text(self, ctx, formatter): + """Writes the help text to the formatter if it exists.""" + if self.help: + formatter.write_paragraph() + with formatter.indentation(): + help_text = self.help + if self.deprecated: + help_text += DEPRECATED_HELP_NOTICE + formatter.write_text(help_text) + elif self.deprecated: + formatter.write_paragraph() + with formatter.indentation(): + formatter.write_text(DEPRECATED_HELP_NOTICE) + + def format_options(self, ctx, formatter): + """Writes all the options into the formatter if they exist.""" + opts = [] + for param in self.get_params(ctx): + rv = param.get_help_record(ctx) + if rv is not None: + opts.append(rv) + + if opts: + with formatter.section('Options'): + formatter.write_dl(opts) + + def format_epilog(self, ctx, formatter): + """Writes the epilog into the formatter if it exists.""" + if self.epilog: + formatter.write_paragraph() + with formatter.indentation(): + formatter.write_text(self.epilog) + + def parse_args(self, ctx, args): + parser = self.make_parser(ctx) + opts, args, param_order = parser.parse_args(args=args) + + for param in iter_params_for_processing( + param_order, self.get_params(ctx)): + value, args = param.handle_parse_result(ctx, opts, args) + + if args and not ctx.allow_extra_args and not ctx.resilient_parsing: + ctx.fail('Got unexpected extra argument%s (%s)' + % (len(args) != 1 and 's' or '', + ' '.join(map(make_str, args)))) + + ctx.args = args + return args + + def invoke(self, ctx): + """Given a context, this invokes the attached callback (if it exists) + in the right way. + """ + _maybe_show_deprecated_notice(self) + if self.callback is not None: + return ctx.invoke(self.callback, **ctx.params) + + +class MultiCommand(Command): + """A multi command is the basic implementation of a command that + dispatches to subcommands. The most common version is the + :class:`Group`. + + :param invoke_without_command: this controls how the multi command itself + is invoked. By default it's only invoked + if a subcommand is provided. + :param no_args_is_help: this controls what happens if no arguments are + provided. This option is enabled by default if + `invoke_without_command` is disabled or disabled + if it's enabled. If enabled this will add + ``--help`` as argument if no arguments are + passed. + :param subcommand_metavar: the string that is used in the documentation + to indicate the subcommand place. + :param chain: if this is set to `True` chaining of multiple subcommands + is enabled. This restricts the form of commands in that + they cannot have optional arguments but it allows + multiple commands to be chained together. + :param result_callback: the result callback to attach to this multi + command. + """ + allow_extra_args = True + allow_interspersed_args = False + + def __init__(self, name=None, invoke_without_command=False, + no_args_is_help=None, subcommand_metavar=None, + chain=False, result_callback=None, **attrs): + Command.__init__(self, name, **attrs) + if no_args_is_help is None: + no_args_is_help = not invoke_without_command + self.no_args_is_help = no_args_is_help + self.invoke_without_command = invoke_without_command + if subcommand_metavar is None: + if chain: + subcommand_metavar = SUBCOMMANDS_METAVAR + else: + subcommand_metavar = SUBCOMMAND_METAVAR + self.subcommand_metavar = subcommand_metavar + self.chain = chain + #: The result callback that is stored. This can be set or + #: overridden with the :func:`resultcallback` decorator. + self.result_callback = result_callback + + if self.chain: + for param in self.params: + if isinstance(param, Argument) and not param.required: + raise RuntimeError('Multi commands in chain mode cannot ' + 'have optional arguments.') + + def collect_usage_pieces(self, ctx): + rv = Command.collect_usage_pieces(self, ctx) + rv.append(self.subcommand_metavar) + return rv + + def format_options(self, ctx, formatter): + Command.format_options(self, ctx, formatter) + self.format_commands(ctx, formatter) + + def resultcallback(self, replace=False): + """Adds a result callback to the chain command. By default if a + result callback is already registered this will chain them but + this can be disabled with the `replace` parameter. The result + callback is invoked with the return value of the subcommand + (or the list of return values from all subcommands if chaining + is enabled) as well as the parameters as they would be passed + to the main callback. + + Example:: + + @click.group() + @click.option('-i', '--input', default=23) + def cli(input): + return 42 + + @cli.resultcallback() + def process_result(result, input): + return result + input + + .. versionadded:: 3.0 + + :param replace: if set to `True` an already existing result + callback will be removed. + """ + def decorator(f): + old_callback = self.result_callback + if old_callback is None or replace: + self.result_callback = f + return f + def function(__value, *args, **kwargs): + return f(old_callback(__value, *args, **kwargs), + *args, **kwargs) + self.result_callback = rv = update_wrapper(function, f) + return rv + return decorator + + def format_commands(self, ctx, formatter): + """Extra format methods for multi methods that adds all the commands + after the options. + """ + commands = [] + for subcommand in self.list_commands(ctx): + cmd = self.get_command(ctx, subcommand) + # What is this, the tool lied about a command. Ignore it + if cmd is None: + continue + if cmd.hidden: + continue + + commands.append((subcommand, cmd)) + + # allow for 3 times the default spacing + if len(commands): + limit = formatter.width - 6 - max(len(cmd[0]) for cmd in commands) + + rows = [] + for subcommand, cmd in commands: + help = cmd.get_short_help_str(limit) + rows.append((subcommand, help)) + + if rows: + with formatter.section('Commands'): + formatter.write_dl(rows) + + def parse_args(self, ctx, args): + if not args and self.no_args_is_help and not ctx.resilient_parsing: + echo(ctx.get_help(), color=ctx.color) + ctx.exit() + + rest = Command.parse_args(self, ctx, args) + if self.chain: + ctx.protected_args = rest + ctx.args = [] + elif rest: + ctx.protected_args, ctx.args = rest[:1], rest[1:] + + return ctx.args + + def invoke(self, ctx): + def _process_result(value): + if self.result_callback is not None: + value = ctx.invoke(self.result_callback, value, + **ctx.params) + return value + + if not ctx.protected_args: + # If we are invoked without command the chain flag controls + # how this happens. If we are not in chain mode, the return + # value here is the return value of the command. + # If however we are in chain mode, the return value is the + # return value of the result processor invoked with an empty + # list (which means that no subcommand actually was executed). + if self.invoke_without_command: + if not self.chain: + return Command.invoke(self, ctx) + with ctx: + Command.invoke(self, ctx) + return _process_result([]) + ctx.fail('Missing command.') + + # Fetch args back out + args = ctx.protected_args + ctx.args + ctx.args = [] + ctx.protected_args = [] + + # If we're not in chain mode, we only allow the invocation of a + # single command but we also inform the current context about the + # name of the command to invoke. + if not self.chain: + # Make sure the context is entered so we do not clean up + # resources until the result processor has worked. + with ctx: + cmd_name, cmd, args = self.resolve_command(ctx, args) + ctx.invoked_subcommand = cmd_name + Command.invoke(self, ctx) + sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) + with sub_ctx: + return _process_result(sub_ctx.command.invoke(sub_ctx)) + + # In chain mode we create the contexts step by step, but after the + # base command has been invoked. Because at that point we do not + # know the subcommands yet, the invoked subcommand attribute is + # set to ``*`` to inform the command that subcommands are executed + # but nothing else. + with ctx: + ctx.invoked_subcommand = args and '*' or None + Command.invoke(self, ctx) + + # Otherwise we make every single context and invoke them in a + # chain. In that case the return value to the result processor + # is the list of all invoked subcommand's results. + contexts = [] + while args: + cmd_name, cmd, args = self.resolve_command(ctx, args) + sub_ctx = cmd.make_context(cmd_name, args, parent=ctx, + allow_extra_args=True, + allow_interspersed_args=False) + contexts.append(sub_ctx) + args, sub_ctx.args = sub_ctx.args, [] + + rv = [] + for sub_ctx in contexts: + with sub_ctx: + rv.append(sub_ctx.command.invoke(sub_ctx)) + return _process_result(rv) + + def resolve_command(self, ctx, args): + cmd_name = make_str(args[0]) + original_cmd_name = cmd_name + + # Get the command + cmd = self.get_command(ctx, cmd_name) + + # If we can't find the command but there is a normalization + # function available, we try with that one. + if cmd is None and ctx.token_normalize_func is not None: + cmd_name = ctx.token_normalize_func(cmd_name) + cmd = self.get_command(ctx, cmd_name) + + # If we don't find the command we want to show an error message + # to the user that it was not provided. However, there is + # something else we should do: if the first argument looks like + # an option we want to kick off parsing again for arguments to + # resolve things like --help which now should go to the main + # place. + if cmd is None and not ctx.resilient_parsing: + if split_opt(cmd_name)[0]: + self.parse_args(ctx, ctx.args) + ctx.fail('No such command "%s".' % original_cmd_name) + + return cmd_name, cmd, args[1:] + + def get_command(self, ctx, cmd_name): + """Given a context and a command name, this returns a + :class:`Command` object if it exists or returns `None`. + """ + raise NotImplementedError() + + def list_commands(self, ctx): + """Returns a list of subcommand names in the order they should + appear. + """ + return [] + + +class Group(MultiCommand): + """A group allows a command to have subcommands attached. This is the + most common way to implement nesting in Click. + + :param commands: a dictionary of commands. + """ + + def __init__(self, name=None, commands=None, **attrs): + MultiCommand.__init__(self, name, **attrs) + #: the registered subcommands by their exported names. + self.commands = commands or {} + + def add_command(self, cmd, name=None): + """Registers another :class:`Command` with this group. If the name + is not provided, the name of the command is used. + """ + name = name or cmd.name + if name is None: + raise TypeError('Command has no name.') + _check_multicommand(self, name, cmd, register=True) + self.commands[name] = cmd + + def command(self, *args, **kwargs): + """A shortcut decorator for declaring and attaching a command to + the group. This takes the same arguments as :func:`command` but + immediately registers the created command with this instance by + calling into :meth:`add_command`. + """ + def decorator(f): + cmd = command(*args, **kwargs)(f) + self.add_command(cmd) + return cmd + return decorator + + def group(self, *args, **kwargs): + """A shortcut decorator for declaring and attaching a group to + the group. This takes the same arguments as :func:`group` but + immediately registers the created command with this instance by + calling into :meth:`add_command`. + """ + def decorator(f): + cmd = group(*args, **kwargs)(f) + self.add_command(cmd) + return cmd + return decorator + + def get_command(self, ctx, cmd_name): + return self.commands.get(cmd_name) + + def list_commands(self, ctx): + return sorted(self.commands) + + +class CommandCollection(MultiCommand): + """A command collection is a multi command that merges multiple multi + commands together into one. This is a straightforward implementation + that accepts a list of different multi commands as sources and + provides all the commands for each of them. + """ + + def __init__(self, name=None, sources=None, **attrs): + MultiCommand.__init__(self, name, **attrs) + #: The list of registered multi commands. + self.sources = sources or [] + + def add_source(self, multi_cmd): + """Adds a new multi command to the chain dispatcher.""" + self.sources.append(multi_cmd) + + def get_command(self, ctx, cmd_name): + for source in self.sources: + rv = source.get_command(ctx, cmd_name) + if rv is not None: + if self.chain: + _check_multicommand(self, cmd_name, rv) + return rv + + def list_commands(self, ctx): + rv = set() + for source in self.sources: + rv.update(source.list_commands(ctx)) + return sorted(rv) + + +class Parameter(object): + r"""A parameter to a command comes in two versions: they are either + :class:`Option`\s or :class:`Argument`\s. Other subclasses are currently + not supported by design as some of the internals for parsing are + intentionally not finalized. + + Some settings are supported by both options and arguments. + + .. versionchanged:: 2.0 + Changed signature for parameter callback to also be passed the + parameter. In Click 2.0, the old callback format will still work, + but it will raise a warning to give you change to migrate the + code easier. + + :param param_decls: the parameter declarations for this option or + argument. This is a list of flags or argument + names. + :param type: the type that should be used. Either a :class:`ParamType` + or a Python type. The later is converted into the former + automatically if supported. + :param required: controls if this is optional or not. + :param default: the default value if omitted. This can also be a callable, + in which case it's invoked when the default is needed + without any arguments. + :param callback: a callback that should be executed after the parameter + was matched. This is called as ``fn(ctx, param, + value)`` and needs to return the value. Before Click + 2.0, the signature was ``(ctx, value)``. + :param nargs: the number of arguments to match. If not ``1`` the return + value is a tuple instead of single value. The default for + nargs is ``1`` (except if the type is a tuple, then it's + the arity of the tuple). + :param metavar: how the value is represented in the help page. + :param expose_value: if this is `True` then the value is passed onwards + to the command callback and stored on the context, + otherwise it's skipped. + :param is_eager: eager values are processed before non eager ones. This + should not be set for arguments or it will inverse the + order of processing. + :param envvar: a string or list of strings that are environment variables + that should be checked. + """ + param_type_name = 'parameter' + + def __init__(self, param_decls=None, type=None, required=False, + default=None, callback=None, nargs=None, metavar=None, + expose_value=True, is_eager=False, envvar=None, + autocompletion=None): + self.name, self.opts, self.secondary_opts = \ + self._parse_decls(param_decls or (), expose_value) + + self.type = convert_type(type, default) + + # Default nargs to what the type tells us if we have that + # information available. + if nargs is None: + if self.type.is_composite: + nargs = self.type.arity + else: + nargs = 1 + + self.required = required + self.callback = callback + self.nargs = nargs + self.multiple = False + self.expose_value = expose_value + self.default = default + self.is_eager = is_eager + self.metavar = metavar + self.envvar = envvar + self.autocompletion = autocompletion + + @property + def human_readable_name(self): + """Returns the human readable name of this parameter. This is the + same as the name for options, but the metavar for arguments. + """ + return self.name + + def make_metavar(self): + if self.metavar is not None: + return self.metavar + metavar = self.type.get_metavar(self) + if metavar is None: + metavar = self.type.name.upper() + if self.nargs != 1: + metavar += '...' + return metavar + + def get_default(self, ctx): + """Given a context variable this calculates the default value.""" + # Otherwise go with the regular default. + if callable(self.default): + rv = self.default() + else: + rv = self.default + return self.type_cast_value(ctx, rv) + + def add_to_parser(self, parser, ctx): + pass + + def consume_value(self, ctx, opts): + value = opts.get(self.name) + if value is None: + value = self.value_from_envvar(ctx) + if value is None: + value = ctx.lookup_default(self.name) + return value + + def type_cast_value(self, ctx, value): + """Given a value this runs it properly through the type system. + This automatically handles things like `nargs` and `multiple` as + well as composite types. + """ + if self.type.is_composite: + if self.nargs <= 1: + raise TypeError('Attempted to invoke composite type ' + 'but nargs has been set to %s. This is ' + 'not supported; nargs needs to be set to ' + 'a fixed value > 1.' % self.nargs) + if self.multiple: + return tuple(self.type(x or (), self, ctx) for x in value or ()) + return self.type(value or (), self, ctx) + + def _convert(value, level): + if level == 0: + return self.type(value, self, ctx) + return tuple(_convert(x, level - 1) for x in value or ()) + return _convert(value, (self.nargs != 1) + bool(self.multiple)) + + def process_value(self, ctx, value): + """Given a value and context this runs the logic to convert the + value as necessary. + """ + # If the value we were given is None we do nothing. This way + # code that calls this can easily figure out if something was + # not provided. Otherwise it would be converted into an empty + # tuple for multiple invocations which is inconvenient. + if value is not None: + return self.type_cast_value(ctx, value) + + def value_is_missing(self, value): + if value is None: + return True + if (self.nargs != 1 or self.multiple) and value == (): + return True + return False + + def full_process_value(self, ctx, value): + value = self.process_value(ctx, value) + + if value is None and not ctx.resilient_parsing: + value = self.get_default(ctx) + + if self.required and self.value_is_missing(value): + raise MissingParameter(ctx=ctx, param=self) + + return value + + def resolve_envvar_value(self, ctx): + if self.envvar is None: + return + if isinstance(self.envvar, (tuple, list)): + for envvar in self.envvar: + rv = os.environ.get(envvar) + if rv is not None: + return rv + else: + return os.environ.get(self.envvar) + + def value_from_envvar(self, ctx): + rv = self.resolve_envvar_value(ctx) + if rv is not None and self.nargs != 1: + rv = self.type.split_envvar_value(rv) + return rv + + def handle_parse_result(self, ctx, opts, args): + with augment_usage_errors(ctx, param=self): + value = self.consume_value(ctx, opts) + try: + value = self.full_process_value(ctx, value) + except Exception: + if not ctx.resilient_parsing: + raise + value = None + if self.callback is not None: + try: + value = invoke_param_callback( + self.callback, ctx, self, value) + except Exception: + if not ctx.resilient_parsing: + raise + + if self.expose_value: + ctx.params[self.name] = value + return value, args + + def get_help_record(self, ctx): + pass + + def get_usage_pieces(self, ctx): + return [] + + def get_error_hint(self, ctx): + """Get a stringified version of the param for use in error messages to + indicate which param caused the error. + """ + hint_list = self.opts or [self.human_readable_name] + return ' / '.join('"%s"' % x for x in hint_list) + + +class Option(Parameter): + """Options are usually optional values on the command line and + have some extra features that arguments don't have. + + All other parameters are passed onwards to the parameter constructor. + + :param show_default: controls if the default value should be shown on the + help page. Normally, defaults are not shown. If this + value is a string, it shows the string instead of the + value. This is particularly useful for dynamic options. + :param show_envvar: controls if an environment variable should be shown on + the help page. Normally, environment variables + are not shown. + :param prompt: if set to `True` or a non empty string then the user will be + prompted for input. If set to `True` the prompt will be the + option name capitalized. + :param confirmation_prompt: if set then the value will need to be confirmed + if it was prompted for. + :param hide_input: if this is `True` then the input on the prompt will be + hidden from the user. This is useful for password + input. + :param is_flag: forces this option to act as a flag. The default is + auto detection. + :param flag_value: which value should be used for this flag if it's + enabled. This is set to a boolean automatically if + the option string contains a slash to mark two options. + :param multiple: if this is set to `True` then the argument is accepted + multiple times and recorded. This is similar to ``nargs`` + in how it works but supports arbitrary number of + arguments. + :param count: this flag makes an option increment an integer. + :param allow_from_autoenv: if this is enabled then the value of this + parameter will be pulled from an environment + variable in case a prefix is defined on the + context. + :param help: the help string. + :param hidden: hide this option from help outputs. + """ + param_type_name = 'option' + + def __init__(self, param_decls=None, show_default=False, + prompt=False, confirmation_prompt=False, + hide_input=False, is_flag=None, flag_value=None, + multiple=False, count=False, allow_from_autoenv=True, + type=None, help=None, hidden=False, show_choices=True, + show_envvar=False, **attrs): + default_is_missing = attrs.get('default', _missing) is _missing + Parameter.__init__(self, param_decls, type=type, **attrs) + + if prompt is True: + prompt_text = self.name.replace('_', ' ').capitalize() + elif prompt is False: + prompt_text = None + else: + prompt_text = prompt + self.prompt = prompt_text + self.confirmation_prompt = confirmation_prompt + self.hide_input = hide_input + self.hidden = hidden + + # Flags + if is_flag is None: + if flag_value is not None: + is_flag = True + else: + is_flag = bool(self.secondary_opts) + if is_flag and default_is_missing: + self.default = False + if flag_value is None: + flag_value = not self.default + self.is_flag = is_flag + self.flag_value = flag_value + if self.is_flag and isinstance(self.flag_value, bool) \ + and type is None: + self.type = BOOL + self.is_bool_flag = True + else: + self.is_bool_flag = False + + # Counting + self.count = count + if count: + if type is None: + self.type = IntRange(min=0) + if default_is_missing: + self.default = 0 + + self.multiple = multiple + self.allow_from_autoenv = allow_from_autoenv + self.help = help + self.show_default = show_default + self.show_choices = show_choices + self.show_envvar = show_envvar + + # Sanity check for stuff we don't support + if __debug__: + if self.nargs < 0: + raise TypeError('Options cannot have nargs < 0') + if self.prompt and self.is_flag and not self.is_bool_flag: + raise TypeError('Cannot prompt for flags that are not bools.') + if not self.is_bool_flag and self.secondary_opts: + raise TypeError('Got secondary option for non boolean flag.') + if self.is_bool_flag and self.hide_input \ + and self.prompt is not None: + raise TypeError('Hidden input does not work with boolean ' + 'flag prompts.') + if self.count: + if self.multiple: + raise TypeError('Options cannot be multiple and count ' + 'at the same time.') + elif self.is_flag: + raise TypeError('Options cannot be count and flags at ' + 'the same time.') + + def _parse_decls(self, decls, expose_value): + opts = [] + secondary_opts = [] + name = None + possible_names = [] + + for decl in decls: + if isidentifier(decl): + if name is not None: + raise TypeError('Name defined twice') + name = decl + else: + split_char = decl[:1] == '/' and ';' or '/' + if split_char in decl: + first, second = decl.split(split_char, 1) + first = first.rstrip() + if first: + possible_names.append(split_opt(first)) + opts.append(first) + second = second.lstrip() + if second: + secondary_opts.append(second.lstrip()) + else: + possible_names.append(split_opt(decl)) + opts.append(decl) + + if name is None and possible_names: + possible_names.sort(key=lambda x: -len(x[0])) # group long options first + name = possible_names[0][1].replace('-', '_').lower() + if not isidentifier(name): + name = None + + if name is None: + if not expose_value: + return None, opts, secondary_opts + raise TypeError('Could not determine name for option') + + if not opts and not secondary_opts: + raise TypeError('No options defined but a name was passed (%s). ' + 'Did you mean to declare an argument instead ' + 'of an option?' % name) + + return name, opts, secondary_opts + + def add_to_parser(self, parser, ctx): + kwargs = { + 'dest': self.name, + 'nargs': self.nargs, + 'obj': self, + } + + if self.multiple: + action = 'append' + elif self.count: + action = 'count' + else: + action = 'store' + + if self.is_flag: + kwargs.pop('nargs', None) + if self.is_bool_flag and self.secondary_opts: + parser.add_option(self.opts, action=action + '_const', + const=True, **kwargs) + parser.add_option(self.secondary_opts, action=action + + '_const', const=False, **kwargs) + else: + parser.add_option(self.opts, action=action + '_const', + const=self.flag_value, + **kwargs) + else: + kwargs['action'] = action + parser.add_option(self.opts, **kwargs) + + def get_help_record(self, ctx): + if self.hidden: + return + any_prefix_is_slash = [] + + def _write_opts(opts): + rv, any_slashes = join_options(opts) + if any_slashes: + any_prefix_is_slash[:] = [True] + if not self.is_flag and not self.count: + rv += ' ' + self.make_metavar() + return rv + + rv = [_write_opts(self.opts)] + if self.secondary_opts: + rv.append(_write_opts(self.secondary_opts)) + + help = self.help or '' + extra = [] + if self.show_envvar: + envvar = self.envvar + if envvar is None: + if self.allow_from_autoenv and \ + ctx.auto_envvar_prefix is not None: + envvar = '%s_%s' % (ctx.auto_envvar_prefix, self.name.upper()) + if envvar is not None: + extra.append('env var: %s' % ( + ', '.join('%s' % d for d in envvar) + if isinstance(envvar, (list, tuple)) + else envvar, )) + if self.default is not None and self.show_default: + if isinstance(self.show_default, string_types): + default_string = '({})'.format(self.show_default) + elif isinstance(self.default, (list, tuple)): + default_string = ', '.join('%s' % d for d in self.default) + elif inspect.isfunction(self.default): + default_string = "(dynamic)" + else: + default_string = self.default + extra.append('default: {}'.format(default_string)) + + if self.required: + extra.append('required') + if extra: + help = '%s[%s]' % (help and help + ' ' or '', '; '.join(extra)) + + return ((any_prefix_is_slash and '; ' or ' / ').join(rv), help) + + def get_default(self, ctx): + # If we're a non boolean flag out default is more complex because + # we need to look at all flags in the same group to figure out + # if we're the the default one in which case we return the flag + # value as default. + if self.is_flag and not self.is_bool_flag: + for param in ctx.command.params: + if param.name == self.name and param.default: + return param.flag_value + return None + return Parameter.get_default(self, ctx) + + def prompt_for_value(self, ctx): + """This is an alternative flow that can be activated in the full + value processing if a value does not exist. It will prompt the + user until a valid value exists and then returns the processed + value as result. + """ + # Calculate the default before prompting anything to be stable. + default = self.get_default(ctx) + + # If this is a prompt for a flag we need to handle this + # differently. + if self.is_bool_flag: + return confirm(self.prompt, default) + + return prompt(self.prompt, default=default, type=self.type, + hide_input=self.hide_input, show_choices=self.show_choices, + confirmation_prompt=self.confirmation_prompt, + value_proc=lambda x: self.process_value(ctx, x)) + + def resolve_envvar_value(self, ctx): + rv = Parameter.resolve_envvar_value(self, ctx) + if rv is not None: + return rv + if self.allow_from_autoenv and \ + ctx.auto_envvar_prefix is not None: + envvar = '%s_%s' % (ctx.auto_envvar_prefix, self.name.upper()) + return os.environ.get(envvar) + + def value_from_envvar(self, ctx): + rv = self.resolve_envvar_value(ctx) + if rv is None: + return None + value_depth = (self.nargs != 1) + bool(self.multiple) + if value_depth > 0 and rv is not None: + rv = self.type.split_envvar_value(rv) + if self.multiple and self.nargs != 1: + rv = batch(rv, self.nargs) + return rv + + def full_process_value(self, ctx, value): + if value is None and self.prompt is not None \ + and not ctx.resilient_parsing: + return self.prompt_for_value(ctx) + return Parameter.full_process_value(self, ctx, value) + + +class Argument(Parameter): + """Arguments are positional parameters to a command. They generally + provide fewer features than options but can have infinite ``nargs`` + and are required by default. + + All parameters are passed onwards to the parameter constructor. + """ + param_type_name = 'argument' + + def __init__(self, param_decls, required=None, **attrs): + if required is None: + if attrs.get('default') is not None: + required = False + else: + required = attrs.get('nargs', 1) > 0 + Parameter.__init__(self, param_decls, required=required, **attrs) + if self.default is not None and self.nargs < 0: + raise TypeError('nargs=-1 in combination with a default value ' + 'is not supported.') + + @property + def human_readable_name(self): + if self.metavar is not None: + return self.metavar + return self.name.upper() + + def make_metavar(self): + if self.metavar is not None: + return self.metavar + var = self.type.get_metavar(self) + if not var: + var = self.name.upper() + if not self.required: + var = '[%s]' % var + if self.nargs != 1: + var += '...' + return var + + def _parse_decls(self, decls, expose_value): + if not decls: + if not expose_value: + return None, [], [] + raise TypeError('Could not determine name for argument') + if len(decls) == 1: + name = arg = decls[0] + name = name.replace('-', '_').lower() + else: + raise TypeError('Arguments take exactly one ' + 'parameter declaration, got %d' % len(decls)) + return name, [arg], [] + + def get_usage_pieces(self, ctx): + return [self.make_metavar()] + + def get_error_hint(self, ctx): + return '"%s"' % self.make_metavar() + + def add_to_parser(self, parser, ctx): + parser.add_argument(dest=self.name, nargs=self.nargs, + obj=self) + + +# Circular dependency between decorators and core +from .decorators import command, group diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/decorators.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/decorators.py new file mode 100644 index 00000000..c57c5308 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/decorators.py @@ -0,0 +1,311 @@ +import sys +import inspect + +from functools import update_wrapper + +from ._compat import iteritems +from ._unicodefun import _check_for_unicode_literals +from .utils import echo +from .globals import get_current_context + + +def pass_context(f): + """Marks a callback as wanting to receive the current context + object as first argument. + """ + def new_func(*args, **kwargs): + return f(get_current_context(), *args, **kwargs) + return update_wrapper(new_func, f) + + +def pass_obj(f): + """Similar to :func:`pass_context`, but only pass the object on the + context onwards (:attr:`Context.obj`). This is useful if that object + represents the state of a nested system. + """ + def new_func(*args, **kwargs): + return f(get_current_context().obj, *args, **kwargs) + return update_wrapper(new_func, f) + + +def make_pass_decorator(object_type, ensure=False): + """Given an object type this creates a decorator that will work + similar to :func:`pass_obj` but instead of passing the object of the + current context, it will find the innermost context of type + :func:`object_type`. + + This generates a decorator that works roughly like this:: + + from functools import update_wrapper + + def decorator(f): + @pass_context + def new_func(ctx, *args, **kwargs): + obj = ctx.find_object(object_type) + return ctx.invoke(f, obj, *args, **kwargs) + return update_wrapper(new_func, f) + return decorator + + :param object_type: the type of the object to pass. + :param ensure: if set to `True`, a new object will be created and + remembered on the context if it's not there yet. + """ + def decorator(f): + def new_func(*args, **kwargs): + ctx = get_current_context() + if ensure: + obj = ctx.ensure_object(object_type) + else: + obj = ctx.find_object(object_type) + if obj is None: + raise RuntimeError('Managed to invoke callback without a ' + 'context object of type %r existing' + % object_type.__name__) + return ctx.invoke(f, obj, *args, **kwargs) + return update_wrapper(new_func, f) + return decorator + + +def _make_command(f, name, attrs, cls): + if isinstance(f, Command): + raise TypeError('Attempted to convert a callback into a ' + 'command twice.') + try: + params = f.__click_params__ + params.reverse() + del f.__click_params__ + except AttributeError: + params = [] + help = attrs.get('help') + if help is None: + help = inspect.getdoc(f) + if isinstance(help, bytes): + help = help.decode('utf-8') + else: + help = inspect.cleandoc(help) + attrs['help'] = help + _check_for_unicode_literals() + return cls(name=name or f.__name__.lower().replace('_', '-'), + callback=f, params=params, **attrs) + + +def command(name=None, cls=None, **attrs): + r"""Creates a new :class:`Command` and uses the decorated function as + callback. This will also automatically attach all decorated + :func:`option`\s and :func:`argument`\s as parameters to the command. + + The name of the command defaults to the name of the function. If you + want to change that, you can pass the intended name as the first + argument. + + All keyword arguments are forwarded to the underlying command class. + + Once decorated the function turns into a :class:`Command` instance + that can be invoked as a command line utility or be attached to a + command :class:`Group`. + + :param name: the name of the command. This defaults to the function + name with underscores replaced by dashes. + :param cls: the command class to instantiate. This defaults to + :class:`Command`. + """ + if cls is None: + cls = Command + def decorator(f): + cmd = _make_command(f, name, attrs, cls) + cmd.__doc__ = f.__doc__ + return cmd + return decorator + + +def group(name=None, **attrs): + """Creates a new :class:`Group` with a function as callback. This + works otherwise the same as :func:`command` just that the `cls` + parameter is set to :class:`Group`. + """ + attrs.setdefault('cls', Group) + return command(name, **attrs) + + +def _param_memo(f, param): + if isinstance(f, Command): + f.params.append(param) + else: + if not hasattr(f, '__click_params__'): + f.__click_params__ = [] + f.__click_params__.append(param) + + +def argument(*param_decls, **attrs): + """Attaches an argument to the command. All positional arguments are + passed as parameter declarations to :class:`Argument`; all keyword + arguments are forwarded unchanged (except ``cls``). + This is equivalent to creating an :class:`Argument` instance manually + and attaching it to the :attr:`Command.params` list. + + :param cls: the argument class to instantiate. This defaults to + :class:`Argument`. + """ + def decorator(f): + ArgumentClass = attrs.pop('cls', Argument) + _param_memo(f, ArgumentClass(param_decls, **attrs)) + return f + return decorator + + +def option(*param_decls, **attrs): + """Attaches an option to the command. All positional arguments are + passed as parameter declarations to :class:`Option`; all keyword + arguments are forwarded unchanged (except ``cls``). + This is equivalent to creating an :class:`Option` instance manually + and attaching it to the :attr:`Command.params` list. + + :param cls: the option class to instantiate. This defaults to + :class:`Option`. + """ + def decorator(f): + # Issue 926, copy attrs, so pre-defined options can re-use the same cls= + option_attrs = attrs.copy() + + if 'help' in option_attrs: + option_attrs['help'] = inspect.cleandoc(option_attrs['help']) + OptionClass = option_attrs.pop('cls', Option) + _param_memo(f, OptionClass(param_decls, **option_attrs)) + return f + return decorator + + +def confirmation_option(*param_decls, **attrs): + """Shortcut for confirmation prompts that can be ignored by passing + ``--yes`` as parameter. + + This is equivalent to decorating a function with :func:`option` with + the following parameters:: + + def callback(ctx, param, value): + if not value: + ctx.abort() + + @click.command() + @click.option('--yes', is_flag=True, callback=callback, + expose_value=False, prompt='Do you want to continue?') + def dropdb(): + pass + """ + def decorator(f): + def callback(ctx, param, value): + if not value: + ctx.abort() + attrs.setdefault('is_flag', True) + attrs.setdefault('callback', callback) + attrs.setdefault('expose_value', False) + attrs.setdefault('prompt', 'Do you want to continue?') + attrs.setdefault('help', 'Confirm the action without prompting.') + return option(*(param_decls or ('--yes',)), **attrs)(f) + return decorator + + +def password_option(*param_decls, **attrs): + """Shortcut for password prompts. + + This is equivalent to decorating a function with :func:`option` with + the following parameters:: + + @click.command() + @click.option('--password', prompt=True, confirmation_prompt=True, + hide_input=True) + def changeadmin(password): + pass + """ + def decorator(f): + attrs.setdefault('prompt', True) + attrs.setdefault('confirmation_prompt', True) + attrs.setdefault('hide_input', True) + return option(*(param_decls or ('--password',)), **attrs)(f) + return decorator + + +def version_option(version=None, *param_decls, **attrs): + """Adds a ``--version`` option which immediately ends the program + printing out the version number. This is implemented as an eager + option that prints the version and exits the program in the callback. + + :param version: the version number to show. If not provided Click + attempts an auto discovery via setuptools. + :param prog_name: the name of the program (defaults to autodetection) + :param message: custom message to show instead of the default + (``'%(prog)s, version %(version)s'``) + :param others: everything else is forwarded to :func:`option`. + """ + if version is None: + if hasattr(sys, '_getframe'): + module = sys._getframe(1).f_globals.get('__name__') + else: + module = '' + + def decorator(f): + prog_name = attrs.pop('prog_name', None) + message = attrs.pop('message', '%(prog)s, version %(version)s') + + def callback(ctx, param, value): + if not value or ctx.resilient_parsing: + return + prog = prog_name + if prog is None: + prog = ctx.find_root().info_name + ver = version + if ver is None: + try: + import pkg_resources + except ImportError: + pass + else: + for dist in pkg_resources.working_set: + scripts = dist.get_entry_map().get('console_scripts') or {} + for script_name, entry_point in iteritems(scripts): + if entry_point.module_name == module: + ver = dist.version + break + if ver is None: + raise RuntimeError('Could not determine version') + echo(message % { + 'prog': prog, + 'version': ver, + }, color=ctx.color) + ctx.exit() + + attrs.setdefault('is_flag', True) + attrs.setdefault('expose_value', False) + attrs.setdefault('is_eager', True) + attrs.setdefault('help', 'Show the version and exit.') + attrs['callback'] = callback + return option(*(param_decls or ('--version',)), **attrs)(f) + return decorator + + +def help_option(*param_decls, **attrs): + """Adds a ``--help`` option which immediately ends the program + printing out the help page. This is usually unnecessary to add as + this is added by default to all commands unless suppressed. + + Like :func:`version_option`, this is implemented as eager option that + prints in the callback and exits. + + All arguments are forwarded to :func:`option`. + """ + def decorator(f): + def callback(ctx, param, value): + if value and not ctx.resilient_parsing: + echo(ctx.get_help(), color=ctx.color) + ctx.exit() + attrs.setdefault('is_flag', True) + attrs.setdefault('expose_value', False) + attrs.setdefault('help', 'Show this message and exit.') + attrs.setdefault('is_eager', True) + attrs['callback'] = callback + return option(*(param_decls or ('--help',)), **attrs)(f) + return decorator + + +# Circular dependencies between core and decorators +from .core import Command, Group, Argument, Option diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/exceptions.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/exceptions.py new file mode 100644 index 00000000..6fa17658 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/exceptions.py @@ -0,0 +1,235 @@ +from ._compat import PY2, filename_to_ui, get_text_stderr +from .utils import echo + + +def _join_param_hints(param_hint): + if isinstance(param_hint, (tuple, list)): + return ' / '.join('"%s"' % x for x in param_hint) + return param_hint + + +class ClickException(Exception): + """An exception that Click can handle and show to the user.""" + + #: The exit code for this exception + exit_code = 1 + + def __init__(self, message): + ctor_msg = message + if PY2: + if ctor_msg is not None: + ctor_msg = ctor_msg.encode('utf-8') + Exception.__init__(self, ctor_msg) + self.message = message + + def format_message(self): + return self.message + + def __str__(self): + return self.message + + if PY2: + __unicode__ = __str__ + + def __str__(self): + return self.message.encode('utf-8') + + def show(self, file=None): + if file is None: + file = get_text_stderr() + echo('Error: %s' % self.format_message(), file=file) + + +class UsageError(ClickException): + """An internal exception that signals a usage error. This typically + aborts any further handling. + + :param message: the error message to display. + :param ctx: optionally the context that caused this error. Click will + fill in the context automatically in some situations. + """ + exit_code = 2 + + def __init__(self, message, ctx=None): + ClickException.__init__(self, message) + self.ctx = ctx + self.cmd = self.ctx and self.ctx.command or None + + def show(self, file=None): + if file is None: + file = get_text_stderr() + color = None + hint = '' + if (self.cmd is not None and + self.cmd.get_help_option(self.ctx) is not None): + hint = ('Try "%s %s" for help.\n' + % (self.ctx.command_path, self.ctx.help_option_names[0])) + if self.ctx is not None: + color = self.ctx.color + echo(self.ctx.get_usage() + '\n%s' % hint, file=file, color=color) + echo('Error: %s' % self.format_message(), file=file, color=color) + + +class BadParameter(UsageError): + """An exception that formats out a standardized error message for a + bad parameter. This is useful when thrown from a callback or type as + Click will attach contextual information to it (for instance, which + parameter it is). + + .. versionadded:: 2.0 + + :param param: the parameter object that caused this error. This can + be left out, and Click will attach this info itself + if possible. + :param param_hint: a string that shows up as parameter name. This + can be used as alternative to `param` in cases + where custom validation should happen. If it is + a string it's used as such, if it's a list then + each item is quoted and separated. + """ + + def __init__(self, message, ctx=None, param=None, + param_hint=None): + UsageError.__init__(self, message, ctx) + self.param = param + self.param_hint = param_hint + + def format_message(self): + if self.param_hint is not None: + param_hint = self.param_hint + elif self.param is not None: + param_hint = self.param.get_error_hint(self.ctx) + else: + return 'Invalid value: %s' % self.message + param_hint = _join_param_hints(param_hint) + + return 'Invalid value for %s: %s' % (param_hint, self.message) + + +class MissingParameter(BadParameter): + """Raised if click required an option or argument but it was not + provided when invoking the script. + + .. versionadded:: 4.0 + + :param param_type: a string that indicates the type of the parameter. + The default is to inherit the parameter type from + the given `param`. Valid values are ``'parameter'``, + ``'option'`` or ``'argument'``. + """ + + def __init__(self, message=None, ctx=None, param=None, + param_hint=None, param_type=None): + BadParameter.__init__(self, message, ctx, param, param_hint) + self.param_type = param_type + + def format_message(self): + if self.param_hint is not None: + param_hint = self.param_hint + elif self.param is not None: + param_hint = self.param.get_error_hint(self.ctx) + else: + param_hint = None + param_hint = _join_param_hints(param_hint) + + param_type = self.param_type + if param_type is None and self.param is not None: + param_type = self.param.param_type_name + + msg = self.message + if self.param is not None: + msg_extra = self.param.type.get_missing_message(self.param) + if msg_extra: + if msg: + msg += '. ' + msg_extra + else: + msg = msg_extra + + return 'Missing %s%s%s%s' % ( + param_type, + param_hint and ' %s' % param_hint or '', + msg and '. ' or '.', + msg or '', + ) + + +class NoSuchOption(UsageError): + """Raised if click attempted to handle an option that does not + exist. + + .. versionadded:: 4.0 + """ + + def __init__(self, option_name, message=None, possibilities=None, + ctx=None): + if message is None: + message = 'no such option: %s' % option_name + UsageError.__init__(self, message, ctx) + self.option_name = option_name + self.possibilities = possibilities + + def format_message(self): + bits = [self.message] + if self.possibilities: + if len(self.possibilities) == 1: + bits.append('Did you mean %s?' % self.possibilities[0]) + else: + possibilities = sorted(self.possibilities) + bits.append('(Possible options: %s)' % ', '.join(possibilities)) + return ' '.join(bits) + + +class BadOptionUsage(UsageError): + """Raised if an option is generally supplied but the use of the option + was incorrect. This is for instance raised if the number of arguments + for an option is not correct. + + .. versionadded:: 4.0 + + :param option_name: the name of the option being used incorrectly. + """ + + def __init__(self, option_name, message, ctx=None): + UsageError.__init__(self, message, ctx) + self.option_name = option_name + + +class BadArgumentUsage(UsageError): + """Raised if an argument is generally supplied but the use of the argument + was incorrect. This is for instance raised if the number of values + for an argument is not correct. + + .. versionadded:: 6.0 + """ + + def __init__(self, message, ctx=None): + UsageError.__init__(self, message, ctx) + + +class FileError(ClickException): + """Raised if a file cannot be opened.""" + + def __init__(self, filename, hint=None): + ui_filename = filename_to_ui(filename) + if hint is None: + hint = 'unknown error' + ClickException.__init__(self, hint) + self.ui_filename = ui_filename + self.filename = filename + + def format_message(self): + return 'Could not open file %s: %s' % (self.ui_filename, self.message) + + +class Abort(RuntimeError): + """An internal signalling exception that signals Click to abort.""" + + +class Exit(RuntimeError): + """An exception that indicates that the application should exit with some + status code. + + :param code: the status code to exit with. + """ + def __init__(self, code=0): + self.exit_code = code diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/formatting.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/formatting.py new file mode 100644 index 00000000..a3d6a4d3 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/formatting.py @@ -0,0 +1,256 @@ +from contextlib import contextmanager +from .termui import get_terminal_size +from .parser import split_opt +from ._compat import term_len + + +# Can force a width. This is used by the test system +FORCED_WIDTH = None + + +def measure_table(rows): + widths = {} + for row in rows: + for idx, col in enumerate(row): + widths[idx] = max(widths.get(idx, 0), term_len(col)) + return tuple(y for x, y in sorted(widths.items())) + + +def iter_rows(rows, col_count): + for row in rows: + row = tuple(row) + yield row + ('',) * (col_count - len(row)) + + +def wrap_text(text, width=78, initial_indent='', subsequent_indent='', + preserve_paragraphs=False): + """A helper function that intelligently wraps text. By default, it + assumes that it operates on a single paragraph of text but if the + `preserve_paragraphs` parameter is provided it will intelligently + handle paragraphs (defined by two empty lines). + + If paragraphs are handled, a paragraph can be prefixed with an empty + line containing the ``\\b`` character (``\\x08``) to indicate that + no rewrapping should happen in that block. + + :param text: the text that should be rewrapped. + :param width: the maximum width for the text. + :param initial_indent: the initial indent that should be placed on the + first line as a string. + :param subsequent_indent: the indent string that should be placed on + each consecutive line. + :param preserve_paragraphs: if this flag is set then the wrapping will + intelligently handle paragraphs. + """ + from ._textwrap import TextWrapper + text = text.expandtabs() + wrapper = TextWrapper(width, initial_indent=initial_indent, + subsequent_indent=subsequent_indent, + replace_whitespace=False) + if not preserve_paragraphs: + return wrapper.fill(text) + + p = [] + buf = [] + indent = None + + def _flush_par(): + if not buf: + return + if buf[0].strip() == '\b': + p.append((indent or 0, True, '\n'.join(buf[1:]))) + else: + p.append((indent or 0, False, ' '.join(buf))) + del buf[:] + + for line in text.splitlines(): + if not line: + _flush_par() + indent = None + else: + if indent is None: + orig_len = term_len(line) + line = line.lstrip() + indent = orig_len - term_len(line) + buf.append(line) + _flush_par() + + rv = [] + for indent, raw, text in p: + with wrapper.extra_indent(' ' * indent): + if raw: + rv.append(wrapper.indent_only(text)) + else: + rv.append(wrapper.fill(text)) + + return '\n\n'.join(rv) + + +class HelpFormatter(object): + """This class helps with formatting text-based help pages. It's + usually just needed for very special internal cases, but it's also + exposed so that developers can write their own fancy outputs. + + At present, it always writes into memory. + + :param indent_increment: the additional increment for each level. + :param width: the width for the text. This defaults to the terminal + width clamped to a maximum of 78. + """ + + def __init__(self, indent_increment=2, width=None, max_width=None): + self.indent_increment = indent_increment + if max_width is None: + max_width = 80 + if width is None: + width = FORCED_WIDTH + if width is None: + width = max(min(get_terminal_size()[0], max_width) - 2, 50) + self.width = width + self.current_indent = 0 + self.buffer = [] + + def write(self, string): + """Writes a unicode string into the internal buffer.""" + self.buffer.append(string) + + def indent(self): + """Increases the indentation.""" + self.current_indent += self.indent_increment + + def dedent(self): + """Decreases the indentation.""" + self.current_indent -= self.indent_increment + + def write_usage(self, prog, args='', prefix='Usage: '): + """Writes a usage line into the buffer. + + :param prog: the program name. + :param args: whitespace separated list of arguments. + :param prefix: the prefix for the first line. + """ + usage_prefix = '%*s%s ' % (self.current_indent, prefix, prog) + text_width = self.width - self.current_indent + + if text_width >= (term_len(usage_prefix) + 20): + # The arguments will fit to the right of the prefix. + indent = ' ' * term_len(usage_prefix) + self.write(wrap_text(args, text_width, + initial_indent=usage_prefix, + subsequent_indent=indent)) + else: + # The prefix is too long, put the arguments on the next line. + self.write(usage_prefix) + self.write('\n') + indent = ' ' * (max(self.current_indent, term_len(prefix)) + 4) + self.write(wrap_text(args, text_width, + initial_indent=indent, + subsequent_indent=indent)) + + self.write('\n') + + def write_heading(self, heading): + """Writes a heading into the buffer.""" + self.write('%*s%s:\n' % (self.current_indent, '', heading)) + + def write_paragraph(self): + """Writes a paragraph into the buffer.""" + if self.buffer: + self.write('\n') + + def write_text(self, text): + """Writes re-indented text into the buffer. This rewraps and + preserves paragraphs. + """ + text_width = max(self.width - self.current_indent, 11) + indent = ' ' * self.current_indent + self.write(wrap_text(text, text_width, + initial_indent=indent, + subsequent_indent=indent, + preserve_paragraphs=True)) + self.write('\n') + + def write_dl(self, rows, col_max=30, col_spacing=2): + """Writes a definition list into the buffer. This is how options + and commands are usually formatted. + + :param rows: a list of two item tuples for the terms and values. + :param col_max: the maximum width of the first column. + :param col_spacing: the number of spaces between the first and + second column. + """ + rows = list(rows) + widths = measure_table(rows) + if len(widths) != 2: + raise TypeError('Expected two columns for definition list') + + first_col = min(widths[0], col_max) + col_spacing + + for first, second in iter_rows(rows, len(widths)): + self.write('%*s%s' % (self.current_indent, '', first)) + if not second: + self.write('\n') + continue + if term_len(first) <= first_col - col_spacing: + self.write(' ' * (first_col - term_len(first))) + else: + self.write('\n') + self.write(' ' * (first_col + self.current_indent)) + + text_width = max(self.width - first_col - 2, 10) + lines = iter(wrap_text(second, text_width).splitlines()) + if lines: + self.write(next(lines) + '\n') + for line in lines: + self.write('%*s%s\n' % ( + first_col + self.current_indent, '', line)) + else: + self.write('\n') + + @contextmanager + def section(self, name): + """Helpful context manager that writes a paragraph, a heading, + and the indents. + + :param name: the section name that is written as heading. + """ + self.write_paragraph() + self.write_heading(name) + self.indent() + try: + yield + finally: + self.dedent() + + @contextmanager + def indentation(self): + """A context manager that increases the indentation.""" + self.indent() + try: + yield + finally: + self.dedent() + + def getvalue(self): + """Returns the buffer contents.""" + return ''.join(self.buffer) + + +def join_options(options): + """Given a list of option strings this joins them in the most appropriate + way and returns them in the form ``(formatted_string, + any_prefix_is_slash)`` where the second item in the tuple is a flag that + indicates if any of the option prefixes was a slash. + """ + rv = [] + any_prefix_is_slash = False + for opt in options: + prefix = split_opt(opt)[0] + if prefix == '/': + any_prefix_is_slash = True + rv.append((len(prefix), opt)) + + rv.sort(key=lambda x: x[0]) + + rv = ', '.join(x[1] for x in rv) + return rv, any_prefix_is_slash diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/globals.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/globals.py new file mode 100644 index 00000000..843b594a --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/globals.py @@ -0,0 +1,48 @@ +from threading import local + + +_local = local() + + +def get_current_context(silent=False): + """Returns the current click context. This can be used as a way to + access the current context object from anywhere. This is a more implicit + alternative to the :func:`pass_context` decorator. This function is + primarily useful for helpers such as :func:`echo` which might be + interested in changing its behavior based on the current context. + + To push the current context, :meth:`Context.scope` can be used. + + .. versionadded:: 5.0 + + :param silent: is set to `True` the return value is `None` if no context + is available. The default behavior is to raise a + :exc:`RuntimeError`. + """ + try: + return getattr(_local, 'stack')[-1] + except (AttributeError, IndexError): + if not silent: + raise RuntimeError('There is no active click context.') + + +def push_context(ctx): + """Pushes a new context to the current stack.""" + _local.__dict__.setdefault('stack', []).append(ctx) + + +def pop_context(): + """Removes the top level from the stack.""" + _local.stack.pop() + + +def resolve_color_default(color=None): + """"Internal helper to get the default value of the color flag. If a + value is passed it's returned unchanged, otherwise it's looked up from + the current context. + """ + if color is not None: + return color + ctx = get_current_context(silent=True) + if ctx is not None: + return ctx.color diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/parser.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/parser.py new file mode 100644 index 00000000..1c3ae9c8 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/parser.py @@ -0,0 +1,427 @@ +# -*- coding: utf-8 -*- +""" +click.parser +~~~~~~~~~~~~ + +This module started out as largely a copy paste from the stdlib's +optparse module with the features removed that we do not need from +optparse because we implement them in Click on a higher level (for +instance type handling, help formatting and a lot more). + +The plan is to remove more and more from here over time. + +The reason this is a different module and not optparse from the stdlib +is that there are differences in 2.x and 3.x about the error messages +generated and optparse in the stdlib uses gettext for no good reason +and might cause us issues. +""" + +import re +from collections import deque +from .exceptions import UsageError, NoSuchOption, BadOptionUsage, \ + BadArgumentUsage + + +def _unpack_args(args, nargs_spec): + """Given an iterable of arguments and an iterable of nargs specifications, + it returns a tuple with all the unpacked arguments at the first index + and all remaining arguments as the second. + + The nargs specification is the number of arguments that should be consumed + or `-1` to indicate that this position should eat up all the remainders. + + Missing items are filled with `None`. + """ + args = deque(args) + nargs_spec = deque(nargs_spec) + rv = [] + spos = None + + def _fetch(c): + try: + if spos is None: + return c.popleft() + else: + return c.pop() + except IndexError: + return None + + while nargs_spec: + nargs = _fetch(nargs_spec) + if nargs == 1: + rv.append(_fetch(args)) + elif nargs > 1: + x = [_fetch(args) for _ in range(nargs)] + # If we're reversed, we're pulling in the arguments in reverse, + # so we need to turn them around. + if spos is not None: + x.reverse() + rv.append(tuple(x)) + elif nargs < 0: + if spos is not None: + raise TypeError('Cannot have two nargs < 0') + spos = len(rv) + rv.append(None) + + # spos is the position of the wildcard (star). If it's not `None`, + # we fill it with the remainder. + if spos is not None: + rv[spos] = tuple(args) + args = [] + rv[spos + 1:] = reversed(rv[spos + 1:]) + + return tuple(rv), list(args) + + +def _error_opt_args(nargs, opt): + if nargs == 1: + raise BadOptionUsage(opt, '%s option requires an argument' % opt) + raise BadOptionUsage(opt, '%s option requires %d arguments' % (opt, nargs)) + + +def split_opt(opt): + first = opt[:1] + if first.isalnum(): + return '', opt + if opt[1:2] == first: + return opt[:2], opt[2:] + return first, opt[1:] + + +def normalize_opt(opt, ctx): + if ctx is None or ctx.token_normalize_func is None: + return opt + prefix, opt = split_opt(opt) + return prefix + ctx.token_normalize_func(opt) + + +def split_arg_string(string): + """Given an argument string this attempts to split it into small parts.""" + rv = [] + for match in re.finditer(r"('([^'\\]*(?:\\.[^'\\]*)*)'" + r'|"([^"\\]*(?:\\.[^"\\]*)*)"' + r'|\S+)\s*', string, re.S): + arg = match.group().strip() + if arg[:1] == arg[-1:] and arg[:1] in '"\'': + arg = arg[1:-1].encode('ascii', 'backslashreplace') \ + .decode('unicode-escape') + try: + arg = type(string)(arg) + except UnicodeError: + pass + rv.append(arg) + return rv + + +class Option(object): + + def __init__(self, opts, dest, action=None, nargs=1, const=None, obj=None): + self._short_opts = [] + self._long_opts = [] + self.prefixes = set() + + for opt in opts: + prefix, value = split_opt(opt) + if not prefix: + raise ValueError('Invalid start character for option (%s)' + % opt) + self.prefixes.add(prefix[0]) + if len(prefix) == 1 and len(value) == 1: + self._short_opts.append(opt) + else: + self._long_opts.append(opt) + self.prefixes.add(prefix) + + if action is None: + action = 'store' + + self.dest = dest + self.action = action + self.nargs = nargs + self.const = const + self.obj = obj + + @property + def takes_value(self): + return self.action in ('store', 'append') + + def process(self, value, state): + if self.action == 'store': + state.opts[self.dest] = value + elif self.action == 'store_const': + state.opts[self.dest] = self.const + elif self.action == 'append': + state.opts.setdefault(self.dest, []).append(value) + elif self.action == 'append_const': + state.opts.setdefault(self.dest, []).append(self.const) + elif self.action == 'count': + state.opts[self.dest] = state.opts.get(self.dest, 0) + 1 + else: + raise ValueError('unknown action %r' % self.action) + state.order.append(self.obj) + + +class Argument(object): + + def __init__(self, dest, nargs=1, obj=None): + self.dest = dest + self.nargs = nargs + self.obj = obj + + def process(self, value, state): + if self.nargs > 1: + holes = sum(1 for x in value if x is None) + if holes == len(value): + value = None + elif holes != 0: + raise BadArgumentUsage('argument %s takes %d values' + % (self.dest, self.nargs)) + state.opts[self.dest] = value + state.order.append(self.obj) + + +class ParsingState(object): + + def __init__(self, rargs): + self.opts = {} + self.largs = [] + self.rargs = rargs + self.order = [] + + +class OptionParser(object): + """The option parser is an internal class that is ultimately used to + parse options and arguments. It's modelled after optparse and brings + a similar but vastly simplified API. It should generally not be used + directly as the high level Click classes wrap it for you. + + It's not nearly as extensible as optparse or argparse as it does not + implement features that are implemented on a higher level (such as + types or defaults). + + :param ctx: optionally the :class:`~click.Context` where this parser + should go with. + """ + + def __init__(self, ctx=None): + #: The :class:`~click.Context` for this parser. This might be + #: `None` for some advanced use cases. + self.ctx = ctx + #: This controls how the parser deals with interspersed arguments. + #: If this is set to `False`, the parser will stop on the first + #: non-option. Click uses this to implement nested subcommands + #: safely. + self.allow_interspersed_args = True + #: This tells the parser how to deal with unknown options. By + #: default it will error out (which is sensible), but there is a + #: second mode where it will ignore it and continue processing + #: after shifting all the unknown options into the resulting args. + self.ignore_unknown_options = False + if ctx is not None: + self.allow_interspersed_args = ctx.allow_interspersed_args + self.ignore_unknown_options = ctx.ignore_unknown_options + self._short_opt = {} + self._long_opt = {} + self._opt_prefixes = set(['-', '--']) + self._args = [] + + def add_option(self, opts, dest, action=None, nargs=1, const=None, + obj=None): + """Adds a new option named `dest` to the parser. The destination + is not inferred (unlike with optparse) and needs to be explicitly + provided. Action can be any of ``store``, ``store_const``, + ``append``, ``appnd_const`` or ``count``. + + The `obj` can be used to identify the option in the order list + that is returned from the parser. + """ + if obj is None: + obj = dest + opts = [normalize_opt(opt, self.ctx) for opt in opts] + option = Option(opts, dest, action=action, nargs=nargs, + const=const, obj=obj) + self._opt_prefixes.update(option.prefixes) + for opt in option._short_opts: + self._short_opt[opt] = option + for opt in option._long_opts: + self._long_opt[opt] = option + + def add_argument(self, dest, nargs=1, obj=None): + """Adds a positional argument named `dest` to the parser. + + The `obj` can be used to identify the option in the order list + that is returned from the parser. + """ + if obj is None: + obj = dest + self._args.append(Argument(dest=dest, nargs=nargs, obj=obj)) + + def parse_args(self, args): + """Parses positional arguments and returns ``(values, args, order)`` + for the parsed options and arguments as well as the leftover + arguments if there are any. The order is a list of objects as they + appear on the command line. If arguments appear multiple times they + will be memorized multiple times as well. + """ + state = ParsingState(args) + try: + self._process_args_for_options(state) + self._process_args_for_args(state) + except UsageError: + if self.ctx is None or not self.ctx.resilient_parsing: + raise + return state.opts, state.largs, state.order + + def _process_args_for_args(self, state): + pargs, args = _unpack_args(state.largs + state.rargs, + [x.nargs for x in self._args]) + + for idx, arg in enumerate(self._args): + arg.process(pargs[idx], state) + + state.largs = args + state.rargs = [] + + def _process_args_for_options(self, state): + while state.rargs: + arg = state.rargs.pop(0) + arglen = len(arg) + # Double dashes always handled explicitly regardless of what + # prefixes are valid. + if arg == '--': + return + elif arg[:1] in self._opt_prefixes and arglen > 1: + self._process_opts(arg, state) + elif self.allow_interspersed_args: + state.largs.append(arg) + else: + state.rargs.insert(0, arg) + return + + # Say this is the original argument list: + # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)] + # ^ + # (we are about to process arg(i)). + # + # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of + # [arg0, ..., arg(i-1)] (any options and their arguments will have + # been removed from largs). + # + # The while loop will usually consume 1 or more arguments per pass. + # If it consumes 1 (eg. arg is an option that takes no arguments), + # then after _process_arg() is done the situation is: + # + # largs = subset of [arg0, ..., arg(i)] + # rargs = [arg(i+1), ..., arg(N-1)] + # + # If allow_interspersed_args is false, largs will always be + # *empty* -- still a subset of [arg0, ..., arg(i-1)], but + # not a very interesting subset! + + def _match_long_opt(self, opt, explicit_value, state): + if opt not in self._long_opt: + possibilities = [word for word in self._long_opt + if word.startswith(opt)] + raise NoSuchOption(opt, possibilities=possibilities, ctx=self.ctx) + + option = self._long_opt[opt] + if option.takes_value: + # At this point it's safe to modify rargs by injecting the + # explicit value, because no exception is raised in this + # branch. This means that the inserted value will be fully + # consumed. + if explicit_value is not None: + state.rargs.insert(0, explicit_value) + + nargs = option.nargs + if len(state.rargs) < nargs: + _error_opt_args(nargs, opt) + elif nargs == 1: + value = state.rargs.pop(0) + else: + value = tuple(state.rargs[:nargs]) + del state.rargs[:nargs] + + elif explicit_value is not None: + raise BadOptionUsage(opt, '%s option does not take a value' % opt) + + else: + value = None + + option.process(value, state) + + def _match_short_opt(self, arg, state): + stop = False + i = 1 + prefix = arg[0] + unknown_options = [] + + for ch in arg[1:]: + opt = normalize_opt(prefix + ch, self.ctx) + option = self._short_opt.get(opt) + i += 1 + + if not option: + if self.ignore_unknown_options: + unknown_options.append(ch) + continue + raise NoSuchOption(opt, ctx=self.ctx) + if option.takes_value: + # Any characters left in arg? Pretend they're the + # next arg, and stop consuming characters of arg. + if i < len(arg): + state.rargs.insert(0, arg[i:]) + stop = True + + nargs = option.nargs + if len(state.rargs) < nargs: + _error_opt_args(nargs, opt) + elif nargs == 1: + value = state.rargs.pop(0) + else: + value = tuple(state.rargs[:nargs]) + del state.rargs[:nargs] + + else: + value = None + + option.process(value, state) + + if stop: + break + + # If we got any unknown options we re-combinate the string of the + # remaining options and re-attach the prefix, then report that + # to the state as new larg. This way there is basic combinatorics + # that can be achieved while still ignoring unknown arguments. + if self.ignore_unknown_options and unknown_options: + state.largs.append(prefix + ''.join(unknown_options)) + + def _process_opts(self, arg, state): + explicit_value = None + # Long option handling happens in two parts. The first part is + # supporting explicitly attached values. In any case, we will try + # to long match the option first. + if '=' in arg: + long_opt, explicit_value = arg.split('=', 1) + else: + long_opt = arg + norm_long_opt = normalize_opt(long_opt, self.ctx) + + # At this point we will match the (assumed) long option through + # the long option matching code. Note that this allows options + # like "-foo" to be matched as long options. + try: + self._match_long_opt(norm_long_opt, explicit_value, state) + except NoSuchOption: + # At this point the long option matching failed, and we need + # to try with short options. However there is a special rule + # which says, that if we have a two character options prefix + # (applies to "--foo" for instance), we do not dispatch to the + # short option code and will instead raise the no option + # error. + if arg[:2] not in self._opt_prefixes: + return self._match_short_opt(arg, state) + if not self.ignore_unknown_options: + raise + state.largs.append(arg) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/termui.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/termui.py new file mode 100644 index 00000000..bf9a3aa1 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/termui.py @@ -0,0 +1,606 @@ +import os +import sys +import struct +import inspect +import itertools + +from ._compat import raw_input, text_type, string_types, \ + isatty, strip_ansi, get_winterm_size, DEFAULT_COLUMNS, WIN +from .utils import echo +from .exceptions import Abort, UsageError +from .types import convert_type, Choice, Path +from .globals import resolve_color_default + + +# The prompt functions to use. The doc tools currently override these +# functions to customize how they work. +visible_prompt_func = raw_input + +_ansi_colors = { + 'black': 30, + 'red': 31, + 'green': 32, + 'yellow': 33, + 'blue': 34, + 'magenta': 35, + 'cyan': 36, + 'white': 37, + 'reset': 39, + 'bright_black': 90, + 'bright_red': 91, + 'bright_green': 92, + 'bright_yellow': 93, + 'bright_blue': 94, + 'bright_magenta': 95, + 'bright_cyan': 96, + 'bright_white': 97, +} +_ansi_reset_all = '\033[0m' + + +def hidden_prompt_func(prompt): + import getpass + return getpass.getpass(prompt) + + +def _build_prompt(text, suffix, show_default=False, default=None, show_choices=True, type=None): + prompt = text + if type is not None and show_choices and isinstance(type, Choice): + prompt += ' (' + ", ".join(map(str, type.choices)) + ')' + if default is not None and show_default: + prompt = '%s [%s]' % (prompt, default) + return prompt + suffix + + +def prompt(text, default=None, hide_input=False, confirmation_prompt=False, + type=None, value_proc=None, prompt_suffix=': ', show_default=True, + err=False, show_choices=True): + """Prompts a user for input. This is a convenience function that can + be used to prompt a user for input later. + + If the user aborts the input by sending a interrupt signal, this + function will catch it and raise a :exc:`Abort` exception. + + .. versionadded:: 7.0 + Added the show_choices parameter. + + .. versionadded:: 6.0 + Added unicode support for cmd.exe on Windows. + + .. versionadded:: 4.0 + Added the `err` parameter. + + :param text: the text to show for the prompt. + :param default: the default value to use if no input happens. If this + is not given it will prompt until it's aborted. + :param hide_input: if this is set to true then the input value will + be hidden. + :param confirmation_prompt: asks for confirmation for the value. + :param type: the type to use to check the value against. + :param value_proc: if this parameter is provided it's a function that + is invoked instead of the type conversion to + convert a value. + :param prompt_suffix: a suffix that should be added to the prompt. + :param show_default: shows or hides the default value in the prompt. + :param err: if set to true the file defaults to ``stderr`` instead of + ``stdout``, the same as with echo. + :param show_choices: Show or hide choices if the passed type is a Choice. + For example if type is a Choice of either day or week, + show_choices is true and text is "Group by" then the + prompt will be "Group by (day, week): ". + """ + result = None + + def prompt_func(text): + f = hide_input and hidden_prompt_func or visible_prompt_func + try: + # Write the prompt separately so that we get nice + # coloring through colorama on Windows + echo(text, nl=False, err=err) + return f('') + except (KeyboardInterrupt, EOFError): + # getpass doesn't print a newline if the user aborts input with ^C. + # Allegedly this behavior is inherited from getpass(3). + # A doc bug has been filed at https://bugs.python.org/issue24711 + if hide_input: + echo(None, err=err) + raise Abort() + + if value_proc is None: + value_proc = convert_type(type, default) + + prompt = _build_prompt(text, prompt_suffix, show_default, default, show_choices, type) + + while 1: + while 1: + value = prompt_func(prompt) + if value: + break + elif default is not None: + if isinstance(value_proc, Path): + # validate Path default value(exists, dir_okay etc.) + value = default + break + return default + try: + result = value_proc(value) + except UsageError as e: + echo('Error: %s' % e.message, err=err) + continue + if not confirmation_prompt: + return result + while 1: + value2 = prompt_func('Repeat for confirmation: ') + if value2: + break + if value == value2: + return result + echo('Error: the two entered values do not match', err=err) + + +def confirm(text, default=False, abort=False, prompt_suffix=': ', + show_default=True, err=False): + """Prompts for confirmation (yes/no question). + + If the user aborts the input by sending a interrupt signal this + function will catch it and raise a :exc:`Abort` exception. + + .. versionadded:: 4.0 + Added the `err` parameter. + + :param text: the question to ask. + :param default: the default for the prompt. + :param abort: if this is set to `True` a negative answer aborts the + exception by raising :exc:`Abort`. + :param prompt_suffix: a suffix that should be added to the prompt. + :param show_default: shows or hides the default value in the prompt. + :param err: if set to true the file defaults to ``stderr`` instead of + ``stdout``, the same as with echo. + """ + prompt = _build_prompt(text, prompt_suffix, show_default, + default and 'Y/n' or 'y/N') + while 1: + try: + # Write the prompt separately so that we get nice + # coloring through colorama on Windows + echo(prompt, nl=False, err=err) + value = visible_prompt_func('').lower().strip() + except (KeyboardInterrupt, EOFError): + raise Abort() + if value in ('y', 'yes'): + rv = True + elif value in ('n', 'no'): + rv = False + elif value == '': + rv = default + else: + echo('Error: invalid input', err=err) + continue + break + if abort and not rv: + raise Abort() + return rv + + +def get_terminal_size(): + """Returns the current size of the terminal as tuple in the form + ``(width, height)`` in columns and rows. + """ + # If shutil has get_terminal_size() (Python 3.3 and later) use that + if sys.version_info >= (3, 3): + import shutil + shutil_get_terminal_size = getattr(shutil, 'get_terminal_size', None) + if shutil_get_terminal_size: + sz = shutil_get_terminal_size() + return sz.columns, sz.lines + + # We provide a sensible default for get_winterm_size() when being invoked + # inside a subprocess. Without this, it would not provide a useful input. + if get_winterm_size is not None: + size = get_winterm_size() + if size == (0, 0): + return (79, 24) + else: + return size + + def ioctl_gwinsz(fd): + try: + import fcntl + import termios + cr = struct.unpack( + 'hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234')) + except Exception: + return + return cr + + cr = ioctl_gwinsz(0) or ioctl_gwinsz(1) or ioctl_gwinsz(2) + if not cr: + try: + fd = os.open(os.ctermid(), os.O_RDONLY) + try: + cr = ioctl_gwinsz(fd) + finally: + os.close(fd) + except Exception: + pass + if not cr or not cr[0] or not cr[1]: + cr = (os.environ.get('LINES', 25), + os.environ.get('COLUMNS', DEFAULT_COLUMNS)) + return int(cr[1]), int(cr[0]) + + +def echo_via_pager(text_or_generator, color=None): + """This function takes a text and shows it via an environment specific + pager on stdout. + + .. versionchanged:: 3.0 + Added the `color` flag. + + :param text_or_generator: the text to page, or alternatively, a + generator emitting the text to page. + :param color: controls if the pager supports ANSI colors or not. The + default is autodetection. + """ + color = resolve_color_default(color) + + if inspect.isgeneratorfunction(text_or_generator): + i = text_or_generator() + elif isinstance(text_or_generator, string_types): + i = [text_or_generator] + else: + i = iter(text_or_generator) + + # convert every element of i to a text type if necessary + text_generator = (el if isinstance(el, string_types) else text_type(el) + for el in i) + + from ._termui_impl import pager + return pager(itertools.chain(text_generator, "\n"), color) + + +def progressbar(iterable=None, length=None, label=None, show_eta=True, + show_percent=None, show_pos=False, + item_show_func=None, fill_char='#', empty_char='-', + bar_template='%(label)s [%(bar)s] %(info)s', + info_sep=' ', width=36, file=None, color=None): + """This function creates an iterable context manager that can be used + to iterate over something while showing a progress bar. It will + either iterate over the `iterable` or `length` items (that are counted + up). While iteration happens, this function will print a rendered + progress bar to the given `file` (defaults to stdout) and will attempt + to calculate remaining time and more. By default, this progress bar + will not be rendered if the file is not a terminal. + + The context manager creates the progress bar. When the context + manager is entered the progress bar is already displayed. With every + iteration over the progress bar, the iterable passed to the bar is + advanced and the bar is updated. When the context manager exits, + a newline is printed and the progress bar is finalized on screen. + + No printing must happen or the progress bar will be unintentionally + destroyed. + + Example usage:: + + with progressbar(items) as bar: + for item in bar: + do_something_with(item) + + Alternatively, if no iterable is specified, one can manually update the + progress bar through the `update()` method instead of directly + iterating over the progress bar. The update method accepts the number + of steps to increment the bar with:: + + with progressbar(length=chunks.total_bytes) as bar: + for chunk in chunks: + process_chunk(chunk) + bar.update(chunks.bytes) + + .. versionadded:: 2.0 + + .. versionadded:: 4.0 + Added the `color` parameter. Added a `update` method to the + progressbar object. + + :param iterable: an iterable to iterate over. If not provided the length + is required. + :param length: the number of items to iterate over. By default the + progressbar will attempt to ask the iterator about its + length, which might or might not work. If an iterable is + also provided this parameter can be used to override the + length. If an iterable is not provided the progress bar + will iterate over a range of that length. + :param label: the label to show next to the progress bar. + :param show_eta: enables or disables the estimated time display. This is + automatically disabled if the length cannot be + determined. + :param show_percent: enables or disables the percentage display. The + default is `True` if the iterable has a length or + `False` if not. + :param show_pos: enables or disables the absolute position display. The + default is `False`. + :param item_show_func: a function called with the current item which + can return a string to show the current item + next to the progress bar. Note that the current + item can be `None`! + :param fill_char: the character to use to show the filled part of the + progress bar. + :param empty_char: the character to use to show the non-filled part of + the progress bar. + :param bar_template: the format string to use as template for the bar. + The parameters in it are ``label`` for the label, + ``bar`` for the progress bar and ``info`` for the + info section. + :param info_sep: the separator between multiple info items (eta etc.) + :param width: the width of the progress bar in characters, 0 means full + terminal width + :param file: the file to write to. If this is not a terminal then + only the label is printed. + :param color: controls if the terminal supports ANSI colors or not. The + default is autodetection. This is only needed if ANSI + codes are included anywhere in the progress bar output + which is not the case by default. + """ + from ._termui_impl import ProgressBar + color = resolve_color_default(color) + return ProgressBar(iterable=iterable, length=length, show_eta=show_eta, + show_percent=show_percent, show_pos=show_pos, + item_show_func=item_show_func, fill_char=fill_char, + empty_char=empty_char, bar_template=bar_template, + info_sep=info_sep, file=file, label=label, + width=width, color=color) + + +def clear(): + """Clears the terminal screen. This will have the effect of clearing + the whole visible space of the terminal and moving the cursor to the + top left. This does not do anything if not connected to a terminal. + + .. versionadded:: 2.0 + """ + if not isatty(sys.stdout): + return + # If we're on Windows and we don't have colorama available, then we + # clear the screen by shelling out. Otherwise we can use an escape + # sequence. + if WIN: + os.system('cls') + else: + sys.stdout.write('\033[2J\033[1;1H') + + +def style(text, fg=None, bg=None, bold=None, dim=None, underline=None, + blink=None, reverse=None, reset=True): + """Styles a text with ANSI styles and returns the new string. By + default the styling is self contained which means that at the end + of the string a reset code is issued. This can be prevented by + passing ``reset=False``. + + Examples:: + + click.echo(click.style('Hello World!', fg='green')) + click.echo(click.style('ATTENTION!', blink=True)) + click.echo(click.style('Some things', reverse=True, fg='cyan')) + + Supported color names: + + * ``black`` (might be a gray) + * ``red`` + * ``green`` + * ``yellow`` (might be an orange) + * ``blue`` + * ``magenta`` + * ``cyan`` + * ``white`` (might be light gray) + * ``bright_black`` + * ``bright_red`` + * ``bright_green`` + * ``bright_yellow`` + * ``bright_blue`` + * ``bright_magenta`` + * ``bright_cyan`` + * ``bright_white`` + * ``reset`` (reset the color code only) + + .. versionadded:: 2.0 + + .. versionadded:: 7.0 + Added support for bright colors. + + :param text: the string to style with ansi codes. + :param fg: if provided this will become the foreground color. + :param bg: if provided this will become the background color. + :param bold: if provided this will enable or disable bold mode. + :param dim: if provided this will enable or disable dim mode. This is + badly supported. + :param underline: if provided this will enable or disable underline. + :param blink: if provided this will enable or disable blinking. + :param reverse: if provided this will enable or disable inverse + rendering (foreground becomes background and the + other way round). + :param reset: by default a reset-all code is added at the end of the + string which means that styles do not carry over. This + can be disabled to compose styles. + """ + bits = [] + if fg: + try: + bits.append('\033[%dm' % (_ansi_colors[fg])) + except KeyError: + raise TypeError('Unknown color %r' % fg) + if bg: + try: + bits.append('\033[%dm' % (_ansi_colors[bg] + 10)) + except KeyError: + raise TypeError('Unknown color %r' % bg) + if bold is not None: + bits.append('\033[%dm' % (1 if bold else 22)) + if dim is not None: + bits.append('\033[%dm' % (2 if dim else 22)) + if underline is not None: + bits.append('\033[%dm' % (4 if underline else 24)) + if blink is not None: + bits.append('\033[%dm' % (5 if blink else 25)) + if reverse is not None: + bits.append('\033[%dm' % (7 if reverse else 27)) + bits.append(text) + if reset: + bits.append(_ansi_reset_all) + return ''.join(bits) + + +def unstyle(text): + """Removes ANSI styling information from a string. Usually it's not + necessary to use this function as Click's echo function will + automatically remove styling if necessary. + + .. versionadded:: 2.0 + + :param text: the text to remove style information from. + """ + return strip_ansi(text) + + +def secho(message=None, file=None, nl=True, err=False, color=None, **styles): + """This function combines :func:`echo` and :func:`style` into one + call. As such the following two calls are the same:: + + click.secho('Hello World!', fg='green') + click.echo(click.style('Hello World!', fg='green')) + + All keyword arguments are forwarded to the underlying functions + depending on which one they go with. + + .. versionadded:: 2.0 + """ + if message is not None: + message = style(message, **styles) + return echo(message, file=file, nl=nl, err=err, color=color) + + +def edit(text=None, editor=None, env=None, require_save=True, + extension='.txt', filename=None): + r"""Edits the given text in the defined editor. If an editor is given + (should be the full path to the executable but the regular operating + system search path is used for finding the executable) it overrides + the detected editor. Optionally, some environment variables can be + used. If the editor is closed without changes, `None` is returned. In + case a file is edited directly the return value is always `None` and + `require_save` and `extension` are ignored. + + If the editor cannot be opened a :exc:`UsageError` is raised. + + Note for Windows: to simplify cross-platform usage, the newlines are + automatically converted from POSIX to Windows and vice versa. As such, + the message here will have ``\n`` as newline markers. + + :param text: the text to edit. + :param editor: optionally the editor to use. Defaults to automatic + detection. + :param env: environment variables to forward to the editor. + :param require_save: if this is true, then not saving in the editor + will make the return value become `None`. + :param extension: the extension to tell the editor about. This defaults + to `.txt` but changing this might change syntax + highlighting. + :param filename: if provided it will edit this file instead of the + provided text contents. It will not use a temporary + file as an indirection in that case. + """ + from ._termui_impl import Editor + editor = Editor(editor=editor, env=env, require_save=require_save, + extension=extension) + if filename is None: + return editor.edit(text) + editor.edit_file(filename) + + +def launch(url, wait=False, locate=False): + """This function launches the given URL (or filename) in the default + viewer application for this file type. If this is an executable, it + might launch the executable in a new session. The return value is + the exit code of the launched application. Usually, ``0`` indicates + success. + + Examples:: + + click.launch('https://click.palletsprojects.com/') + click.launch('/my/downloaded/file', locate=True) + + .. versionadded:: 2.0 + + :param url: URL or filename of the thing to launch. + :param wait: waits for the program to stop. + :param locate: if this is set to `True` then instead of launching the + application associated with the URL it will attempt to + launch a file manager with the file located. This + might have weird effects if the URL does not point to + the filesystem. + """ + from ._termui_impl import open_url + return open_url(url, wait=wait, locate=locate) + + +# If this is provided, getchar() calls into this instead. This is used +# for unittesting purposes. +_getchar = None + + +def getchar(echo=False): + """Fetches a single character from the terminal and returns it. This + will always return a unicode character and under certain rare + circumstances this might return more than one character. The + situations which more than one character is returned is when for + whatever reason multiple characters end up in the terminal buffer or + standard input was not actually a terminal. + + Note that this will always read from the terminal, even if something + is piped into the standard input. + + Note for Windows: in rare cases when typing non-ASCII characters, this + function might wait for a second character and then return both at once. + This is because certain Unicode characters look like special-key markers. + + .. versionadded:: 2.0 + + :param echo: if set to `True`, the character read will also show up on + the terminal. The default is to not show it. + """ + f = _getchar + if f is None: + from ._termui_impl import getchar as f + return f(echo) + + +def raw_terminal(): + from ._termui_impl import raw_terminal as f + return f() + + +def pause(info='Press any key to continue ...', err=False): + """This command stops execution and waits for the user to press any + key to continue. This is similar to the Windows batch "pause" + command. If the program is not run through a terminal, this command + will instead do nothing. + + .. versionadded:: 2.0 + + .. versionadded:: 4.0 + Added the `err` parameter. + + :param info: the info string to print before pausing. + :param err: if set to message goes to ``stderr`` instead of + ``stdout``, the same as with echo. + """ + if not isatty(sys.stdin) or not isatty(sys.stdout): + return + try: + if info: + echo(info, nl=False, err=err) + try: + getchar() + except (KeyboardInterrupt, EOFError): + pass + finally: + if info: + echo(err=err) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/testing.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/testing.py new file mode 100644 index 00000000..1b2924e0 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/testing.py @@ -0,0 +1,374 @@ +import os +import sys +import shutil +import tempfile +import contextlib +import shlex + +from ._compat import iteritems, PY2, string_types + + +# If someone wants to vendor click, we want to ensure the +# correct package is discovered. Ideally we could use a +# relative import here but unfortunately Python does not +# support that. +clickpkg = sys.modules[__name__.rsplit('.', 1)[0]] + + +if PY2: + from cStringIO import StringIO +else: + import io + from ._compat import _find_binary_reader + + +class EchoingStdin(object): + + def __init__(self, input, output): + self._input = input + self._output = output + + def __getattr__(self, x): + return getattr(self._input, x) + + def _echo(self, rv): + self._output.write(rv) + return rv + + def read(self, n=-1): + return self._echo(self._input.read(n)) + + def readline(self, n=-1): + return self._echo(self._input.readline(n)) + + def readlines(self): + return [self._echo(x) for x in self._input.readlines()] + + def __iter__(self): + return iter(self._echo(x) for x in self._input) + + def __repr__(self): + return repr(self._input) + + +def make_input_stream(input, charset): + # Is already an input stream. + if hasattr(input, 'read'): + if PY2: + return input + rv = _find_binary_reader(input) + if rv is not None: + return rv + raise TypeError('Could not find binary reader for input stream.') + + if input is None: + input = b'' + elif not isinstance(input, bytes): + input = input.encode(charset) + if PY2: + return StringIO(input) + return io.BytesIO(input) + + +class Result(object): + """Holds the captured result of an invoked CLI script.""" + + def __init__(self, runner, stdout_bytes, stderr_bytes, exit_code, + exception, exc_info=None): + #: The runner that created the result + self.runner = runner + #: The standard output as bytes. + self.stdout_bytes = stdout_bytes + #: The standard error as bytes, or False(y) if not available + self.stderr_bytes = stderr_bytes + #: The exit code as integer. + self.exit_code = exit_code + #: The exception that happened if one did. + self.exception = exception + #: The traceback + self.exc_info = exc_info + + @property + def output(self): + """The (standard) output as unicode string.""" + return self.stdout + + @property + def stdout(self): + """The standard output as unicode string.""" + return self.stdout_bytes.decode(self.runner.charset, 'replace') \ + .replace('\r\n', '\n') + + @property + def stderr(self): + """The standard error as unicode string.""" + if not self.stderr_bytes: + raise ValueError("stderr not separately captured") + return self.stderr_bytes.decode(self.runner.charset, 'replace') \ + .replace('\r\n', '\n') + + + def __repr__(self): + return '<%s %s>' % ( + type(self).__name__, + self.exception and repr(self.exception) or 'okay', + ) + + +class CliRunner(object): + """The CLI runner provides functionality to invoke a Click command line + script for unittesting purposes in a isolated environment. This only + works in single-threaded systems without any concurrency as it changes the + global interpreter state. + + :param charset: the character set for the input and output data. This is + UTF-8 by default and should not be changed currently as + the reporting to Click only works in Python 2 properly. + :param env: a dictionary with environment variables for overriding. + :param echo_stdin: if this is set to `True`, then reading from stdin writes + to stdout. This is useful for showing examples in + some circumstances. Note that regular prompts + will automatically echo the input. + :param mix_stderr: if this is set to `False`, then stdout and stderr are + preserved as independent streams. This is useful for + Unix-philosophy apps that have predictable stdout and + noisy stderr, such that each may be measured + independently + """ + + def __init__(self, charset=None, env=None, echo_stdin=False, + mix_stderr=True): + if charset is None: + charset = 'utf-8' + self.charset = charset + self.env = env or {} + self.echo_stdin = echo_stdin + self.mix_stderr = mix_stderr + + def get_default_prog_name(self, cli): + """Given a command object it will return the default program name + for it. The default is the `name` attribute or ``"root"`` if not + set. + """ + return cli.name or 'root' + + def make_env(self, overrides=None): + """Returns the environment overrides for invoking a script.""" + rv = dict(self.env) + if overrides: + rv.update(overrides) + return rv + + @contextlib.contextmanager + def isolation(self, input=None, env=None, color=False): + """A context manager that sets up the isolation for invoking of a + command line tool. This sets up stdin with the given input data + and `os.environ` with the overrides from the given dictionary. + This also rebinds some internals in Click to be mocked (like the + prompt functionality). + + This is automatically done in the :meth:`invoke` method. + + .. versionadded:: 4.0 + The ``color`` parameter was added. + + :param input: the input stream to put into sys.stdin. + :param env: the environment overrides as dictionary. + :param color: whether the output should contain color codes. The + application can still override this explicitly. + """ + input = make_input_stream(input, self.charset) + + old_stdin = sys.stdin + old_stdout = sys.stdout + old_stderr = sys.stderr + old_forced_width = clickpkg.formatting.FORCED_WIDTH + clickpkg.formatting.FORCED_WIDTH = 80 + + env = self.make_env(env) + + if PY2: + bytes_output = StringIO() + if self.echo_stdin: + input = EchoingStdin(input, bytes_output) + sys.stdout = bytes_output + if not self.mix_stderr: + bytes_error = StringIO() + sys.stderr = bytes_error + else: + bytes_output = io.BytesIO() + if self.echo_stdin: + input = EchoingStdin(input, bytes_output) + input = io.TextIOWrapper(input, encoding=self.charset) + sys.stdout = io.TextIOWrapper( + bytes_output, encoding=self.charset) + if not self.mix_stderr: + bytes_error = io.BytesIO() + sys.stderr = io.TextIOWrapper( + bytes_error, encoding=self.charset) + + if self.mix_stderr: + sys.stderr = sys.stdout + + sys.stdin = input + + def visible_input(prompt=None): + sys.stdout.write(prompt or '') + val = input.readline().rstrip('\r\n') + sys.stdout.write(val + '\n') + sys.stdout.flush() + return val + + def hidden_input(prompt=None): + sys.stdout.write((prompt or '') + '\n') + sys.stdout.flush() + return input.readline().rstrip('\r\n') + + def _getchar(echo): + char = sys.stdin.read(1) + if echo: + sys.stdout.write(char) + sys.stdout.flush() + return char + + default_color = color + + def should_strip_ansi(stream=None, color=None): + if color is None: + return not default_color + return not color + + old_visible_prompt_func = clickpkg.termui.visible_prompt_func + old_hidden_prompt_func = clickpkg.termui.hidden_prompt_func + old__getchar_func = clickpkg.termui._getchar + old_should_strip_ansi = clickpkg.utils.should_strip_ansi + clickpkg.termui.visible_prompt_func = visible_input + clickpkg.termui.hidden_prompt_func = hidden_input + clickpkg.termui._getchar = _getchar + clickpkg.utils.should_strip_ansi = should_strip_ansi + + old_env = {} + try: + for key, value in iteritems(env): + old_env[key] = os.environ.get(key) + if value is None: + try: + del os.environ[key] + except Exception: + pass + else: + os.environ[key] = value + yield (bytes_output, not self.mix_stderr and bytes_error) + finally: + for key, value in iteritems(old_env): + if value is None: + try: + del os.environ[key] + except Exception: + pass + else: + os.environ[key] = value + sys.stdout = old_stdout + sys.stderr = old_stderr + sys.stdin = old_stdin + clickpkg.termui.visible_prompt_func = old_visible_prompt_func + clickpkg.termui.hidden_prompt_func = old_hidden_prompt_func + clickpkg.termui._getchar = old__getchar_func + clickpkg.utils.should_strip_ansi = old_should_strip_ansi + clickpkg.formatting.FORCED_WIDTH = old_forced_width + + def invoke(self, cli, args=None, input=None, env=None, + catch_exceptions=True, color=False, mix_stderr=False, **extra): + """Invokes a command in an isolated environment. The arguments are + forwarded directly to the command line script, the `extra` keyword + arguments are passed to the :meth:`~clickpkg.Command.main` function of + the command. + + This returns a :class:`Result` object. + + .. versionadded:: 3.0 + The ``catch_exceptions`` parameter was added. + + .. versionchanged:: 3.0 + The result object now has an `exc_info` attribute with the + traceback if available. + + .. versionadded:: 4.0 + The ``color`` parameter was added. + + :param cli: the command to invoke + :param args: the arguments to invoke. It may be given as an iterable + or a string. When given as string it will be interpreted + as a Unix shell command. More details at + :func:`shlex.split`. + :param input: the input data for `sys.stdin`. + :param env: the environment overrides. + :param catch_exceptions: Whether to catch any other exceptions than + ``SystemExit``. + :param extra: the keyword arguments to pass to :meth:`main`. + :param color: whether the output should contain color codes. The + application can still override this explicitly. + """ + exc_info = None + with self.isolation(input=input, env=env, color=color) as outstreams: + exception = None + exit_code = 0 + + if isinstance(args, string_types): + args = shlex.split(args) + + try: + prog_name = extra.pop("prog_name") + except KeyError: + prog_name = self.get_default_prog_name(cli) + + try: + cli.main(args=args or (), prog_name=prog_name, **extra) + except SystemExit as e: + exc_info = sys.exc_info() + exit_code = e.code + if exit_code is None: + exit_code = 0 + + if exit_code != 0: + exception = e + + if not isinstance(exit_code, int): + sys.stdout.write(str(exit_code)) + sys.stdout.write('\n') + exit_code = 1 + + except Exception as e: + if not catch_exceptions: + raise + exception = e + exit_code = 1 + exc_info = sys.exc_info() + finally: + sys.stdout.flush() + stdout = outstreams[0].getvalue() + stderr = outstreams[1] and outstreams[1].getvalue() + + return Result(runner=self, + stdout_bytes=stdout, + stderr_bytes=stderr, + exit_code=exit_code, + exception=exception, + exc_info=exc_info) + + @contextlib.contextmanager + def isolated_filesystem(self): + """A context manager that creates a temporary folder and changes + the current working directory to it for isolated filesystem tests. + """ + cwd = os.getcwd() + t = tempfile.mkdtemp() + os.chdir(t) + try: + yield t + finally: + os.chdir(cwd) + try: + shutil.rmtree(t) + except (OSError, IOError): + pass diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/types.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/types.py new file mode 100644 index 00000000..1f88032f --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/types.py @@ -0,0 +1,668 @@ +import os +import stat +from datetime import datetime + +from ._compat import open_stream, text_type, filename_to_ui, \ + get_filesystem_encoding, get_streerror, _get_argv_encoding, PY2 +from .exceptions import BadParameter +from .utils import safecall, LazyFile + + +class ParamType(object): + """Helper for converting values through types. The following is + necessary for a valid type: + + * it needs a name + * it needs to pass through None unchanged + * it needs to convert from a string + * it needs to convert its result type through unchanged + (eg: needs to be idempotent) + * it needs to be able to deal with param and context being `None`. + This can be the case when the object is used with prompt + inputs. + """ + is_composite = False + + #: the descriptive name of this type + name = None + + #: if a list of this type is expected and the value is pulled from a + #: string environment variable, this is what splits it up. `None` + #: means any whitespace. For all parameters the general rule is that + #: whitespace splits them up. The exception are paths and files which + #: are split by ``os.path.pathsep`` by default (":" on Unix and ";" on + #: Windows). + envvar_list_splitter = None + + def __call__(self, value, param=None, ctx=None): + if value is not None: + return self.convert(value, param, ctx) + + def get_metavar(self, param): + """Returns the metavar default for this param if it provides one.""" + + def get_missing_message(self, param): + """Optionally might return extra information about a missing + parameter. + + .. versionadded:: 2.0 + """ + + def convert(self, value, param, ctx): + """Converts the value. This is not invoked for values that are + `None` (the missing value). + """ + return value + + def split_envvar_value(self, rv): + """Given a value from an environment variable this splits it up + into small chunks depending on the defined envvar list splitter. + + If the splitter is set to `None`, which means that whitespace splits, + then leading and trailing whitespace is ignored. Otherwise, leading + and trailing splitters usually lead to empty items being included. + """ + return (rv or '').split(self.envvar_list_splitter) + + def fail(self, message, param=None, ctx=None): + """Helper method to fail with an invalid value message.""" + raise BadParameter(message, ctx=ctx, param=param) + + +class CompositeParamType(ParamType): + is_composite = True + + @property + def arity(self): + raise NotImplementedError() + + +class FuncParamType(ParamType): + + def __init__(self, func): + self.name = func.__name__ + self.func = func + + def convert(self, value, param, ctx): + try: + return self.func(value) + except ValueError: + try: + value = text_type(value) + except UnicodeError: + value = str(value).decode('utf-8', 'replace') + self.fail(value, param, ctx) + + +class UnprocessedParamType(ParamType): + name = 'text' + + def convert(self, value, param, ctx): + return value + + def __repr__(self): + return 'UNPROCESSED' + + +class StringParamType(ParamType): + name = 'text' + + def convert(self, value, param, ctx): + if isinstance(value, bytes): + enc = _get_argv_encoding() + try: + value = value.decode(enc) + except UnicodeError: + fs_enc = get_filesystem_encoding() + if fs_enc != enc: + try: + value = value.decode(fs_enc) + except UnicodeError: + value = value.decode('utf-8', 'replace') + return value + return value + + def __repr__(self): + return 'STRING' + + +class Choice(ParamType): + """The choice type allows a value to be checked against a fixed set + of supported values. All of these values have to be strings. + + You should only pass a list or tuple of choices. Other iterables + (like generators) may lead to surprising results. + + See :ref:`choice-opts` for an example. + + :param case_sensitive: Set to false to make choices case + insensitive. Defaults to true. + """ + + name = 'choice' + + def __init__(self, choices, case_sensitive=True): + self.choices = choices + self.case_sensitive = case_sensitive + + def get_metavar(self, param): + return '[%s]' % '|'.join(self.choices) + + def get_missing_message(self, param): + return 'Choose from:\n\t%s.' % ',\n\t'.join(self.choices) + + def convert(self, value, param, ctx): + # Exact match + if value in self.choices: + return value + + # Match through normalization and case sensitivity + # first do token_normalize_func, then lowercase + # preserve original `value` to produce an accurate message in + # `self.fail` + normed_value = value + normed_choices = self.choices + + if ctx is not None and \ + ctx.token_normalize_func is not None: + normed_value = ctx.token_normalize_func(value) + normed_choices = [ctx.token_normalize_func(choice) for choice in + self.choices] + + if not self.case_sensitive: + normed_value = normed_value.lower() + normed_choices = [choice.lower() for choice in normed_choices] + + if normed_value in normed_choices: + return normed_value + + self.fail('invalid choice: %s. (choose from %s)' % + (value, ', '.join(self.choices)), param, ctx) + + def __repr__(self): + return 'Choice(%r)' % list(self.choices) + + +class DateTime(ParamType): + """The DateTime type converts date strings into `datetime` objects. + + The format strings which are checked are configurable, but default to some + common (non-timezone aware) ISO 8601 formats. + + When specifying *DateTime* formats, you should only pass a list or a tuple. + Other iterables, like generators, may lead to surprising results. + + The format strings are processed using ``datetime.strptime``, and this + consequently defines the format strings which are allowed. + + Parsing is tried using each format, in order, and the first format which + parses successfully is used. + + :param formats: A list or tuple of date format strings, in the order in + which they should be tried. Defaults to + ``'%Y-%m-%d'``, ``'%Y-%m-%dT%H:%M:%S'``, + ``'%Y-%m-%d %H:%M:%S'``. + """ + name = 'datetime' + + def __init__(self, formats=None): + self.formats = formats or [ + '%Y-%m-%d', + '%Y-%m-%dT%H:%M:%S', + '%Y-%m-%d %H:%M:%S' + ] + + def get_metavar(self, param): + return '[{}]'.format('|'.join(self.formats)) + + def _try_to_convert_date(self, value, format): + try: + return datetime.strptime(value, format) + except ValueError: + return None + + def convert(self, value, param, ctx): + # Exact match + for format in self.formats: + dtime = self._try_to_convert_date(value, format) + if dtime: + return dtime + + self.fail( + 'invalid datetime format: {}. (choose from {})'.format( + value, ', '.join(self.formats))) + + def __repr__(self): + return 'DateTime' + + +class IntParamType(ParamType): + name = 'integer' + + def convert(self, value, param, ctx): + try: + return int(value) + except (ValueError, UnicodeError): + self.fail('%s is not a valid integer' % value, param, ctx) + + def __repr__(self): + return 'INT' + + +class IntRange(IntParamType): + """A parameter that works similar to :data:`click.INT` but restricts + the value to fit into a range. The default behavior is to fail if the + value falls outside the range, but it can also be silently clamped + between the two edges. + + See :ref:`ranges` for an example. + """ + name = 'integer range' + + def __init__(self, min=None, max=None, clamp=False): + self.min = min + self.max = max + self.clamp = clamp + + def convert(self, value, param, ctx): + rv = IntParamType.convert(self, value, param, ctx) + if self.clamp: + if self.min is not None and rv < self.min: + return self.min + if self.max is not None and rv > self.max: + return self.max + if self.min is not None and rv < self.min or \ + self.max is not None and rv > self.max: + if self.min is None: + self.fail('%s is bigger than the maximum valid value ' + '%s.' % (rv, self.max), param, ctx) + elif self.max is None: + self.fail('%s is smaller than the minimum valid value ' + '%s.' % (rv, self.min), param, ctx) + else: + self.fail('%s is not in the valid range of %s to %s.' + % (rv, self.min, self.max), param, ctx) + return rv + + def __repr__(self): + return 'IntRange(%r, %r)' % (self.min, self.max) + + +class FloatParamType(ParamType): + name = 'float' + + def convert(self, value, param, ctx): + try: + return float(value) + except (UnicodeError, ValueError): + self.fail('%s is not a valid floating point value' % + value, param, ctx) + + def __repr__(self): + return 'FLOAT' + + +class FloatRange(FloatParamType): + """A parameter that works similar to :data:`click.FLOAT` but restricts + the value to fit into a range. The default behavior is to fail if the + value falls outside the range, but it can also be silently clamped + between the two edges. + + See :ref:`ranges` for an example. + """ + name = 'float range' + + def __init__(self, min=None, max=None, clamp=False): + self.min = min + self.max = max + self.clamp = clamp + + def convert(self, value, param, ctx): + rv = FloatParamType.convert(self, value, param, ctx) + if self.clamp: + if self.min is not None and rv < self.min: + return self.min + if self.max is not None and rv > self.max: + return self.max + if self.min is not None and rv < self.min or \ + self.max is not None and rv > self.max: + if self.min is None: + self.fail('%s is bigger than the maximum valid value ' + '%s.' % (rv, self.max), param, ctx) + elif self.max is None: + self.fail('%s is smaller than the minimum valid value ' + '%s.' % (rv, self.min), param, ctx) + else: + self.fail('%s is not in the valid range of %s to %s.' + % (rv, self.min, self.max), param, ctx) + return rv + + def __repr__(self): + return 'FloatRange(%r, %r)' % (self.min, self.max) + + +class BoolParamType(ParamType): + name = 'boolean' + + def convert(self, value, param, ctx): + if isinstance(value, bool): + return bool(value) + value = value.lower() + if value in ('true', 't', '1', 'yes', 'y'): + return True + elif value in ('false', 'f', '0', 'no', 'n'): + return False + self.fail('%s is not a valid boolean' % value, param, ctx) + + def __repr__(self): + return 'BOOL' + + +class UUIDParameterType(ParamType): + name = 'uuid' + + def convert(self, value, param, ctx): + import uuid + try: + if PY2 and isinstance(value, text_type): + value = value.encode('ascii') + return uuid.UUID(value) + except (UnicodeError, ValueError): + self.fail('%s is not a valid UUID value' % value, param, ctx) + + def __repr__(self): + return 'UUID' + + +class File(ParamType): + """Declares a parameter to be a file for reading or writing. The file + is automatically closed once the context tears down (after the command + finished working). + + Files can be opened for reading or writing. The special value ``-`` + indicates stdin or stdout depending on the mode. + + By default, the file is opened for reading text data, but it can also be + opened in binary mode or for writing. The encoding parameter can be used + to force a specific encoding. + + The `lazy` flag controls if the file should be opened immediately or upon + first IO. The default is to be non-lazy for standard input and output + streams as well as files opened for reading, `lazy` otherwise. When opening a + file lazily for reading, it is still opened temporarily for validation, but + will not be held open until first IO. lazy is mainly useful when opening + for writing to avoid creating the file until it is needed. + + Starting with Click 2.0, files can also be opened atomically in which + case all writes go into a separate file in the same folder and upon + completion the file will be moved over to the original location. This + is useful if a file regularly read by other users is modified. + + See :ref:`file-args` for more information. + """ + name = 'filename' + envvar_list_splitter = os.path.pathsep + + def __init__(self, mode='r', encoding=None, errors='strict', lazy=None, + atomic=False): + self.mode = mode + self.encoding = encoding + self.errors = errors + self.lazy = lazy + self.atomic = atomic + + def resolve_lazy_flag(self, value): + if self.lazy is not None: + return self.lazy + if value == '-': + return False + elif 'w' in self.mode: + return True + return False + + def convert(self, value, param, ctx): + try: + if hasattr(value, 'read') or hasattr(value, 'write'): + return value + + lazy = self.resolve_lazy_flag(value) + + if lazy: + f = LazyFile(value, self.mode, self.encoding, self.errors, + atomic=self.atomic) + if ctx is not None: + ctx.call_on_close(f.close_intelligently) + return f + + f, should_close = open_stream(value, self.mode, + self.encoding, self.errors, + atomic=self.atomic) + # If a context is provided, we automatically close the file + # at the end of the context execution (or flush out). If a + # context does not exist, it's the caller's responsibility to + # properly close the file. This for instance happens when the + # type is used with prompts. + if ctx is not None: + if should_close: + ctx.call_on_close(safecall(f.close)) + else: + ctx.call_on_close(safecall(f.flush)) + return f + except (IOError, OSError) as e: + self.fail('Could not open file: %s: %s' % ( + filename_to_ui(value), + get_streerror(e), + ), param, ctx) + + +class Path(ParamType): + """The path type is similar to the :class:`File` type but it performs + different checks. First of all, instead of returning an open file + handle it returns just the filename. Secondly, it can perform various + basic checks about what the file or directory should be. + + .. versionchanged:: 6.0 + `allow_dash` was added. + + :param exists: if set to true, the file or directory needs to exist for + this value to be valid. If this is not required and a + file does indeed not exist, then all further checks are + silently skipped. + :param file_okay: controls if a file is a possible value. + :param dir_okay: controls if a directory is a possible value. + :param writable: if true, a writable check is performed. + :param readable: if true, a readable check is performed. + :param resolve_path: if this is true, then the path is fully resolved + before the value is passed onwards. This means + that it's absolute and symlinks are resolved. It + will not expand a tilde-prefix, as this is + supposed to be done by the shell only. + :param allow_dash: If this is set to `True`, a single dash to indicate + standard streams is permitted. + :param path_type: optionally a string type that should be used to + represent the path. The default is `None` which + means the return value will be either bytes or + unicode depending on what makes most sense given the + input data Click deals with. + """ + envvar_list_splitter = os.path.pathsep + + def __init__(self, exists=False, file_okay=True, dir_okay=True, + writable=False, readable=True, resolve_path=False, + allow_dash=False, path_type=None): + self.exists = exists + self.file_okay = file_okay + self.dir_okay = dir_okay + self.writable = writable + self.readable = readable + self.resolve_path = resolve_path + self.allow_dash = allow_dash + self.type = path_type + + if self.file_okay and not self.dir_okay: + self.name = 'file' + self.path_type = 'File' + elif self.dir_okay and not self.file_okay: + self.name = 'directory' + self.path_type = 'Directory' + else: + self.name = 'path' + self.path_type = 'Path' + + def coerce_path_result(self, rv): + if self.type is not None and not isinstance(rv, self.type): + if self.type is text_type: + rv = rv.decode(get_filesystem_encoding()) + else: + rv = rv.encode(get_filesystem_encoding()) + return rv + + def convert(self, value, param, ctx): + rv = value + + is_dash = self.file_okay and self.allow_dash and rv in (b'-', '-') + + if not is_dash: + if self.resolve_path: + rv = os.path.realpath(rv) + + try: + st = os.stat(rv) + except OSError: + if not self.exists: + return self.coerce_path_result(rv) + self.fail('%s "%s" does not exist.' % ( + self.path_type, + filename_to_ui(value) + ), param, ctx) + + if not self.file_okay and stat.S_ISREG(st.st_mode): + self.fail('%s "%s" is a file.' % ( + self.path_type, + filename_to_ui(value) + ), param, ctx) + if not self.dir_okay and stat.S_ISDIR(st.st_mode): + self.fail('%s "%s" is a directory.' % ( + self.path_type, + filename_to_ui(value) + ), param, ctx) + if self.writable and not os.access(value, os.W_OK): + self.fail('%s "%s" is not writable.' % ( + self.path_type, + filename_to_ui(value) + ), param, ctx) + if self.readable and not os.access(value, os.R_OK): + self.fail('%s "%s" is not readable.' % ( + self.path_type, + filename_to_ui(value) + ), param, ctx) + + return self.coerce_path_result(rv) + + +class Tuple(CompositeParamType): + """The default behavior of Click is to apply a type on a value directly. + This works well in most cases, except for when `nargs` is set to a fixed + count and different types should be used for different items. In this + case the :class:`Tuple` type can be used. This type can only be used + if `nargs` is set to a fixed number. + + For more information see :ref:`tuple-type`. + + This can be selected by using a Python tuple literal as a type. + + :param types: a list of types that should be used for the tuple items. + """ + + def __init__(self, types): + self.types = [convert_type(ty) for ty in types] + + @property + def name(self): + return "<" + " ".join(ty.name for ty in self.types) + ">" + + @property + def arity(self): + return len(self.types) + + def convert(self, value, param, ctx): + if len(value) != len(self.types): + raise TypeError('It would appear that nargs is set to conflict ' + 'with the composite type arity.') + return tuple(ty(x, param, ctx) for ty, x in zip(self.types, value)) + + +def convert_type(ty, default=None): + """Converts a callable or python ty into the most appropriate param + ty. + """ + guessed_type = False + if ty is None and default is not None: + if isinstance(default, tuple): + ty = tuple(map(type, default)) + else: + ty = type(default) + guessed_type = True + + if isinstance(ty, tuple): + return Tuple(ty) + if isinstance(ty, ParamType): + return ty + if ty is text_type or ty is str or ty is None: + return STRING + if ty is int: + return INT + # Booleans are only okay if not guessed. This is done because for + # flags the default value is actually a bit of a lie in that it + # indicates which of the flags is the one we want. See get_default() + # for more information. + if ty is bool and not guessed_type: + return BOOL + if ty is float: + return FLOAT + if guessed_type: + return STRING + + # Catch a common mistake + if __debug__: + try: + if issubclass(ty, ParamType): + raise AssertionError('Attempted to use an uninstantiated ' + 'parameter type (%s).' % ty) + except TypeError: + pass + return FuncParamType(ty) + + +#: A dummy parameter type that just does nothing. From a user's +#: perspective this appears to just be the same as `STRING` but internally +#: no string conversion takes place. This is necessary to achieve the +#: same bytes/unicode behavior on Python 2/3 in situations where you want +#: to not convert argument types. This is usually useful when working +#: with file paths as they can appear in bytes and unicode. +#: +#: For path related uses the :class:`Path` type is a better choice but +#: there are situations where an unprocessed type is useful which is why +#: it is is provided. +#: +#: .. versionadded:: 4.0 +UNPROCESSED = UnprocessedParamType() + +#: A unicode string parameter type which is the implicit default. This +#: can also be selected by using ``str`` as type. +STRING = StringParamType() + +#: An integer parameter. This can also be selected by using ``int`` as +#: type. +INT = IntParamType() + +#: A floating point value parameter. This can also be selected by using +#: ``float`` as type. +FLOAT = FloatParamType() + +#: A boolean parameter. This is the default for boolean flags. This can +#: also be selected by using ``bool`` as a type. +BOOL = BoolParamType() + +#: A UUID parameter. +UUID = UUIDParameterType() diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/utils.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/utils.py new file mode 100644 index 00000000..fc84369f --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/click/utils.py @@ -0,0 +1,440 @@ +import os +import sys + +from .globals import resolve_color_default + +from ._compat import text_type, open_stream, get_filesystem_encoding, \ + get_streerror, string_types, PY2, binary_streams, text_streams, \ + filename_to_ui, auto_wrap_for_ansi, strip_ansi, should_strip_ansi, \ + _default_text_stdout, _default_text_stderr, is_bytes, WIN + +if not PY2: + from ._compat import _find_binary_writer +elif WIN: + from ._winconsole import _get_windows_argv, \ + _hash_py_argv, _initial_argv_hash + + +echo_native_types = string_types + (bytes, bytearray) + + +def _posixify(name): + return '-'.join(name.split()).lower() + + +def safecall(func): + """Wraps a function so that it swallows exceptions.""" + def wrapper(*args, **kwargs): + try: + return func(*args, **kwargs) + except Exception: + pass + return wrapper + + +def make_str(value): + """Converts a value into a valid string.""" + if isinstance(value, bytes): + try: + return value.decode(get_filesystem_encoding()) + except UnicodeError: + return value.decode('utf-8', 'replace') + return text_type(value) + + +def make_default_short_help(help, max_length=45): + """Return a condensed version of help string.""" + words = help.split() + total_length = 0 + result = [] + done = False + + for word in words: + if word[-1:] == '.': + done = True + new_length = result and 1 + len(word) or len(word) + if total_length + new_length > max_length: + result.append('...') + done = True + else: + if result: + result.append(' ') + result.append(word) + if done: + break + total_length += new_length + + return ''.join(result) + + +class LazyFile(object): + """A lazy file works like a regular file but it does not fully open + the file but it does perform some basic checks early to see if the + filename parameter does make sense. This is useful for safely opening + files for writing. + """ + + def __init__(self, filename, mode='r', encoding=None, errors='strict', + atomic=False): + self.name = filename + self.mode = mode + self.encoding = encoding + self.errors = errors + self.atomic = atomic + + if filename == '-': + self._f, self.should_close = open_stream(filename, mode, + encoding, errors) + else: + if 'r' in mode: + # Open and close the file in case we're opening it for + # reading so that we can catch at least some errors in + # some cases early. + open(filename, mode).close() + self._f = None + self.should_close = True + + def __getattr__(self, name): + return getattr(self.open(), name) + + def __repr__(self): + if self._f is not None: + return repr(self._f) + return '' % (self.name, self.mode) + + def open(self): + """Opens the file if it's not yet open. This call might fail with + a :exc:`FileError`. Not handling this error will produce an error + that Click shows. + """ + if self._f is not None: + return self._f + try: + rv, self.should_close = open_stream(self.name, self.mode, + self.encoding, + self.errors, + atomic=self.atomic) + except (IOError, OSError) as e: + from .exceptions import FileError + raise FileError(self.name, hint=get_streerror(e)) + self._f = rv + return rv + + def close(self): + """Closes the underlying file, no matter what.""" + if self._f is not None: + self._f.close() + + def close_intelligently(self): + """This function only closes the file if it was opened by the lazy + file wrapper. For instance this will never close stdin. + """ + if self.should_close: + self.close() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, tb): + self.close_intelligently() + + def __iter__(self): + self.open() + return iter(self._f) + + +class KeepOpenFile(object): + + def __init__(self, file): + self._file = file + + def __getattr__(self, name): + return getattr(self._file, name) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, tb): + pass + + def __repr__(self): + return repr(self._file) + + def __iter__(self): + return iter(self._file) + + +def echo(message=None, file=None, nl=True, err=False, color=None): + """Prints a message plus a newline to the given file or stdout. On + first sight, this looks like the print function, but it has improved + support for handling Unicode and binary data that does not fail no + matter how badly configured the system is. + + Primarily it means that you can print binary data as well as Unicode + data on both 2.x and 3.x to the given file in the most appropriate way + possible. This is a very carefree function in that it will try its + best to not fail. As of Click 6.0 this includes support for unicode + output on the Windows console. + + In addition to that, if `colorama`_ is installed, the echo function will + also support clever handling of ANSI codes. Essentially it will then + do the following: + + - add transparent handling of ANSI color codes on Windows. + - hide ANSI codes automatically if the destination file is not a + terminal. + + .. _colorama: https://pypi.org/project/colorama/ + + .. versionchanged:: 6.0 + As of Click 6.0 the echo function will properly support unicode + output on the windows console. Not that click does not modify + the interpreter in any way which means that `sys.stdout` or the + print statement or function will still not provide unicode support. + + .. versionchanged:: 2.0 + Starting with version 2.0 of Click, the echo function will work + with colorama if it's installed. + + .. versionadded:: 3.0 + The `err` parameter was added. + + .. versionchanged:: 4.0 + Added the `color` flag. + + :param message: the message to print + :param file: the file to write to (defaults to ``stdout``) + :param err: if set to true the file defaults to ``stderr`` instead of + ``stdout``. This is faster and easier than calling + :func:`get_text_stderr` yourself. + :param nl: if set to `True` (the default) a newline is printed afterwards. + :param color: controls if the terminal supports ANSI colors or not. The + default is autodetection. + """ + if file is None: + if err: + file = _default_text_stderr() + else: + file = _default_text_stdout() + + # Convert non bytes/text into the native string type. + if message is not None and not isinstance(message, echo_native_types): + message = text_type(message) + + if nl: + message = message or u'' + if isinstance(message, text_type): + message += u'\n' + else: + message += b'\n' + + # If there is a message, and we're in Python 3, and the value looks + # like bytes, we manually need to find the binary stream and write the + # message in there. This is done separately so that most stream + # types will work as you would expect. Eg: you can write to StringIO + # for other cases. + if message and not PY2 and is_bytes(message): + binary_file = _find_binary_writer(file) + if binary_file is not None: + file.flush() + binary_file.write(message) + binary_file.flush() + return + + # ANSI-style support. If there is no message or we are dealing with + # bytes nothing is happening. If we are connected to a file we want + # to strip colors. If we are on windows we either wrap the stream + # to strip the color or we use the colorama support to translate the + # ansi codes to API calls. + if message and not is_bytes(message): + color = resolve_color_default(color) + if should_strip_ansi(file, color): + message = strip_ansi(message) + elif WIN: + if auto_wrap_for_ansi is not None: + file = auto_wrap_for_ansi(file) + elif not color: + message = strip_ansi(message) + + if message: + file.write(message) + file.flush() + + +def get_binary_stream(name): + """Returns a system stream for byte processing. This essentially + returns the stream from the sys module with the given name but it + solves some compatibility issues between different Python versions. + Primarily this function is necessary for getting binary streams on + Python 3. + + :param name: the name of the stream to open. Valid names are ``'stdin'``, + ``'stdout'`` and ``'stderr'`` + """ + opener = binary_streams.get(name) + if opener is None: + raise TypeError('Unknown standard stream %r' % name) + return opener() + + +def get_text_stream(name, encoding=None, errors='strict'): + """Returns a system stream for text processing. This usually returns + a wrapped stream around a binary stream returned from + :func:`get_binary_stream` but it also can take shortcuts on Python 3 + for already correctly configured streams. + + :param name: the name of the stream to open. Valid names are ``'stdin'``, + ``'stdout'`` and ``'stderr'`` + :param encoding: overrides the detected default encoding. + :param errors: overrides the default error mode. + """ + opener = text_streams.get(name) + if opener is None: + raise TypeError('Unknown standard stream %r' % name) + return opener(encoding, errors) + + +def open_file(filename, mode='r', encoding=None, errors='strict', + lazy=False, atomic=False): + """This is similar to how the :class:`File` works but for manual + usage. Files are opened non lazy by default. This can open regular + files as well as stdin/stdout if ``'-'`` is passed. + + If stdin/stdout is returned the stream is wrapped so that the context + manager will not close the stream accidentally. This makes it possible + to always use the function like this without having to worry to + accidentally close a standard stream:: + + with open_file(filename) as f: + ... + + .. versionadded:: 3.0 + + :param filename: the name of the file to open (or ``'-'`` for stdin/stdout). + :param mode: the mode in which to open the file. + :param encoding: the encoding to use. + :param errors: the error handling for this file. + :param lazy: can be flipped to true to open the file lazily. + :param atomic: in atomic mode writes go into a temporary file and it's + moved on close. + """ + if lazy: + return LazyFile(filename, mode, encoding, errors, atomic=atomic) + f, should_close = open_stream(filename, mode, encoding, errors, + atomic=atomic) + if not should_close: + f = KeepOpenFile(f) + return f + + +def get_os_args(): + """This returns the argument part of sys.argv in the most appropriate + form for processing. What this means is that this return value is in + a format that works for Click to process but does not necessarily + correspond well to what's actually standard for the interpreter. + + On most environments the return value is ``sys.argv[:1]`` unchanged. + However if you are on Windows and running Python 2 the return value + will actually be a list of unicode strings instead because the + default behavior on that platform otherwise will not be able to + carry all possible values that sys.argv can have. + + .. versionadded:: 6.0 + """ + # We can only extract the unicode argv if sys.argv has not been + # changed since the startup of the application. + if PY2 and WIN and _initial_argv_hash == _hash_py_argv(): + return _get_windows_argv() + return sys.argv[1:] + + +def format_filename(filename, shorten=False): + """Formats a filename for user display. The main purpose of this + function is to ensure that the filename can be displayed at all. This + will decode the filename to unicode if necessary in a way that it will + not fail. Optionally, it can shorten the filename to not include the + full path to the filename. + + :param filename: formats a filename for UI display. This will also convert + the filename into unicode without failing. + :param shorten: this optionally shortens the filename to strip of the + path that leads up to it. + """ + if shorten: + filename = os.path.basename(filename) + return filename_to_ui(filename) + + +def get_app_dir(app_name, roaming=True, force_posix=False): + r"""Returns the config folder for the application. The default behavior + is to return whatever is most appropriate for the operating system. + + To give you an idea, for an app called ``"Foo Bar"``, something like + the following folders could be returned: + + Mac OS X: + ``~/Library/Application Support/Foo Bar`` + Mac OS X (POSIX): + ``~/.foo-bar`` + Unix: + ``~/.config/foo-bar`` + Unix (POSIX): + ``~/.foo-bar`` + Win XP (roaming): + ``C:\Documents and Settings\\Local Settings\Application Data\Foo Bar`` + Win XP (not roaming): + ``C:\Documents and Settings\\Application Data\Foo Bar`` + Win 7 (roaming): + ``C:\Users\\AppData\Roaming\Foo Bar`` + Win 7 (not roaming): + ``C:\Users\\AppData\Local\Foo Bar`` + + .. versionadded:: 2.0 + + :param app_name: the application name. This should be properly capitalized + and can contain whitespace. + :param roaming: controls if the folder should be roaming or not on Windows. + Has no affect otherwise. + :param force_posix: if this is set to `True` then on any POSIX system the + folder will be stored in the home folder with a leading + dot instead of the XDG config home or darwin's + application support folder. + """ + if WIN: + key = roaming and 'APPDATA' or 'LOCALAPPDATA' + folder = os.environ.get(key) + if folder is None: + folder = os.path.expanduser('~') + return os.path.join(folder, app_name) + if force_posix: + return os.path.join(os.path.expanduser('~/.' + _posixify(app_name))) + if sys.platform == 'darwin': + return os.path.join(os.path.expanduser( + '~/Library/Application Support'), app_name) + return os.path.join( + os.environ.get('XDG_CONFIG_HOME', os.path.expanduser('~/.config')), + _posixify(app_name)) + + +class PacifyFlushWrapper(object): + """This wrapper is used to catch and suppress BrokenPipeErrors resulting + from ``.flush()`` being called on broken pipe during the shutdown/final-GC + of the Python interpreter. Notably ``.flush()`` is always called on + ``sys.stdout`` and ``sys.stderr``. So as to have minimal impact on any + other cleanup code, and the case where the underlying file is not a broken + pipe, all calls and attributes are proxied. + """ + + def __init__(self, wrapped): + self.wrapped = wrapped + + def flush(self): + try: + self.wrapped.flush() + except IOError as e: + import errno + if e.errno != errno.EPIPE: + raise + + def __getattr__(self, attr): + return getattr(self.wrapped, attr) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/easy_install.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/easy_install.py new file mode 100644 index 00000000..d87e9840 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/easy_install.py @@ -0,0 +1,5 @@ +"""Run the EasyInstall command""" + +if __name__ == '__main__': + from setuptools.command.easy_install import main + main() diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__init__.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__init__.py new file mode 100644 index 00000000..687475bc --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__init__.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +""" + flask + ~~~~~ + + A microframework based on Werkzeug. It's extensively documented + and follows best practice patterns. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +# utilities we import from Werkzeug and Jinja2 that are unused +# in the module but are exported as public interface. +from jinja2 import escape +from jinja2 import Markup +from werkzeug.exceptions import abort +from werkzeug.utils import redirect + +from . import json +from ._compat import json_available +from .app import Flask +from .app import Request +from .app import Response +from .blueprints import Blueprint +from .config import Config +from .ctx import after_this_request +from .ctx import copy_current_request_context +from .ctx import has_app_context +from .ctx import has_request_context +from .globals import _app_ctx_stack +from .globals import _request_ctx_stack +from .globals import current_app +from .globals import g +from .globals import request +from .globals import session +from .helpers import flash +from .helpers import get_flashed_messages +from .helpers import get_template_attribute +from .helpers import make_response +from .helpers import safe_join +from .helpers import send_file +from .helpers import send_from_directory +from .helpers import stream_with_context +from .helpers import url_for +from .json import jsonify +from .signals import appcontext_popped +from .signals import appcontext_pushed +from .signals import appcontext_tearing_down +from .signals import before_render_template +from .signals import got_request_exception +from .signals import message_flashed +from .signals import request_finished +from .signals import request_started +from .signals import request_tearing_down +from .signals import signals_available +from .signals import template_rendered +from .templating import render_template +from .templating import render_template_string + +__version__ = "1.1.1" diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__main__.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__main__.py new file mode 100644 index 00000000..f61dbc0b --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__main__.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +""" + flask.__main__ + ~~~~~~~~~~~~~~ + + Alias for flask.run for the command line. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" + +if __name__ == "__main__": + from .cli import main + + main(as_module=True) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/__init__.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6f73914637f7499e2ef4813a11af2cdcf69179f GIT binary patch literal 2086 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

    WS3F>R zXSR*v{uO3ZwVS1=aibO^j8rHAV@*3bUNVl8<80&$#PFm+rZcJdy=;1@O*kuvMOU@O z_YdVKkwT&jfTaYlX1Mg(xNy!)!o`y1H#A1*W~&pB7Io+P!C z31LVfBY37lFSA7lR?5qZ<&7eRGHAu>APR{**M~?+BE=vEio%WOJgaQA0XJ=3_JYJ3 zQV#Sxg80f-txhGhFYr1fbcVczPP!nHjl>|s;4Vp>+^DgWj}bVD{aI+~G9kc`Tu=ju ze+@t4U*|_3Yj5XZO(slM+|1PnTyhB;7#xS~cLD?&mS1h}>2tr`+km?YF=o`!h_jMS% zup~&j)u;$W6#mCuwQ!zD$(Rlv?;@E42$;F`;4YVNl3QxR(>aL0p*tE0ao=!HTQEKG zJlgsm-PW*e>k(<|2-{NDd3pQy?!q$v?)Pe>&QyLA!Zm*=5h);B$CJBjq&m^ts#Xuw^Tmy63bMps1d~&BA2;4CFWxIUJ!x-Mn(ij1_&ci zXUf|DqkAZ>?v~Tn?(t6d4v#!Q?WXBqk1__@Myw@&iXjM~>MmAk$08F!_NpEe-3xVhv~na40D4}8h-4T`4FHldAz>2p5r3BGa|7qJLqX9m zp=3hD1dEcqD}EWze4W@L&VmU0r<}u&=K&ElOR5lalH0V~UwEHssy! z07*lY=B=P+JTdG`ue zbg9l37BoK9SdIYEu#(NlwH6Ic1+9YLopCvD^kXE$(+T+~|4O#^5$a2Vb**>4vN z(AX#X`>>qccDnF_?IYx^*+iAc7vxp8DIbX`Day+YdGK3twcQwx$bO?om@vKPhn_fi z-4uqZB3>R68XLCOX=i|E{Vg{=28tPlQG9~oRb8ur7t4s4W(BJPkx=S&dK<}6=#+m( zkERu||I0mD(|7T?oc`jmQeu6)P#h^?Nk-8b(vuR#zm1>8{n+ZD!DujDVmE#aXXD?+ zhmkpck56S$?9jv2KB>y_t3cEL!pfBUh?03ADn$(bjlt_TX-k`R#~@e~B}3!i9R6CA zG~jtjK@K>?;4FAjfMT*`q+)Ivksg7 z1SPW@qvM#q9>|(szM5)}u8#pB(@-42_?YE9ovS>XwM$IjH2+ic~o-S9z#o3#LF%_j_#2R^iG*vmIIxj9zoa)oEZYZ?o7IioBsXn}JWW6Gq=)RyIW@ z1R%NSRuwJ?W8HNmN|YMzrI*DW)B8HZATSL~Z&de$ZNyNfRMkWg69S-nw-7;^6+h1p z1`-;n0s2GgUiwei#CAx@0*e0=$6vf>n3;gXMDzlrLdlHo7wO9P% zI%ILWy+ak9LO^8~K{gcKc zD)80mkNqF8`XjpJ>cFEFNW_eQ2IEUt&RP2>c!pE79jSFQgVlNy5uFflDxe8uM4qQ{ zrQSqgVo+69TNZgpuklIPK$#;i-d|dQ1I;rup<^jRr(G$t4h*Owsp68^bJe3>AimxO z#>N_hYSL=Mo`AC6o4ZJT=)18O-0+I)qnJMX;USr>TtwmghQiUgix-%Ph}xP^ZZUfn z6J>nDgc=eB=zMi%JTSYqxX&y^Mc@Y}zJHcWSA2r#!I+)`{#+qdmjXks!GE$PavLl9Yj^q23MAX)-Y}X98%Fd=r;0x(cT1lrLdc=wVI%(K(%e87xdMnS!uMlD!ZiZDigD92IR(@cad0a_uQ_{GB_39 z>5%{kdm=sl^a9FXK<@ zlp!@FQ%`LmvJI*}^pRD>FaHGOgOAd;b35bEPcjH%g}F>>pyU`Zn`R`l?Ce_k4S3*` zGYTWJMo&kJ7ZYMJg4d}p%h2s`{V7!w?#Y(Qdaf+XWW4|b{J()T6PUkY4o3ooZ73-( zlZw-mMflr*V11Ld$D<{?Y!3JPvQNi|(+6_35l`%vJ=E-`k!Gd(=)kw^%DjyVa zMRR1^idTstUfYuW1fVTbS3PA*Oxmb$;2UEF&^YnQ19wf*kT-d4M%+w1!unE<(8$3^ zDFPS&>DyVcj!uV};0$Zm(LJRQRS%8$t=bTCAPf`2tZXxEs$Ax)py1(N>>B}KK<(;w zQ=-MlWQ1xk&I22}ik_NyTH_E(>z_kywfVCp^r5sgcYYquSqXkKF4(fCq00zZGiavl zJ9D+&LS2}>a^>QMx!L6lDAK=p`SP;o&C!FmuG5)d$-G6?wk3R{@*Ld&$i8g$uDuXJ@nCkp5F}}XWt4y) z7^0@7lvM3yZ|ojomiX zN!r;I+EPGp0sa64s9Zn@1YGzF5aP}ii4_7QKuCx`00|-SeQ#!V9oIn|h`V3+$L!4R z?97|@-n{o_V@nKI&~|$28PO;5el^cWVK5SYcK*31q*v%MXGsZHHJA?~yg9Vdz887B zhn~FuTkpT4w9AOkm6wOwdl9Pk|Gh9L52oeq#E6jwI2U2gQ$B10qESYTa)U@Zvf9~9 z+FtWIsYlL+AN& zlvNFDjs#+D!P|Qcd*-+cPO@S-X!DLx5*howKDqjwHEHM{qvD-J z@~2SKm7CW(dxkeBO3Xz#T+_aA>>TrBux7~`RlqDgCX@R_}StN1%8??tfz`b0Jc9H~BQDlw5+j>(+%5sR{x9vsEv%FJG zIXI_ftxkLBrt+QQ3Tb5>$p&f&u?h1G2CSw}d0}vxUadGnpgbJiEL$~&zcHhlq@LVP zU=yPoOEux5C|Zh}ACXXXO~=Ydu$->s*tb8)^{m9hue49v(y(BcfO+$zkvWM9HOhI7^!_)+eCPPm8Zs`vykL?yS(a^lkOWrFt! zcN54gL}Ai~)VURdS&1gx+%1$8o0r$xVqIvSWU6VnA49T(9OvhES}? zS_rg`r(bVgj}bQ0FA)%x!O_OoIb+k}bwe|ybd>zyDRDwFktW{;7KPd*V=tYAEdUPO zB~DA?$b8BtCIeyED9mjFKe_pnu#4~-;XA?)gn7cxgtrK*gcjiv;RxYPK&mi@jMv+` zVFP`=%?o5s%)5m52v-T02_F+a0l;8h21@e|&wN4njPNDlE5bK~rwHE?z9;-h_=WH* z;WxrE;djCxgf|F(5!wI*2BYY_Y6munz;B@Tfhi1OkU+Op10%QrGe+QA0wTUYfg?ykXZ zZvq?MKu=>E#a8A2x{UnG`kZGMLu!CE2 z%sJGw1b=n7h=9HuY9^zpOhH014q_#idPEq6#JVmNnPehMk`3pHM6fm>t!TgmhE0)x zde)bGJiEo2VOm>C>F10QU?lWC2|!fIl6pTY>;Hgu&V)j9iXdqW)o3VwSf_^?_h<=b zL+uJ}6tXCzJIScbHHc={F120fxf#NJgnal9kevIu zcNCBo8PtQ-IL9O9Xm28PD=OMRtcjh|V=zMVAmJebr?I2Zt#`#79_HCc2pk9^l~n{s z4H+iV!1}S-K1iBw=?;5Tzpj?5<90+^?DfvZZri&~vY9v=U-ptE%Vb%5voIud*Yv5L>2XhY zZ&i)QZuJHfZ?yB0zzYfp1PCD!BqR`!2PDJ;yz#&jNT|6;urEY{2Y5k>6vX%ar|MKy zca3Mp>m?bxPgmFFKbQaeujib4;lP3E-&#KN^DHE9ml^_Tj^}NeXrdOd^!1zvA=0Kd(GTrJDzI?Yp(6N&ECd_+f}Zz zx176n(6iec{f>)Mf!%SuRoAn7p1slYTp`i#Y_6_4D;?K%`u$G3=>+Xw*SFhU`&G8X zzEJzD?Q|6$4P39Lt6gmN`ggtd>RPa9KY!uk1^Z2>({aO=E`o^L_1#7L+Krdby>RY& z$JzAV=^tRwatqdIZnLjIs=no+KG*w!rB9!%qsjdq`de>#y^Z?qw!2ktZFZY@uxh>l3esxz`+%K{HIa4xn&F7$t!EQpz^Bler~y_DypQ)?_0|y zRm4bFM@P)a-Ef1={*3@l8vN%?ccb6)9Ph5Z*6Sz^l+KN3*3gy8+$6|i`@rRS4kVdaB#!4*KXq13dYaoXbN*{a$mEA!Qx*9 zA7cADKK}bChWTNxo*P;ytziLWepp0_qxJlHQCat__e#T(%H67ZmvGKnFY!0-z(?-L zQgwLTAvP|DztL<@Fe6X2ObrdMpORgit24R?e1uL z)9cjxp4)2Q8O`!oxh-e26Zi`=qXI^KG-Wt4s`UEO&C%gj+w+6E=A0+M9u-#Iz+;cS zDvD82wVT1{2r1rnAWXg?>`n1{S)+BKGAjCRr{&G?$!Qj|EDo?R)czpn9l?noUOXRc z^w0O({c|gu?T$KEZ>>Imq5baGd6B5|!rt?yy?(8KcT}y{+ue3huRjI?K8swwTqqaI z<#K-3s#?`z_>FUO*5EM%ju^hRh{RHp+~i*wA9DH2`1rqx0wWErb!*CderS1TRel{@ zSO?D(#(ik5LtgG#EppH5f?Mmk_pD(N94F^X_n_s5kScKf&7eFi;4a`~z49JpYFNBg z_WD6}SZeW!DOJ2@eTOK?txvDd3@yc@+4Td%d@FxEH!QTEEr+Ex?)`55JLI?pj+Y02 zdevTYJJ1Rdz=7pR?jUsDCbZPER7RS^0QOy+rm8UDUJz_kjpAAA!?Z}=#FgDVHsRW+*);AmdWse`a6htxGSuMXkNVRcv?!I>lKx;m zvO2C#;OLloMV(Ziz|nE_s(M5{ilYJR$svPv+5=FMSL%)0_5-Y(Ujq{^Dj_;Z@~d^ zefSNKlUM@I;zzRwdoRX>hRy431}^TQU_#`)$P}LQTzU=42&WH;bOKnUuDwD}MO#$d z(CdOI3}PoKu0kg1c3h1cA+p5uLm|98TLUNdmm6obxn8-LC-_~eS1;NyD{OS?;B_B6;y_H zxwwfcsq1n~;8Qr=Xs9B`i|znDI8U()xOqcvlu-x=OdGP$6MI=#ubq;}z-#rDU|HyF zkd4v|FToROfeav>5)2})iTWGsi_w67&7dSUJ`FvvYi?J1Xl^E-#`v5X>aZI(T-RQN zbzf|lC;f)>oPH|2D2x`>bgvseP^;OuF`PKjTywgsu3B8QFV-&BE=W75mrWymd(F8G zJ76~&%}%?~uvdZCKFveaFfat3owBdL@j8&bu>m0av4Xz|j>)5Sc@PBpjtADm7sTD& z!0UBFwh|BG=ec1W@K!@QQr5d105GP{4C@E3cYjJP;N9L z&EII$&`5BdhTOM1Jp>dwFljWrUN5NkonQ^!C;TxWhCw zk$0wvc$!_22Wm0UB9gj6jK@^lcMw@=znl<2J3^bU@s;kT__%0lX$D9! zK3@(!Vcy(mq(+R)c%6YqqVcxsVYs?zKE=Xxkm4cri;vxa(&AH4iep0s-2j*ch)4*u zrmI{;H)mrqumP#+;>Y!{Z1uWl0>ad3HeKIuV|Y?S5g-Jkw%dW{(dE#R7>3&-Hl`UE zin#gFGZ;$8Yp#WCyP3^#K4-}6%JGOaG;4z0V6!0+u{!~i_@PiS!EQm9#KVa;z(T@C zA#5gU_=k9WvPXU>52+E1xk!N#P-8ektw4}KawpUW*!1>WZ}>4IaUa7@R=PnP2Wj`q3eK((B9=dA5(pbM8nx61Fk&33De8ez!NYMR*y zxHOtcuP!wi&GL`mbgr-CBiXG0QT>p4fYNYES>HxZOR@oZiQx-F#PIc^WClu-87QwJ zvaDBzRf+howR7)PhgF=Z4iVeerzD=wFCmjNWyW)1+GAv@qkt!PL}y+HQU_8>Y;-XE zDZqw$932LmT@Ox-B#0!|_vZ2RXbJ{iTj_-viH$r`9?c|1-FueREb#QfNDxC^6SqKz zVP|;fr&x>yPmD{xhmU^}Meab+nnUOm|EnToDqDlY*P`T{iOidMK7hYM_>lp>gdYfx zbKWVGmUl|hiusMgdlGO52*2+kD| z6QmIu>X^tKMG{MlxgkB~BPNw4xdgRNRk*q-*+v|D$Xa>b*aC+su8EA6X^zfpX@pYm zd0~FAxaD}=!RpPFDcfRg9mEZaUUMRvK*EhaH(HBy4^-DG@|{WxMYp#ly+UAPYv0k= zHjO3`_GHW6?AMl%@Htvvg}V}yt;5%JN5|L>95TEG!7yDqs`51I@x2 zQbv_9mHkhoBdIrv|1;z468zLI(R!lvJPWOJGW5O)?qA>n^yCq`Ef1vZyY;O;ibVN@opDXKcPYe$(FY5*$4b2^`l*Q*{S~7Num@T4clJO~_ z55?RN(%FbH$*+>Zhj#?k-y{ILIoJ5%IAPmom#L)GG`qA-O zLJw&)#w`XkS6o`1XjotXNibGIA+d0#V$uGxdv^;-A7eY|*?X`loW-NlZQ3O*3FnD+ z9QuiRCMQA`?RVBNi3Fh(Nun@OZF9mzYg?X9)f#ti4Q6-6MXD#!y-DR9H{#}C{`_US zsEdpNnZ9^wxvZT!sK2Km7@p07zSh#hLGL_&d=AC(Ayg%EUM2~kGsg7amgkY0ROTuu zi?#Kr+=SGq0C#XyjWRmkAzToOM8a74 z$imZE_h}41$bDdakjGStw)BM|lemS!ufLJ7>mfv#pw-4*(vETTrCp(TN@P4Ovq+=5 zD479VLfR&rL!@y7O!Fh~@{K#rWmt1{oV|9uYc`)e!1Z&y}bOv}vqjvDPJ_H_!Um-CSwDG&nd`o3R$O6#NK( z-^9Uo&O55C?cA-3e>BK(YVMoXcEP(8phQfN_b%aTVLgxQmv9}n;hUV!D`;GNP-tOV z1C!pEYQ+Rw1p` z6UJ9BcbttC<-GI^d5_b%!Lz1~wd9b;4q^1j(n4`GcNNq59wXaVJg?`CD$s*Y5O^B& zbQl*(8sGv(8z;0L6%?`^J2a846QOyG4ddOpV$qt1ZknajdOW+4Mh7v%h(6*n6Kk!! zi8b=nK+e}ddlG0-_IYQJL8nB?NrN!0WJJ3}1Y(C^B@$d=G@}8Kpml;{h!mshb>jq@ zdxxuA+5ut_I4=Y)CUdaDBV3me#+^}UVvv_qbf!__93W#_YuN2TM~~_GtkA=4ZX!#8 zWjCgsXY~ZxRy5y^$+Yn${Z+L$D8pNjYVRD7%G1elu)_U`rL%W_^&eg$VQuyT6* zQ1yjrYjAo`4ba+NN9($mq@~Y>-4^2_)!4Z7EUOU>U!AKYjd;|{{Rzic;)F@$Qgqc91E~OLOKMdEl z5bM;UUeYtQ-tMkD(2=)C6)im4lL1ge__{xqR;^8S#;vXkJWt3p!AhH9(` z;{^x6c{o9T@j`q(4Cr^kplI7_N~*8RZh(fJs$mQs#vWj5X(NHuD5W}p*_@h2U$`&66WPeI{~ zO6>0*)TKww)hBF11-Y02&A5Uj%^0)~M?L;D>URxnXP_RR+@%HkRE|&FAF!*P-im`c z;*aVnYC73~jTPX-!CKVjAGeB}^dxo5c2|?*psK_Q#66l(N(<%|_n?smq9<8S;m&Fm(-ySpOl0Ll2}fE4oE{Rhqv-2<^eE z)Kp^-KOD8m)aSPhh^aR3=T+)97{$p}M`4jH&tSxu42$Ay$l%W=b5tuXvfM7R`|n~a z$c{GpCeut&AZx-GoRgVu_m0~{x}D1qNlZ^Sg%kk;0;0PM-I={jc z%UG=ZGA{iFnS<}#;JMhIr76dlh_aede392_ONk^H*`(@`@OUmw>Q`Btq;N_|ROSaK zcd9cR1IJMZM zm{^m&8%v{xGmca_VJId;B8KWX(z}7)Y5pZy7iPgYypomk$hF@yTuV6a;ZW1t4iUN! z&Lxs;atSZNLrbH(6gXMWX)Pq zvnt9woyt^E_i)T*d4-Wi!?J=-r#=#PKGn!j5_e_d9~vgcQy$6DOc8xRR-R07Cq?gj ztenaRvsV6-NwzvIWIQ8)?&JyVQ7H?ppCp}pB-OhIRLS2rxLAnQ zV~X%Tz>w7ZqLB}zDE*O`-Gi_an8IsgEF z7f`{ZIAaO2r+Qo6y-2iSW#n$rc}lxkTe7?rG`Zl0bg?W&G(V>TV=rrxl1%+2m!iW` z+zi_m(J*cvm$kx|3w=97Oji!fMAm{kg4{de<6#45-&G;Xj}P<%Dwn@8s5~2^a-8-@(J%Ak#Qw?vvm!oUVzJ%$ zt=YJY1T$01{PBZBQY#w6{Uj(OXxNi@i zAFNKgh)1(%{jK3Nj0v2?Co&M0s5+b5_t!#$U!LT5D5ZF#K##kSxUz}s#UXwv7hSJ@ zH|$BWJFSEGV5ZjDyDizHP(K>Y*kI9`XqvbW`;X-QnWImSjtkHR37a!PdmlWXa32m$ zQ2PhNbuKEH@ufF1Q#4=ahF%6Xn!F~ zH}8p;6d_}ox#|WBGtD}jINy+7e`CT$uD{XYBIEmQEZETt&h+}5(QLAxCOb1KHhb7y zZ1N~^p#R^7|6fe=KS?KMeVhh0D{;niHk$d!)Hp;TGeTh+TvvJpC;p3-N^FSbtVvBm ztn5;8D&;LzkYY6FZ0ghtjOND){)ef#gnW0xQy9O|0B%1y!tY1xCE))VUyz%euv=2^ zGL)T_kr@$4rB+VIY5+^ixYCO&&Ew=CEq-drqV_Yxo8Z10wMg1&DpPmM$AX+KGhTi4uia8j9t3 zyD%ZD_`XSmCN-iA_zO6StUzd$Dc!ODKWK*eGqKoF8D=+nAA_EB0v_3!;*4QKL45jC zduhf4Fy-?ZOo@ccD65(Vq>Hn2$#`3-KTrxKLa*v9@DDPZJ;Ov{@c7u({wOxwXe zCocR074DbNX&m#83T~a1*NEV)6G)#JGKMhsz{57C+r;`WUAPpzsDv&bw+_S!AwwrI zC1Y=P@hTC#olnv?O}@5J@eO{Qycv7V7&>ruY(uQVmT3c)!!wx#GdPj}v z-I{v)PtyNNte`YQAc-(Mn)ULca3kjqO3XOEj{r!K;~Vcu+R61bkI|P5U0?3`!7}uF zT&jx2=X$nebOK32y@gPFk@e7r4_Ex^smj6#A*OQcJ+JQGX}a?EKkXT3%w8@Snf!dL zmy#nC%j14r<2JQIrfYo0$R&1u9nKFD8TwtSO*zI=!4=j*bq{CU)TmW|17{y)RpN!u z&Xtp!Ig%BbMIRJ=-pp^`Ffg^Lj0}`_gB6{N@TZn~-E(G8q8Bhl8*W47C97(LV8_;# zysJPMX3-Qs&q^aNWLaXTj_!^5}U{PnW!a}i_V$ou; z%A&zyorU;ralyg$o^eD!ekz;tE$Om%j8 zwt8rK4*%x$zv^^#s#=k97Uc|n&ER{w%D0k)jUn>c-s uu$6bUjLLdbzbC^crykggDp4=zOr81@ve_e%1La;v7N-_a_ma-Pn^Scl6K0u%eAqqQmIN+ z%KFFo{l3@TGXp|)@=rkZo7dg%>i53;``*(hM@LKFC?9_N4{lo4f3f=h9zp&&T;cDy zmZhw+rEKLi>~*K?*vz{Px9rNVSN7yLSI)_AzMPleLb)Kn#d1-8hss0v^%|x1;qtJw zk!y^skCsOzpKpwf$9_m%hI*^nwV_OIVpzEASQ$R8*l zko*Yp_m}UN{3!Adlpm1%SmWUOq4FWg?`eE&{lW5sk{?I@q4GnL-;4ai<%ex+b3{h_ zNcoYgR`ZZ&1^!y;16xnn7XK-?{K)66rt@Z6?$Pq21LbD3a*vvFFIZ|q?YnKMeZk(< z$!)j%akXFFciSpIwqz~Y>VUfcwq1T)J)jQa*%RuJ`WSu>s|VFX_&uVw)FaAAi7EA{ zn#7Z%Xyp^?sOg$bPRS)Ce6L<6FW9a9wI)Z+V1k>nc2KQ6yDDIES{c+Sg5gbS9 zPuz9NC)F`Ejn+<~)QmcgQhfhO)O!+7PN|d0IWC zp2m|;qvWU6XHfDpsQVd|omI2yvv~7ayg99&!JB9B<}}{$_l!EDo>kA?b&!8nomJ1P zbLzahaMzRji|PgSqIxO2e>s@lw$$g;D|cOa|0>ec82#h8=J4#Z$i1d6-Ob6{?^3S1 zjJl@m72M5dcdz5_jqL6!>c5%YeO|f2Gw7$h`dpA(J-hn+wynN^5uH?Tskd)i+xBk% z%IDDM8TCa~k*_(W7F5-gEuWV+i>j7=r&0l)T~J>_%S&oittBIFU>xhJi4mVtE!FPz zRlXQ}N?nujyrA@&^MR{xtFY;)2qR3N{IJ@o)P2dnc^@Uprk zwSFsj34L_$+JxFG*3|cOJ}CM4TWVCpwV7I@E_d&wexcFAb|dg>t@ZV4Q~8a0 zGw`eJcB5XaM)g+Hk6OOoXqr~|BAhWbXKStYrmioqM6>>>6DLpjm#U3M5QWn0EUE|1 zFqrk9zjA*1lhfxK)r~MHeTM{R%8tj{y55W`OB>A^`I~YenkgWh1@6x-qKMejL_KfcWl#i2{o#EIcx_twoymz>($0a5aO<& z16{3$0kT6;a5Jhzn{D0<*EX~cFd%e|+c7jzQNiNIas_j@%!+&xG_NDOhuKD}3SekO zcvRyjrGFg5bGX8BB!N}7l~s0>4Z`VQLELz3u64HEzHqY^wE5kgPhRG5lwV)+tIdH~ zuT`7PR^%@R{!(iL%hJ+5I}Oy#+>{p=E0tz-J*ZUTQl+xqQX38CM=F(T8`Vbgrcl8M zYn93`So#1)BguzHk4Nk6*KQoYNFX^bpmH3bGJ~bvi&`i6 zF%FWVE%!C%`IpBvf(y*T3XAw|5K*ULt=nG#(Y*PD8b5En{qU9(IbFN!sNA-@FX?3`ZR`u=82cwa$g}l=@j$h+Au3Fb_dsZ~M zR?>fFNO?5II^plXYoVV}^n-6ePh)o-_Vjs_e-qbLzTGo83YEhuPjqg)P`@5vIeoJ- ze!Uq+)n+a5qm_E-16l*5Eq|$wb&Xa6EOHq6?N%7p7aM_~58yDvzdBG5g_5=a2Li$& z0VYTRX+~=4A{GN6nv=zhU9=Jp_cb+FBYg6YtC+*J4_9~y$+Fe8-k#X9Bdcr68eu)Y z=3Mix7`Q>BrFxit$CML0Gbdsj=%61!WdmRLBlltHbfX?dpe5}y&$DfIl(#yM@>?tX zPNLY%=|-zoZG>l#NlR-EtrMLOqM#N5Bi1(>QJr*2zNH^ELd<768IeY2SGwGXIqQfNTn6?tGx)f?X(le!KwChBICI7I z>YC&_U(ZIhRINoVz3EThN^)D1yN>3Vzqk>Bq;52nPc+8YHvD?z->63`ExZAN+E@p{ z3GW&9;cVPl7e`3WrVbB$L$3iWMj;uDrVQ60&FCS~>< zeGuJhLeZ3?edZr!eot%(bO`YzDc2w4yAl%8FIBHapjmDsXbNSC^GhwgUXAnw3lsor zSgwd*mvV`Cgwt3_h8_>igLq%ix~1d$D|{2E3g;Ibq}5!m$fV`t;jpIb?Wj_3qIu3w zJjAgG`ILdj1$0_l2|_`Yv~>aL6ub%9@#p{uKZ!@-r;%9Rh+DEpoRVF1A8d8M+QxDfUT;Ugy5D!5KK`~cB50N@s5VpJC zT3#O&ifVVQy8XU=#p*ixDL#20G_vcASo%%SSyE32)bq`5PPuDE{G$9eOWWHhH|2Hy zXdcilLt&FN(O#Qm=APBc%>e~P3#dI;-U(csvs<(egY4t@>&X##{nwR#>&iw6@s5U6;KJwBX|m- zAgP~mR88Q}N0BV!3il(iaz#6D=N&G(hh;xx7ab`vKz=zaS?=eMiL6yDjIs|}TXyH@ z&BwZ2z9D@IjK^7ZyVk0QMLbHWj%;$vzBYcCkqQ1>MSgP`_x1>qo~MP6h9ygSqZ&%bfs#gMbr5anCTi%7fYQ;9fk~n7kh#oVoS(|a zZn%ln1v?ZxkBiY_WeGh8AS#twO9do2`~|@&;9V24A86Gi>c>vB*prXUY97P$4la@6 ztm23RB(}#K&ndZ{r};KRTvD^+xMU?&pBS{|+E#?MQ*PIR(BXBx@L1$2Z#748$OtW6 zZ#BPdy#>_X%5RQE1t2K}lmhh26A(#?5J|4v))u6z&VC3;MF=7JgFxeV?W@-3Emcs3 zt>QbyH$^)YQKztNLv#IfH?QN(1JTIps4Akryc%METX~2&e~fm=qCHCv+Wy0&?FTTf z63Ri)QNu>a8EpUBAEOU%$-*edqj88)g>D`K-4Mok5$)|2efi0xwIk6)SH=;JL4fkq zh-n#cyHAbYb$1_q)9V(thNAu5p{~2_;2U1)4ngGe)EH``CPuc$j7$|kzQ#L$nvj_U zG?qo+GKzo?8LR4Fuj+ag;*?MJPmb3^gc<*(B{E}{6F^Eq@fe?i6{Pgb2n==b(u_C= ztx9nWr6WT{rI|s>xsX-r(KmwtiP9s&fII=U(=BL3kUXTJthWKNPMB%u@h|#Ek9^^a z{*kG-KQV>uv$Jm%sB>mPk@4TcR4`H&c z1IVDQCM6<|)kP?q>kJ*aMUuF6YziFl6rjB`b1oBYfZ`Cm2FWof#N;i~a5IJ($S5{& zFn!Xg-3qo!^Pn{;G3YP7t3cH!OF<H|HkpHaB_fg^ z%4w~|s0#g8`AfRBj&De$%h|z?k>;e~sr&TD**>M<*wI0p6JbIG8hw}#^UJ!m(GK-v zycs(S(W4I0(8w(^m-+}BnBr@<8bkoZKaeqe``$7Fs)cpGGA@r1}aT&~5?D8jD@KQE)5j2luB z;UzTm?;t~Nxav?~*)n->z-=3J(%y1F38)qx>89^Iz7t{RywuB?ddt?9d-ExIl22+| zB1jb|9Dz2okD{bQUD!*uq1=TpU$U;f48^Xr3cKY&s6=b7{yOhghZXywB{a7R8U>{_ zuZmxGNsU2|hB`l(s(ee3y@lk6u6Lsjxj%x!0AU{xL6J4+v0+%Yjzyxj;3<@HQwfyq@K(6h7EQZQCwhi2N=Ri6o9-06=Uf6 zJv0zLj07^bGY-MZLkduYJUtF6`v63)F|cX<7D~+5C{FV)HB<<6{Qw>)2-KS+M!>eA z{x|2r!))+Fuy6h&*M=-sI0&grUyL9?ujadUR9G$Isb{!Q^HA5-Z{b~z?^NFK^QNaD zTpKGeS{dq6o+H1vAicdCm5c!bd~KLH$OVw+SYxUs6Qr1ezIAEmd zza;i9!GE6=%Sc|crP8fvaSQT{%;7Wm#Ll4}eKu`n4S}|sa<8HsmK^pYQv#yVa9;Lp8EA^!c zh;2m-Tk%Atk~LUafe>G*82Y*c7)rDm7}fmG(3SxNp(i8um^&s^X99F-!hymC*}LRu zg>spsMmXRlaPS5)RF*;*g;p&+&Q*W`%W6R7QVx6_&bqth0o%Q;Ttt~I7v)zA+g6vV zn5%MMcMpI%tQN8Ipb5wgZPQo4wJgjDZl$&uAl>yqldA#)pT1WbX~o4hs1a8X=2#h5I#RvDvL28*qHJA@ZpJy0;ufg$z##DSX$#Gp312_JQ_Jj*G2q7c2*_)7SymB!EaHGVvYC2W9RE3$YYHP(b;yp3V)P! zh4v*-W)Q>7cqht@O3E6uU-e#-7PPi{ZAIumsJOvL2qBA`MtX%fRrUFOlqJMwNDKIk zPdS!WKx$n6iqK%ALL1>02CkNdQY;K4#Ehbu5G+MQ&M_L*)hjQ&go;fCqyMrQ1f{PU z=)4RjEtbNh*u*iZ{(4Yt!iGs@9DT9v(BEjMn&G0xeE=npD&@rt13CLt+0JnVXh5M+ zq5`ZzYDW&R%c{6?=fS9P1Xz_LRyB*rK~GBX%buGm#CfrW>)4~EPE&Y@b1=#SwD(sQ zm&H7fFCtws3gMWs*l#phCQ$J{b6;;(deaId^TMF9q;Imhy>M3;2ufSq0pj{|DE0}0 z_82l2HGZ(9Jf$M1bN?WC%%q$*lX*B7fqq_H0!rt6fZyO~mIm4)6NU*-k zx@^IaK=S3xL7&#tesvc~Jai$oG52wVTX+LL!olF@9Tpa9ErzloGq+e6^au)zw-#oF z<}XlcyYs1?b0f}_fu-mfh_kk!LgeY!2_lhT!R<)QA%Ngv1X*7O@jZNGM>3dnU}B%y z!i!IFG^_+NR2;E8lYjL%29_%WT`m`98^F72i9l+>RO1WaLXe;(E?F+lrK34ndKgJM zN=}>MtUFlT$3VL_!j&BmY+OZWIeJvC68a2$|6cqB6fy zhW92i7#{6k08UKuA?9f8+{WOL7ZAs<^VKJW3!74>S!&A@x&cX!wwJWd4nX(JSA7}% z^gte>DuF33z`0k4DY-l*FjfI`ZMP`Q%KCjT>+D!R8kxX}DwR2YKCzRZ4?8e`9|8%? zfJJ*3(vZ}dvM){z8AXmrt!YZs_c0-*(F9>FBjp6^J4|~0XXvMI;KgI?pNLn?!Dv+~ zjuZ>Uyu9Jqvp*NP=WvCSNCwzpQGpQ(JEV7x?2ynf6ql}uHT@+R)2m-bCoh5-gB>JB zV(2akYJ<_sjbPKq3*qbV=ji~$e;XlG7?_bE1`3mC1~tkNMp1%iIMA>R1g0VIta@~q zb->ExT~q2NW=Pdz#L^TsEebhgkMLS=z>XNC0z^p0X9gzfSu$?X($-sW!Zqq^0fq&^ zXj2*k+pRB?;ptW*;P^M&aEo)~G9=?I0)yR%T2TCxS76&v;iUd-4Psq5yC8kOKuZAZ zt?>VBwl=_J!H*kZ%ZJ9F^wwHfka-?X;RVs#?Kb1uH2(E}3z|Vdr|v4p~Y@ zr)F@|wcBH&Vna0$WqO=-bUW-*}eCn;i-nK<7C?Cd3|r7>Zs3O2Hzrx&c@RJ%cMGmD#Ed%9NW) z(r!{9LCrd*s>C|^e2=4Cu#Sc zG-H@d4JN6n&xBPZL?ns-K(F))!@~=crT!|0tUo|9HKN~V-e+=@i2(9h=H{8a#Y8a? zHCce0Qem7Ei5UWwfPal8#NI|*h^XQ5aH4(FEV2V3;-c_KjK58+AUa#5=dg1y9dq)q zd62h^iHC6K>C+A;70;i00RJd2QUUVgBq-;Dl-8Kq#EZU%45nh4XoBe#hXMAXiI7HC<3ma zgJn7=HQF%?-!N1^vB51Y5OhFq7cw^}kW!*C-~dH^6RMOA0(>nsrps`^2NHjw4>bma`uMw0PUmY&ykRSVvX?vSOW`kC2(Ay=#6d@au>1qkn`6VGJ}v z9!Qsab~OD{S;vKmoc>W1ui?u62yV~e3VkF4f(&dq5MSVTgE&JmCJ%5c#Kp7iws7Mr zM0HDqk{c}zuQg)f>WwNq*Db&zzytPLxKf4VrmXxOBVF_{^Mps&phz!M#RuVD3|6Yw z>!3b~20csP>Fh!hW48dfNM^JT&IM)$B?$tUX)pyWz);hl<=yPUjyYOLoUU`Ang&a- zE=wXcv811VK%XpP~f7vu- z&FzMCw5bplY42FrIfKt!ggh23U?R!h_$Qz?pG^>eMMxUSrfBVVTun=|@l*g)SKT|# z5(22c;oL!R2A^Y!fR~;$B)Aag1a#s;0t^Y`lQBl-JTuelLtBG(z; z*=sgY#Bg5ZbApsGV*rvs&R{O3fqfP3lzuWc<#fLJ{{@cH2o8bHWlH40Z%W#I(oPD8 z>F4zU1gxQr5M;IlX*X#~{}?_}mRA2ba&b;tO||6SG|LM1mhq=h_IEj#Hj=ruM>$}7au^%gj70@Yx!^vjaMlD5^CA#h~g6lz}MHN-G zK$o2j;S4@c5EK3>2wXl$x^%o#UNd%dpuSxA*#3gDqvlz2XRKq}x zbCYBn6VJsr-z}3iFyvGlVi}_)Q4}2LPQ+jnxjpN@0vMA9n{c->2zQq5+u4N~Xcvgz zfHILjSfYD|PqXP^Nm320O0=ss0(-|*DqEuC8{t6uBB$)v(lVWcjdA3?2NbLjk3clw zi>1287}>E23Lp5eLG^pqzk*@05+(o=vFIU;;a`R$fzv3lba;#S`|AeC$?y8KDih>C zGn3j*%onKHS^wnBiEI`aNyF%7MqeKDjT>p&Os`Qj0Wl(i;M+L${XJxQn?ZQ?FX)}l z`A08;%mL7cRp#ev!U#dhXmBJor6D1_js&bZ53L`Ly=|vGzGOk~D8O+$*)6O(5wv;m zB0BdNg>H8Xb-SDY5eU@~vuPti3_8*R9JN*jvF5r#ogErG-!nIyU=Xws8&$m9FZ) z!3R6o8b9Pu$bZD)H?$uLskr80$f0st;y-{0lorP1|ujLd&dn0Zyylj4}41WCn3#K2)T9!jt?%G)R^*& z*LJ=$CYYXzQQ=fUe;Xr+N84-5v;em@G%S_+i+r}1fjZa~g7}U~8vzdpEB#qM_c-gK z-KRpp-{NB@Xz!S;_&(#_*s(megYTyGmrf<>^K_eV`okicE)Frenl=#!0Y|j8!_9P{55(wv!ig+o1IiZMX)rY zf&e{;xsCG3xtoUoKOiBD1z8<}5DWdB$PZ|I5VKLjY?Ko>+wkfL=Q@c78O2;Dy1Q8D}?A3}11RWPx%$}DmM z^)EBoF@Jv#&mQCajU$8k^CV0Qfy!eA%-jQgGdD1*OuXmZ@e)Om7z)u|%&Vt?k(fu| zojwEti|@yLL1EL^ZT{XweMq2z|v<ds;lk9&3@1R``!IVN( z0s$;C-=a7DL%e%BL+BjB9e~J;PeI(A%gq9vJ$=(H?dRs_=I7@T$hVvHFN{J^i%6ik zlA3+Qqe<^INNwo|I1K2Q|A>WTH2jKxPU=kZQoP^uutM^$w7)o7JW$*x-P@|Kh4MM7PcSO;SFM3=SFZWD<+}6lx9Jz zVYWg)A}VCV!5+H2fdVnaUd5Mbejefq7(?79a<&0ad>iNF8+M>jycZ!h*lU6?leCvt zxyqa|%hSJ&G{YA1GiqEyhkpy12>61CuupekL?A5&r(*PBnkV)=DGmvVMp1>kF2su> zJ)WpHq|2rb=U=~pnV0xRI5|*)&fJ@4R0&+~DQtxUjsdqA|Lts{cG$h95Us|(Kae&M zSpm!>?n)criVAKDTmKr~BBBYa=}NvtItN^4UFv(o)fe$muTY+wG{WAb5y>D7Vo?-b zf=e*n!>gxc@5f&%CL2jJiDhYCr&uTpn0O>8Uz>mys&9ZGeM8r=DYSWv#xn@+h$w2>v^|+z zdKIt2vCJ$DT`t^M7o`VqZ=z+WgPARTQL7D1fQCvhhitRSM1N_FNRz5vh&ji%5a=)U zB1ai{!!2gUhX4T^_HCHAYHNsmGP-i|iDFto$5p7n)94l6q=f-teWAiB=LBcsd{Pw} zKxLrltiKXP?Qr(^@nx75Hx?-?9ml}JwT<t?gdQJ^Yk*@VJE2TIf(qvXv3*{R2Za^PbS+)u5Dz8xd-_6DB_vHj{xzXEevHkyQJ zEiwK<@do`F_=1|_yH$fIgb*x8w!-~AA?Nk-$61p9On&+_Xs9}dPB~4V$VdKm6mYP z@~{MsC*`l8I^y4h2u&jLa0S2(ftWP4TxbS2umeyVL2rk2LVi3?VtNc2>;9tsAf;dg zju)~0hAguL|CjNA@j2rO#~>Rcj*vBL6ioO>lFR%#Tp^`SkU0=r`oSe!e7|g`g6IK~ zdKw#ZxKT&;+J&dE=Q#H?0!KtUG~wd(59hfR%LsfR#RY_+w^0It;0zLEAgJ6SP!Jnk za0hb9wm%S3K8CuszN7YF8~?azLpJH}?Yu3)j-pZd5@`aHWD-@G*#1TBr~6jG3=t@# zV?bA^g2w~`>&s2B!o*6TVex|2mxSMy_g=kl`E%t9ufI^C#PsUfm*(`ZV>0GChX7+& z&=%{72trc<;)G9ZO?LM9M;g_R@do4lRA(OwUoi17bh*y@C>EDMw$z5~;O|@k5?nod zdG4jT7YMZ^awIp20Z!bsX5a#-Bs7FZ(sl4@(!Zo3)Mz(ao2)QXc0sivzx*!7+c|;` zUPqOI!Vyladp6}1b~qObAAAoRu)jE1b3F(JCJ*$nj82+R+otmTbM z04x9)!9XQv9Kb6e3;@Ok`+tcNH5N<%C`~+vOMDFjc3KBMEk>-;r)45m5vT*sT#QH0 zA>95Ftqu&{8rs#aRH!wU;S5@EkfSP_k)Re{aanEp-}HfF9|dF7mOL8dNML)3*TWC9Ze z)Ske^=_TgU4~5IU%a|2M)J$(~{vs&K8z_OTopoJltyMSU5vu8p>wySpcugHE_AY@e zLtjFg9Qt5f@`H;fkygLT)#A)sP$CB=vuCPEX-poaD5amn75)|yh;|J2KS1#cHYL&& z_g#B)j7kwz8N`r4&GtkEhqCw^iLz)@l{9aubR&Yr(5Txmc(@2l&u@89F(*-v3imr% zEeG3Dl0J;0*@dbU!CFP2fY6tVhE_|ev}WmVc60hyx;USpIgafIIn3w?PGXQJ?KNIH!C?pKNGi@5H zs%gN9PjIU*@njJ+m$lp8d=1-2(1hS_9x?1Rsyv11{0>8VzB7ab3&{ui-!l1kd@u?r zJ#3ie9eKX01m3H_Ii#<`$ z2pPD+(D=@MgYcHLhKT1~bwRO`h(h?E2FD^$EehYi!i!(zU}zgHVha`=Layf1nu~;g zgyD=&{vvJwtAcNd(vE%P;Dl6Ch5<)UcHPzqY({k>m_(M~86LqFm*$8(;T9Rd990hR zz4yBwR29M>Bc^QP0bsBpPoQ`tPu%bwd4f$?>65OrL?Z%}nbR<02mg@?X|MhxBtRs=9Kj*MrvHqmvQ0z2 zzl?JpVEvNll$}U5%55HXIUEQR^zRAHkD)Slfsu*Y2Y^CEG8mWLG=)5fEkW1|_FqwM zfTgBTANqLH&r-#)$#9Wk*%QYm&vNnNy;rye4fG21C0Y@d`pfsSRMG9KH6H6jsYi5A zs4ilbpgS;Wg3$*6F5!!>U4dIhl!fFqIOdUsg;}!Fg@w-&j+<~GH5C~0)Qo?jitT{X z9u`>|NGCL2c%-o0WT4-iD^{tf#ZzHqS4L$iesWZmU!SB zwj^{tp38&zaOW~6jb#whv5yVW*e^%OjBnX@Usw9u~K!J>Eevo0UeZ<$tOF;c(I5s3i6 zX*<<^rf<}Al&A3j;{5!jE9}T4oNDPMCqxj_{RaBf|C-6~v-eZ%4A?)=fDkQ1-Zv?Z z4s6lU=PYDljU9h_ngM6ih!2MeC&U1F3)f`& zr1R*#gOD&~Q-h=EjN&usWSk~{4m+1G@Fp>N2(^UFWkiu4u4 z5hj!Y8hrTH)?u=@|4yh7AR%bfC};AIysU)l9IlX%6Txk^#ckg-olbOz;IzOIn8-hj zyoWP(m_OEaDGQN`!gLCG1`>a68=FWW8^Jt|QVt~Y64kawe!Z|Y3=4s{H@YRr@Lo5M zV>RFaxr^gI6lra~io+}|gW$%pw~I1uENh}~r)sc?Na-)z-q74FiLjDpV-qIys22^B zgjWkg;flflv4}0C(I$+m2(g8s6*(XU@DnN>b}H25AfG;cy-x*C16qiy8G_J=nZYhs zB84IF!ZbX#ZtU~Mv2$VWjc58tkKWCT^B10f{e@>v8is}=1NE1%G@@m|`BDNoteB$= zr*h>H&=y`oYuJi2G@I<(&!0J3NkI@SkQKII$Sa(|N=|lZos} zjL6b&7yzyf_6_hYMjc*Y*`m?V2FS$iH+(EZ%Gx` zf$vVfnHJ`%G2IFhWR|crfE+<(gl9}s`o!4e5lY!R%^?9~X@Qaa*c)sRMXcJUUx{Lxpwt+*?lAZiM}WYm(3!fF>|Q4!@gEOMXWOt) zKOXvDcszW&^b*5>Kpyy{JbLN#^Dn+OcV+(U<@why#Wr^8@+-KB)0o7lmcv;wbw89P zp3hWRZnPGmq3HjG5yUP$BL)koWyFO!{BrF_OB6>2D z9TsGUA{L$fki>ZARZ~gq3C>@TP-`5%p>Z0heje?0mR~jD*8n)yz%Dk%2SE#&@h9b= z8qqe{k8#=wV>K8cekUoD))Hx}Z?_%Lh87%nSjkF-iwZv#DGTfypgNt5sq?UW(2Ez& zo)=H>YnSF<0(8L4&FJuun{BRRydt1w&S!FC%GH=cE5xQ|aAD*4B>r<>6%=(^<)OP6 z{KpO~TOVD*aaij9ZJa|28~p<~FYjgS*m7VKLoK*cx##NvyeYzZzsNUcgTHwrIv_Xt zgNn&Xq^>#$`Zc7+)!y3(P~fv|8}}1(?`HS=`rj|PIIC|zj|)H$1Ehm((^gL1$J0pP z$1z$QHz?h3*L$CKIJ7Fh19^r6qS;rDZND#XZa#^2XgNeXZ$E+EXgKyOYoV|@ii5if zt7F^l>K@b52lh2s3xy&c>O3VgPqNXs+a-Ym5(=npsAT(OcR@0;1tUNY^09J@+^AvM2Eh*O6is1Lm=Hmog3lg&h5BcqUcA z(%H%mt``?iH>&H4s(R)ph)pPLb&{b0TP4!1U-vUbcUMz=)D<=Lfi1)Ya(fMUm~+Q^ zK-Sf$t5bHzIpzbRucC0@*o^L)e&!x=xgfMInXnxy>rZl|MnmpQnrYl^tZ-4&jCv+6 zUdYh+)f9~{1C0khLl6Oj5^WpDwL;hCDK?zSHxR{f%}Hag90_KSWl2=--RAYfq0`F& zPQq*JGe46K*TYe*A35B#^zMTq^~0dX%%FA-$(A9dqal3kSYryu@UfFUR%I;4}0nl5$}~ zH!ADZHf(ncge2Pu`#fmB!h(X^G+bz$`VYq5skhB3LO8eqfi^wT0YO=wV3WB=UWNT? zh+|5yE6z#d-h;uRel|HBJjW zZ13WQW7y!hgY$#nNFKNMV|!Z(*CAY*wW{x;k+VKA07tX=8o}Xg02r5BG~?5}q#B=u+QfDot`kT_V35-3TWhgOba6 z1tJWl#~+IFCZSbTKiL&q5{ozE!y^$7(QBr7?b-(A)x&)n*L+$G;wZzzaI=f3ahNu7n1)cx*0LN`24wjqG$K)VV0c5-FgbyJCz3HN?{`xqvuqQlhchA=T$qxlD>HRz?)XjK!^>!oxc(71IVa7rkci#kd0*a`Ju&Hw;*d7`!CVO^ GWd9#aSYkN< literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/config.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/config.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8a322b7a039b4b8678bb8ade76236d71829011da GIT binary patch literal 10123 zcmeHNOLN;;b_PK3X-an6ZnxcWrcj;OGE)|1yOWs|tGm;(Eca;AEqN@uY;)2>f&?f* z0s;C0)N81&)X3Ros;BY;QmO2+P5wsyK(L+F{DrLYopUchP?oEEldM7sAfD%*d!FAp zm!B>y)c(1%^zD-+P5XnE`K)41v`J#aT!<5y(kRuUG-vDU>ij^smo`&@$uM=21FqJ6mak*w&*@~ zt_G=UBvDAS>J%LFt==&qm7-I^QPC+omA6`_#FDv`TwY^wtj1uVKZ)Iwd*9gmZe-bk zWvADyVJHr5;aG8)lgj3R#-$H^8`##cMOUz!>Qk+&O%3e93pAi_HjJdw?FRP9?RJxe z9XIYmwg;}j1RI6Kj9h=1m~>lILEzssQODPRFR#R-@ygg6FZU;&?<{wRJC7cCZw^UF(_zmt#N<({9;m?!bmHWR;*viupGO^IJz#v{yGqrglF z(o|ABu>Fa90Y?#WbO(<_BpB^NKKL0@F8<3*JE?WMqtKc7q~?0J`(|SMO6i!T6Arpv zu?TYF8tp!$9Zfj5BZ-JIb~ms^BuU7^sF}42Umf5=_MusSi7o12H)r@CW`=*mDLG{} z{Es+P=rDZ_5uLJg)2TZPxL0u&oy%~Fs&mWvz`2SmHRqah9ak=~n|z#R#y*cys(L?^C{456^1 zu{-c=pWj7%v4!VGP0MQUx&kDz#fKq6&}f9%Gln<1B4CQ+a6F+%M9#=jMw*?9N9!Ig z3+p(XSOa)54?l}#k_}r$Hs+_*l7Wmuq&*(10NEsdyW?Zx_}&tz2{p=KxU_%>}1+42FF_vRWfI-fi`m0U2w17R03_ zOQA_dO%lp3M9ean%hST|zJLtOKt&>DwPR%@6EKQoDPT2e65wdd>Y?%%Gz#+@a{g-F9OB_nI!JznBjUZf)_qI+p{Rl3;-tbPcd2X+Kwyhma{ zhEeJdj;&|M@hwPl9X|v8On{eIJVStY$7yr5XN$JrZ< z4V>^WA~viZX3>L|qS&>a6s(PHVUH{khH;k&wbB@39qxLAT^7BxZh@C1;zMX-4Pss| zcimawB3qvS$Ox(MAt`U}3sECZls zHjiGDCESwJgZ0}JKaN@yD`m*dr&Mu|z&}$Ux^dmp z&J0~5JRqSI`IwadII}0!jHwi8{0Rsom6WOTxt`#_3mQk_wJZ9G!lW5YdzwKVdW1IS z>k$r!FW@j;;;`t?r-r!c=-XOcaB%g8cBcOpeD9gl!qjjIzoTlvw97y=U&B+O=y_*N z9o70FCuMPwn%*G*YfOV6^xwB5L=hiRgA;;nAuow|0GPn}BtUT>GFq+>2wo#MitHVP zYz~3szCNW=XlxKVZr)XR{EPE-7&X-te)aw+@vX`fL`NA;8ju*Mw=6<#G%^|EMIy;q zSFcByJ>1#i@DWDsT zK>kVn`2@*g+2TqoBG%T&3L%Yjfct-vx0z{~GtXc+={26d&|w z=tiMpoLpVw5>Wy|`EcftfWsP5W{3QD94Lp>_6l%H<5Z8$y`m%CQ=b;PrQ^Sh%P6kc z8NdI@sTo(|>eSq;ol(hUo}rl9yF>xzrREfWsXfe4W&g#vgz&qa$4#lD50O#{)@D}KcPWt~yde8a@8LXoNatMd zBPHNi0agVqXE^X8{F{!U@)$XTaylYSj@n{3P0v!dmDZJVN(F%{>jT)TJ>xiauI$_H zN1=~?0B1xQ2LSeGXWR>+%qW3CHua1^dO+ELlkCjt{x70M#!$0qq0JCceMNY+)v_Km zf0o?^mp$ofJunGq-~!XlIOU=lC3~NmGEkSBnC_7~*nE0&_eF3)v`Iq(tNY%asL^g* z6F-4lBqpH^G=1n0vd_i>WiH(V{ZsWpK11-*#M*$l^SAnwwOWfXv8Tun?uB=iiW zT0B$U*pd;Th{O?uNojp^Ykjkg?~Uyz8_$z6&f9cQLF0Ξ5MpUTBnLYod}`42OwC zcalreW|)^mKi?Y=pMa}3*ccaRi&xO2C?QlV>UZ@k`p4Y2xK4eGxv(MY$N~I}KLzZw zJpKhvVz_^dfFZ8NGMnp1cVh}6`V;Njk57%Mv1guX;&xm_Z^<}AXK8ADroFk1FoA5} zFznwKFLYrpx+#6_z*d2UxN`?@SWS<)MusmS%Z0(r1y#};hCZqlM$0J0S!20kc^TG& zl+LZYmaJk3^HGsRL(0K&l_R^+A+-ZAU>XQAQ)FuBx(#CVOwyNyJ4B5U4A{F-AS;>} z1_;+d=Rlwn=^xJu_$}F+`wV4a^P*BaV~C2G2vSis&#VH> z8iTki!j%4C7bQ>Hvb4@FAmqF~o|2h=8IDRQ}qVeE`nN}T7& zrC{2q%=pP3ksQs$vwmb#u}6GMo|gg9Ajr8S{6ip1PDVCGau~g-5H58#(P2gvmc~H( zW=o_tO74xck1_w^+-rDxt|6nwo_`|;`W8~}D``LVCDnr$#Bn+MX^k#TbkFPh}o9_$0$q;J^jujoFh#kRU9AMXsp>5Z-fQE;yo}At?T1LxIlhb2ZO}Tz%?yS#?tUV() zArO91M92-PQa22SYfIIKOYwoUqm1BYqm)9^Z{kN;KbJ zKP|+?y%G>;`3!~QsY%Ht!=S$~wYUNd`u7ThHi1F=z?s#!x>v(?X=ng{_Nia&6mY%H z__MC?ClgJ2mjDur|3wTBc#T#P|;Y)iiXABHjvefTg_+>b|;jYS5O0!yr# zxJNsJlj1(@2vQ|Q&fB6%7icLI2dHM*8kib6NnlynCu2SyMupH~-E!HBXBuMvFk2(`gYH(*(wxzSQ0bDo5e2rIX*} zeN~2Cxdfy;hI8xj`OraC@V8bO8Zy^-ibODbs-XeLkyAT&l!hU#kK#$7Tv~9E74-+qJG`D zf^U=x#v+V_A~%|S*Yf6}2)74h$@HQ1zpPMrg%eLZHIFu-Ru}-3_83Ylo|X`AVJc^O z^vRpWX+iw;v?$96NB;+y%V{|KH;%`x6%g2I9=d&4oC}ybny19n@zVw@f+vF$DbvxZXFS83CrBb3h5k5WsW8`x>gL0hCk;0mLrGAG@230i(MY)be&(&Rm+Fji;4r(;iH*7 z{jah?g^3po{D~ur)R|N=rhXunZ=zRAxi6^!9E&)j;zB&33&`J?V51`2Gu4cAr<#el zvp7FjZtf=fexe`9kbEvx^Y3jkLVv(05&gPCyKU-M5s3|?>Z=BId@G30C)d|x!k%-_ zENN5v$s#gQacF@B%P=ugD@Em@af6nHjLnnsXLlm&PV_~?Osd^37a;ig2md&R)|9B1 zCET&-b{o3oXz!p)HyYd(OLzJ7f+m*YuTa}M$4Z-&>%W)WI zQL|6b8=XaHasR}f>@+8_=SQ;eQ5da^csN32VH4oGC@D#h&OdSyBp#-H5mQO!GugZN Wg32J~j5LQoqi)op!Fu7!wf_O(fi+YB literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/ctx.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/ctx.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f78eb19b5714b02cf7b9d8b1ed51c43fceba6d75 GIT binary patch literal 14284 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 F{{NI}Uc&$Y literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/logging.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/logging.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3787b7203e9891e2948b86e4d538f256c599951 GIT binary patch literal 3099 zcmZuz&u<&K6`mQ5evKt1al6>HuvIJ@(Q=@9nXtUiy#BwWs|Ta_aXuBgJt#f=CYMk$mra?|qLCn$6(v zy`2~TYB1?T@@x*l5{d=F^V^4V;OQVBs9ECE` zvdg|YKD_(j?!%bRwG4iMT~6E0Zt$T_&L_3A^!TuXpEy;#yN3?`xEEbG2RKO?eV{2gU3-Kn3+g6O|@ZsHdEA_%^ zrPxI+A}tv##b>?L9c=^z27^vucfq#Hbk4#w8Aao{lJurnx=2_z1kAcSC~)o^Tjjpt ziHN1b=Co|emu$fkgVXJ9bc~rmv$YAiMOJ%~=Qv=l;WajjV##2qh(fbD-I~g9g550S z$&O*UH}YLYq-1E~Wqvrm1CWsfSSgEur?$%m1Nq8y_x9e4k`5u$&ynfpN)ZHv<7(>) zYHeSY;lr#dlb4Z7ldJ^HvPurxKO9xZN87yZ?3w9oZx+q&4(CxU?)FFH`}d-=#ol9z z&iwSfHFmRQw*8?76fK%!#|hLH+K^(59-8y^kmgdn~=7>ZN3NO58JK6n!Z2!dC{^I6^3tOB&Ij8RL9M?JX1Tw4bQi_)CL2WPd zI`^__VN2Up;IYD60Y-1@`(v5NS2K0crhRjOSHGHY-M1U`ivRfah@EIw%jmGh7 zuJ2XcPi*UXfu}yk?COi(-@d~&V4ljhe!*_vu@)qpUdfBM?@UuMkMY)}vDBK6@v=df zqHM!h3@;R21~GJ6nth6K-uiZ2ZdjyO|2&joBoHygLb*|h2#xfmjJ%$}#9LCZ;Sy1V zfFqW+jAb+=`81baXAE1~&NJmj8t0v2ygJjN9f*VwX#0hLNw@pPKo>Yu4`zV zYQwGIr+$X<220A)3jPoA*RRnK^8-Wg(nY3zDawb=i(g-Oc9!N!rgUCHo^GQ@zBU|; z{FAaMom6PmxhMR;K+biZI%nI@$um_oLG0HcNqrqVp;)?(*`oD&g}H`l(#*MwoT%{s zz`b9~992Tr(h-#sjWjJhhm7C23_be@8{fWkM7V6Ww{N3=M%6-vFi0zDItgR@qidfCVUu6vCDK}MWKj|@^zu< z3U2tj+I0BntM9(X>X9`@vm`aN{9TQM;yK?X>4xyuH7eg9=v-s3UB-oA-0J;7^u1pV zsov#sqj?f`2Zd?0Ga~T+6(2xqCdj2B*HK8zr@V;YxAhzsfSQ%J8{CZ+8kg=n54)2rgJKv|VunxP}*=37K6ixsf{GNc*ZFZx; z=9qMB3Kr&ULMJcRdXmm#Bs<+|UP3DrA&Ew|y- zFr%orw70Wrzc13T-_L@6e>69^R`vUeDA(Gnsx%^+@3j_Eov!434CkWkC@OqebsVQd z)F68ku@{5fuI76&r|yt!0|-2}!2?pu>YJg((5iFAD0_La3|HIFOT+;&n>EU}Ce+-T S*YFypMzi)&0P`Att@S^1zJA33 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/sessions.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/sessions.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d4457513ee02d822eaeb76b63879244868beb37b GIT binary patch literal 12184 zcmb_i&2uBib;k?_zyJil_ES>U(qv<27s)PmrFC2mOHpY>aV^HX{AY@B!56I$uY;d=Hy&bm0NU4e(&|nU_e6Bx+);2 z=cB(~zwh_DA1yA{{}jtQ238R?pMO|`?$h?MX8*PK{X4}NQ=obgY zcF~|Z%eMxlc8Q-$crLfg{9N`c1G{bGxgu=8I;gd4{9N@H2K9EGpKEwtY%lWjg1+O?N>m1VXI-pws0dEc>{^(`UkFPc?Ux`8Y_Cg z@$t^nmb))^Q7u|hd9LqGq@tGVm}1ZE9ewEaqF)&p3m=zz0p{&Rw9<~d*Tbih7k0c6 z9u}h@a{W#yd%;kI_;794Jvfl!4_n(?(~)}wRr)L9;eA};cTmUzSffB}(Jo3$n4@8Xg+u1sbE0^0@@Tj3g^rT@goMzE`qJrk z?{r2|4csAUd#BrVj^wH14Y`h{ZpO7~{S%<2cpxL(tWf&%<{#92hm{kVC0SN z?~OfQ-0$okyz|ie^yI-4Vy*|wVh>VIX^u|gYBuF90@XxOC{AwVG11JL^tc)==$-4O1=QH7*^y{#Y`sx}eT#6~%Aj($kwycDEX} z*zRWzm-)FYDlcvD+#hOjl~4y-H>7gU?3U0SO?yXjD8R+Oj{zcPu{C1j zwQh>5t^?j@eUntAs6)k+-<{3K>AAyU5P_F{&)xG+ok(GL=cF&e)XH&rjC5x3JSgJa zJr0|W9E_sV#yuwtoMZ}AburGs^@gF-cNHx{U@1|+gLJ!3TtAfEZj)c1Y-Q|7te9Tm zn|LA1@Urlk85JTh<+*uio*8H6xe2{a%vs!;5me&l7Os%kK%hfMm(U{2$-Cg*-$0cj z5os9A$vF<9UU4-TcE%%8kWcX%GJ_apWAb1Q9h;qwH}s-Tr}?fQ^suJ)npy8gF)oE; zu(J9F4GSUAO&dimKoxq0a#gfUNLRJfVP@!ba`NP$?)$hBFl=jb>#M-X@R*7<;WE5| zLL(zGB9pOLBq2{wVlg(}*llVw6|~>ND+$gNOK;5w zFB`8%5YaECGDG+pK3s;7==>!xszvljFsZ(Y=eQ!|zB~4zM=t_NO+Udk1@h)RAOYh4 z6L4`2qL_lCsm(B|ZxPU!;QMWSZO_2><~;avV;ZpG{J)^Cp`*G^1yNbuq$1;R<bTY?(`yy0v66kM!_4`w_FfkL!}n z))u>MNekMrgsY6Jg3HEL#Z_xB{KOI#h+K*nw#L4n=*P+5z+-`4gwsMw!#R*csUVTg z5PpqvAX8A70~i4JK!%RDKUJQtLZcvJz2Y9bo)1kXn~w8C){qgEaAJZJXeU?P4~9^4 zS|8FhWV~6KrQ`81a0r}zjO4%(BWvUh547IOR1fhmAz_=4KsF}=H=i4So~oV6pY3Ag zoa!78GuWIx*(2u+P@_dpL5Y*QaN>qE86a;ZYF$@$s1kq>sP1S4KhGsshM*6F0W>wB zbH+pO(=qB{8Fa5E^h1UIc6l>y^0F^Q8;BJ_<&01qFSM%Uba=qvoKQDxA9*v_k;d zC~V6z?aD1f(bxGLIYLd|s!IzN-E5adQCKg*i=rgTxZ4y+;9eC~QNtZpT-0%25Q}07 z_qtdXE4VL;RdEIPC2>_;!+lv?7dLQU5jVwaxUY)W!OL&ND+wQO4&l4(yFKatBQQuz zpdC;z{qCFwV;IO|Nd)xLcz~S6KnZXi6q#6{$OXeWXP$fjY=0f!M>ED6Lv0sQ3oKtZ&){~9%0>%vPLg18*xu#e#+6(N?B zRor7v4FJ3%PvBS&0T}nkzLP8k;4?t6WTdXk8Tz)WQ**gJ%~4cs7T zAs=ZE-U_Pcf~Hr6$>E)A{{t@Ou_quP`AER`jwBGD5X>3*W9`i+{-_76l0YRmVodC- zV4&w^%e~f3$j)I$m$Z%qh`nHdAWt}l<1li<@gBD&G1b%aNHnr51bvPAZsZIoa9LZ^ zp&o^l+zGmX(S4VqhJuai}T%M$n!~khwn}D;jm7)9r2rL%3oN#}(R>geT(@ zDm1ndqz>F8*%?AdXS5~mgu)`d>}Hf<@LdXpfbWENDaK{+ps9&WDHY)!jRKW9o+p7i z%G4ogGxYy-?7@#je}_EIM6rW+_Myq8NSHSjiM50bIUUtaFvnnF2o10HhuLcebs%3H zodNF}x*07@E-`6hjn3T}fy`Di&{2XI`K%o7g17jTY{dCEPqyIEfrKd!zT!icNr9UF=IOF9II495y**I*PMZ%RN@*Egy_9jgQ`3)nN7KWZ_SeBDs z9c*+-b0*@Wof;Yn-ollC;;xt8D|cfRxfFXza%Chr>Iby+`h9i z%w*b^Lc~`%G&mM8CjYkHm%Sr)`dsJ0JC-n&+8BT+vz!OYlO{+Rk+GfOj~EGw6m4g~ zQDn6)qcfX}xFR>ttD-lXZZ4Y5xaNf^oz%Cn>I}!2>mrVqkygu7_J=21nxh>C}ns2-LuYVC7)!-&{tdPil%cgAPMv!ePrw_Tt% zpmc>|Q&B%M)i2MA^@92(jd+vcOJ^tO8jJ2TD4iX40klYqfP`FI(6GS99Va zu}VTizkTR>O5h-E0<|P$M2S(h=@Om|0|y5XJO?X5lkI%6vD4Xl{A`0#A=xO~B(=IT zn%)KIm_9K>$k|W;gKW!J0IQS01d#TpIfinN15ZHt-dE${Fa^pF4!qt}@Y~ntB4De% zkc0Kf7si?@gL4!agV<J*J&};gWOg@I+0{wdi4Q-$Q3X%3PD3qzRE7 z1w5uYp8V5p&fS=Shk(Vjo6pJbQt+#qT7wSUQ^qwrBXD8J{0_<10Alt@_Ec~J(}DKC z9^?!(t?O05|H62HG0Q>}xlS6fe~*?S#c+jM&9aTUSu0vb&9JN+CgLvSRBI;Q zOxwh>QMRucHs0rG`bz_6nuv@8U95>HkCAGk(G`9&U*`;;i(KD~l+&V^DYRojVx3TS zD)Y>M+B?j|D)ka);~yO_(IA}Ab~2y-l6*aXy!%nNn+>OFgI+A2Uc{jmymDg4Sv}D0 zK7RiE>E`<5T~aMO+uOU)D1pjG0`rpYd64QEjMPoM@|A9o(lbZic%Io4+OwTN~>i@4y(5&79`B$dFvJ47%wn zAZ;~=0}bx~WGJ(~T45xq3-%(>XGURMV!waU2m@o>X+cZ&c;^ka6Yo#m7qktRu;eTf zwdI(aaELwjs#-`#p+~ksk{E{!!C%gt8S05+*RYM?A}uiMRkUF6TbsKZ^U!>eJJYtW zfapAThFC+0HT-Xe>aXF>v_r3m9`vJorkyE24{xuau0_V7c}|+TcoW)L@E(GT9s0s! zj$05?CFvFpxKrsR`~G6&>F~^eQ%h!?1bLL6sHdUtLgg` zrXiBRzspWxwkw(rlmX*=`@Bs~J`2Z}+I6G3a}oYjxopAM(iW&9%psc@^)O5PMm9m3 zI_abXr&}1Lr{fCj07c*z9e*b56n`Dc;^H7gl9erEZ)(2cxzJ@kX=&SlNISYl?tE|! zq{V(an_koX1!jR~%=xthIQDMg5y9iu95tCChH?_`F zj~paT$4$gid+PWOp9}^fMDl)fCTo-thZ1^w67gTU)2VZf$v8YR^5?Ui$?MCgL8dwz zjc7VG`8yj=b~aicbv7Qaf7IF8_`$~;Ei&4P&Bq`SY}|$UvY}l6#68vN`>9i}!*hx! z35Icqt#8=4@W>mD$hn+ZB4_`RDo6Z~4@u|cXx@H1o3?!`)id*;2dDAA5VI${2+7VA zy9iH-X=nX}cvTY&Je&HH%Nf(v!E~3S`b!;VSPq@FuScpoLgEPfBU*oa3ssDtnN%(1 zc`{!OI3mZ20|<#T8&EV_kU=!9Eiyd7QSTwhV$r5N5yd(>Tax8?;6q%<870{kXdic& z8)=$CaWh6u(g51~%mAe1L+)G&Ws`H`q*-OHaFQG{uP8GyAq9nL1~YLal0|neG%wk>Ac?cQ39`)>I-=xIoW(K4bqDk&?7jp*;CUGTStHkZ;+eYyth~{-rdW z{1+1ttWC*dP>bXkIX|#@iZ~MKX}W%1syIM1s$2l0Xq#99-)G^&_X&dVc)_ga0MY>-LBeewryAJGOntI4Zd=6W<1{4q{84%a4vM!ja9?zA;Gj`ee*_@niY9%?XDi~X2?wO97dqDlDrk>RC(uZkN#Q3!E?0xY#HLN__)1*Bzg$jw;7W#bu$ zN4aE78efU@xjLTEOy-$U{SSD^P;KGKV5B3X8-5$eHq}EQ6DNs)LXFU(K9z;Kl6rzV z$hbg`m(gkKb6epjOsc|RmB%6i)cC1_rv-kp@l@BXKda(-k-i=-Maz^g1`%r*d4*@K zomJ1uH1}EM44UL~IuQ(VH!KpGvd&}07Ns!a@;ZB^jdEOJw^)X;ords=jyR}&6m;B> zcFSWsjfWbmIW0;K6x0+uW(l1YokrjTRI!Cr&}m$xbRw(Pc{-OFrzFOMQK)`G6Vg$k zWT?hMjuF@)qoY+*;FL$Nhg2L<(WjzE#jK%cb?y>(yn{;Ojv5knB$7)-t5`-VuTJSZ z`fk*XYxqvWI{o_^zL_;mt8+~g>5{k(=PB}fT1mwfxa)o2+k>v^yKif~LmDW)naapv zh_iE3b;7!c4;!g2+Of=ijk(%IyGN-OvWphZhahXo*-CrSUQ$%wcugOY`jp0eOa&?H zc0I4-SuR;Cwr{2%piNomxJS8iSTot4#awpisHCBR39zB$@vMQT`2K9o4yvN>O!Xy2h8pq@j0Kz)Y}03A4V2r+EdX$O<`2GhfK~B7K?_A84DMYNk zdmQ6j^Rxgwgl29-rwH?)ZoUkpFI%rY){-7D(bhgJp2uj55B_6&1kH4zv*eZc%D?f! z);ou2`~0!EQqLV_C#^CtDxH==2Cq=IWFG%PbO(0*J3h7Z;S>z`}dOT z<>_Oj{L~SDTGKf$R%KY>V+@OLM7;H2lUH3Ke1V{hILBz5mtD^1xm=`(dz@b{L|U!r zJ#gUOW2*y26PN4}02d?j+&G5u=E2+_LNnh$x8V%g+LJ9A0B=F1XV$KC%t93gpj~JY zv^`L42wKIt9_#-UN@T99(XY7W5%OgEMl^;lvMt%fS_!MDpi^L&#z2&z%fwz#kP|hK zvy&6*Hp#5gQ>ZvB2}?mM`4S|iGMQvEnor*dbz#9pnu5zDt(=K$<3?$nYm~9bR`vq7 zs??}4rB5miLsmyVHV*th&<}OX_#*GVbxiFT3Dsqi41zG6XqB=Apli&r^UWG_1 z-{Z~pUGZV@A7KFo(1G*_C$D_yLA;d&ecgtYvcoyZjq{V14q)sib%+S{S9Mr&)Ju{j zmh<;vWYCs)p|?KX(($-4iJ?I5!Ezyf3eD}QqdUKK$TEN&O&MM-@&E0xa4<6Y0d8;P zyd4l1cY>jj3)TZ*iS%x~U#pb;^Yzo}xWQdBqh?VQxdy6t#6u@4#!JCb-&{&*GSNb> z&=klA(HM)jiX6i+?tQz+Y%*70p#&NZ4xs4;T-QwNt9texr7oqHdw@KYj?A<4LLx4MGmXUsV8_t4r|EaH94#y zhd1P~h8)=Bl7(}<%ovgb-W)l6Lk`;_XV-p<30{%IcBULTtRaWjICI zhH@N(>Y?6K(H1=wJrsNI|I)vJ*PixY=&8RqL(#Ia+4j&wDa`P3zTbPl_c6LXKi~S= zzw+hhXAI+?#?0e@zKpKm>N45@|wP;&btpJ|tgHv#04eVc(c~RwoEY zqo9}V2QmwL+ZcK}5PWycWp=D}d6V~3!O@psgP`P@WBjQpUG{O-qZ83%m*o-O@*%3s z7@89!vrwCnF|l%!ncGeANp249++x;UBZsEZaxXWA4q9w#8P-5Kpe)F~cJT5s?}y_! z^QIeny)?=Ae&&rt+T&8DV#V{GB}3kWv^Pp_Hm)flZb%G>(qzL66XtCUHda*gdSMQV zMme--l!Ll;(ZHz-J4;8R4obABnxm?Xs%!go%z^a$I>d-~VTrxJ8)5;S|GIf2+Zo*$ zMWgGR<0xj=gZ|*wYP9?A##4gL4F#SXB@Y14%IJM@F<_dvO2A496<=qut~`y(aO!5= zbWGQ5snRmVDYRCSry&-~eH3{P6*qj78NS6#-)4|2uGw4n+x0j~`*l+Z<=!RwzB0?qDQiQ3h#-v6A9;lD>;M0Xyw`Tj@Jbae761oAH>B zM3iLSJGG5WVFh94MVZ$N6X=bPfGe^LwN4UZZ7iWIrJ4$35xmcVz#hlg6426%`d-3G z@1c0Fwb>)q=^@sre2yZop<-rkZ8yXc0B0NmP|Un*WaiMyjXrw*WST~9=0;#M1ER6k zi+ZdL%JI+l1P?PF4B~V%jDsPWZJ>LL1v0%EgDc!1h>|D^g2Dzax_0469`^;QuV|zr z5}8yW(bXc_#S*GdQKXB?fL7aP$2?e?S$1W*>Uy_ETacKrMJot)QZ|l>ZU@2cIE>4l zMi8*H7X)hUnf(Z!LTyUIxr`#o`MQo{DKzx(Q9Tum?xX43VZ>^H6C5#X;9X}fYvSD~ zU9GDft>0uF$aJAtejLeBnDw@RdFA}H&pLSfz|-Q?(1_C%c!bZH)pVjD0g=KL!sDii zvSRp11)Jk=>8CL~l{|q6;)cp26iL>s^o?+XvzhB%Q|YK{iDh&tdPZ!On(okKg)#Hs z;8eK}rib2C)XpSxI5xOLW`1mlbD-f2bL$W;4zxX`fkFS=lQ%D(KX|qtyn6Br z5U-vD&wu&g@w4^Mx{gLv9saK$4T`hDfMU78>IB0@>uAxR;?$D-paF2U&4WuH;QeSu#eEZ#=1~;)e+4lxCa|)Jv;UUl0M5k%PNh_1xMll~m83Lk)t`whOsvu)3C?deA`EABG$Ac{%kAOz;1L`L~ z&~0jrdDL(TRpCxo_3cdT`E@CJ>E=+7yB8g*)Ldn|M+W?TblgLcL>Pz&jzdV z2hm~4YFi!4MbE*t52$Mv9~EpW&5#$FnwhVEz$ zy=#AA?6%*aygn{z*qbfL5{{&XaHK5HqgIlN-w0;qaDw}b81WKC(g6)qbKW6nUimM0 zC0nRM1?kL2>7mHysEA4ADS(Co$_34I-}*H`xBsc?wGIt{_QJ#l^o~Ye&5_IKal2Om z!P2$Z+F0AiBZmS{6&@u_TJcY;E6o?ps`G?lD#`tZPD|jRfPs)kfpCb>SV`cr&eDd?p+V-ge^>R_lnhps435UG?w`*s8VUJy zCJtuSb4MBF^Vi1iDuB?)%|lZ=UAM3$&$PF_g58Vyc*GEEi%uLN4V^kBDXvndjijS+ zsHX%=fgDUCAJmr8#TbR0lj5TA&ru`=T0@Bm7E%hVW1hASe)s{Q9Y4i-wM+r5B}nDrUF&LvmZfvDy+(AfJ6?lPkEz8 znN$Ojl#oyclQ0rB<^O`*IeHXKS3zs#DKB;0M2kjwEyyrRr#AK?+|r^cZlk4wAekPq zsWLT6gVa?4#y7Mm8WMCeTnO-01C#(jiVj0u)d)i2Ux4H(hhdd4czu!XDAp>DbyDEH zi?S`%F^KkfqLPP_-RVVa6p9dY%Oq2$S}EK-V7I1b&gQ7oVRWC{)G4g@osX6xXV*OB zH%NfVD#Oi~mj^3%^=J=$_xsM()OnysnR#i#J-&}aB1&PgIL3L9HIvRbQ+%#z&PsMQ zFMFYgXnVo|vU0hVj$=kM!@V$y)xjc_dZ`soo~2xBny^oWp%breLtmUI_G<_Dkv8ti ztb=mC!b8#2?h%=Zzf5TaWRBDsH@Rv&E?sA*dmPh?ARrbtZecUlMmbxtpe0Z(F+rma z8Lc{k1%*q?6hA@h{|Jvy{{tQs>?(BOE=4JuCo^1;^q&aF0Xn_lu6VDe&^S`rRLkKw zOS$ZYBhHS4Sg)=%UGCINS#`mh%JReD{lCJG_z~2kup)j8%AX@6$DbD@I$X5snnQ&J zL3#Q~EG(bELOJ!%7^+j-CP6|_s=MAjrChsTSD?HlDCJidB!T~~$~3Q`FN9LVoc=EG z8`_gfhZIH0va_z!G?}RB+DvWA_NLvGb-nAz@~*cV+L65LblPAznt7y# z8qRRv3@wYMw!q3jf)twqJ>*p6&{KLTP_)+qJ>^d*(76^UkfOKtwCJIq?|U;tO6y(p z(2?fx&HMe{_t)q9eQ&I;Hhy7W{n6iCRg`~ImL3E7xA7*wMB*#9;;X(EsJ=Dg! zt*f%kuq!At!s@tY*F;$*G{&ZFihMP!j~jLa`I>KrE90i!6#06%I&Rr5k#B@+<8}Lj zs=TB4D}M8(;x}1kv@yDPs@oU+RloI8u`i)+&0j~|Ix|uJ6?|XtH}Ji|YWRN5*Y=e5 z#o50$EIfnIO%6LLOVS`3ijt3)pN1%UIG%)T%%U{0sHK%mCzF_`)&UDAj3*t-dU6mX z);RX3A+wMR-B}PGTfvx`F<%VgM!q#orf!IeC{B@Qz7<5)grl36261Gu=vlzyNX*oc zQ+K_1a?FF_LE5!$-@J9xdW->BnusC0Vc@YSVO{Hcd-rd=abr7lF>2%2AcWFut69s7 zqm(^Q$8O{f8AnNdI}CQGQ6xU9_`s&9c*;X(;_`(3T18)!Y&e{KG{t5eFMaMLsp}o0 zw6W*$V3IzJ1~I-W{&YM^JesX|h#BZfzKw(_U;@R~eAU){^T)~n#P=&N>$c%n{TfJB z`LSXsb`|8PXRRH%`R`4G&}ZEJCtXqQMON1Xfs$_j<0HloXKXqYwCbE~+`n$62X1Pm z?jcJopAFn;2wDwzJVphR$3L0iv|Kvp;%Kp9cWk+nNf-2E)&pV%`YhU6X>8#H2f=X4 z84a{dATfGJl0gnManpmY^}+7@7Uisc29C1wQ)K>`ru%Nf9Gp1_hn(nhbindSuma*C z**{_Y8S}4OM+bp-AZ8=3?e}SlexKTL7GhV=u)w%uJsb$$8sa;;ZtdeNQ?bypXV-UA zx7&ZbyYpaYcX#K$gY`Ol+wbmte+Q@7?8Yu(Ut`EV-LP`-|(G5>FZa%PspBMey1bI6X5Vvg%MYWPZgAWZC*K55B22RDGbP|`iUy)O#Z96I?_hEubrxs zw|)J@q;KE2qMX#{2LCg^GBW1I+&tA#Q^9B^k3@?qT2#`?9Q{rjehsY}qw3_7c?G|< z$xr9zygo90^HlZgpXw(%O6w;Y(gy!kx|c=(c8W_T6naBAriUvo=eC*tBA9Z7vvl(>e;E zIW`ORu-UO!mgFI;hq32|2XT_x>*r-|R(o;tr1Rp|iGAr+TtEBj3n@G&-L0(`5lb=D z$<_-}BPVR2}R{5;6m5wJ{lVEa#l&F8h84PdV3_d#A5>{eMz=o|HHgsU2 ze+$dn!kcuED2N1 zh2s5V{3c&TGS^0cRC8sdo@%O+f)5AkT>F^{ZqsJ}uvh3V=<|4gBy^AE3MFlLjjzz6NCldgjEbVtU+cF8gO}imNKIsZL`{DKNebeofKI3Q z1BvyyGFNi~|NS;+IBAfyQ2J+3?0ImMlep7?ahh-j48;7db*po$v`0^KI&(ITfi?)0 z-s;@$Slcn=lLMTBU|%{#zZ}XBFhfe%R~lt$aAu!uj)Bb_5*UX`pyvp|V*FZrlML=+ zZNktNtoOxB+WfK=ZCamONZZIv7`zC)n`8#%vW@%sfk2l%l~sZ&ZH-$X!K;`oyYht_ z*(cJONR*lZ;WsP%Hu5Efse&j>Px3C3Gw@im4FQmK-*{=-6;|~te)Xkts@gU3hX9sM zzwS5iTbG`X-4Nh;1tPzitvn#?D&f3)AH4K5=7(@YfuwU+PYvUQV&o~`>}rvbjzaBAzG?L|5P|$aIqf1Rt_0F7dI3`1#m*h z)PQz!wHB>3hlE1y2yKqti^WRxRS3*kZ$cg%Aea~!g7OSr9me$z+-L}4=~_2Cw{D9{ z=ql1(!V7`9AphxF8#p}j!l@7E0|EvWR=~hzhat!Cmgh#$sl{N_*d3%ePH78M=up~G zexR?K3+fLdhW5o6eYuWKDOm6+ip{{k2s|7u{6CU15H$=UDdI%GE>5T0&+S;>!iFbU zixk=i9+`f6h;8X5vzw5XO_dbZ2Z)Cd5bO?+4xIi}9~qYwU;k?js0bJgtZDRS^;@^! z?A*lPty#S|_N}&Nuk7x8|Iw2j=idGMyY||J^|q5^o}qsk)(Q>g>{z^el{Tv3UYV7xBi_ z>tB$->|(nBm>YnofR%u#%18rrBzUR^IF=KG+7KWWy1O!}o>b=gs3s5VFMoPc#g}ooT00zqG~q7C^y$9!_MA1J#R$tU1YasP@G$Fd}P@pwOo z3M>F*`YO?c;1grPjY}-IU`YUpge1sHxf>;}2yYZ&5-9*u+##;8x5408sE@J}ocVGj zVpC#JD_2e>HJf05e(4hknNOCzk;2_HR&TCt8PywlNF8KM^ zhCbO?p@2)xQG_R~XD-~`{SXRFENL)}WJC&Zk4-4-MW;zF`@%bP7l+y%GlV|+A4`iY zq)95sGKM7WL0^V3FbFH{bGe(srIovuDu_SWdGzJ`Au6 z7SV3}PIjTt4*)it2T;+ow~FD23Ftihz!y;y;$fV2et3XC2aK#2wk|>LlnYU4U$h&Z zn8z8pJZmDJmIh-couL&Nha!H&5h_*el^`O0?Hnb;fY(rx>1jN%F9|Gk?troj`Q-3= zz$63LV|J64<>cjAE$;#6Y?>To`XruYE!dn1pc<3@i@g>kPBaB3%{$r6#C^ufuXXro zVl~bIq9(9(SuH;#y9uMsA+4giy&~}TLYqq8>rL8J6NZFwiV-3_n5iEBL)sWTv;^3S zmXp=;!56St;Nk3IvBM>K`U`YUt|L)48bD6u8a44(B?k(xNo5VHX=vm^HBbg{|BYp} z{fbdb^F^49Oqamc|BZ}vpP;*?)`rOvc|(*NB9DMUQ{g{{nFIdzD~B5LFm^t|31sF* zm9#oQfBtjm)!N8}9TIC?6=3oyDTwOJDyA0wYsVHp&%1JW|2Yta14999M)k&55=v;zIU z(#uRYandPN&4bL`pALYFn4hf=;xLSlKuZak6Hca)llhxnmJ;mYAsSMIwR{3eC4kJDcH4kbi-{sT%rpoD@qixm{;@pURCB%09M zLSn8OnxQpo&EGR$H>;w~Lvi^O2P-&g+0PR`p62WD@eIEvzR1t3FI|P0S*xIyys4S} z-M!M${}`YI$c2OnX1%jr+~)KxI70#*khOOgcNtfumEL~;A&l4<7ePM2)05)~u0jZa zcp{QO7gOjbOz{`ma?I>-adm`P_Z~avJKR8Z9>e}z*oqKzLU3M$OW`^|QyU&(kpiJwzgU#p3QG z14T`se*Gr|-PIF7`?-Etflwx2L_EPk?72%&G+DyNxEmn|RD==>07yWaLfZMgi9m1IF*caTbkAJJ z6t{Q-ic@s3k6GIFY7xpiC*iv+!ChuQ-^ya{9&dwZJ-p>Z28SF~ z;o1@xLoY+9R4G&>EoUqTX|>F}6T0Jl-@SW<#0MqH?CLqu$&c=ixO+(Mc8VTt6);$+ z4+qBthn)m8({WIo0GIUNNs6=uP+xkbs6G#5(~y7o^{S)~P0@Kjktz#ORW zHEm(Wq+-k&AI1kk+*hi6q3vn3FVpO_#{a=9&doHS*9}f(?aR_`Y$2Zk@x!=2NAzT0 zm=Alkh(`!zEI^LEip?)1l#{9vAZ4jB?i&(uIg%;D8Q|hH=)f|AqSL%iovu;x9wl@F rB916SAwnw(#kWXuLdv-H-BQ`oMFU+r5Rz_cBGoTFG%u|GxzhMwzNBQK literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/views.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/views.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..426fdee66da29d4430788463acc3815a90ef8e07 GIT binary patch literal 4759 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 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/wrappers.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/__pycache__/wrappers.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d4381b8b65ff83f8b4f1b7977ff69e9a1ffe0b2 GIT binary patch literal 4252 zcmai1+j85+83sU*1S#rZxpkbRlWy9nU3MZ$Np3ovPR55iwpyERBz4@uOa}z9OA-4GEB)8z~aBpu6F-s z-~RJoHZ|?v+PSBR_8pYu4JxkL8rQiI=nKO(bZR$(#=^9ls%@g(vfHZN46H@R?xNk| z?OGH;#o&RM+dbp04WKUBrP{h%il9Iv4EO{=;2XO=7>4;&~>L zl(`{iQY3K{CZazmW)8h5K9T-xo(|b(JD={bKe$04(qgG$;CljthwR?|Z?`_*x*xb% zBD&whN?KpfyZ2naSIEX&`>bj0RjcTE=Xd*0M^F5he)zp!OfwIYD8z&nFOw2FJJ_5@ zBCE$h;|@x46P3_x9WF6M!#2q+Z#28f8!(Y6$!#7DricC;DECp4pP@=Mc{9}xb<_se z4;!!aQ~bWwQ{zz!|~kOgshlZ#0< zleA9WnnrTrrhOwf6A?^vUHn6ntN8NY?d^0CZ^wSTHOc&dZ#mQ1XFLA$F(q2(379-?3dX)0#sx|5(`~Cdc~rY zgI6g{<2^TINj6bpp(U22v`j>*)E&BMD(lsXZIzN7HDyd|L5{42luxP44g*5XgS&H6gr6_WNAEF};GFod2vnrjH zkR%qKKlMEpVaPyrjXc5tdgz~0={`yVJf?JAqjcr^`$$a{294#f_k_#0qA)mN%4el2 zO5p-n=|w)HjMuZWROjx?I7+7otAj zT(~bCj7SNZ0uj#A`CU?yl0a*i`tpO)ZiCAMuioAbOnjvsf=P}#a+6wzI<|&+bzdg)0l93f>S9W{abUfQ?vl~UJxZX)t^#ZwN6ag-S1M%h7?TMK_7NJieAf>RT_ zrx?4$f zR<%~lo@tsb)9AH&-Cj$PmWL1ZqaXus$quSZ?5H@=Zi?1-+EiDpXn`Ty-)W|1TL{dy zr1|bY5eyWd)yb_qn;_``6@Y~QL5I&Gd6clgKN6JhDmgDonaXH!hUb8H5(zdUnwh&V z1So+$I(YJ!Rn7(TDnTXt0wuo6{FG7$fTfh@JTb=3BT&!l^VK1MR>@Df$3xvP@Rk0I^8xRy2MkEz|xlSx{N-ot&(8NtU>p zlZ#{Y{~_hUfW1KM1FF5b8_onD4%w%Jof;<9Su@GvIFicnF6Tg3Sna&JpVS_#4i$rv z43zVy*%|CATn0l^pp%#xITAakF6IS3DDBJ&l)iMtAtg%Vy-VL(;k!z~(jo=_MMu7H z5`QU5q+fPY@iN_>r;FgN!#P2x!e>GZLgQ09g6kt-kOe&znw0pEH$6a-IG2Kyefg$S zjU)U~r{=HGpAcGV`trl-)-kv|u0~hVg0h%OLNN69xg#~w2C&vRBxW#{f4}msMdO4G$`o4wtRKwx}7ipTzQ@%`SyBo z)T#C8H`OsmUdQh8CZY?FPDqlkUyxsN797xVia-W#o`KyjFy}Q&aSdskdbhE>`7T}i zoeM}Te~PL0MhO#61t0R~=$4EslAo`ZD|;dcs?|va=yr<+DcB|LXDA7Uj)LqTKR)49kT?(k>ha{dP+r4U2o>(s>x(Y!foRIqd&SSde`BM&x%&glTY#Ma literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/_compat.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/_compat.py new file mode 100644 index 00000000..76c442ca --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/_compat.py @@ -0,0 +1,145 @@ +# -*- coding: utf-8 -*- +""" + flask._compat + ~~~~~~~~~~~~~ + + Some py2/py3 compatibility support based on a stripped down + version of six so we don't have to depend on a specific version + of it. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import sys + +PY2 = sys.version_info[0] == 2 +_identity = lambda x: x + +try: # Python 2 + text_type = unicode + string_types = (str, unicode) + integer_types = (int, long) +except NameError: # Python 3 + text_type = str + string_types = (str,) + integer_types = (int,) + +if not PY2: + iterkeys = lambda d: iter(d.keys()) + itervalues = lambda d: iter(d.values()) + iteritems = lambda d: iter(d.items()) + + from inspect import getfullargspec as getargspec + from io import StringIO + import collections.abc as collections_abc + + def reraise(tp, value, tb=None): + if value.__traceback__ is not tb: + raise value.with_traceback(tb) + raise value + + implements_to_string = _identity + +else: + iterkeys = lambda d: d.iterkeys() + itervalues = lambda d: d.itervalues() + iteritems = lambda d: d.iteritems() + + from inspect import getargspec + from cStringIO import StringIO + import collections as collections_abc + + exec("def reraise(tp, value, tb=None):\n raise tp, value, tb") + + def implements_to_string(cls): + cls.__unicode__ = cls.__str__ + cls.__str__ = lambda x: x.__unicode__().encode("utf-8") + return cls + + +def with_metaclass(meta, *bases): + """Create a base class with a metaclass.""" + # This requires a bit of explanation: the basic idea is to make a + # dummy metaclass for one level of class instantiation that replaces + # itself with the actual metaclass. + class metaclass(type): + def __new__(metacls, name, this_bases, d): + return meta(name, bases, d) + + return type.__new__(metaclass, "temporary_class", (), {}) + + +# Certain versions of pypy have a bug where clearing the exception stack +# breaks the __exit__ function in a very peculiar way. The second level of +# exception blocks is necessary because pypy seems to forget to check if an +# exception happened until the next bytecode instruction? +# +# Relevant PyPy bugfix commit: +# https://bitbucket.org/pypy/pypy/commits/77ecf91c635a287e88e60d8ddb0f4e9df4003301 +# According to ronan on #pypy IRC, it is released in PyPy2 2.3 and later +# versions. +# +# Ubuntu 14.04 has PyPy 2.2.1, which does exhibit this bug. +BROKEN_PYPY_CTXMGR_EXIT = False +if hasattr(sys, "pypy_version_info"): + + class _Mgr(object): + def __enter__(self): + return self + + def __exit__(self, *args): + if hasattr(sys, "exc_clear"): + # Python 3 (PyPy3) doesn't have exc_clear + sys.exc_clear() + + try: + try: + with _Mgr(): + raise AssertionError() + except: # noqa: B001 + # We intentionally use a bare except here. See the comment above + # regarding a pypy bug as to why. + raise + except TypeError: + BROKEN_PYPY_CTXMGR_EXIT = True + except AssertionError: + pass + + +try: + from os import fspath +except ImportError: + # Backwards compatibility as proposed in PEP 0519: + # https://www.python.org/dev/peps/pep-0519/#backwards-compatibility + def fspath(path): + return path.__fspath__() if hasattr(path, "__fspath__") else path + + +class _DeprecatedBool(object): + def __init__(self, name, version, value): + self.message = "'{}' is deprecated and will be removed in version {}.".format( + name, version + ) + self.value = value + + def _warn(self): + import warnings + + warnings.warn(self.message, DeprecationWarning, stacklevel=2) + + def __eq__(self, other): + self._warn() + return other == self.value + + def __ne__(self, other): + self._warn() + return other != self.value + + def __bool__(self): + self._warn() + return self.value + + __nonzero__ = __bool__ + + +json_available = _DeprecatedBool("flask.json_available", "2.0.0", True) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/app.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/app.py new file mode 100644 index 00000000..e596fe57 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/app.py @@ -0,0 +1,2466 @@ +# -*- coding: utf-8 -*- +""" + flask.app + ~~~~~~~~~ + + This module implements the central WSGI application object. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import os +import sys +import warnings +from datetime import timedelta +from functools import update_wrapper +from itertools import chain +from threading import Lock + +from werkzeug.datastructures import Headers +from werkzeug.datastructures import ImmutableDict +from werkzeug.exceptions import BadRequest +from werkzeug.exceptions import BadRequestKeyError +from werkzeug.exceptions import default_exceptions +from werkzeug.exceptions import HTTPException +from werkzeug.exceptions import InternalServerError +from werkzeug.exceptions import MethodNotAllowed +from werkzeug.routing import BuildError +from werkzeug.routing import Map +from werkzeug.routing import RequestRedirect +from werkzeug.routing import RoutingException +from werkzeug.routing import Rule +from werkzeug.wrappers import BaseResponse + +from . import cli +from . import json +from ._compat import integer_types +from ._compat import reraise +from ._compat import string_types +from ._compat import text_type +from .config import Config +from .config import ConfigAttribute +from .ctx import _AppCtxGlobals +from .ctx import AppContext +from .ctx import RequestContext +from .globals import _request_ctx_stack +from .globals import g +from .globals import request +from .globals import session +from .helpers import _endpoint_from_view_func +from .helpers import _PackageBoundObject +from .helpers import find_package +from .helpers import get_debug_flag +from .helpers import get_env +from .helpers import get_flashed_messages +from .helpers import get_load_dotenv +from .helpers import locked_cached_property +from .helpers import url_for +from .json import jsonify +from .logging import create_logger +from .sessions import SecureCookieSessionInterface +from .signals import appcontext_tearing_down +from .signals import got_request_exception +from .signals import request_finished +from .signals import request_started +from .signals import request_tearing_down +from .templating import _default_template_ctx_processor +from .templating import DispatchingJinjaLoader +from .templating import Environment +from .wrappers import Request +from .wrappers import Response + +# a singleton sentinel value for parameter defaults +_sentinel = object() + + +def _make_timedelta(value): + if not isinstance(value, timedelta): + return timedelta(seconds=value) + return value + + +def setupmethod(f): + """Wraps a method so that it performs a check in debug mode if the + first request was already handled. + """ + + def wrapper_func(self, *args, **kwargs): + if self.debug and self._got_first_request: + raise AssertionError( + "A setup function was called after the " + "first request was handled. This usually indicates a bug " + "in the application where a module was not imported " + "and decorators or other functionality was called too late.\n" + "To fix this make sure to import all your view modules, " + "database models and everything related at a central place " + "before the application starts serving requests." + ) + return f(self, *args, **kwargs) + + return update_wrapper(wrapper_func, f) + + +class Flask(_PackageBoundObject): + """The flask object implements a WSGI application and acts as the central + object. It is passed the name of the module or package of the + application. Once it is created it will act as a central registry for + the view functions, the URL rules, template configuration and much more. + + The name of the package is used to resolve resources from inside the + package or the folder the module is contained in depending on if the + package parameter resolves to an actual python package (a folder with + an :file:`__init__.py` file inside) or a standard module (just a ``.py`` file). + + For more information about resource loading, see :func:`open_resource`. + + Usually you create a :class:`Flask` instance in your main module or + in the :file:`__init__.py` file of your package like this:: + + from flask import Flask + app = Flask(__name__) + + .. admonition:: About the First Parameter + + The idea of the first parameter is to give Flask an idea of what + belongs to your application. This name is used to find resources + on the filesystem, can be used by extensions to improve debugging + information and a lot more. + + So it's important what you provide there. If you are using a single + module, `__name__` is always the correct value. If you however are + using a package, it's usually recommended to hardcode the name of + your package there. + + For example if your application is defined in :file:`yourapplication/app.py` + you should create it with one of the two versions below:: + + app = Flask('yourapplication') + app = Flask(__name__.split('.')[0]) + + Why is that? The application will work even with `__name__`, thanks + to how resources are looked up. However it will make debugging more + painful. Certain extensions can make assumptions based on the + import name of your application. For example the Flask-SQLAlchemy + extension will look for the code in your application that triggered + an SQL query in debug mode. If the import name is not properly set + up, that debugging information is lost. (For example it would only + pick up SQL queries in `yourapplication.app` and not + `yourapplication.views.frontend`) + + .. versionadded:: 0.7 + The `static_url_path`, `static_folder`, and `template_folder` + parameters were added. + + .. versionadded:: 0.8 + The `instance_path` and `instance_relative_config` parameters were + added. + + .. versionadded:: 0.11 + The `root_path` parameter was added. + + .. versionadded:: 1.0 + The ``host_matching`` and ``static_host`` parameters were added. + + .. versionadded:: 1.0 + The ``subdomain_matching`` parameter was added. Subdomain + matching needs to be enabled manually now. Setting + :data:`SERVER_NAME` does not implicitly enable it. + + :param import_name: the name of the application package + :param static_url_path: can be used to specify a different path for the + static files on the web. Defaults to the name + of the `static_folder` folder. + :param static_folder: the folder with static files that should be served + at `static_url_path`. Defaults to the ``'static'`` + folder in the root path of the application. + :param static_host: the host to use when adding the static route. + Defaults to None. Required when using ``host_matching=True`` + with a ``static_folder`` configured. + :param host_matching: set ``url_map.host_matching`` attribute. + Defaults to False. + :param subdomain_matching: consider the subdomain relative to + :data:`SERVER_NAME` when matching routes. Defaults to False. + :param template_folder: the folder that contains the templates that should + be used by the application. Defaults to + ``'templates'`` folder in the root path of the + application. + :param instance_path: An alternative instance path for the application. + By default the folder ``'instance'`` next to the + package or module is assumed to be the instance + path. + :param instance_relative_config: if set to ``True`` relative filenames + for loading the config are assumed to + be relative to the instance path instead + of the application root. + :param root_path: Flask by default will automatically calculate the path + to the root of the application. In certain situations + this cannot be achieved (for instance if the package + is a Python 3 namespace package) and needs to be + manually defined. + """ + + #: The class that is used for request objects. See :class:`~flask.Request` + #: for more information. + request_class = Request + + #: The class that is used for response objects. See + #: :class:`~flask.Response` for more information. + response_class = Response + + #: The class that is used for the Jinja environment. + #: + #: .. versionadded:: 0.11 + jinja_environment = Environment + + #: The class that is used for the :data:`~flask.g` instance. + #: + #: Example use cases for a custom class: + #: + #: 1. Store arbitrary attributes on flask.g. + #: 2. Add a property for lazy per-request database connectors. + #: 3. Return None instead of AttributeError on unexpected attributes. + #: 4. Raise exception if an unexpected attr is set, a "controlled" flask.g. + #: + #: In Flask 0.9 this property was called `request_globals_class` but it + #: was changed in 0.10 to :attr:`app_ctx_globals_class` because the + #: flask.g object is now application context scoped. + #: + #: .. versionadded:: 0.10 + app_ctx_globals_class = _AppCtxGlobals + + #: The class that is used for the ``config`` attribute of this app. + #: Defaults to :class:`~flask.Config`. + #: + #: Example use cases for a custom class: + #: + #: 1. Default values for certain config options. + #: 2. Access to config values through attributes in addition to keys. + #: + #: .. versionadded:: 0.11 + config_class = Config + + #: The testing flag. Set this to ``True`` to enable the test mode of + #: Flask extensions (and in the future probably also Flask itself). + #: For example this might activate test helpers that have an + #: additional runtime cost which should not be enabled by default. + #: + #: If this is enabled and PROPAGATE_EXCEPTIONS is not changed from the + #: default it's implicitly enabled. + #: + #: This attribute can also be configured from the config with the + #: ``TESTING`` configuration key. Defaults to ``False``. + testing = ConfigAttribute("TESTING") + + #: If a secret key is set, cryptographic components can use this to + #: sign cookies and other things. Set this to a complex random value + #: when you want to use the secure cookie for instance. + #: + #: This attribute can also be configured from the config with the + #: :data:`SECRET_KEY` configuration key. Defaults to ``None``. + secret_key = ConfigAttribute("SECRET_KEY") + + #: The secure cookie uses this for the name of the session cookie. + #: + #: This attribute can also be configured from the config with the + #: ``SESSION_COOKIE_NAME`` configuration key. Defaults to ``'session'`` + session_cookie_name = ConfigAttribute("SESSION_COOKIE_NAME") + + #: A :class:`~datetime.timedelta` which is used to set the expiration + #: date of a permanent session. The default is 31 days which makes a + #: permanent session survive for roughly one month. + #: + #: This attribute can also be configured from the config with the + #: ``PERMANENT_SESSION_LIFETIME`` configuration key. Defaults to + #: ``timedelta(days=31)`` + permanent_session_lifetime = ConfigAttribute( + "PERMANENT_SESSION_LIFETIME", get_converter=_make_timedelta + ) + + #: A :class:`~datetime.timedelta` which is used as default cache_timeout + #: for the :func:`send_file` functions. The default is 12 hours. + #: + #: This attribute can also be configured from the config with the + #: ``SEND_FILE_MAX_AGE_DEFAULT`` configuration key. This configuration + #: variable can also be set with an integer value used as seconds. + #: Defaults to ``timedelta(hours=12)`` + send_file_max_age_default = ConfigAttribute( + "SEND_FILE_MAX_AGE_DEFAULT", get_converter=_make_timedelta + ) + + #: Enable this if you want to use the X-Sendfile feature. Keep in + #: mind that the server has to support this. This only affects files + #: sent with the :func:`send_file` method. + #: + #: .. versionadded:: 0.2 + #: + #: This attribute can also be configured from the config with the + #: ``USE_X_SENDFILE`` configuration key. Defaults to ``False``. + use_x_sendfile = ConfigAttribute("USE_X_SENDFILE") + + #: The JSON encoder class to use. Defaults to :class:`~flask.json.JSONEncoder`. + #: + #: .. versionadded:: 0.10 + json_encoder = json.JSONEncoder + + #: The JSON decoder class to use. Defaults to :class:`~flask.json.JSONDecoder`. + #: + #: .. versionadded:: 0.10 + json_decoder = json.JSONDecoder + + #: Options that are passed to the Jinja environment in + #: :meth:`create_jinja_environment`. Changing these options after + #: the environment is created (accessing :attr:`jinja_env`) will + #: have no effect. + #: + #: .. versionchanged:: 1.1.0 + #: This is a ``dict`` instead of an ``ImmutableDict`` to allow + #: easier configuration. + #: + jinja_options = {"extensions": ["jinja2.ext.autoescape", "jinja2.ext.with_"]} + + #: Default configuration parameters. + default_config = ImmutableDict( + { + "ENV": None, + "DEBUG": None, + "TESTING": False, + "PROPAGATE_EXCEPTIONS": None, + "PRESERVE_CONTEXT_ON_EXCEPTION": None, + "SECRET_KEY": None, + "PERMANENT_SESSION_LIFETIME": timedelta(days=31), + "USE_X_SENDFILE": False, + "SERVER_NAME": None, + "APPLICATION_ROOT": "/", + "SESSION_COOKIE_NAME": "session", + "SESSION_COOKIE_DOMAIN": None, + "SESSION_COOKIE_PATH": None, + "SESSION_COOKIE_HTTPONLY": True, + "SESSION_COOKIE_SECURE": False, + "SESSION_COOKIE_SAMESITE": None, + "SESSION_REFRESH_EACH_REQUEST": True, + "MAX_CONTENT_LENGTH": None, + "SEND_FILE_MAX_AGE_DEFAULT": timedelta(hours=12), + "TRAP_BAD_REQUEST_ERRORS": None, + "TRAP_HTTP_EXCEPTIONS": False, + "EXPLAIN_TEMPLATE_LOADING": False, + "PREFERRED_URL_SCHEME": "http", + "JSON_AS_ASCII": True, + "JSON_SORT_KEYS": True, + "JSONIFY_PRETTYPRINT_REGULAR": False, + "JSONIFY_MIMETYPE": "application/json", + "TEMPLATES_AUTO_RELOAD": None, + "MAX_COOKIE_SIZE": 4093, + } + ) + + #: The rule object to use for URL rules created. This is used by + #: :meth:`add_url_rule`. Defaults to :class:`werkzeug.routing.Rule`. + #: + #: .. versionadded:: 0.7 + url_rule_class = Rule + + #: The map object to use for storing the URL rules and routing + #: configuration parameters. Defaults to :class:`werkzeug.routing.Map`. + #: + #: .. versionadded:: 1.1.0 + url_map_class = Map + + #: the test client that is used with when `test_client` is used. + #: + #: .. versionadded:: 0.7 + test_client_class = None + + #: The :class:`~click.testing.CliRunner` subclass, by default + #: :class:`~flask.testing.FlaskCliRunner` that is used by + #: :meth:`test_cli_runner`. Its ``__init__`` method should take a + #: Flask app object as the first argument. + #: + #: .. versionadded:: 1.0 + test_cli_runner_class = None + + #: the session interface to use. By default an instance of + #: :class:`~flask.sessions.SecureCookieSessionInterface` is used here. + #: + #: .. versionadded:: 0.8 + session_interface = SecureCookieSessionInterface() + + # TODO remove the next three attrs when Sphinx :inherited-members: works + # https://github.com/sphinx-doc/sphinx/issues/741 + + #: The name of the package or module that this app belongs to. Do not + #: change this once it is set by the constructor. + import_name = None + + #: Location of the template files to be added to the template lookup. + #: ``None`` if templates should not be added. + template_folder = None + + #: Absolute path to the package on the filesystem. Used to look up + #: resources contained in the package. + root_path = None + + def __init__( + self, + import_name, + static_url_path=None, + static_folder="static", + static_host=None, + host_matching=False, + subdomain_matching=False, + template_folder="templates", + instance_path=None, + instance_relative_config=False, + root_path=None, + ): + _PackageBoundObject.__init__( + self, import_name, template_folder=template_folder, root_path=root_path + ) + + self.static_url_path = static_url_path + self.static_folder = static_folder + + if instance_path is None: + instance_path = self.auto_find_instance_path() + elif not os.path.isabs(instance_path): + raise ValueError( + "If an instance path is provided it must be absolute." + " A relative path was given instead." + ) + + #: Holds the path to the instance folder. + #: + #: .. versionadded:: 0.8 + self.instance_path = instance_path + + #: The configuration dictionary as :class:`Config`. This behaves + #: exactly like a regular dictionary but supports additional methods + #: to load a config from files. + self.config = self.make_config(instance_relative_config) + + #: A dictionary of all view functions registered. The keys will + #: be function names which are also used to generate URLs and + #: the values are the function objects themselves. + #: To register a view function, use the :meth:`route` decorator. + self.view_functions = {} + + #: A dictionary of all registered error handlers. The key is ``None`` + #: for error handlers active on the application, otherwise the key is + #: the name of the blueprint. Each key points to another dictionary + #: where the key is the status code of the http exception. The + #: special key ``None`` points to a list of tuples where the first item + #: is the class for the instance check and the second the error handler + #: function. + #: + #: To register an error handler, use the :meth:`errorhandler` + #: decorator. + self.error_handler_spec = {} + + #: A list of functions that are called when :meth:`url_for` raises a + #: :exc:`~werkzeug.routing.BuildError`. Each function registered here + #: is called with `error`, `endpoint` and `values`. If a function + #: returns ``None`` or raises a :exc:`BuildError` the next function is + #: tried. + #: + #: .. versionadded:: 0.9 + self.url_build_error_handlers = [] + + #: A dictionary with lists of functions that will be called at the + #: beginning of each request. The key of the dictionary is the name of + #: the blueprint this function is active for, or ``None`` for all + #: requests. To register a function, use the :meth:`before_request` + #: decorator. + self.before_request_funcs = {} + + #: A list of functions that will be called at the beginning of the + #: first request to this instance. To register a function, use the + #: :meth:`before_first_request` decorator. + #: + #: .. versionadded:: 0.8 + self.before_first_request_funcs = [] + + #: A dictionary with lists of functions that should be called after + #: each request. The key of the dictionary is the name of the blueprint + #: this function is active for, ``None`` for all requests. This can for + #: example be used to close database connections. To register a function + #: here, use the :meth:`after_request` decorator. + self.after_request_funcs = {} + + #: A dictionary with lists of functions that are called after + #: each request, even if an exception has occurred. The key of the + #: dictionary is the name of the blueprint this function is active for, + #: ``None`` for all requests. These functions are not allowed to modify + #: the request, and their return values are ignored. If an exception + #: occurred while processing the request, it gets passed to each + #: teardown_request function. To register a function here, use the + #: :meth:`teardown_request` decorator. + #: + #: .. versionadded:: 0.7 + self.teardown_request_funcs = {} + + #: A list of functions that are called when the application context + #: is destroyed. Since the application context is also torn down + #: if the request ends this is the place to store code that disconnects + #: from databases. + #: + #: .. versionadded:: 0.9 + self.teardown_appcontext_funcs = [] + + #: A dictionary with lists of functions that are called before the + #: :attr:`before_request_funcs` functions. The key of the dictionary is + #: the name of the blueprint this function is active for, or ``None`` + #: for all requests. To register a function, use + #: :meth:`url_value_preprocessor`. + #: + #: .. versionadded:: 0.7 + self.url_value_preprocessors = {} + + #: A dictionary with lists of functions that can be used as URL value + #: preprocessors. The key ``None`` here is used for application wide + #: callbacks, otherwise the key is the name of the blueprint. + #: Each of these functions has the chance to modify the dictionary + #: of URL values before they are used as the keyword arguments of the + #: view function. For each function registered this one should also + #: provide a :meth:`url_defaults` function that adds the parameters + #: automatically again that were removed that way. + #: + #: .. versionadded:: 0.7 + self.url_default_functions = {} + + #: A dictionary with list of functions that are called without argument + #: to populate the template context. The key of the dictionary is the + #: name of the blueprint this function is active for, ``None`` for all + #: requests. Each returns a dictionary that the template context is + #: updated with. To register a function here, use the + #: :meth:`context_processor` decorator. + self.template_context_processors = {None: [_default_template_ctx_processor]} + + #: A list of shell context processor functions that should be run + #: when a shell context is created. + #: + #: .. versionadded:: 0.11 + self.shell_context_processors = [] + + #: all the attached blueprints in a dictionary by name. Blueprints + #: can be attached multiple times so this dictionary does not tell + #: you how often they got attached. + #: + #: .. versionadded:: 0.7 + self.blueprints = {} + self._blueprint_order = [] + + #: a place where extensions can store application specific state. For + #: example this is where an extension could store database engines and + #: similar things. For backwards compatibility extensions should register + #: themselves like this:: + #: + #: if not hasattr(app, 'extensions'): + #: app.extensions = {} + #: app.extensions['extensionname'] = SomeObject() + #: + #: The key must match the name of the extension module. For example in + #: case of a "Flask-Foo" extension in `flask_foo`, the key would be + #: ``'foo'``. + #: + #: .. versionadded:: 0.7 + self.extensions = {} + + #: The :class:`~werkzeug.routing.Map` for this instance. You can use + #: this to change the routing converters after the class was created + #: but before any routes are connected. Example:: + #: + #: from werkzeug.routing import BaseConverter + #: + #: class ListConverter(BaseConverter): + #: def to_python(self, value): + #: return value.split(',') + #: def to_url(self, values): + #: return ','.join(super(ListConverter, self).to_url(value) + #: for value in values) + #: + #: app = Flask(__name__) + #: app.url_map.converters['list'] = ListConverter + self.url_map = self.url_map_class() + + self.url_map.host_matching = host_matching + self.subdomain_matching = subdomain_matching + + # tracks internally if the application already handled at least one + # request. + self._got_first_request = False + self._before_request_lock = Lock() + + # Add a static route using the provided static_url_path, static_host, + # and static_folder if there is a configured static_folder. + # Note we do this without checking if static_folder exists. + # For one, it might be created while the server is running (e.g. during + # development). Also, Google App Engine stores static files somewhere + if self.has_static_folder: + assert ( + bool(static_host) == host_matching + ), "Invalid static_host/host_matching combination" + self.add_url_rule( + self.static_url_path + "/", + endpoint="static", + host=static_host, + view_func=self.send_static_file, + ) + + # Set the name of the Click group in case someone wants to add + # the app's commands to another CLI tool. + self.cli.name = self.name + + @locked_cached_property + def name(self): + """The name of the application. This is usually the import name + with the difference that it's guessed from the run file if the + import name is main. This name is used as a display name when + Flask needs the name of the application. It can be set and overridden + to change the value. + + .. versionadded:: 0.8 + """ + if self.import_name == "__main__": + fn = getattr(sys.modules["__main__"], "__file__", None) + if fn is None: + return "__main__" + return os.path.splitext(os.path.basename(fn))[0] + return self.import_name + + @property + def propagate_exceptions(self): + """Returns the value of the ``PROPAGATE_EXCEPTIONS`` configuration + value in case it's set, otherwise a sensible default is returned. + + .. versionadded:: 0.7 + """ + rv = self.config["PROPAGATE_EXCEPTIONS"] + if rv is not None: + return rv + return self.testing or self.debug + + @property + def preserve_context_on_exception(self): + """Returns the value of the ``PRESERVE_CONTEXT_ON_EXCEPTION`` + configuration value in case it's set, otherwise a sensible default + is returned. + + .. versionadded:: 0.7 + """ + rv = self.config["PRESERVE_CONTEXT_ON_EXCEPTION"] + if rv is not None: + return rv + return self.debug + + @locked_cached_property + def logger(self): + """A standard Python :class:`~logging.Logger` for the app, with + the same name as :attr:`name`. + + In debug mode, the logger's :attr:`~logging.Logger.level` will + be set to :data:`~logging.DEBUG`. + + If there are no handlers configured, a default handler will be + added. See :doc:`/logging` for more information. + + .. versionchanged:: 1.1.0 + The logger takes the same name as :attr:`name` rather than + hard-coding ``"flask.app"``. + + .. versionchanged:: 1.0.0 + Behavior was simplified. The logger is always named + ``"flask.app"``. The level is only set during configuration, + it doesn't check ``app.debug`` each time. Only one format is + used, not different ones depending on ``app.debug``. No + handlers are removed, and a handler is only added if no + handlers are already configured. + + .. versionadded:: 0.3 + """ + return create_logger(self) + + @locked_cached_property + def jinja_env(self): + """The Jinja environment used to load templates. + + The environment is created the first time this property is + accessed. Changing :attr:`jinja_options` after that will have no + effect. + """ + return self.create_jinja_environment() + + @property + def got_first_request(self): + """This attribute is set to ``True`` if the application started + handling the first request. + + .. versionadded:: 0.8 + """ + return self._got_first_request + + def make_config(self, instance_relative=False): + """Used to create the config attribute by the Flask constructor. + The `instance_relative` parameter is passed in from the constructor + of Flask (there named `instance_relative_config`) and indicates if + the config should be relative to the instance path or the root path + of the application. + + .. versionadded:: 0.8 + """ + root_path = self.root_path + if instance_relative: + root_path = self.instance_path + defaults = dict(self.default_config) + defaults["ENV"] = get_env() + defaults["DEBUG"] = get_debug_flag() + return self.config_class(root_path, defaults) + + def auto_find_instance_path(self): + """Tries to locate the instance path if it was not provided to the + constructor of the application class. It will basically calculate + the path to a folder named ``instance`` next to your main file or + the package. + + .. versionadded:: 0.8 + """ + prefix, package_path = find_package(self.import_name) + if prefix is None: + return os.path.join(package_path, "instance") + return os.path.join(prefix, "var", self.name + "-instance") + + def open_instance_resource(self, resource, mode="rb"): + """Opens a resource from the application's instance folder + (:attr:`instance_path`). Otherwise works like + :meth:`open_resource`. Instance resources can also be opened for + writing. + + :param resource: the name of the resource. To access resources within + subfolders use forward slashes as separator. + :param mode: resource file opening mode, default is 'rb'. + """ + return open(os.path.join(self.instance_path, resource), mode) + + @property + def templates_auto_reload(self): + """Reload templates when they are changed. Used by + :meth:`create_jinja_environment`. + + This attribute can be configured with :data:`TEMPLATES_AUTO_RELOAD`. If + not set, it will be enabled in debug mode. + + .. versionadded:: 1.0 + This property was added but the underlying config and behavior + already existed. + """ + rv = self.config["TEMPLATES_AUTO_RELOAD"] + return rv if rv is not None else self.debug + + @templates_auto_reload.setter + def templates_auto_reload(self, value): + self.config["TEMPLATES_AUTO_RELOAD"] = value + + def create_jinja_environment(self): + """Create the Jinja environment based on :attr:`jinja_options` + and the various Jinja-related methods of the app. Changing + :attr:`jinja_options` after this will have no effect. Also adds + Flask-related globals and filters to the environment. + + .. versionchanged:: 0.11 + ``Environment.auto_reload`` set in accordance with + ``TEMPLATES_AUTO_RELOAD`` configuration option. + + .. versionadded:: 0.5 + """ + options = dict(self.jinja_options) + + if "autoescape" not in options: + options["autoescape"] = self.select_jinja_autoescape + + if "auto_reload" not in options: + options["auto_reload"] = self.templates_auto_reload + + rv = self.jinja_environment(self, **options) + rv.globals.update( + url_for=url_for, + get_flashed_messages=get_flashed_messages, + config=self.config, + # request, session and g are normally added with the + # context processor for efficiency reasons but for imported + # templates we also want the proxies in there. + request=request, + session=session, + g=g, + ) + rv.filters["tojson"] = json.tojson_filter + return rv + + def create_global_jinja_loader(self): + """Creates the loader for the Jinja2 environment. Can be used to + override just the loader and keeping the rest unchanged. It's + discouraged to override this function. Instead one should override + the :meth:`jinja_loader` function instead. + + The global loader dispatches between the loaders of the application + and the individual blueprints. + + .. versionadded:: 0.7 + """ + return DispatchingJinjaLoader(self) + + def select_jinja_autoescape(self, filename): + """Returns ``True`` if autoescaping should be active for the given + template name. If no template name is given, returns `True`. + + .. versionadded:: 0.5 + """ + if filename is None: + return True + return filename.endswith((".html", ".htm", ".xml", ".xhtml")) + + def update_template_context(self, context): + """Update the template context with some commonly used variables. + This injects request, session, config and g into the template + context as well as everything template context processors want + to inject. Note that the as of Flask 0.6, the original values + in the context will not be overridden if a context processor + decides to return a value with the same key. + + :param context: the context as a dictionary that is updated in place + to add extra variables. + """ + funcs = self.template_context_processors[None] + reqctx = _request_ctx_stack.top + if reqctx is not None: + bp = reqctx.request.blueprint + if bp is not None and bp in self.template_context_processors: + funcs = chain(funcs, self.template_context_processors[bp]) + orig_ctx = context.copy() + for func in funcs: + context.update(func()) + # make sure the original values win. This makes it possible to + # easier add new variables in context processors without breaking + # existing views. + context.update(orig_ctx) + + def make_shell_context(self): + """Returns the shell context for an interactive shell for this + application. This runs all the registered shell context + processors. + + .. versionadded:: 0.11 + """ + rv = {"app": self, "g": g} + for processor in self.shell_context_processors: + rv.update(processor()) + return rv + + #: What environment the app is running in. Flask and extensions may + #: enable behaviors based on the environment, such as enabling debug + #: mode. This maps to the :data:`ENV` config key. This is set by the + #: :envvar:`FLASK_ENV` environment variable and may not behave as + #: expected if set in code. + #: + #: **Do not enable development when deploying in production.** + #: + #: Default: ``'production'`` + env = ConfigAttribute("ENV") + + @property + def debug(self): + """Whether debug mode is enabled. When using ``flask run`` to start + the development server, an interactive debugger will be shown for + unhandled exceptions, and the server will be reloaded when code + changes. This maps to the :data:`DEBUG` config key. This is + enabled when :attr:`env` is ``'development'`` and is overridden + by the ``FLASK_DEBUG`` environment variable. It may not behave as + expected if set in code. + + **Do not enable debug mode when deploying in production.** + + Default: ``True`` if :attr:`env` is ``'development'``, or + ``False`` otherwise. + """ + return self.config["DEBUG"] + + @debug.setter + def debug(self, value): + self.config["DEBUG"] = value + self.jinja_env.auto_reload = self.templates_auto_reload + + def run(self, host=None, port=None, debug=None, load_dotenv=True, **options): + """Runs the application on a local development server. + + Do not use ``run()`` in a production setting. It is not intended to + meet security and performance requirements for a production server. + Instead, see :ref:`deployment` for WSGI server recommendations. + + If the :attr:`debug` flag is set the server will automatically reload + for code changes and show a debugger in case an exception happened. + + If you want to run the application in debug mode, but disable the + code execution on the interactive debugger, you can pass + ``use_evalex=False`` as parameter. This will keep the debugger's + traceback screen active, but disable code execution. + + It is not recommended to use this function for development with + automatic reloading as this is badly supported. Instead you should + be using the :command:`flask` command line script's ``run`` support. + + .. admonition:: Keep in Mind + + Flask will suppress any server error with a generic error page + unless it is in debug mode. As such to enable just the + interactive debugger without the code reloading, you have to + invoke :meth:`run` with ``debug=True`` and ``use_reloader=False``. + Setting ``use_debugger`` to ``True`` without being in debug mode + won't catch any exceptions because there won't be any to + catch. + + :param host: the hostname to listen on. Set this to ``'0.0.0.0'`` to + have the server available externally as well. Defaults to + ``'127.0.0.1'`` or the host in the ``SERVER_NAME`` config variable + if present. + :param port: the port of the webserver. Defaults to ``5000`` or the + port defined in the ``SERVER_NAME`` config variable if present. + :param debug: if given, enable or disable debug mode. See + :attr:`debug`. + :param load_dotenv: Load the nearest :file:`.env` and :file:`.flaskenv` + files to set environment variables. Will also change the working + directory to the directory containing the first file found. + :param options: the options to be forwarded to the underlying Werkzeug + server. See :func:`werkzeug.serving.run_simple` for more + information. + + .. versionchanged:: 1.0 + If installed, python-dotenv will be used to load environment + variables from :file:`.env` and :file:`.flaskenv` files. + + If set, the :envvar:`FLASK_ENV` and :envvar:`FLASK_DEBUG` + environment variables will override :attr:`env` and + :attr:`debug`. + + Threaded mode is enabled by default. + + .. versionchanged:: 0.10 + The default port is now picked from the ``SERVER_NAME`` + variable. + """ + # Change this into a no-op if the server is invoked from the + # command line. Have a look at cli.py for more information. + if os.environ.get("FLASK_RUN_FROM_CLI") == "true": + from .debughelpers import explain_ignored_app_run + + explain_ignored_app_run() + return + + if get_load_dotenv(load_dotenv): + cli.load_dotenv() + + # if set, let env vars override previous values + if "FLASK_ENV" in os.environ: + self.env = get_env() + self.debug = get_debug_flag() + elif "FLASK_DEBUG" in os.environ: + self.debug = get_debug_flag() + + # debug passed to method overrides all other sources + if debug is not None: + self.debug = bool(debug) + + _host = "127.0.0.1" + _port = 5000 + server_name = self.config.get("SERVER_NAME") + sn_host, sn_port = None, None + + if server_name: + sn_host, _, sn_port = server_name.partition(":") + + host = host or sn_host or _host + # pick the first value that's not None (0 is allowed) + port = int(next((p for p in (port, sn_port) if p is not None), _port)) + + options.setdefault("use_reloader", self.debug) + options.setdefault("use_debugger", self.debug) + options.setdefault("threaded", True) + + cli.show_server_banner(self.env, self.debug, self.name, False) + + from werkzeug.serving import run_simple + + try: + run_simple(host, port, self, **options) + finally: + # reset the first request information if the development server + # reset normally. This makes it possible to restart the server + # without reloader and that stuff from an interactive shell. + self._got_first_request = False + + def test_client(self, use_cookies=True, **kwargs): + """Creates a test client for this application. For information + about unit testing head over to :ref:`testing`. + + Note that if you are testing for assertions or exceptions in your + application code, you must set ``app.testing = True`` in order for the + exceptions to propagate to the test client. Otherwise, the exception + will be handled by the application (not visible to the test client) and + the only indication of an AssertionError or other exception will be a + 500 status code response to the test client. See the :attr:`testing` + attribute. For example:: + + app.testing = True + client = app.test_client() + + The test client can be used in a ``with`` block to defer the closing down + of the context until the end of the ``with`` block. This is useful if + you want to access the context locals for testing:: + + with app.test_client() as c: + rv = c.get('/?vodka=42') + assert request.args['vodka'] == '42' + + Additionally, you may pass optional keyword arguments that will then + be passed to the application's :attr:`test_client_class` constructor. + For example:: + + from flask.testing import FlaskClient + + class CustomClient(FlaskClient): + def __init__(self, *args, **kwargs): + self._authentication = kwargs.pop("authentication") + super(CustomClient,self).__init__( *args, **kwargs) + + app.test_client_class = CustomClient + client = app.test_client(authentication='Basic ....') + + See :class:`~flask.testing.FlaskClient` for more information. + + .. versionchanged:: 0.4 + added support for ``with`` block usage for the client. + + .. versionadded:: 0.7 + The `use_cookies` parameter was added as well as the ability + to override the client to be used by setting the + :attr:`test_client_class` attribute. + + .. versionchanged:: 0.11 + Added `**kwargs` to support passing additional keyword arguments to + the constructor of :attr:`test_client_class`. + """ + cls = self.test_client_class + if cls is None: + from .testing import FlaskClient as cls + return cls(self, self.response_class, use_cookies=use_cookies, **kwargs) + + def test_cli_runner(self, **kwargs): + """Create a CLI runner for testing CLI commands. + See :ref:`testing-cli`. + + Returns an instance of :attr:`test_cli_runner_class`, by default + :class:`~flask.testing.FlaskCliRunner`. The Flask app object is + passed as the first argument. + + .. versionadded:: 1.0 + """ + cls = self.test_cli_runner_class + + if cls is None: + from .testing import FlaskCliRunner as cls + + return cls(self, **kwargs) + + def open_session(self, request): + """Creates or opens a new session. Default implementation stores all + session data in a signed cookie. This requires that the + :attr:`secret_key` is set. Instead of overriding this method + we recommend replacing the :class:`session_interface`. + + .. deprecated: 1.0 + Will be removed in 1.1. Use ``session_interface.open_session`` + instead. + + :param request: an instance of :attr:`request_class`. + """ + + warnings.warn( + DeprecationWarning( + '"open_session" is deprecated and will be removed in 1.1. Use' + ' "session_interface.open_session" instead.' + ) + ) + return self.session_interface.open_session(self, request) + + def save_session(self, session, response): + """Saves the session if it needs updates. For the default + implementation, check :meth:`open_session`. Instead of overriding this + method we recommend replacing the :class:`session_interface`. + + .. deprecated: 1.0 + Will be removed in 1.1. Use ``session_interface.save_session`` + instead. + + :param session: the session to be saved (a + :class:`~werkzeug.contrib.securecookie.SecureCookie` + object) + :param response: an instance of :attr:`response_class` + """ + + warnings.warn( + DeprecationWarning( + '"save_session" is deprecated and will be removed in 1.1. Use' + ' "session_interface.save_session" instead.' + ) + ) + return self.session_interface.save_session(self, session, response) + + def make_null_session(self): + """Creates a new instance of a missing session. Instead of overriding + this method we recommend replacing the :class:`session_interface`. + + .. deprecated: 1.0 + Will be removed in 1.1. Use ``session_interface.make_null_session`` + instead. + + .. versionadded:: 0.7 + """ + + warnings.warn( + DeprecationWarning( + '"make_null_session" is deprecated and will be removed in 1.1. Use' + ' "session_interface.make_null_session" instead.' + ) + ) + return self.session_interface.make_null_session(self) + + @setupmethod + def register_blueprint(self, blueprint, **options): + """Register a :class:`~flask.Blueprint` on the application. Keyword + arguments passed to this method will override the defaults set on the + blueprint. + + Calls the blueprint's :meth:`~flask.Blueprint.register` method after + recording the blueprint in the application's :attr:`blueprints`. + + :param blueprint: The blueprint to register. + :param url_prefix: Blueprint routes will be prefixed with this. + :param subdomain: Blueprint routes will match on this subdomain. + :param url_defaults: Blueprint routes will use these default values for + view arguments. + :param options: Additional keyword arguments are passed to + :class:`~flask.blueprints.BlueprintSetupState`. They can be + accessed in :meth:`~flask.Blueprint.record` callbacks. + + .. versionadded:: 0.7 + """ + first_registration = False + + if blueprint.name in self.blueprints: + assert self.blueprints[blueprint.name] is blueprint, ( + "A name collision occurred between blueprints %r and %r. Both" + ' share the same name "%s". Blueprints that are created on the' + " fly need unique names." + % (blueprint, self.blueprints[blueprint.name], blueprint.name) + ) + else: + self.blueprints[blueprint.name] = blueprint + self._blueprint_order.append(blueprint) + first_registration = True + + blueprint.register(self, options, first_registration) + + def iter_blueprints(self): + """Iterates over all blueprints by the order they were registered. + + .. versionadded:: 0.11 + """ + return iter(self._blueprint_order) + + @setupmethod + def add_url_rule( + self, + rule, + endpoint=None, + view_func=None, + provide_automatic_options=None, + **options + ): + """Connects a URL rule. Works exactly like the :meth:`route` + decorator. If a view_func is provided it will be registered with the + endpoint. + + Basically this example:: + + @app.route('/') + def index(): + pass + + Is equivalent to the following:: + + def index(): + pass + app.add_url_rule('/', 'index', index) + + If the view_func is not provided you will need to connect the endpoint + to a view function like so:: + + app.view_functions['index'] = index + + Internally :meth:`route` invokes :meth:`add_url_rule` so if you want + to customize the behavior via subclassing you only need to change + this method. + + For more information refer to :ref:`url-route-registrations`. + + .. versionchanged:: 0.2 + `view_func` parameter added. + + .. versionchanged:: 0.6 + ``OPTIONS`` is added automatically as method. + + :param rule: the URL rule as string + :param endpoint: the endpoint for the registered URL rule. Flask + itself assumes the name of the view function as + endpoint + :param view_func: the function to call when serving a request to the + provided endpoint + :param provide_automatic_options: controls whether the ``OPTIONS`` + method should be added automatically. This can also be controlled + by setting the ``view_func.provide_automatic_options = False`` + before adding the rule. + :param options: the options to be forwarded to the underlying + :class:`~werkzeug.routing.Rule` object. A change + to Werkzeug is handling of method options. methods + is a list of methods this rule should be limited + to (``GET``, ``POST`` etc.). By default a rule + just listens for ``GET`` (and implicitly ``HEAD``). + Starting with Flask 0.6, ``OPTIONS`` is implicitly + added and handled by the standard request handling. + """ + if endpoint is None: + endpoint = _endpoint_from_view_func(view_func) + options["endpoint"] = endpoint + methods = options.pop("methods", None) + + # if the methods are not given and the view_func object knows its + # methods we can use that instead. If neither exists, we go with + # a tuple of only ``GET`` as default. + if methods is None: + methods = getattr(view_func, "methods", None) or ("GET",) + if isinstance(methods, string_types): + raise TypeError( + "Allowed methods have to be iterables of strings, " + 'for example: @app.route(..., methods=["POST"])' + ) + methods = set(item.upper() for item in methods) + + # Methods that should always be added + required_methods = set(getattr(view_func, "required_methods", ())) + + # starting with Flask 0.8 the view_func object can disable and + # force-enable the automatic options handling. + if provide_automatic_options is None: + provide_automatic_options = getattr( + view_func, "provide_automatic_options", None + ) + + if provide_automatic_options is None: + if "OPTIONS" not in methods: + provide_automatic_options = True + required_methods.add("OPTIONS") + else: + provide_automatic_options = False + + # Add the required methods now. + methods |= required_methods + + rule = self.url_rule_class(rule, methods=methods, **options) + rule.provide_automatic_options = provide_automatic_options + + self.url_map.add(rule) + if view_func is not None: + old_func = self.view_functions.get(endpoint) + if old_func is not None and old_func != view_func: + raise AssertionError( + "View function mapping is overwriting an " + "existing endpoint function: %s" % endpoint + ) + self.view_functions[endpoint] = view_func + + def route(self, rule, **options): + """A decorator that is used to register a view function for a + given URL rule. This does the same thing as :meth:`add_url_rule` + but is intended for decorator usage:: + + @app.route('/') + def index(): + return 'Hello World' + + For more information refer to :ref:`url-route-registrations`. + + :param rule: the URL rule as string + :param endpoint: the endpoint for the registered URL rule. Flask + itself assumes the name of the view function as + endpoint + :param options: the options to be forwarded to the underlying + :class:`~werkzeug.routing.Rule` object. A change + to Werkzeug is handling of method options. methods + is a list of methods this rule should be limited + to (``GET``, ``POST`` etc.). By default a rule + just listens for ``GET`` (and implicitly ``HEAD``). + Starting with Flask 0.6, ``OPTIONS`` is implicitly + added and handled by the standard request handling. + """ + + def decorator(f): + endpoint = options.pop("endpoint", None) + self.add_url_rule(rule, endpoint, f, **options) + return f + + return decorator + + @setupmethod + def endpoint(self, endpoint): + """A decorator to register a function as an endpoint. + Example:: + + @app.endpoint('example.endpoint') + def example(): + return "example" + + :param endpoint: the name of the endpoint + """ + + def decorator(f): + self.view_functions[endpoint] = f + return f + + return decorator + + @staticmethod + def _get_exc_class_and_code(exc_class_or_code): + """Get the exception class being handled. For HTTP status codes + or ``HTTPException`` subclasses, return both the exception and + status code. + + :param exc_class_or_code: Any exception class, or an HTTP status + code as an integer. + """ + if isinstance(exc_class_or_code, integer_types): + exc_class = default_exceptions[exc_class_or_code] + else: + exc_class = exc_class_or_code + + assert issubclass(exc_class, Exception) + + if issubclass(exc_class, HTTPException): + return exc_class, exc_class.code + else: + return exc_class, None + + @setupmethod + def errorhandler(self, code_or_exception): + """Register a function to handle errors by code or exception class. + + A decorator that is used to register a function given an + error code. Example:: + + @app.errorhandler(404) + def page_not_found(error): + return 'This page does not exist', 404 + + You can also register handlers for arbitrary exceptions:: + + @app.errorhandler(DatabaseError) + def special_exception_handler(error): + return 'Database connection failed', 500 + + .. versionadded:: 0.7 + Use :meth:`register_error_handler` instead of modifying + :attr:`error_handler_spec` directly, for application wide error + handlers. + + .. versionadded:: 0.7 + One can now additionally also register custom exception types + that do not necessarily have to be a subclass of the + :class:`~werkzeug.exceptions.HTTPException` class. + + :param code_or_exception: the code as integer for the handler, or + an arbitrary exception + """ + + def decorator(f): + self._register_error_handler(None, code_or_exception, f) + return f + + return decorator + + @setupmethod + def register_error_handler(self, code_or_exception, f): + """Alternative error attach function to the :meth:`errorhandler` + decorator that is more straightforward to use for non decorator + usage. + + .. versionadded:: 0.7 + """ + self._register_error_handler(None, code_or_exception, f) + + @setupmethod + def _register_error_handler(self, key, code_or_exception, f): + """ + :type key: None|str + :type code_or_exception: int|T<=Exception + :type f: callable + """ + if isinstance(code_or_exception, HTTPException): # old broken behavior + raise ValueError( + "Tried to register a handler for an exception instance {0!r}." + " Handlers can only be registered for exception classes or" + " HTTP error codes.".format(code_or_exception) + ) + + try: + exc_class, code = self._get_exc_class_and_code(code_or_exception) + except KeyError: + raise KeyError( + "'{0}' is not a recognized HTTP error code. Use a subclass of" + " HTTPException with that code instead.".format(code_or_exception) + ) + + handlers = self.error_handler_spec.setdefault(key, {}).setdefault(code, {}) + handlers[exc_class] = f + + @setupmethod + def template_filter(self, name=None): + """A decorator that is used to register custom template filter. + You can specify a name for the filter, otherwise the function + name will be used. Example:: + + @app.template_filter() + def reverse(s): + return s[::-1] + + :param name: the optional name of the filter, otherwise the + function name will be used. + """ + + def decorator(f): + self.add_template_filter(f, name=name) + return f + + return decorator + + @setupmethod + def add_template_filter(self, f, name=None): + """Register a custom template filter. Works exactly like the + :meth:`template_filter` decorator. + + :param name: the optional name of the filter, otherwise the + function name will be used. + """ + self.jinja_env.filters[name or f.__name__] = f + + @setupmethod + def template_test(self, name=None): + """A decorator that is used to register custom template test. + You can specify a name for the test, otherwise the function + name will be used. Example:: + + @app.template_test() + def is_prime(n): + if n == 2: + return True + for i in range(2, int(math.ceil(math.sqrt(n))) + 1): + if n % i == 0: + return False + return True + + .. versionadded:: 0.10 + + :param name: the optional name of the test, otherwise the + function name will be used. + """ + + def decorator(f): + self.add_template_test(f, name=name) + return f + + return decorator + + @setupmethod + def add_template_test(self, f, name=None): + """Register a custom template test. Works exactly like the + :meth:`template_test` decorator. + + .. versionadded:: 0.10 + + :param name: the optional name of the test, otherwise the + function name will be used. + """ + self.jinja_env.tests[name or f.__name__] = f + + @setupmethod + def template_global(self, name=None): + """A decorator that is used to register a custom template global function. + You can specify a name for the global function, otherwise the function + name will be used. Example:: + + @app.template_global() + def double(n): + return 2 * n + + .. versionadded:: 0.10 + + :param name: the optional name of the global function, otherwise the + function name will be used. + """ + + def decorator(f): + self.add_template_global(f, name=name) + return f + + return decorator + + @setupmethod + def add_template_global(self, f, name=None): + """Register a custom template global function. Works exactly like the + :meth:`template_global` decorator. + + .. versionadded:: 0.10 + + :param name: the optional name of the global function, otherwise the + function name will be used. + """ + self.jinja_env.globals[name or f.__name__] = f + + @setupmethod + def before_request(self, f): + """Registers a function to run before each request. + + For example, this can be used to open a database connection, or to load + the logged in user from the session. + + The function will be called without any arguments. If it returns a + non-None value, the value is handled as if it was the return value from + the view, and further request handling is stopped. + """ + self.before_request_funcs.setdefault(None, []).append(f) + return f + + @setupmethod + def before_first_request(self, f): + """Registers a function to be run before the first request to this + instance of the application. + + The function will be called without any arguments and its return + value is ignored. + + .. versionadded:: 0.8 + """ + self.before_first_request_funcs.append(f) + return f + + @setupmethod + def after_request(self, f): + """Register a function to be run after each request. + + Your function must take one parameter, an instance of + :attr:`response_class` and return a new response object or the + same (see :meth:`process_response`). + + As of Flask 0.7 this function might not be executed at the end of the + request in case an unhandled exception occurred. + """ + self.after_request_funcs.setdefault(None, []).append(f) + return f + + @setupmethod + def teardown_request(self, f): + """Register a function to be run at the end of each request, + regardless of whether there was an exception or not. These functions + are executed when the request context is popped, even if not an + actual request was performed. + + Example:: + + ctx = app.test_request_context() + ctx.push() + ... + ctx.pop() + + When ``ctx.pop()`` is executed in the above example, the teardown + functions are called just before the request context moves from the + stack of active contexts. This becomes relevant if you are using + such constructs in tests. + + Generally teardown functions must take every necessary step to avoid + that they will fail. If they do execute code that might fail they + will have to surround the execution of these code by try/except + statements and log occurring errors. + + When a teardown function was called because of an exception it will + be passed an error object. + + The return values of teardown functions are ignored. + + .. admonition:: Debug Note + + In debug mode Flask will not tear down a request on an exception + immediately. Instead it will keep it alive so that the interactive + debugger can still access it. This behavior can be controlled + by the ``PRESERVE_CONTEXT_ON_EXCEPTION`` configuration variable. + """ + self.teardown_request_funcs.setdefault(None, []).append(f) + return f + + @setupmethod + def teardown_appcontext(self, f): + """Registers a function to be called when the application context + ends. These functions are typically also called when the request + context is popped. + + Example:: + + ctx = app.app_context() + ctx.push() + ... + ctx.pop() + + When ``ctx.pop()`` is executed in the above example, the teardown + functions are called just before the app context moves from the + stack of active contexts. This becomes relevant if you are using + such constructs in tests. + + Since a request context typically also manages an application + context it would also be called when you pop a request context. + + When a teardown function was called because of an unhandled exception + it will be passed an error object. If an :meth:`errorhandler` is + registered, it will handle the exception and the teardown will not + receive it. + + The return values of teardown functions are ignored. + + .. versionadded:: 0.9 + """ + self.teardown_appcontext_funcs.append(f) + return f + + @setupmethod + def context_processor(self, f): + """Registers a template context processor function.""" + self.template_context_processors[None].append(f) + return f + + @setupmethod + def shell_context_processor(self, f): + """Registers a shell context processor function. + + .. versionadded:: 0.11 + """ + self.shell_context_processors.append(f) + return f + + @setupmethod + def url_value_preprocessor(self, f): + """Register a URL value preprocessor function for all view + functions in the application. These functions will be called before the + :meth:`before_request` functions. + + The function can modify the values captured from the matched url before + they are passed to the view. For example, this can be used to pop a + common language code value and place it in ``g`` rather than pass it to + every view. + + The function is passed the endpoint name and values dict. The return + value is ignored. + """ + self.url_value_preprocessors.setdefault(None, []).append(f) + return f + + @setupmethod + def url_defaults(self, f): + """Callback function for URL defaults for all view functions of the + application. It's called with the endpoint and values and should + update the values passed in place. + """ + self.url_default_functions.setdefault(None, []).append(f) + return f + + def _find_error_handler(self, e): + """Return a registered error handler for an exception in this order: + blueprint handler for a specific code, app handler for a specific code, + blueprint handler for an exception class, app handler for an exception + class, or ``None`` if a suitable handler is not found. + """ + exc_class, code = self._get_exc_class_and_code(type(e)) + + for name, c in ( + (request.blueprint, code), + (None, code), + (request.blueprint, None), + (None, None), + ): + handler_map = self.error_handler_spec.setdefault(name, {}).get(c) + + if not handler_map: + continue + + for cls in exc_class.__mro__: + handler = handler_map.get(cls) + + if handler is not None: + return handler + + def handle_http_exception(self, e): + """Handles an HTTP exception. By default this will invoke the + registered error handlers and fall back to returning the + exception as response. + + .. versionchanged:: 1.0.3 + ``RoutingException``, used internally for actions such as + slash redirects during routing, is not passed to error + handlers. + + .. versionchanged:: 1.0 + Exceptions are looked up by code *and* by MRO, so + ``HTTPExcpetion`` subclasses can be handled with a catch-all + handler for the base ``HTTPException``. + + .. versionadded:: 0.3 + """ + # Proxy exceptions don't have error codes. We want to always return + # those unchanged as errors + if e.code is None: + return e + + # RoutingExceptions are used internally to trigger routing + # actions, such as slash redirects raising RequestRedirect. They + # are not raised or handled in user code. + if isinstance(e, RoutingException): + return e + + handler = self._find_error_handler(e) + if handler is None: + return e + return handler(e) + + def trap_http_exception(self, e): + """Checks if an HTTP exception should be trapped or not. By default + this will return ``False`` for all exceptions except for a bad request + key error if ``TRAP_BAD_REQUEST_ERRORS`` is set to ``True``. It + also returns ``True`` if ``TRAP_HTTP_EXCEPTIONS`` is set to ``True``. + + This is called for all HTTP exceptions raised by a view function. + If it returns ``True`` for any exception the error handler for this + exception is not called and it shows up as regular exception in the + traceback. This is helpful for debugging implicitly raised HTTP + exceptions. + + .. versionchanged:: 1.0 + Bad request errors are not trapped by default in debug mode. + + .. versionadded:: 0.8 + """ + if self.config["TRAP_HTTP_EXCEPTIONS"]: + return True + + trap_bad_request = self.config["TRAP_BAD_REQUEST_ERRORS"] + + # if unset, trap key errors in debug mode + if ( + trap_bad_request is None + and self.debug + and isinstance(e, BadRequestKeyError) + ): + return True + + if trap_bad_request: + return isinstance(e, BadRequest) + + return False + + def handle_user_exception(self, e): + """This method is called whenever an exception occurs that + should be handled. A special case is :class:`~werkzeug + .exceptions.HTTPException` which is forwarded to the + :meth:`handle_http_exception` method. This function will either + return a response value or reraise the exception with the same + traceback. + + .. versionchanged:: 1.0 + Key errors raised from request data like ``form`` show the + bad key in debug mode rather than a generic bad request + message. + + .. versionadded:: 0.7 + """ + exc_type, exc_value, tb = sys.exc_info() + assert exc_value is e + # ensure not to trash sys.exc_info() at that point in case someone + # wants the traceback preserved in handle_http_exception. Of course + # we cannot prevent users from trashing it themselves in a custom + # trap_http_exception method so that's their fault then. + + if isinstance(e, BadRequestKeyError): + if self.debug or self.config["TRAP_BAD_REQUEST_ERRORS"]: + e.show_exception = True + + # Werkzeug < 0.15 doesn't add the KeyError to the 400 + # message, add it in manually. + # TODO: clean up once Werkzeug >= 0.15.5 is required + if e.args[0] not in e.get_description(): + e.description = "KeyError: '{}'".format(*e.args) + elif not hasattr(BadRequestKeyError, "show_exception"): + e.args = () + + if isinstance(e, HTTPException) and not self.trap_http_exception(e): + return self.handle_http_exception(e) + + handler = self._find_error_handler(e) + + if handler is None: + reraise(exc_type, exc_value, tb) + return handler(e) + + def handle_exception(self, e): + """Handle an exception that did not have an error handler + associated with it, or that was raised from an error handler. + This always causes a 500 ``InternalServerError``. + + Always sends the :data:`got_request_exception` signal. + + If :attr:`propagate_exceptions` is ``True``, such as in debug + mode, the error will be re-raised so that the debugger can + display it. Otherwise, the original exception is logged, and + an :exc:`~werkzeug.exceptions.InternalServerError` is returned. + + If an error handler is registered for ``InternalServerError`` or + ``500``, it will be used. For consistency, the handler will + always receive the ``InternalServerError``. The original + unhandled exception is available as ``e.original_exception``. + + .. note:: + Prior to Werkzeug 1.0.0, ``InternalServerError`` will not + always have an ``original_exception`` attribute. Use + ``getattr(e, "original_exception", None)`` to simulate the + behavior for compatibility. + + .. versionchanged:: 1.1.0 + Always passes the ``InternalServerError`` instance to the + handler, setting ``original_exception`` to the unhandled + error. + + .. versionchanged:: 1.1.0 + ``after_request`` functions and other finalization is done + even for the default 500 response when there is no handler. + + .. versionadded:: 0.3 + """ + exc_type, exc_value, tb = sys.exc_info() + got_request_exception.send(self, exception=e) + + if self.propagate_exceptions: + # if we want to repropagate the exception, we can attempt to + # raise it with the whole traceback in case we can do that + # (the function was actually called from the except part) + # otherwise, we just raise the error again + if exc_value is e: + reraise(exc_type, exc_value, tb) + else: + raise e + + self.log_exception((exc_type, exc_value, tb)) + server_error = InternalServerError() + # TODO: pass as param when Werkzeug>=1.0.0 is required + # TODO: also remove note about this from docstring and docs + server_error.original_exception = e + handler = self._find_error_handler(server_error) + + if handler is not None: + server_error = handler(server_error) + + return self.finalize_request(server_error, from_error_handler=True) + + def log_exception(self, exc_info): + """Logs an exception. This is called by :meth:`handle_exception` + if debugging is disabled and right before the handler is called. + The default implementation logs the exception as error on the + :attr:`logger`. + + .. versionadded:: 0.8 + """ + self.logger.error( + "Exception on %s [%s]" % (request.path, request.method), exc_info=exc_info + ) + + def raise_routing_exception(self, request): + """Exceptions that are recording during routing are reraised with + this method. During debug we are not reraising redirect requests + for non ``GET``, ``HEAD``, or ``OPTIONS`` requests and we're raising + a different error instead to help debug situations. + + :internal: + """ + if ( + not self.debug + or not isinstance(request.routing_exception, RequestRedirect) + or request.method in ("GET", "HEAD", "OPTIONS") + ): + raise request.routing_exception + + from .debughelpers import FormDataRoutingRedirect + + raise FormDataRoutingRedirect(request) + + def dispatch_request(self): + """Does the request dispatching. Matches the URL and returns the + return value of the view or error handler. This does not have to + be a response object. In order to convert the return value to a + proper response object, call :func:`make_response`. + + .. versionchanged:: 0.7 + This no longer does the exception handling, this code was + moved to the new :meth:`full_dispatch_request`. + """ + req = _request_ctx_stack.top.request + if req.routing_exception is not None: + self.raise_routing_exception(req) + rule = req.url_rule + # if we provide automatic options for this URL and the + # request came with the OPTIONS method, reply automatically + if ( + getattr(rule, "provide_automatic_options", False) + and req.method == "OPTIONS" + ): + return self.make_default_options_response() + # otherwise dispatch to the handler for that endpoint + return self.view_functions[rule.endpoint](**req.view_args) + + def full_dispatch_request(self): + """Dispatches the request and on top of that performs request + pre and postprocessing as well as HTTP exception catching and + error handling. + + .. versionadded:: 0.7 + """ + self.try_trigger_before_first_request_functions() + try: + request_started.send(self) + rv = self.preprocess_request() + if rv is None: + rv = self.dispatch_request() + except Exception as e: + rv = self.handle_user_exception(e) + return self.finalize_request(rv) + + def finalize_request(self, rv, from_error_handler=False): + """Given the return value from a view function this finalizes + the request by converting it into a response and invoking the + postprocessing functions. This is invoked for both normal + request dispatching as well as error handlers. + + Because this means that it might be called as a result of a + failure a special safe mode is available which can be enabled + with the `from_error_handler` flag. If enabled, failures in + response processing will be logged and otherwise ignored. + + :internal: + """ + response = self.make_response(rv) + try: + response = self.process_response(response) + request_finished.send(self, response=response) + except Exception: + if not from_error_handler: + raise + self.logger.exception( + "Request finalizing failed with an error while handling an error" + ) + return response + + def try_trigger_before_first_request_functions(self): + """Called before each request and will ensure that it triggers + the :attr:`before_first_request_funcs` and only exactly once per + application instance (which means process usually). + + :internal: + """ + if self._got_first_request: + return + with self._before_request_lock: + if self._got_first_request: + return + for func in self.before_first_request_funcs: + func() + self._got_first_request = True + + def make_default_options_response(self): + """This method is called to create the default ``OPTIONS`` response. + This can be changed through subclassing to change the default + behavior of ``OPTIONS`` responses. + + .. versionadded:: 0.7 + """ + adapter = _request_ctx_stack.top.url_adapter + if hasattr(adapter, "allowed_methods"): + methods = adapter.allowed_methods() + else: + # fallback for Werkzeug < 0.7 + methods = [] + try: + adapter.match(method="--") + except MethodNotAllowed as e: + methods = e.valid_methods + except HTTPException: + pass + rv = self.response_class() + rv.allow.update(methods) + return rv + + def should_ignore_error(self, error): + """This is called to figure out if an error should be ignored + or not as far as the teardown system is concerned. If this + function returns ``True`` then the teardown handlers will not be + passed the error. + + .. versionadded:: 0.10 + """ + return False + + def make_response(self, rv): + """Convert the return value from a view function to an instance of + :attr:`response_class`. + + :param rv: the return value from the view function. The view function + must return a response. Returning ``None``, or the view ending + without returning, is not allowed. The following types are allowed + for ``view_rv``: + + ``str`` (``unicode`` in Python 2) + A response object is created with the string encoded to UTF-8 + as the body. + + ``bytes`` (``str`` in Python 2) + A response object is created with the bytes as the body. + + ``dict`` + A dictionary that will be jsonify'd before being returned. + + ``tuple`` + Either ``(body, status, headers)``, ``(body, status)``, or + ``(body, headers)``, where ``body`` is any of the other types + allowed here, ``status`` is a string or an integer, and + ``headers`` is a dictionary or a list of ``(key, value)`` + tuples. If ``body`` is a :attr:`response_class` instance, + ``status`` overwrites the exiting value and ``headers`` are + extended. + + :attr:`response_class` + The object is returned unchanged. + + other :class:`~werkzeug.wrappers.Response` class + The object is coerced to :attr:`response_class`. + + :func:`callable` + The function is called as a WSGI application. The result is + used to create a response object. + + .. versionchanged:: 0.9 + Previously a tuple was interpreted as the arguments for the + response object. + """ + + status = headers = None + + # unpack tuple returns + if isinstance(rv, tuple): + len_rv = len(rv) + + # a 3-tuple is unpacked directly + if len_rv == 3: + rv, status, headers = rv + # decide if a 2-tuple has status or headers + elif len_rv == 2: + if isinstance(rv[1], (Headers, dict, tuple, list)): + rv, headers = rv + else: + rv, status = rv + # other sized tuples are not allowed + else: + raise TypeError( + "The view function did not return a valid response tuple." + " The tuple must have the form (body, status, headers)," + " (body, status), or (body, headers)." + ) + + # the body must not be None + if rv is None: + raise TypeError( + "The view function did not return a valid response. The" + " function either returned None or ended without a return" + " statement." + ) + + # make sure the body is an instance of the response class + if not isinstance(rv, self.response_class): + if isinstance(rv, (text_type, bytes, bytearray)): + # let the response class set the status and headers instead of + # waiting to do it manually, so that the class can handle any + # special logic + rv = self.response_class(rv, status=status, headers=headers) + status = headers = None + elif isinstance(rv, dict): + rv = jsonify(rv) + elif isinstance(rv, BaseResponse) or callable(rv): + # evaluate a WSGI callable, or coerce a different response + # class to the correct type + try: + rv = self.response_class.force_type(rv, request.environ) + except TypeError as e: + new_error = TypeError( + "{e}\nThe view function did not return a valid" + " response. The return type must be a string, dict, tuple," + " Response instance, or WSGI callable, but it was a" + " {rv.__class__.__name__}.".format(e=e, rv=rv) + ) + reraise(TypeError, new_error, sys.exc_info()[2]) + else: + raise TypeError( + "The view function did not return a valid" + " response. The return type must be a string, dict, tuple," + " Response instance, or WSGI callable, but it was a" + " {rv.__class__.__name__}.".format(rv=rv) + ) + + # prefer the status if it was provided + if status is not None: + if isinstance(status, (text_type, bytes, bytearray)): + rv.status = status + else: + rv.status_code = status + + # extend existing headers with provided headers + if headers: + rv.headers.extend(headers) + + return rv + + def create_url_adapter(self, request): + """Creates a URL adapter for the given request. The URL adapter + is created at a point where the request context is not yet set + up so the request is passed explicitly. + + .. versionadded:: 0.6 + + .. versionchanged:: 0.9 + This can now also be called without a request object when the + URL adapter is created for the application context. + + .. versionchanged:: 1.0 + :data:`SERVER_NAME` no longer implicitly enables subdomain + matching. Use :attr:`subdomain_matching` instead. + """ + if request is not None: + # If subdomain matching is disabled (the default), use the + # default subdomain in all cases. This should be the default + # in Werkzeug but it currently does not have that feature. + subdomain = ( + (self.url_map.default_subdomain or None) + if not self.subdomain_matching + else None + ) + return self.url_map.bind_to_environ( + request.environ, + server_name=self.config["SERVER_NAME"], + subdomain=subdomain, + ) + # We need at the very least the server name to be set for this + # to work. + if self.config["SERVER_NAME"] is not None: + return self.url_map.bind( + self.config["SERVER_NAME"], + script_name=self.config["APPLICATION_ROOT"], + url_scheme=self.config["PREFERRED_URL_SCHEME"], + ) + + def inject_url_defaults(self, endpoint, values): + """Injects the URL defaults for the given endpoint directly into + the values dictionary passed. This is used internally and + automatically called on URL building. + + .. versionadded:: 0.7 + """ + funcs = self.url_default_functions.get(None, ()) + if "." in endpoint: + bp = endpoint.rsplit(".", 1)[0] + funcs = chain(funcs, self.url_default_functions.get(bp, ())) + for func in funcs: + func(endpoint, values) + + def handle_url_build_error(self, error, endpoint, values): + """Handle :class:`~werkzeug.routing.BuildError` on :meth:`url_for`. + """ + exc_type, exc_value, tb = sys.exc_info() + for handler in self.url_build_error_handlers: + try: + rv = handler(error, endpoint, values) + if rv is not None: + return rv + except BuildError as e: + # make error available outside except block (py3) + error = e + + # At this point we want to reraise the exception. If the error is + # still the same one we can reraise it with the original traceback, + # otherwise we raise it from here. + if error is exc_value: + reraise(exc_type, exc_value, tb) + raise error + + def preprocess_request(self): + """Called before the request is dispatched. Calls + :attr:`url_value_preprocessors` registered with the app and the + current blueprint (if any). Then calls :attr:`before_request_funcs` + registered with the app and the blueprint. + + If any :meth:`before_request` handler returns a non-None value, the + value is handled as if it was the return value from the view, and + further request handling is stopped. + """ + + bp = _request_ctx_stack.top.request.blueprint + + funcs = self.url_value_preprocessors.get(None, ()) + if bp is not None and bp in self.url_value_preprocessors: + funcs = chain(funcs, self.url_value_preprocessors[bp]) + for func in funcs: + func(request.endpoint, request.view_args) + + funcs = self.before_request_funcs.get(None, ()) + if bp is not None and bp in self.before_request_funcs: + funcs = chain(funcs, self.before_request_funcs[bp]) + for func in funcs: + rv = func() + if rv is not None: + return rv + + def process_response(self, response): + """Can be overridden in order to modify the response object + before it's sent to the WSGI server. By default this will + call all the :meth:`after_request` decorated functions. + + .. versionchanged:: 0.5 + As of Flask 0.5 the functions registered for after request + execution are called in reverse order of registration. + + :param response: a :attr:`response_class` object. + :return: a new response object or the same, has to be an + instance of :attr:`response_class`. + """ + ctx = _request_ctx_stack.top + bp = ctx.request.blueprint + funcs = ctx._after_request_functions + if bp is not None and bp in self.after_request_funcs: + funcs = chain(funcs, reversed(self.after_request_funcs[bp])) + if None in self.after_request_funcs: + funcs = chain(funcs, reversed(self.after_request_funcs[None])) + for handler in funcs: + response = handler(response) + if not self.session_interface.is_null_session(ctx.session): + self.session_interface.save_session(self, ctx.session, response) + return response + + def do_teardown_request(self, exc=_sentinel): + """Called after the request is dispatched and the response is + returned, right before the request context is popped. + + This calls all functions decorated with + :meth:`teardown_request`, and :meth:`Blueprint.teardown_request` + if a blueprint handled the request. Finally, the + :data:`request_tearing_down` signal is sent. + + This is called by + :meth:`RequestContext.pop() `, + which may be delayed during testing to maintain access to + resources. + + :param exc: An unhandled exception raised while dispatching the + request. Detected from the current exception information if + not passed. Passed to each teardown function. + + .. versionchanged:: 0.9 + Added the ``exc`` argument. + """ + if exc is _sentinel: + exc = sys.exc_info()[1] + funcs = reversed(self.teardown_request_funcs.get(None, ())) + bp = _request_ctx_stack.top.request.blueprint + if bp is not None and bp in self.teardown_request_funcs: + funcs = chain(funcs, reversed(self.teardown_request_funcs[bp])) + for func in funcs: + func(exc) + request_tearing_down.send(self, exc=exc) + + def do_teardown_appcontext(self, exc=_sentinel): + """Called right before the application context is popped. + + When handling a request, the application context is popped + after the request context. See :meth:`do_teardown_request`. + + This calls all functions decorated with + :meth:`teardown_appcontext`. Then the + :data:`appcontext_tearing_down` signal is sent. + + This is called by + :meth:`AppContext.pop() `. + + .. versionadded:: 0.9 + """ + if exc is _sentinel: + exc = sys.exc_info()[1] + for func in reversed(self.teardown_appcontext_funcs): + func(exc) + appcontext_tearing_down.send(self, exc=exc) + + def app_context(self): + """Create an :class:`~flask.ctx.AppContext`. Use as a ``with`` + block to push the context, which will make :data:`current_app` + point at this application. + + An application context is automatically pushed by + :meth:`RequestContext.push() ` + when handling a request, and when running a CLI command. Use + this to manually create a context outside of these situations. + + :: + + with app.app_context(): + init_db() + + See :doc:`/appcontext`. + + .. versionadded:: 0.9 + """ + return AppContext(self) + + def request_context(self, environ): + """Create a :class:`~flask.ctx.RequestContext` representing a + WSGI environment. Use a ``with`` block to push the context, + which will make :data:`request` point at this request. + + See :doc:`/reqcontext`. + + Typically you should not call this from your own code. A request + context is automatically pushed by the :meth:`wsgi_app` when + handling a request. Use :meth:`test_request_context` to create + an environment and context instead of this method. + + :param environ: a WSGI environment + """ + return RequestContext(self, environ) + + def test_request_context(self, *args, **kwargs): + """Create a :class:`~flask.ctx.RequestContext` for a WSGI + environment created from the given values. This is mostly useful + during testing, where you may want to run a function that uses + request data without dispatching a full request. + + See :doc:`/reqcontext`. + + Use a ``with`` block to push the context, which will make + :data:`request` point at the request for the created + environment. :: + + with test_request_context(...): + generate_report() + + When using the shell, it may be easier to push and pop the + context manually to avoid indentation. :: + + ctx = app.test_request_context(...) + ctx.push() + ... + ctx.pop() + + Takes the same arguments as Werkzeug's + :class:`~werkzeug.test.EnvironBuilder`, with some defaults from + the application. See the linked Werkzeug docs for most of the + available arguments. Flask-specific behavior is listed here. + + :param path: URL path being requested. + :param base_url: Base URL where the app is being served, which + ``path`` is relative to. If not given, built from + :data:`PREFERRED_URL_SCHEME`, ``subdomain``, + :data:`SERVER_NAME`, and :data:`APPLICATION_ROOT`. + :param subdomain: Subdomain name to append to + :data:`SERVER_NAME`. + :param url_scheme: Scheme to use instead of + :data:`PREFERRED_URL_SCHEME`. + :param data: The request body, either as a string or a dict of + form keys and values. + :param json: If given, this is serialized as JSON and passed as + ``data``. Also defaults ``content_type`` to + ``application/json``. + :param args: other positional arguments passed to + :class:`~werkzeug.test.EnvironBuilder`. + :param kwargs: other keyword arguments passed to + :class:`~werkzeug.test.EnvironBuilder`. + """ + from .testing import EnvironBuilder + + builder = EnvironBuilder(self, *args, **kwargs) + + try: + return self.request_context(builder.get_environ()) + finally: + builder.close() + + def wsgi_app(self, environ, start_response): + """The actual WSGI application. This is not implemented in + :meth:`__call__` so that middlewares can be applied without + losing a reference to the app object. Instead of doing this:: + + app = MyMiddleware(app) + + It's a better idea to do this instead:: + + app.wsgi_app = MyMiddleware(app.wsgi_app) + + Then you still have the original application object around and + can continue to call methods on it. + + .. versionchanged:: 0.7 + Teardown events for the request and app contexts are called + even if an unhandled error occurs. Other events may not be + called depending on when an error occurs during dispatch. + See :ref:`callbacks-and-errors`. + + :param environ: A WSGI environment. + :param start_response: A callable accepting a status code, + a list of headers, and an optional exception context to + start the response. + """ + ctx = self.request_context(environ) + error = None + try: + try: + ctx.push() + response = self.full_dispatch_request() + except Exception as e: + error = e + response = self.handle_exception(e) + except: # noqa: B001 + error = sys.exc_info()[1] + raise + return response(environ, start_response) + finally: + if self.should_ignore_error(error): + error = None + ctx.auto_pop(error) + + def __call__(self, environ, start_response): + """The WSGI server calls the Flask application object as the + WSGI application. This calls :meth:`wsgi_app` which can be + wrapped to applying middleware.""" + return self.wsgi_app(environ, start_response) + + def __repr__(self): + return "<%s %r>" % (self.__class__.__name__, self.name) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/blueprints.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/blueprints.py new file mode 100644 index 00000000..8978104d --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/blueprints.py @@ -0,0 +1,569 @@ +# -*- coding: utf-8 -*- +""" + flask.blueprints + ~~~~~~~~~~~~~~~~ + + Blueprints are the recommended way to implement larger or more + pluggable applications in Flask 0.7 and later. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +from functools import update_wrapper + +from .helpers import _endpoint_from_view_func +from .helpers import _PackageBoundObject + +# a singleton sentinel value for parameter defaults +_sentinel = object() + + +class BlueprintSetupState(object): + """Temporary holder object for registering a blueprint with the + application. An instance of this class is created by the + :meth:`~flask.Blueprint.make_setup_state` method and later passed + to all register callback functions. + """ + + def __init__(self, blueprint, app, options, first_registration): + #: a reference to the current application + self.app = app + + #: a reference to the blueprint that created this setup state. + self.blueprint = blueprint + + #: a dictionary with all options that were passed to the + #: :meth:`~flask.Flask.register_blueprint` method. + self.options = options + + #: as blueprints can be registered multiple times with the + #: application and not everything wants to be registered + #: multiple times on it, this attribute can be used to figure + #: out if the blueprint was registered in the past already. + self.first_registration = first_registration + + subdomain = self.options.get("subdomain") + if subdomain is None: + subdomain = self.blueprint.subdomain + + #: The subdomain that the blueprint should be active for, ``None`` + #: otherwise. + self.subdomain = subdomain + + url_prefix = self.options.get("url_prefix") + if url_prefix is None: + url_prefix = self.blueprint.url_prefix + #: The prefix that should be used for all URLs defined on the + #: blueprint. + self.url_prefix = url_prefix + + #: A dictionary with URL defaults that is added to each and every + #: URL that was defined with the blueprint. + self.url_defaults = dict(self.blueprint.url_values_defaults) + self.url_defaults.update(self.options.get("url_defaults", ())) + + def add_url_rule(self, rule, endpoint=None, view_func=None, **options): + """A helper method to register a rule (and optionally a view function) + to the application. The endpoint is automatically prefixed with the + blueprint's name. + """ + if self.url_prefix is not None: + if rule: + rule = "/".join((self.url_prefix.rstrip("/"), rule.lstrip("/"))) + else: + rule = self.url_prefix + options.setdefault("subdomain", self.subdomain) + if endpoint is None: + endpoint = _endpoint_from_view_func(view_func) + defaults = self.url_defaults + if "defaults" in options: + defaults = dict(defaults, **options.pop("defaults")) + self.app.add_url_rule( + rule, + "%s.%s" % (self.blueprint.name, endpoint), + view_func, + defaults=defaults, + **options + ) + + +class Blueprint(_PackageBoundObject): + """Represents a blueprint, a collection of routes and other + app-related functions that can be registered on a real application + later. + + A blueprint is an object that allows defining application functions + without requiring an application object ahead of time. It uses the + same decorators as :class:`~flask.Flask`, but defers the need for an + application by recording them for later registration. + + Decorating a function with a blueprint creates a deferred function + that is called with :class:`~flask.blueprints.BlueprintSetupState` + when the blueprint is registered on an application. + + See :ref:`blueprints` for more information. + + .. versionchanged:: 1.1.0 + Blueprints have a ``cli`` group to register nested CLI commands. + The ``cli_group`` parameter controls the name of the group under + the ``flask`` command. + + .. versionadded:: 0.7 + + :param name: The name of the blueprint. Will be prepended to each + endpoint name. + :param import_name: The name of the blueprint package, usually + ``__name__``. This helps locate the ``root_path`` for the + blueprint. + :param static_folder: A folder with static files that should be + served by the blueprint's static route. The path is relative to + the blueprint's root path. Blueprint static files are disabled + by default. + :param static_url_path: The url to serve static files from. + Defaults to ``static_folder``. If the blueprint does not have + a ``url_prefix``, the app's static route will take precedence, + and the blueprint's static files won't be accessible. + :param template_folder: A folder with templates that should be added + to the app's template search path. The path is relative to the + blueprint's root path. Blueprint templates are disabled by + default. Blueprint templates have a lower precedence than those + in the app's templates folder. + :param url_prefix: A path to prepend to all of the blueprint's URLs, + to make them distinct from the rest of the app's routes. + :param subdomain: A subdomain that blueprint routes will match on by + default. + :param url_defaults: A dict of default values that blueprint routes + will receive by default. + :param root_path: By default, the blueprint will automatically this + based on ``import_name``. In certain situations this automatic + detection can fail, so the path can be specified manually + instead. + """ + + warn_on_modifications = False + _got_registered_once = False + + #: Blueprint local JSON decoder class to use. + #: Set to ``None`` to use the app's :class:`~flask.app.Flask.json_encoder`. + json_encoder = None + #: Blueprint local JSON decoder class to use. + #: Set to ``None`` to use the app's :class:`~flask.app.Flask.json_decoder`. + json_decoder = None + + # TODO remove the next three attrs when Sphinx :inherited-members: works + # https://github.com/sphinx-doc/sphinx/issues/741 + + #: The name of the package or module that this app belongs to. Do not + #: change this once it is set by the constructor. + import_name = None + + #: Location of the template files to be added to the template lookup. + #: ``None`` if templates should not be added. + template_folder = None + + #: Absolute path to the package on the filesystem. Used to look up + #: resources contained in the package. + root_path = None + + def __init__( + self, + name, + import_name, + static_folder=None, + static_url_path=None, + template_folder=None, + url_prefix=None, + subdomain=None, + url_defaults=None, + root_path=None, + cli_group=_sentinel, + ): + _PackageBoundObject.__init__( + self, import_name, template_folder, root_path=root_path + ) + self.name = name + self.url_prefix = url_prefix + self.subdomain = subdomain + self.static_folder = static_folder + self.static_url_path = static_url_path + self.deferred_functions = [] + if url_defaults is None: + url_defaults = {} + self.url_values_defaults = url_defaults + self.cli_group = cli_group + + def record(self, func): + """Registers a function that is called when the blueprint is + registered on the application. This function is called with the + state as argument as returned by the :meth:`make_setup_state` + method. + """ + if self._got_registered_once and self.warn_on_modifications: + from warnings import warn + + warn( + Warning( + "The blueprint was already registered once " + "but is getting modified now. These changes " + "will not show up." + ) + ) + self.deferred_functions.append(func) + + def record_once(self, func): + """Works like :meth:`record` but wraps the function in another + function that will ensure the function is only called once. If the + blueprint is registered a second time on the application, the + function passed is not called. + """ + + def wrapper(state): + if state.first_registration: + func(state) + + return self.record(update_wrapper(wrapper, func)) + + def make_setup_state(self, app, options, first_registration=False): + """Creates an instance of :meth:`~flask.blueprints.BlueprintSetupState` + object that is later passed to the register callback functions. + Subclasses can override this to return a subclass of the setup state. + """ + return BlueprintSetupState(self, app, options, first_registration) + + def register(self, app, options, first_registration=False): + """Called by :meth:`Flask.register_blueprint` to register all views + and callbacks registered on the blueprint with the application. Creates + a :class:`.BlueprintSetupState` and calls each :meth:`record` callback + with it. + + :param app: The application this blueprint is being registered with. + :param options: Keyword arguments forwarded from + :meth:`~Flask.register_blueprint`. + :param first_registration: Whether this is the first time this + blueprint has been registered on the application. + """ + self._got_registered_once = True + state = self.make_setup_state(app, options, first_registration) + + if self.has_static_folder: + state.add_url_rule( + self.static_url_path + "/", + view_func=self.send_static_file, + endpoint="static", + ) + + for deferred in self.deferred_functions: + deferred(state) + + cli_resolved_group = options.get("cli_group", self.cli_group) + + if not self.cli.commands: + return + + if cli_resolved_group is None: + app.cli.commands.update(self.cli.commands) + elif cli_resolved_group is _sentinel: + self.cli.name = self.name + app.cli.add_command(self.cli) + else: + self.cli.name = cli_resolved_group + app.cli.add_command(self.cli) + + def route(self, rule, **options): + """Like :meth:`Flask.route` but for a blueprint. The endpoint for the + :func:`url_for` function is prefixed with the name of the blueprint. + """ + + def decorator(f): + endpoint = options.pop("endpoint", f.__name__) + self.add_url_rule(rule, endpoint, f, **options) + return f + + return decorator + + def add_url_rule(self, rule, endpoint=None, view_func=None, **options): + """Like :meth:`Flask.add_url_rule` but for a blueprint. The endpoint for + the :func:`url_for` function is prefixed with the name of the blueprint. + """ + if endpoint: + assert "." not in endpoint, "Blueprint endpoints should not contain dots" + if view_func and hasattr(view_func, "__name__"): + assert ( + "." not in view_func.__name__ + ), "Blueprint view function name should not contain dots" + self.record(lambda s: s.add_url_rule(rule, endpoint, view_func, **options)) + + def endpoint(self, endpoint): + """Like :meth:`Flask.endpoint` but for a blueprint. This does not + prefix the endpoint with the blueprint name, this has to be done + explicitly by the user of this method. If the endpoint is prefixed + with a `.` it will be registered to the current blueprint, otherwise + it's an application independent endpoint. + """ + + def decorator(f): + def register_endpoint(state): + state.app.view_functions[endpoint] = f + + self.record_once(register_endpoint) + return f + + return decorator + + def app_template_filter(self, name=None): + """Register a custom template filter, available application wide. Like + :meth:`Flask.template_filter` but for a blueprint. + + :param name: the optional name of the filter, otherwise the + function name will be used. + """ + + def decorator(f): + self.add_app_template_filter(f, name=name) + return f + + return decorator + + def add_app_template_filter(self, f, name=None): + """Register a custom template filter, available application wide. Like + :meth:`Flask.add_template_filter` but for a blueprint. Works exactly + like the :meth:`app_template_filter` decorator. + + :param name: the optional name of the filter, otherwise the + function name will be used. + """ + + def register_template(state): + state.app.jinja_env.filters[name or f.__name__] = f + + self.record_once(register_template) + + def app_template_test(self, name=None): + """Register a custom template test, available application wide. Like + :meth:`Flask.template_test` but for a blueprint. + + .. versionadded:: 0.10 + + :param name: the optional name of the test, otherwise the + function name will be used. + """ + + def decorator(f): + self.add_app_template_test(f, name=name) + return f + + return decorator + + def add_app_template_test(self, f, name=None): + """Register a custom template test, available application wide. Like + :meth:`Flask.add_template_test` but for a blueprint. Works exactly + like the :meth:`app_template_test` decorator. + + .. versionadded:: 0.10 + + :param name: the optional name of the test, otherwise the + function name will be used. + """ + + def register_template(state): + state.app.jinja_env.tests[name or f.__name__] = f + + self.record_once(register_template) + + def app_template_global(self, name=None): + """Register a custom template global, available application wide. Like + :meth:`Flask.template_global` but for a blueprint. + + .. versionadded:: 0.10 + + :param name: the optional name of the global, otherwise the + function name will be used. + """ + + def decorator(f): + self.add_app_template_global(f, name=name) + return f + + return decorator + + def add_app_template_global(self, f, name=None): + """Register a custom template global, available application wide. Like + :meth:`Flask.add_template_global` but for a blueprint. Works exactly + like the :meth:`app_template_global` decorator. + + .. versionadded:: 0.10 + + :param name: the optional name of the global, otherwise the + function name will be used. + """ + + def register_template(state): + state.app.jinja_env.globals[name or f.__name__] = f + + self.record_once(register_template) + + def before_request(self, f): + """Like :meth:`Flask.before_request` but for a blueprint. This function + is only executed before each request that is handled by a function of + that blueprint. + """ + self.record_once( + lambda s: s.app.before_request_funcs.setdefault(self.name, []).append(f) + ) + return f + + def before_app_request(self, f): + """Like :meth:`Flask.before_request`. Such a function is executed + before each request, even if outside of a blueprint. + """ + self.record_once( + lambda s: s.app.before_request_funcs.setdefault(None, []).append(f) + ) + return f + + def before_app_first_request(self, f): + """Like :meth:`Flask.before_first_request`. Such a function is + executed before the first request to the application. + """ + self.record_once(lambda s: s.app.before_first_request_funcs.append(f)) + return f + + def after_request(self, f): + """Like :meth:`Flask.after_request` but for a blueprint. This function + is only executed after each request that is handled by a function of + that blueprint. + """ + self.record_once( + lambda s: s.app.after_request_funcs.setdefault(self.name, []).append(f) + ) + return f + + def after_app_request(self, f): + """Like :meth:`Flask.after_request` but for a blueprint. Such a function + is executed after each request, even if outside of the blueprint. + """ + self.record_once( + lambda s: s.app.after_request_funcs.setdefault(None, []).append(f) + ) + return f + + def teardown_request(self, f): + """Like :meth:`Flask.teardown_request` but for a blueprint. This + function is only executed when tearing down requests handled by a + function of that blueprint. Teardown request functions are executed + when the request context is popped, even when no actual request was + performed. + """ + self.record_once( + lambda s: s.app.teardown_request_funcs.setdefault(self.name, []).append(f) + ) + return f + + def teardown_app_request(self, f): + """Like :meth:`Flask.teardown_request` but for a blueprint. Such a + function is executed when tearing down each request, even if outside of + the blueprint. + """ + self.record_once( + lambda s: s.app.teardown_request_funcs.setdefault(None, []).append(f) + ) + return f + + def context_processor(self, f): + """Like :meth:`Flask.context_processor` but for a blueprint. This + function is only executed for requests handled by a blueprint. + """ + self.record_once( + lambda s: s.app.template_context_processors.setdefault( + self.name, [] + ).append(f) + ) + return f + + def app_context_processor(self, f): + """Like :meth:`Flask.context_processor` but for a blueprint. Such a + function is executed each request, even if outside of the blueprint. + """ + self.record_once( + lambda s: s.app.template_context_processors.setdefault(None, []).append(f) + ) + return f + + def app_errorhandler(self, code): + """Like :meth:`Flask.errorhandler` but for a blueprint. This + handler is used for all requests, even if outside of the blueprint. + """ + + def decorator(f): + self.record_once(lambda s: s.app.errorhandler(code)(f)) + return f + + return decorator + + def url_value_preprocessor(self, f): + """Registers a function as URL value preprocessor for this + blueprint. It's called before the view functions are called and + can modify the url values provided. + """ + self.record_once( + lambda s: s.app.url_value_preprocessors.setdefault(self.name, []).append(f) + ) + return f + + def url_defaults(self, f): + """Callback function for URL defaults for this blueprint. It's called + with the endpoint and values and should update the values passed + in place. + """ + self.record_once( + lambda s: s.app.url_default_functions.setdefault(self.name, []).append(f) + ) + return f + + def app_url_value_preprocessor(self, f): + """Same as :meth:`url_value_preprocessor` but application wide. + """ + self.record_once( + lambda s: s.app.url_value_preprocessors.setdefault(None, []).append(f) + ) + return f + + def app_url_defaults(self, f): + """Same as :meth:`url_defaults` but application wide. + """ + self.record_once( + lambda s: s.app.url_default_functions.setdefault(None, []).append(f) + ) + return f + + def errorhandler(self, code_or_exception): + """Registers an error handler that becomes active for this blueprint + only. Please be aware that routing does not happen local to a + blueprint so an error handler for 404 usually is not handled by + a blueprint unless it is caused inside a view function. Another + special case is the 500 internal server error which is always looked + up from the application. + + Otherwise works as the :meth:`~flask.Flask.errorhandler` decorator + of the :class:`~flask.Flask` object. + """ + + def decorator(f): + self.record_once( + lambda s: s.app._register_error_handler(self.name, code_or_exception, f) + ) + return f + + return decorator + + def register_error_handler(self, code_or_exception, f): + """Non-decorator version of the :meth:`errorhandler` error attach + function, akin to the :meth:`~flask.Flask.register_error_handler` + application-wide function of the :class:`~flask.Flask` object but + for error handlers limited to this blueprint. + + .. versionadded:: 0.11 + """ + self.record_once( + lambda s: s.app._register_error_handler(self.name, code_or_exception, f) + ) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/cli.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/cli.py new file mode 100644 index 00000000..11585455 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/cli.py @@ -0,0 +1,970 @@ +# -*- coding: utf-8 -*- +""" + flask.cli + ~~~~~~~~~ + + A simple command line application to run flask apps. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +from __future__ import print_function + +import ast +import inspect +import os +import platform +import re +import sys +import traceback +from functools import update_wrapper +from operator import attrgetter +from threading import Lock +from threading import Thread + +import click +from werkzeug.utils import import_string + +from ._compat import getargspec +from ._compat import itervalues +from ._compat import reraise +from ._compat import text_type +from .globals import current_app +from .helpers import get_debug_flag +from .helpers import get_env +from .helpers import get_load_dotenv + +try: + import dotenv +except ImportError: + dotenv = None + +try: + import ssl +except ImportError: + ssl = None + + +class NoAppException(click.UsageError): + """Raised if an application cannot be found or loaded.""" + + +def find_best_app(script_info, module): + """Given a module instance this tries to find the best possible + application in the module or raises an exception. + """ + from . import Flask + + # Search for the most common names first. + for attr_name in ("app", "application"): + app = getattr(module, attr_name, None) + + if isinstance(app, Flask): + return app + + # Otherwise find the only object that is a Flask instance. + matches = [v for v in itervalues(module.__dict__) if isinstance(v, Flask)] + + if len(matches) == 1: + return matches[0] + elif len(matches) > 1: + raise NoAppException( + 'Detected multiple Flask applications in module "{module}". Use ' + '"FLASK_APP={module}:name" to specify the correct ' + "one.".format(module=module.__name__) + ) + + # Search for app factory functions. + for attr_name in ("create_app", "make_app"): + app_factory = getattr(module, attr_name, None) + + if inspect.isfunction(app_factory): + try: + app = call_factory(script_info, app_factory) + + if isinstance(app, Flask): + return app + except TypeError: + if not _called_with_wrong_args(app_factory): + raise + raise NoAppException( + 'Detected factory "{factory}" in module "{module}", but ' + "could not call it without arguments. Use " + "\"FLASK_APP='{module}:{factory}(args)'\" to specify " + "arguments.".format(factory=attr_name, module=module.__name__) + ) + + raise NoAppException( + 'Failed to find Flask application or factory in module "{module}". ' + 'Use "FLASK_APP={module}:name to specify one.'.format(module=module.__name__) + ) + + +def call_factory(script_info, app_factory, arguments=()): + """Takes an app factory, a ``script_info` object and optionally a tuple + of arguments. Checks for the existence of a script_info argument and calls + the app_factory depending on that and the arguments provided. + """ + args_spec = getargspec(app_factory) + arg_names = args_spec.args + arg_defaults = args_spec.defaults + + if "script_info" in arg_names: + return app_factory(*arguments, script_info=script_info) + elif arguments: + return app_factory(*arguments) + elif not arguments and len(arg_names) == 1 and arg_defaults is None: + return app_factory(script_info) + + return app_factory() + + +def _called_with_wrong_args(factory): + """Check whether calling a function raised a ``TypeError`` because + the call failed or because something in the factory raised the + error. + + :param factory: the factory function that was called + :return: true if the call failed + """ + tb = sys.exc_info()[2] + + try: + while tb is not None: + if tb.tb_frame.f_code is factory.__code__: + # in the factory, it was called successfully + return False + + tb = tb.tb_next + + # didn't reach the factory + return True + finally: + # explicitly delete tb as it is circular referenced + # https://docs.python.org/2/library/sys.html#sys.exc_info + del tb + + +def find_app_by_string(script_info, module, app_name): + """Checks if the given string is a variable name or a function. If it is a + function, it checks for specified arguments and whether it takes a + ``script_info`` argument and calls the function with the appropriate + arguments. + """ + from . import Flask + + match = re.match(r"^ *([^ ()]+) *(?:\((.*?) *,? *\))? *$", app_name) + + if not match: + raise NoAppException( + '"{name}" is not a valid variable name or function ' + "expression.".format(name=app_name) + ) + + name, args = match.groups() + + try: + attr = getattr(module, name) + except AttributeError as e: + raise NoAppException(e.args[0]) + + if inspect.isfunction(attr): + if args: + try: + args = ast.literal_eval("({args},)".format(args=args)) + except (ValueError, SyntaxError) as e: + raise NoAppException( + "Could not parse the arguments in " + '"{app_name}".'.format(e=e, app_name=app_name) + ) + else: + args = () + + try: + app = call_factory(script_info, attr, args) + except TypeError as e: + if not _called_with_wrong_args(attr): + raise + + raise NoAppException( + '{e}\nThe factory "{app_name}" in module "{module}" could not ' + "be called with the specified arguments.".format( + e=e, app_name=app_name, module=module.__name__ + ) + ) + else: + app = attr + + if isinstance(app, Flask): + return app + + raise NoAppException( + "A valid Flask application was not obtained from " + '"{module}:{app_name}".'.format(module=module.__name__, app_name=app_name) + ) + + +def prepare_import(path): + """Given a filename this will try to calculate the python path, add it + to the search path and return the actual module name that is expected. + """ + path = os.path.realpath(path) + + fname, ext = os.path.splitext(path) + if ext == ".py": + path = fname + + if os.path.basename(path) == "__init__": + path = os.path.dirname(path) + + module_name = [] + + # move up until outside package structure (no __init__.py) + while True: + path, name = os.path.split(path) + module_name.append(name) + + if not os.path.exists(os.path.join(path, "__init__.py")): + break + + if sys.path[0] != path: + sys.path.insert(0, path) + + return ".".join(module_name[::-1]) + + +def locate_app(script_info, module_name, app_name, raise_if_not_found=True): + __traceback_hide__ = True # noqa: F841 + + try: + __import__(module_name) + except ImportError: + # Reraise the ImportError if it occurred within the imported module. + # Determine this by checking whether the trace has a depth > 1. + if sys.exc_info()[-1].tb_next: + raise NoAppException( + 'While importing "{name}", an ImportError was raised:' + "\n\n{tb}".format(name=module_name, tb=traceback.format_exc()) + ) + elif raise_if_not_found: + raise NoAppException('Could not import "{name}".'.format(name=module_name)) + else: + return + + module = sys.modules[module_name] + + if app_name is None: + return find_best_app(script_info, module) + else: + return find_app_by_string(script_info, module, app_name) + + +def get_version(ctx, param, value): + if not value or ctx.resilient_parsing: + return + + import werkzeug + from . import __version__ + + message = "Python %(python)s\nFlask %(flask)s\nWerkzeug %(werkzeug)s" + click.echo( + message + % { + "python": platform.python_version(), + "flask": __version__, + "werkzeug": werkzeug.__version__, + }, + color=ctx.color, + ) + ctx.exit() + + +version_option = click.Option( + ["--version"], + help="Show the flask version", + expose_value=False, + callback=get_version, + is_flag=True, + is_eager=True, +) + + +class DispatchingApp(object): + """Special application that dispatches to a Flask application which + is imported by name in a background thread. If an error happens + it is recorded and shown as part of the WSGI handling which in case + of the Werkzeug debugger means that it shows up in the browser. + """ + + def __init__(self, loader, use_eager_loading=False): + self.loader = loader + self._app = None + self._lock = Lock() + self._bg_loading_exc_info = None + if use_eager_loading: + self._load_unlocked() + else: + self._load_in_background() + + def _load_in_background(self): + def _load_app(): + __traceback_hide__ = True # noqa: F841 + with self._lock: + try: + self._load_unlocked() + except Exception: + self._bg_loading_exc_info = sys.exc_info() + + t = Thread(target=_load_app, args=()) + t.start() + + def _flush_bg_loading_exception(self): + __traceback_hide__ = True # noqa: F841 + exc_info = self._bg_loading_exc_info + if exc_info is not None: + self._bg_loading_exc_info = None + reraise(*exc_info) + + def _load_unlocked(self): + __traceback_hide__ = True # noqa: F841 + self._app = rv = self.loader() + self._bg_loading_exc_info = None + return rv + + def __call__(self, environ, start_response): + __traceback_hide__ = True # noqa: F841 + if self._app is not None: + return self._app(environ, start_response) + self._flush_bg_loading_exception() + with self._lock: + if self._app is not None: + rv = self._app + else: + rv = self._load_unlocked() + return rv(environ, start_response) + + +class ScriptInfo(object): + """Helper object to deal with Flask applications. This is usually not + necessary to interface with as it's used internally in the dispatching + to click. In future versions of Flask this object will most likely play + a bigger role. Typically it's created automatically by the + :class:`FlaskGroup` but you can also manually create it and pass it + onwards as click object. + """ + + def __init__(self, app_import_path=None, create_app=None, set_debug_flag=True): + #: Optionally the import path for the Flask application. + self.app_import_path = app_import_path or os.environ.get("FLASK_APP") + #: Optionally a function that is passed the script info to create + #: the instance of the application. + self.create_app = create_app + #: A dictionary with arbitrary data that can be associated with + #: this script info. + self.data = {} + self.set_debug_flag = set_debug_flag + self._loaded_app = None + + def load_app(self): + """Loads the Flask app (if not yet loaded) and returns it. Calling + this multiple times will just result in the already loaded app to + be returned. + """ + __traceback_hide__ = True # noqa: F841 + + if self._loaded_app is not None: + return self._loaded_app + + app = None + + if self.create_app is not None: + app = call_factory(self, self.create_app) + else: + if self.app_import_path: + path, name = ( + re.split(r":(?![\\/])", self.app_import_path, 1) + [None] + )[:2] + import_name = prepare_import(path) + app = locate_app(self, import_name, name) + else: + for path in ("wsgi.py", "app.py"): + import_name = prepare_import(path) + app = locate_app(self, import_name, None, raise_if_not_found=False) + + if app: + break + + if not app: + raise NoAppException( + "Could not locate a Flask application. You did not provide " + 'the "FLASK_APP" environment variable, and a "wsgi.py" or ' + '"app.py" module was not found in the current directory.' + ) + + if self.set_debug_flag: + # Update the app's debug flag through the descriptor so that + # other values repopulate as well. + app.debug = get_debug_flag() + + self._loaded_app = app + return app + + +pass_script_info = click.make_pass_decorator(ScriptInfo, ensure=True) + + +def with_appcontext(f): + """Wraps a callback so that it's guaranteed to be executed with the + script's application context. If callbacks are registered directly + to the ``app.cli`` object then they are wrapped with this function + by default unless it's disabled. + """ + + @click.pass_context + def decorator(__ctx, *args, **kwargs): + with __ctx.ensure_object(ScriptInfo).load_app().app_context(): + return __ctx.invoke(f, *args, **kwargs) + + return update_wrapper(decorator, f) + + +class AppGroup(click.Group): + """This works similar to a regular click :class:`~click.Group` but it + changes the behavior of the :meth:`command` decorator so that it + automatically wraps the functions in :func:`with_appcontext`. + + Not to be confused with :class:`FlaskGroup`. + """ + + def command(self, *args, **kwargs): + """This works exactly like the method of the same name on a regular + :class:`click.Group` but it wraps callbacks in :func:`with_appcontext` + unless it's disabled by passing ``with_appcontext=False``. + """ + wrap_for_ctx = kwargs.pop("with_appcontext", True) + + def decorator(f): + if wrap_for_ctx: + f = with_appcontext(f) + return click.Group.command(self, *args, **kwargs)(f) + + return decorator + + def group(self, *args, **kwargs): + """This works exactly like the method of the same name on a regular + :class:`click.Group` but it defaults the group class to + :class:`AppGroup`. + """ + kwargs.setdefault("cls", AppGroup) + return click.Group.group(self, *args, **kwargs) + + +class FlaskGroup(AppGroup): + """Special subclass of the :class:`AppGroup` group that supports + loading more commands from the configured Flask app. Normally a + developer does not have to interface with this class but there are + some very advanced use cases for which it makes sense to create an + instance of this. + + For information as of why this is useful see :ref:`custom-scripts`. + + :param add_default_commands: if this is True then the default run and + shell commands will be added. + :param add_version_option: adds the ``--version`` option. + :param create_app: an optional callback that is passed the script info and + returns the loaded app. + :param load_dotenv: Load the nearest :file:`.env` and :file:`.flaskenv` + files to set environment variables. Will also change the working + directory to the directory containing the first file found. + :param set_debug_flag: Set the app's debug flag based on the active + environment + + .. versionchanged:: 1.0 + If installed, python-dotenv will be used to load environment variables + from :file:`.env` and :file:`.flaskenv` files. + """ + + def __init__( + self, + add_default_commands=True, + create_app=None, + add_version_option=True, + load_dotenv=True, + set_debug_flag=True, + **extra + ): + params = list(extra.pop("params", None) or ()) + + if add_version_option: + params.append(version_option) + + AppGroup.__init__(self, params=params, **extra) + self.create_app = create_app + self.load_dotenv = load_dotenv + self.set_debug_flag = set_debug_flag + + if add_default_commands: + self.add_command(run_command) + self.add_command(shell_command) + self.add_command(routes_command) + + self._loaded_plugin_commands = False + + def _load_plugin_commands(self): + if self._loaded_plugin_commands: + return + try: + import pkg_resources + except ImportError: + self._loaded_plugin_commands = True + return + + for ep in pkg_resources.iter_entry_points("flask.commands"): + self.add_command(ep.load(), ep.name) + self._loaded_plugin_commands = True + + def get_command(self, ctx, name): + self._load_plugin_commands() + + # We load built-in commands first as these should always be the + # same no matter what the app does. If the app does want to + # override this it needs to make a custom instance of this group + # and not attach the default commands. + # + # This also means that the script stays functional in case the + # application completely fails. + rv = AppGroup.get_command(self, ctx, name) + if rv is not None: + return rv + + info = ctx.ensure_object(ScriptInfo) + try: + rv = info.load_app().cli.get_command(ctx, name) + if rv is not None: + return rv + except NoAppException: + pass + + def list_commands(self, ctx): + self._load_plugin_commands() + + # The commands available is the list of both the application (if + # available) plus the builtin commands. + rv = set(click.Group.list_commands(self, ctx)) + info = ctx.ensure_object(ScriptInfo) + try: + rv.update(info.load_app().cli.list_commands(ctx)) + except Exception: + # Here we intentionally swallow all exceptions as we don't + # want the help page to break if the app does not exist. + # If someone attempts to use the command we try to create + # the app again and this will give us the error. + # However, we will not do so silently because that would confuse + # users. + traceback.print_exc() + return sorted(rv) + + def main(self, *args, **kwargs): + # Set a global flag that indicates that we were invoked from the + # command line interface. This is detected by Flask.run to make the + # call into a no-op. This is necessary to avoid ugly errors when the + # script that is loaded here also attempts to start a server. + os.environ["FLASK_RUN_FROM_CLI"] = "true" + + if get_load_dotenv(self.load_dotenv): + load_dotenv() + + obj = kwargs.get("obj") + + if obj is None: + obj = ScriptInfo( + create_app=self.create_app, set_debug_flag=self.set_debug_flag + ) + + kwargs["obj"] = obj + kwargs.setdefault("auto_envvar_prefix", "FLASK") + return super(FlaskGroup, self).main(*args, **kwargs) + + +def _path_is_ancestor(path, other): + """Take ``other`` and remove the length of ``path`` from it. Then join it + to ``path``. If it is the original value, ``path`` is an ancestor of + ``other``.""" + return os.path.join(path, other[len(path) :].lstrip(os.sep)) == other + + +def load_dotenv(path=None): + """Load "dotenv" files in order of precedence to set environment variables. + + If an env var is already set it is not overwritten, so earlier files in the + list are preferred over later files. + + Changes the current working directory to the location of the first file + found, with the assumption that it is in the top level project directory + and will be where the Python path should import local packages from. + + This is a no-op if `python-dotenv`_ is not installed. + + .. _python-dotenv: https://github.com/theskumar/python-dotenv#readme + + :param path: Load the file at this location instead of searching. + :return: ``True`` if a file was loaded. + + .. versionchanged:: 1.1.0 + Returns ``False`` when python-dotenv is not installed, or when + the given path isn't a file. + + .. versionadded:: 1.0 + """ + if dotenv is None: + if path or os.path.isfile(".env") or os.path.isfile(".flaskenv"): + click.secho( + " * Tip: There are .env or .flaskenv files present." + ' Do "pip install python-dotenv" to use them.', + fg="yellow", + err=True, + ) + + return False + + # if the given path specifies the actual file then return True, + # else False + if path is not None: + if os.path.isfile(path): + return dotenv.load_dotenv(path) + + return False + + new_dir = None + + for name in (".env", ".flaskenv"): + path = dotenv.find_dotenv(name, usecwd=True) + + if not path: + continue + + if new_dir is None: + new_dir = os.path.dirname(path) + + dotenv.load_dotenv(path) + + if new_dir and os.getcwd() != new_dir: + os.chdir(new_dir) + + return new_dir is not None # at least one file was located and loaded + + +def show_server_banner(env, debug, app_import_path, eager_loading): + """Show extra startup messages the first time the server is run, + ignoring the reloader. + """ + if os.environ.get("WERKZEUG_RUN_MAIN") == "true": + return + + if app_import_path is not None: + message = ' * Serving Flask app "{0}"'.format(app_import_path) + + if not eager_loading: + message += " (lazy loading)" + + click.echo(message) + + click.echo(" * Environment: {0}".format(env)) + + if env == "production": + click.secho( + " WARNING: This is a development server. " + "Do not use it in a production deployment.", + fg="red", + ) + click.secho(" Use a production WSGI server instead.", dim=True) + + if debug is not None: + click.echo(" * Debug mode: {0}".format("on" if debug else "off")) + + +class CertParamType(click.ParamType): + """Click option type for the ``--cert`` option. Allows either an + existing file, the string ``'adhoc'``, or an import for a + :class:`~ssl.SSLContext` object. + """ + + name = "path" + + def __init__(self): + self.path_type = click.Path(exists=True, dir_okay=False, resolve_path=True) + + def convert(self, value, param, ctx): + if ssl is None: + raise click.BadParameter( + 'Using "--cert" requires Python to be compiled with SSL support.', + ctx, + param, + ) + + try: + return self.path_type(value, param, ctx) + except click.BadParameter: + value = click.STRING(value, param, ctx).lower() + + if value == "adhoc": + try: + import OpenSSL # noqa: F401 + except ImportError: + raise click.BadParameter( + "Using ad-hoc certificates requires pyOpenSSL.", ctx, param + ) + + return value + + obj = import_string(value, silent=True) + + if sys.version_info < (2, 7, 9): + if obj: + return obj + else: + if isinstance(obj, ssl.SSLContext): + return obj + + raise + + +def _validate_key(ctx, param, value): + """The ``--key`` option must be specified when ``--cert`` is a file. + Modifies the ``cert`` param to be a ``(cert, key)`` pair if needed. + """ + cert = ctx.params.get("cert") + is_adhoc = cert == "adhoc" + + if sys.version_info < (2, 7, 9): + is_context = cert and not isinstance(cert, (text_type, bytes)) + else: + is_context = isinstance(cert, ssl.SSLContext) + + if value is not None: + if is_adhoc: + raise click.BadParameter( + 'When "--cert" is "adhoc", "--key" is not used.', ctx, param + ) + + if is_context: + raise click.BadParameter( + 'When "--cert" is an SSLContext object, "--key is not used.', ctx, param + ) + + if not cert: + raise click.BadParameter('"--cert" must also be specified.', ctx, param) + + ctx.params["cert"] = cert, value + + else: + if cert and not (is_adhoc or is_context): + raise click.BadParameter('Required when using "--cert".', ctx, param) + + return value + + +class SeparatedPathType(click.Path): + """Click option type that accepts a list of values separated by the + OS's path separator (``:``, ``;`` on Windows). Each value is + validated as a :class:`click.Path` type. + """ + + def convert(self, value, param, ctx): + items = self.split_envvar_value(value) + super_convert = super(SeparatedPathType, self).convert + return [super_convert(item, param, ctx) for item in items] + + +@click.command("run", short_help="Run a development server.") +@click.option("--host", "-h", default="127.0.0.1", help="The interface to bind to.") +@click.option("--port", "-p", default=5000, help="The port to bind to.") +@click.option( + "--cert", type=CertParamType(), help="Specify a certificate file to use HTTPS." +) +@click.option( + "--key", + type=click.Path(exists=True, dir_okay=False, resolve_path=True), + callback=_validate_key, + expose_value=False, + help="The key file to use when specifying a certificate.", +) +@click.option( + "--reload/--no-reload", + default=None, + help="Enable or disable the reloader. By default the reloader " + "is active if debug is enabled.", +) +@click.option( + "--debugger/--no-debugger", + default=None, + help="Enable or disable the debugger. By default the debugger " + "is active if debug is enabled.", +) +@click.option( + "--eager-loading/--lazy-loader", + default=None, + help="Enable or disable eager loading. By default eager " + "loading is enabled if the reloader is disabled.", +) +@click.option( + "--with-threads/--without-threads", + default=True, + help="Enable or disable multithreading.", +) +@click.option( + "--extra-files", + default=None, + type=SeparatedPathType(), + help=( + "Extra files that trigger a reload on change. Multiple paths" + " are separated by '{}'.".format(os.path.pathsep) + ), +) +@pass_script_info +def run_command( + info, host, port, reload, debugger, eager_loading, with_threads, cert, extra_files +): + """Run a local development server. + + This server is for development purposes only. It does not provide + the stability, security, or performance of production WSGI servers. + + The reloader and debugger are enabled by default if + FLASK_ENV=development or FLASK_DEBUG=1. + """ + debug = get_debug_flag() + + if reload is None: + reload = debug + + if debugger is None: + debugger = debug + + if eager_loading is None: + eager_loading = not reload + + show_server_banner(get_env(), debug, info.app_import_path, eager_loading) + app = DispatchingApp(info.load_app, use_eager_loading=eager_loading) + + from werkzeug.serving import run_simple + + run_simple( + host, + port, + app, + use_reloader=reload, + use_debugger=debugger, + threaded=with_threads, + ssl_context=cert, + extra_files=extra_files, + ) + + +@click.command("shell", short_help="Run a shell in the app context.") +@with_appcontext +def shell_command(): + """Run an interactive Python shell in the context of a given + Flask application. The application will populate the default + namespace of this shell according to it's configuration. + + This is useful for executing small snippets of management code + without having to manually configure the application. + """ + import code + from .globals import _app_ctx_stack + + app = _app_ctx_stack.top.app + banner = "Python %s on %s\nApp: %s [%s]\nInstance: %s" % ( + sys.version, + sys.platform, + app.import_name, + app.env, + app.instance_path, + ) + ctx = {} + + # Support the regular Python interpreter startup script if someone + # is using it. + startup = os.environ.get("PYTHONSTARTUP") + if startup and os.path.isfile(startup): + with open(startup, "r") as f: + eval(compile(f.read(), startup, "exec"), ctx) + + ctx.update(app.make_shell_context()) + + code.interact(banner=banner, local=ctx) + + +@click.command("routes", short_help="Show the routes for the app.") +@click.option( + "--sort", + "-s", + type=click.Choice(("endpoint", "methods", "rule", "match")), + default="endpoint", + help=( + 'Method to sort routes by. "match" is the order that Flask will match ' + "routes when dispatching a request." + ), +) +@click.option("--all-methods", is_flag=True, help="Show HEAD and OPTIONS methods.") +@with_appcontext +def routes_command(sort, all_methods): + """Show all registered routes with endpoints and methods.""" + + rules = list(current_app.url_map.iter_rules()) + if not rules: + click.echo("No routes were registered.") + return + + ignored_methods = set(() if all_methods else ("HEAD", "OPTIONS")) + + if sort in ("endpoint", "rule"): + rules = sorted(rules, key=attrgetter(sort)) + elif sort == "methods": + rules = sorted(rules, key=lambda rule: sorted(rule.methods)) + + rule_methods = [", ".join(sorted(rule.methods - ignored_methods)) for rule in rules] + + headers = ("Endpoint", "Methods", "Rule") + widths = ( + max(len(rule.endpoint) for rule in rules), + max(len(methods) for methods in rule_methods), + max(len(rule.rule) for rule in rules), + ) + widths = [max(len(h), w) for h, w in zip(headers, widths)] + row = "{{0:<{0}}} {{1:<{1}}} {{2:<{2}}}".format(*widths) + + click.echo(row.format(*headers).strip()) + click.echo(row.format(*("-" * width for width in widths))) + + for rule, methods in zip(rules, rule_methods): + click.echo(row.format(rule.endpoint, methods, rule.rule).rstrip()) + + +cli = FlaskGroup( + help="""\ +A general utility script for Flask applications. + +Provides commands from Flask, extensions, and the application. Loads the +application defined in the FLASK_APP environment variable, or from a wsgi.py +file. Setting the FLASK_ENV environment variable to 'development' will enable +debug mode. + +\b + {prefix}{cmd} FLASK_APP=hello.py + {prefix}{cmd} FLASK_ENV=development + {prefix}flask run +""".format( + cmd="export" if os.name == "posix" else "set", + prefix="$ " if os.name == "posix" else "> ", + ) +) + + +def main(as_module=False): + cli.main(prog_name="python -m flask" if as_module else None) + + +if __name__ == "__main__": + main(as_module=True) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/config.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/config.py new file mode 100644 index 00000000..809de336 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/config.py @@ -0,0 +1,269 @@ +# -*- coding: utf-8 -*- +""" + flask.config + ~~~~~~~~~~~~ + + Implements the configuration related objects. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import errno +import os +import types + +from werkzeug.utils import import_string + +from . import json +from ._compat import iteritems +from ._compat import string_types + + +class ConfigAttribute(object): + """Makes an attribute forward to the config""" + + def __init__(self, name, get_converter=None): + self.__name__ = name + self.get_converter = get_converter + + def __get__(self, obj, type=None): + if obj is None: + return self + rv = obj.config[self.__name__] + if self.get_converter is not None: + rv = self.get_converter(rv) + return rv + + def __set__(self, obj, value): + obj.config[self.__name__] = value + + +class Config(dict): + """Works exactly like a dict but provides ways to fill it from files + or special dictionaries. There are two common patterns to populate the + config. + + Either you can fill the config from a config file:: + + app.config.from_pyfile('yourconfig.cfg') + + Or alternatively you can define the configuration options in the + module that calls :meth:`from_object` or provide an import path to + a module that should be loaded. It is also possible to tell it to + use the same module and with that provide the configuration values + just before the call:: + + DEBUG = True + SECRET_KEY = 'development key' + app.config.from_object(__name__) + + In both cases (loading from any Python file or loading from modules), + only uppercase keys are added to the config. This makes it possible to use + lowercase values in the config file for temporary values that are not added + to the config or to define the config keys in the same file that implements + the application. + + Probably the most interesting way to load configurations is from an + environment variable pointing to a file:: + + app.config.from_envvar('YOURAPPLICATION_SETTINGS') + + In this case before launching the application you have to set this + environment variable to the file you want to use. On Linux and OS X + use the export statement:: + + export YOURAPPLICATION_SETTINGS='/path/to/config/file' + + On windows use `set` instead. + + :param root_path: path to which files are read relative from. When the + config object is created by the application, this is + the application's :attr:`~flask.Flask.root_path`. + :param defaults: an optional dictionary of default values + """ + + def __init__(self, root_path, defaults=None): + dict.__init__(self, defaults or {}) + self.root_path = root_path + + def from_envvar(self, variable_name, silent=False): + """Loads a configuration from an environment variable pointing to + a configuration file. This is basically just a shortcut with nicer + error messages for this line of code:: + + app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS']) + + :param variable_name: name of the environment variable + :param silent: set to ``True`` if you want silent failure for missing + files. + :return: bool. ``True`` if able to load config, ``False`` otherwise. + """ + rv = os.environ.get(variable_name) + if not rv: + if silent: + return False + raise RuntimeError( + "The environment variable %r is not set " + "and as such configuration could not be " + "loaded. Set this variable and make it " + "point to a configuration file" % variable_name + ) + return self.from_pyfile(rv, silent=silent) + + def from_pyfile(self, filename, silent=False): + """Updates the values in the config from a Python file. This function + behaves as if the file was imported as module with the + :meth:`from_object` function. + + :param filename: the filename of the config. This can either be an + absolute filename or a filename relative to the + root path. + :param silent: set to ``True`` if you want silent failure for missing + files. + + .. versionadded:: 0.7 + `silent` parameter. + """ + filename = os.path.join(self.root_path, filename) + d = types.ModuleType("config") + d.__file__ = filename + try: + with open(filename, mode="rb") as config_file: + exec(compile(config_file.read(), filename, "exec"), d.__dict__) + except IOError as e: + if silent and e.errno in (errno.ENOENT, errno.EISDIR, errno.ENOTDIR): + return False + e.strerror = "Unable to load configuration file (%s)" % e.strerror + raise + self.from_object(d) + return True + + def from_object(self, obj): + """Updates the values from the given object. An object can be of one + of the following two types: + + - a string: in this case the object with that name will be imported + - an actual object reference: that object is used directly + + Objects are usually either modules or classes. :meth:`from_object` + loads only the uppercase attributes of the module/class. A ``dict`` + object will not work with :meth:`from_object` because the keys of a + ``dict`` are not attributes of the ``dict`` class. + + Example of module-based configuration:: + + app.config.from_object('yourapplication.default_config') + from yourapplication import default_config + app.config.from_object(default_config) + + Nothing is done to the object before loading. If the object is a + class and has ``@property`` attributes, it needs to be + instantiated before being passed to this method. + + You should not use this function to load the actual configuration but + rather configuration defaults. The actual config should be loaded + with :meth:`from_pyfile` and ideally from a location not within the + package because the package might be installed system wide. + + See :ref:`config-dev-prod` for an example of class-based configuration + using :meth:`from_object`. + + :param obj: an import name or object + """ + if isinstance(obj, string_types): + obj = import_string(obj) + for key in dir(obj): + if key.isupper(): + self[key] = getattr(obj, key) + + def from_json(self, filename, silent=False): + """Updates the values in the config from a JSON file. This function + behaves as if the JSON object was a dictionary and passed to the + :meth:`from_mapping` function. + + :param filename: the filename of the JSON file. This can either be an + absolute filename or a filename relative to the + root path. + :param silent: set to ``True`` if you want silent failure for missing + files. + + .. versionadded:: 0.11 + """ + filename = os.path.join(self.root_path, filename) + + try: + with open(filename) as json_file: + obj = json.loads(json_file.read()) + except IOError as e: + if silent and e.errno in (errno.ENOENT, errno.EISDIR): + return False + e.strerror = "Unable to load configuration file (%s)" % e.strerror + raise + return self.from_mapping(obj) + + def from_mapping(self, *mapping, **kwargs): + """Updates the config like :meth:`update` ignoring items with non-upper + keys. + + .. versionadded:: 0.11 + """ + mappings = [] + if len(mapping) == 1: + if hasattr(mapping[0], "items"): + mappings.append(mapping[0].items()) + else: + mappings.append(mapping[0]) + elif len(mapping) > 1: + raise TypeError( + "expected at most 1 positional argument, got %d" % len(mapping) + ) + mappings.append(kwargs.items()) + for mapping in mappings: + for (key, value) in mapping: + if key.isupper(): + self[key] = value + return True + + def get_namespace(self, namespace, lowercase=True, trim_namespace=True): + """Returns a dictionary containing a subset of configuration options + that match the specified namespace/prefix. Example usage:: + + app.config['IMAGE_STORE_TYPE'] = 'fs' + app.config['IMAGE_STORE_PATH'] = '/var/app/images' + app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com' + image_store_config = app.config.get_namespace('IMAGE_STORE_') + + The resulting dictionary `image_store_config` would look like:: + + { + 'type': 'fs', + 'path': '/var/app/images', + 'base_url': 'http://img.website.com' + } + + This is often useful when configuration options map directly to + keyword arguments in functions or class constructors. + + :param namespace: a configuration namespace + :param lowercase: a flag indicating if the keys of the resulting + dictionary should be lowercase + :param trim_namespace: a flag indicating if the keys of the resulting + dictionary should not include the namespace + + .. versionadded:: 0.11 + """ + rv = {} + for k, v in iteritems(self): + if not k.startswith(namespace): + continue + if trim_namespace: + key = k[len(namespace) :] + else: + key = k + if lowercase: + key = key.lower() + rv[key] = v + return rv + + def __repr__(self): + return "<%s %s>" % (self.__class__.__name__, dict.__repr__(self)) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/ctx.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/ctx.py new file mode 100644 index 00000000..172f6a01 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/ctx.py @@ -0,0 +1,475 @@ +# -*- coding: utf-8 -*- +""" + flask.ctx + ~~~~~~~~~ + + Implements the objects required to keep the context. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import sys +from functools import update_wrapper + +from werkzeug.exceptions import HTTPException + +from ._compat import BROKEN_PYPY_CTXMGR_EXIT +from ._compat import reraise +from .globals import _app_ctx_stack +from .globals import _request_ctx_stack +from .signals import appcontext_popped +from .signals import appcontext_pushed + + +# a singleton sentinel value for parameter defaults +_sentinel = object() + + +class _AppCtxGlobals(object): + """A plain object. Used as a namespace for storing data during an + application context. + + Creating an app context automatically creates this object, which is + made available as the :data:`g` proxy. + + .. describe:: 'key' in g + + Check whether an attribute is present. + + .. versionadded:: 0.10 + + .. describe:: iter(g) + + Return an iterator over the attribute names. + + .. versionadded:: 0.10 + """ + + def get(self, name, default=None): + """Get an attribute by name, or a default value. Like + :meth:`dict.get`. + + :param name: Name of attribute to get. + :param default: Value to return if the attribute is not present. + + .. versionadded:: 0.10 + """ + return self.__dict__.get(name, default) + + def pop(self, name, default=_sentinel): + """Get and remove an attribute by name. Like :meth:`dict.pop`. + + :param name: Name of attribute to pop. + :param default: Value to return if the attribute is not present, + instead of raise a ``KeyError``. + + .. versionadded:: 0.11 + """ + if default is _sentinel: + return self.__dict__.pop(name) + else: + return self.__dict__.pop(name, default) + + def setdefault(self, name, default=None): + """Get the value of an attribute if it is present, otherwise + set and return a default value. Like :meth:`dict.setdefault`. + + :param name: Name of attribute to get. + :param: default: Value to set and return if the attribute is not + present. + + .. versionadded:: 0.11 + """ + return self.__dict__.setdefault(name, default) + + def __contains__(self, item): + return item in self.__dict__ + + def __iter__(self): + return iter(self.__dict__) + + def __repr__(self): + top = _app_ctx_stack.top + if top is not None: + return "" % top.app.name + return object.__repr__(self) + + +def after_this_request(f): + """Executes a function after this request. This is useful to modify + response objects. The function is passed the response object and has + to return the same or a new one. + + Example:: + + @app.route('/') + def index(): + @after_this_request + def add_header(response): + response.headers['X-Foo'] = 'Parachute' + return response + return 'Hello World!' + + This is more useful if a function other than the view function wants to + modify a response. For instance think of a decorator that wants to add + some headers without converting the return value into a response object. + + .. versionadded:: 0.9 + """ + _request_ctx_stack.top._after_request_functions.append(f) + return f + + +def copy_current_request_context(f): + """A helper function that decorates a function to retain the current + request context. This is useful when working with greenlets. The moment + the function is decorated a copy of the request context is created and + then pushed when the function is called. The current session is also + included in the copied request context. + + Example:: + + import gevent + from flask import copy_current_request_context + + @app.route('/') + def index(): + @copy_current_request_context + def do_some_work(): + # do some work here, it can access flask.request or + # flask.session like you would otherwise in the view function. + ... + gevent.spawn(do_some_work) + return 'Regular response' + + .. versionadded:: 0.10 + """ + top = _request_ctx_stack.top + if top is None: + raise RuntimeError( + "This decorator can only be used at local scopes " + "when a request context is on the stack. For instance within " + "view functions." + ) + reqctx = top.copy() + + def wrapper(*args, **kwargs): + with reqctx: + return f(*args, **kwargs) + + return update_wrapper(wrapper, f) + + +def has_request_context(): + """If you have code that wants to test if a request context is there or + not this function can be used. For instance, you may want to take advantage + of request information if the request object is available, but fail + silently if it is unavailable. + + :: + + class User(db.Model): + + def __init__(self, username, remote_addr=None): + self.username = username + if remote_addr is None and has_request_context(): + remote_addr = request.remote_addr + self.remote_addr = remote_addr + + Alternatively you can also just test any of the context bound objects + (such as :class:`request` or :class:`g`) for truthness:: + + class User(db.Model): + + def __init__(self, username, remote_addr=None): + self.username = username + if remote_addr is None and request: + remote_addr = request.remote_addr + self.remote_addr = remote_addr + + .. versionadded:: 0.7 + """ + return _request_ctx_stack.top is not None + + +def has_app_context(): + """Works like :func:`has_request_context` but for the application + context. You can also just do a boolean check on the + :data:`current_app` object instead. + + .. versionadded:: 0.9 + """ + return _app_ctx_stack.top is not None + + +class AppContext(object): + """The application context binds an application object implicitly + to the current thread or greenlet, similar to how the + :class:`RequestContext` binds request information. The application + context is also implicitly created if a request context is created + but the application is not on top of the individual application + context. + """ + + def __init__(self, app): + self.app = app + self.url_adapter = app.create_url_adapter(None) + self.g = app.app_ctx_globals_class() + + # Like request context, app contexts can be pushed multiple times + # but there a basic "refcount" is enough to track them. + self._refcnt = 0 + + def push(self): + """Binds the app context to the current context.""" + self._refcnt += 1 + if hasattr(sys, "exc_clear"): + sys.exc_clear() + _app_ctx_stack.push(self) + appcontext_pushed.send(self.app) + + def pop(self, exc=_sentinel): + """Pops the app context.""" + try: + self._refcnt -= 1 + if self._refcnt <= 0: + if exc is _sentinel: + exc = sys.exc_info()[1] + self.app.do_teardown_appcontext(exc) + finally: + rv = _app_ctx_stack.pop() + assert rv is self, "Popped wrong app context. (%r instead of %r)" % (rv, self) + appcontext_popped.send(self.app) + + def __enter__(self): + self.push() + return self + + def __exit__(self, exc_type, exc_value, tb): + self.pop(exc_value) + + if BROKEN_PYPY_CTXMGR_EXIT and exc_type is not None: + reraise(exc_type, exc_value, tb) + + +class RequestContext(object): + """The request context contains all request relevant information. It is + created at the beginning of the request and pushed to the + `_request_ctx_stack` and removed at the end of it. It will create the + URL adapter and request object for the WSGI environment provided. + + Do not attempt to use this class directly, instead use + :meth:`~flask.Flask.test_request_context` and + :meth:`~flask.Flask.request_context` to create this object. + + When the request context is popped, it will evaluate all the + functions registered on the application for teardown execution + (:meth:`~flask.Flask.teardown_request`). + + The request context is automatically popped at the end of the request + for you. In debug mode the request context is kept around if + exceptions happen so that interactive debuggers have a chance to + introspect the data. With 0.4 this can also be forced for requests + that did not fail and outside of ``DEBUG`` mode. By setting + ``'flask._preserve_context'`` to ``True`` on the WSGI environment the + context will not pop itself at the end of the request. This is used by + the :meth:`~flask.Flask.test_client` for example to implement the + deferred cleanup functionality. + + You might find this helpful for unittests where you need the + information from the context local around for a little longer. Make + sure to properly :meth:`~werkzeug.LocalStack.pop` the stack yourself in + that situation, otherwise your unittests will leak memory. + """ + + def __init__(self, app, environ, request=None, session=None): + self.app = app + if request is None: + request = app.request_class(environ) + self.request = request + self.url_adapter = None + try: + self.url_adapter = app.create_url_adapter(self.request) + except HTTPException as e: + self.request.routing_exception = e + self.flashes = None + self.session = session + + # Request contexts can be pushed multiple times and interleaved with + # other request contexts. Now only if the last level is popped we + # get rid of them. Additionally if an application context is missing + # one is created implicitly so for each level we add this information + self._implicit_app_ctx_stack = [] + + # indicator if the context was preserved. Next time another context + # is pushed the preserved context is popped. + self.preserved = False + + # remembers the exception for pop if there is one in case the context + # preservation kicks in. + self._preserved_exc = None + + # Functions that should be executed after the request on the response + # object. These will be called before the regular "after_request" + # functions. + self._after_request_functions = [] + + @property + def g(self): + return _app_ctx_stack.top.g + + @g.setter + def g(self, value): + _app_ctx_stack.top.g = value + + def copy(self): + """Creates a copy of this request context with the same request object. + This can be used to move a request context to a different greenlet. + Because the actual request object is the same this cannot be used to + move a request context to a different thread unless access to the + request object is locked. + + .. versionadded:: 0.10 + + .. versionchanged:: 1.1 + The current session object is used instead of reloading the original + data. This prevents `flask.session` pointing to an out-of-date object. + """ + return self.__class__( + self.app, + environ=self.request.environ, + request=self.request, + session=self.session, + ) + + def match_request(self): + """Can be overridden by a subclass to hook into the matching + of the request. + """ + try: + result = self.url_adapter.match(return_rule=True) + self.request.url_rule, self.request.view_args = result + except HTTPException as e: + self.request.routing_exception = e + + def push(self): + """Binds the request context to the current context.""" + # If an exception occurs in debug mode or if context preservation is + # activated under exception situations exactly one context stays + # on the stack. The rationale is that you want to access that + # information under debug situations. However if someone forgets to + # pop that context again we want to make sure that on the next push + # it's invalidated, otherwise we run at risk that something leaks + # memory. This is usually only a problem in test suite since this + # functionality is not active in production environments. + top = _request_ctx_stack.top + if top is not None and top.preserved: + top.pop(top._preserved_exc) + + # Before we push the request context we have to ensure that there + # is an application context. + app_ctx = _app_ctx_stack.top + if app_ctx is None or app_ctx.app != self.app: + app_ctx = self.app.app_context() + app_ctx.push() + self._implicit_app_ctx_stack.append(app_ctx) + else: + self._implicit_app_ctx_stack.append(None) + + if hasattr(sys, "exc_clear"): + sys.exc_clear() + + _request_ctx_stack.push(self) + + # Open the session at the moment that the request context is available. + # This allows a custom open_session method to use the request context. + # Only open a new session if this is the first time the request was + # pushed, otherwise stream_with_context loses the session. + if self.session is None: + session_interface = self.app.session_interface + self.session = session_interface.open_session(self.app, self.request) + + if self.session is None: + self.session = session_interface.make_null_session(self.app) + + if self.url_adapter is not None: + self.match_request() + + def pop(self, exc=_sentinel): + """Pops the request context and unbinds it by doing that. This will + also trigger the execution of functions registered by the + :meth:`~flask.Flask.teardown_request` decorator. + + .. versionchanged:: 0.9 + Added the `exc` argument. + """ + app_ctx = self._implicit_app_ctx_stack.pop() + + try: + clear_request = False + if not self._implicit_app_ctx_stack: + self.preserved = False + self._preserved_exc = None + if exc is _sentinel: + exc = sys.exc_info()[1] + self.app.do_teardown_request(exc) + + # If this interpreter supports clearing the exception information + # we do that now. This will only go into effect on Python 2.x, + # on 3.x it disappears automatically at the end of the exception + # stack. + if hasattr(sys, "exc_clear"): + sys.exc_clear() + + request_close = getattr(self.request, "close", None) + if request_close is not None: + request_close() + clear_request = True + finally: + rv = _request_ctx_stack.pop() + + # get rid of circular dependencies at the end of the request + # so that we don't require the GC to be active. + if clear_request: + rv.request.environ["werkzeug.request"] = None + + # Get rid of the app as well if necessary. + if app_ctx is not None: + app_ctx.pop(exc) + + assert rv is self, "Popped wrong request context. (%r instead of %r)" % ( + rv, + self, + ) + + def auto_pop(self, exc): + if self.request.environ.get("flask._preserve_context") or ( + exc is not None and self.app.preserve_context_on_exception + ): + self.preserved = True + self._preserved_exc = exc + else: + self.pop(exc) + + def __enter__(self): + self.push() + return self + + def __exit__(self, exc_type, exc_value, tb): + # do not pop the request stack if we are in debug mode and an + # exception happened. This will allow the debugger to still + # access the request object in the interactive shell. Furthermore + # the context can be force kept alive for the test client. + # See flask.testing for how this works. + self.auto_pop(exc_value) + + if BROKEN_PYPY_CTXMGR_EXIT and exc_type is not None: + reraise(exc_type, exc_value, tb) + + def __repr__(self): + return "<%s '%s' [%s] of %s>" % ( + self.__class__.__name__, + self.request.url, + self.request.method, + self.app.name, + ) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/debughelpers.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/debughelpers.py new file mode 100644 index 00000000..e475bd1a --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/debughelpers.py @@ -0,0 +1,183 @@ +# -*- coding: utf-8 -*- +""" + flask.debughelpers + ~~~~~~~~~~~~~~~~~~ + + Various helpers to make the development experience better. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import os +from warnings import warn + +from ._compat import implements_to_string +from ._compat import text_type +from .app import Flask +from .blueprints import Blueprint +from .globals import _request_ctx_stack + + +class UnexpectedUnicodeError(AssertionError, UnicodeError): + """Raised in places where we want some better error reporting for + unexpected unicode or binary data. + """ + + +@implements_to_string +class DebugFilesKeyError(KeyError, AssertionError): + """Raised from request.files during debugging. The idea is that it can + provide a better error message than just a generic KeyError/BadRequest. + """ + + def __init__(self, request, key): + form_matches = request.form.getlist(key) + buf = [ + 'You tried to access the file "%s" in the request.files ' + "dictionary but it does not exist. The mimetype for the request " + 'is "%s" instead of "multipart/form-data" which means that no ' + "file contents were transmitted. To fix this error you should " + 'provide enctype="multipart/form-data" in your form.' + % (key, request.mimetype) + ] + if form_matches: + buf.append( + "\n\nThe browser instead transmitted some file names. " + "This was submitted: %s" % ", ".join('"%s"' % x for x in form_matches) + ) + self.msg = "".join(buf) + + def __str__(self): + return self.msg + + +class FormDataRoutingRedirect(AssertionError): + """This exception is raised by Flask in debug mode if it detects a + redirect caused by the routing system when the request method is not + GET, HEAD or OPTIONS. Reasoning: form data will be dropped. + """ + + def __init__(self, request): + exc = request.routing_exception + buf = [ + "A request was sent to this URL (%s) but a redirect was " + 'issued automatically by the routing system to "%s".' + % (request.url, exc.new_url) + ] + + # In case just a slash was appended we can be extra helpful + if request.base_url + "/" == exc.new_url.split("?")[0]: + buf.append( + " The URL was defined with a trailing slash so " + "Flask will automatically redirect to the URL " + "with the trailing slash if it was accessed " + "without one." + ) + + buf.append( + " Make sure to directly send your %s-request to this URL " + "since we can't make browsers or HTTP clients redirect " + "with form data reliably or without user interaction." % request.method + ) + buf.append("\n\nNote: this exception is only raised in debug mode") + AssertionError.__init__(self, "".join(buf).encode("utf-8")) + + +def attach_enctype_error_multidict(request): + """Since Flask 0.8 we're monkeypatching the files object in case a + request is detected that does not use multipart form data but the files + object is accessed. + """ + oldcls = request.files.__class__ + + class newcls(oldcls): + def __getitem__(self, key): + try: + return oldcls.__getitem__(self, key) + except KeyError: + if key not in request.form: + raise + raise DebugFilesKeyError(request, key) + + newcls.__name__ = oldcls.__name__ + newcls.__module__ = oldcls.__module__ + request.files.__class__ = newcls + + +def _dump_loader_info(loader): + yield "class: %s.%s" % (type(loader).__module__, type(loader).__name__) + for key, value in sorted(loader.__dict__.items()): + if key.startswith("_"): + continue + if isinstance(value, (tuple, list)): + if not all(isinstance(x, (str, text_type)) for x in value): + continue + yield "%s:" % key + for item in value: + yield " - %s" % item + continue + elif not isinstance(value, (str, text_type, int, float, bool)): + continue + yield "%s: %r" % (key, value) + + +def explain_template_loading_attempts(app, template, attempts): + """This should help developers understand what failed""" + info = ['Locating template "%s":' % template] + total_found = 0 + blueprint = None + reqctx = _request_ctx_stack.top + if reqctx is not None and reqctx.request.blueprint is not None: + blueprint = reqctx.request.blueprint + + for idx, (loader, srcobj, triple) in enumerate(attempts): + if isinstance(srcobj, Flask): + src_info = 'application "%s"' % srcobj.import_name + elif isinstance(srcobj, Blueprint): + src_info = 'blueprint "%s" (%s)' % (srcobj.name, srcobj.import_name) + else: + src_info = repr(srcobj) + + info.append("% 5d: trying loader of %s" % (idx + 1, src_info)) + + for line in _dump_loader_info(loader): + info.append(" %s" % line) + + if triple is None: + detail = "no match" + else: + detail = "found (%r)" % (triple[1] or "") + total_found += 1 + info.append(" -> %s" % detail) + + seems_fishy = False + if total_found == 0: + info.append("Error: the template could not be found.") + seems_fishy = True + elif total_found > 1: + info.append("Warning: multiple loaders returned a match for the template.") + seems_fishy = True + + if blueprint is not None and seems_fishy: + info.append( + " The template was looked up from an endpoint that " + 'belongs to the blueprint "%s".' % blueprint + ) + info.append(" Maybe you did not place a template in the right folder?") + info.append(" See http://flask.pocoo.org/docs/blueprints/#templates") + + app.logger.info("\n".join(info)) + + +def explain_ignored_app_run(): + if os.environ.get("WERKZEUG_RUN_MAIN") != "true": + warn( + Warning( + "Silently ignoring app.run() because the " + "application is run from the flask command line " + "executable. Consider putting app.run() behind an " + 'if __name__ == "__main__" guard to silence this ' + "warning." + ), + stacklevel=3, + ) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/globals.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/globals.py new file mode 100644 index 00000000..6d32dcfd --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/globals.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +""" + flask.globals + ~~~~~~~~~~~~~ + + Defines all the global objects that are proxies to the current + active context. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +from functools import partial + +from werkzeug.local import LocalProxy +from werkzeug.local import LocalStack + + +_request_ctx_err_msg = """\ +Working outside of request context. + +This typically means that you attempted to use functionality that needed +an active HTTP request. Consult the documentation on testing for +information about how to avoid this problem.\ +""" +_app_ctx_err_msg = """\ +Working outside of application context. + +This typically means that you attempted to use functionality that needed +to interface with the current application object in some way. To solve +this, set up an application context with app.app_context(). See the +documentation for more information.\ +""" + + +def _lookup_req_object(name): + top = _request_ctx_stack.top + if top is None: + raise RuntimeError(_request_ctx_err_msg) + return getattr(top, name) + + +def _lookup_app_object(name): + top = _app_ctx_stack.top + if top is None: + raise RuntimeError(_app_ctx_err_msg) + return getattr(top, name) + + +def _find_app(): + top = _app_ctx_stack.top + if top is None: + raise RuntimeError(_app_ctx_err_msg) + return top.app + + +# context locals +_request_ctx_stack = LocalStack() +_app_ctx_stack = LocalStack() +current_app = LocalProxy(_find_app) +request = LocalProxy(partial(_lookup_req_object, "request")) +session = LocalProxy(partial(_lookup_req_object, "session")) +g = LocalProxy(partial(_lookup_app_object, "g")) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/helpers.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/helpers.py new file mode 100644 index 00000000..3f401a5b --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/helpers.py @@ -0,0 +1,1153 @@ +# -*- coding: utf-8 -*- +""" + flask.helpers + ~~~~~~~~~~~~~ + + Implements various helpers. + + :copyright: 2010 Pallets + :license: BSD-3-Clause +""" +import io +import mimetypes +import os +import pkgutil +import posixpath +import socket +import sys +import unicodedata +from functools import update_wrapper +from threading import RLock +from time import time +from zlib import adler32 + +from jinja2 import FileSystemLoader +from werkzeug.datastructures import Headers +from werkzeug.exceptions import BadRequest +from werkzeug.exceptions import NotFound +from werkzeug.exceptions import RequestedRangeNotSatisfiable +from werkzeug.routing import BuildError +from werkzeug.urls import url_quote +from werkzeug.wsgi import wrap_file + +from ._compat import fspath +from ._compat import PY2 +from ._compat import string_types +from ._compat import text_type +from .globals import _app_ctx_stack +from .globals import _request_ctx_stack +from .globals import current_app +from .globals import request +from .globals import session +from .signals import message_flashed + +# sentinel +_missing = object() + + +# what separators does this operating system provide that are not a slash? +# this is used by the send_from_directory function to ensure that nobody is +# able to access files from outside the filesystem. +_os_alt_seps = list( + sep for sep in [os.path.sep, os.path.altsep] if sep not in (None, "/") +) + + +def get_env(): + """Get the environment the app is running in, indicated by the + :envvar:`FLASK_ENV` environment variable. The default is + ``'production'``. + """ + return os.environ.get("FLASK_ENV") or "production" + + +def get_debug_flag(): + """Get whether debug mode should be enabled for the app, indicated + by the :envvar:`FLASK_DEBUG` environment variable. The default is + ``True`` if :func:`.get_env` returns ``'development'``, or ``False`` + otherwise. + """ + val = os.environ.get("FLASK_DEBUG") + + if not val: + return get_env() == "development" + + return val.lower() not in ("0", "false", "no") + + +def get_load_dotenv(default=True): + """Get whether the user has disabled loading dotenv files by setting + :envvar:`FLASK_SKIP_DOTENV`. The default is ``True``, load the + files. + + :param default: What to return if the env var isn't set. + """ + val = os.environ.get("FLASK_SKIP_DOTENV") + + if not val: + return default + + return val.lower() in ("0", "false", "no") + + +def _endpoint_from_view_func(view_func): + """Internal helper that returns the default endpoint for a given + function. This always is the function name. + """ + assert view_func is not None, "expected view func if endpoint is not provided." + return view_func.__name__ + + +def stream_with_context(generator_or_function): + """Request contexts disappear when the response is started on the server. + This is done for efficiency reasons and to make it less likely to encounter + memory leaks with badly written WSGI middlewares. The downside is that if + you are using streamed responses, the generator cannot access request bound + information any more. + + This function however can help you keep the context around for longer:: + + from flask import stream_with_context, request, Response + + @app.route('/stream') + def streamed_response(): + @stream_with_context + def generate(): + yield 'Hello ' + yield request.args['name'] + yield '!' + return Response(generate()) + + Alternatively it can also be used around a specific generator:: + + from flask import stream_with_context, request, Response + + @app.route('/stream') + def streamed_response(): + def generate(): + yield 'Hello ' + yield request.args['name'] + yield '!' + return Response(stream_with_context(generate())) + + .. versionadded:: 0.9 + """ + try: + gen = iter(generator_or_function) + except TypeError: + + def decorator(*args, **kwargs): + gen = generator_or_function(*args, **kwargs) + return stream_with_context(gen) + + return update_wrapper(decorator, generator_or_function) + + def generator(): + ctx = _request_ctx_stack.top + if ctx is None: + raise RuntimeError( + "Attempted to stream with context but " + "there was no context in the first place to keep around." + ) + with ctx: + # Dummy sentinel. Has to be inside the context block or we're + # not actually keeping the context around. + yield None + + # The try/finally is here so that if someone passes a WSGI level + # iterator in we're still running the cleanup logic. Generators + # don't need that because they are closed on their destruction + # automatically. + try: + for item in gen: + yield item + finally: + if hasattr(gen, "close"): + gen.close() + + # The trick is to start the generator. Then the code execution runs until + # the first dummy None is yielded at which point the context was already + # pushed. This item is discarded. Then when the iteration continues the + # real generator is executed. + wrapped_g = generator() + next(wrapped_g) + return wrapped_g + + +def make_response(*args): + """Sometimes it is necessary to set additional headers in a view. Because + views do not have to return response objects but can return a value that + is converted into a response object by Flask itself, it becomes tricky to + add headers to it. This function can be called instead of using a return + and you will get a response object which you can use to attach headers. + + If view looked like this and you want to add a new header:: + + def index(): + return render_template('index.html', foo=42) + + You can now do something like this:: + + def index(): + response = make_response(render_template('index.html', foo=42)) + response.headers['X-Parachutes'] = 'parachutes are cool' + return response + + This function accepts the very same arguments you can return from a + view function. This for example creates a response with a 404 error + code:: + + response = make_response(render_template('not_found.html'), 404) + + The other use case of this function is to force the return value of a + view function into a response which is helpful with view + decorators:: + + response = make_response(view_function()) + response.headers['X-Parachutes'] = 'parachutes are cool' + + Internally this function does the following things: + + - if no arguments are passed, it creates a new response argument + - if one argument is passed, :meth:`flask.Flask.make_response` + is invoked with it. + - if more than one argument is passed, the arguments are passed + to the :meth:`flask.Flask.make_response` function as tuple. + + .. versionadded:: 0.6 + """ + if not args: + return current_app.response_class() + if len(args) == 1: + args = args[0] + return current_app.make_response(args) + + +def url_for(endpoint, **values): + """Generates a URL to the given endpoint with the method provided. + + Variable arguments that are unknown to the target endpoint are appended + to the generated URL as query arguments. If the value of a query argument + is ``None``, the whole pair is skipped. In case blueprints are active + you can shortcut references to the same blueprint by prefixing the + local endpoint with a dot (``.``). + + This will reference the index function local to the current blueprint:: + + url_for('.index') + + For more information, head over to the :ref:`Quickstart `. + + Configuration values ``APPLICATION_ROOT`` and ``SERVER_NAME`` are only used when + generating URLs outside of a request context. + + To integrate applications, :class:`Flask` has a hook to intercept URL build + errors through :attr:`Flask.url_build_error_handlers`. The `url_for` + function results in a :exc:`~werkzeug.routing.BuildError` when the current + app does not have a URL for the given endpoint and values. When it does, the + :data:`~flask.current_app` calls its :attr:`~Flask.url_build_error_handlers` if + it is not ``None``, which can return a string to use as the result of + `url_for` (instead of `url_for`'s default to raise the + :exc:`~werkzeug.routing.BuildError` exception) or re-raise the exception. + An example:: + + def external_url_handler(error, endpoint, values): + "Looks up an external URL when `url_for` cannot build a URL." + # This is an example of hooking the build_error_handler. + # Here, lookup_url is some utility function you've built + # which looks up the endpoint in some external URL registry. + url = lookup_url(endpoint, **values) + if url is None: + # External lookup did not have a URL. + # Re-raise the BuildError, in context of original traceback. + exc_type, exc_value, tb = sys.exc_info() + if exc_value is error: + raise exc_type, exc_value, tb + else: + raise error + # url_for will use this result, instead of raising BuildError. + return url + + app.url_build_error_handlers.append(external_url_handler) + + Here, `error` is the instance of :exc:`~werkzeug.routing.BuildError`, and + `endpoint` and `values` are the arguments passed into `url_for`. Note + that this is for building URLs outside the current application, and not for + handling 404 NotFound errors. + + .. versionadded:: 0.10 + The `_scheme` parameter was added. + + .. versionadded:: 0.9 + The `_anchor` and `_method` parameters were added. + + .. versionadded:: 0.9 + Calls :meth:`Flask.handle_build_error` on + :exc:`~werkzeug.routing.BuildError`. + + :param endpoint: the endpoint of the URL (name of the function) + :param values: the variable arguments of the URL rule + :param _external: if set to ``True``, an absolute URL is generated. Server + address can be changed via ``SERVER_NAME`` configuration variable which + falls back to the `Host` header, then to the IP and port of the request. + :param _scheme: a string specifying the desired URL scheme. The `_external` + parameter must be set to ``True`` or a :exc:`ValueError` is raised. The default + behavior uses the same scheme as the current request, or + ``PREFERRED_URL_SCHEME`` from the :ref:`app configuration ` if no + request context is available. As of Werkzeug 0.10, this also can be set + to an empty string to build protocol-relative URLs. + :param _anchor: if provided this is added as anchor to the URL. + :param _method: if provided this explicitly specifies an HTTP method. + """ + appctx = _app_ctx_stack.top + reqctx = _request_ctx_stack.top + + if appctx is None: + raise RuntimeError( + "Attempted to generate a URL without the application context being" + " pushed. This has to be executed when application context is" + " available." + ) + + # If request specific information is available we have some extra + # features that support "relative" URLs. + if reqctx is not None: + url_adapter = reqctx.url_adapter + blueprint_name = request.blueprint + + if endpoint[:1] == ".": + if blueprint_name is not None: + endpoint = blueprint_name + endpoint + else: + endpoint = endpoint[1:] + + external = values.pop("_external", False) + + # Otherwise go with the url adapter from the appctx and make + # the URLs external by default. + else: + url_adapter = appctx.url_adapter + + if url_adapter is None: + raise RuntimeError( + "Application was not able to create a URL adapter for request" + " independent URL generation. You might be able to fix this by" + " setting the SERVER_NAME config variable." + ) + + external = values.pop("_external", True) + + anchor = values.pop("_anchor", None) + method = values.pop("_method", None) + scheme = values.pop("_scheme", None) + appctx.app.inject_url_defaults(endpoint, values) + + # This is not the best way to deal with this but currently the + # underlying Werkzeug router does not support overriding the scheme on + # a per build call basis. + old_scheme = None + if scheme is not None: + if not external: + raise ValueError("When specifying _scheme, _external must be True") + old_scheme = url_adapter.url_scheme + url_adapter.url_scheme = scheme + + try: + try: + rv = url_adapter.build( + endpoint, values, method=method, force_external=external + ) + finally: + if old_scheme is not None: + url_adapter.url_scheme = old_scheme + except BuildError as error: + # We need to inject the values again so that the app callback can + # deal with that sort of stuff. + values["_external"] = external + values["_anchor"] = anchor + values["_method"] = method + values["_scheme"] = scheme + return appctx.app.handle_url_build_error(error, endpoint, values) + + if anchor is not None: + rv += "#" + url_quote(anchor) + return rv + + +def get_template_attribute(template_name, attribute): + """Loads a macro (or variable) a template exports. This can be used to + invoke a macro from within Python code. If you for example have a + template named :file:`_cider.html` with the following contents: + + .. sourcecode:: html+jinja + + {% macro hello(name) %}Hello {{ name }}!{% endmacro %} + + You can access this from Python code like this:: + + hello = get_template_attribute('_cider.html', 'hello') + return hello('World') + + .. versionadded:: 0.2 + + :param template_name: the name of the template + :param attribute: the name of the variable of macro to access + """ + return getattr(current_app.jinja_env.get_template(template_name).module, attribute) + + +def flash(message, category="message"): + """Flashes a message to the next request. In order to remove the + flashed message from the session and to display it to the user, + the template has to call :func:`get_flashed_messages`. + + .. versionchanged:: 0.3 + `category` parameter added. + + :param message: the message to be flashed. + :param category: the category for the message. The following values + are recommended: ``'message'`` for any kind of message, + ``'error'`` for errors, ``'info'`` for information + messages and ``'warning'`` for warnings. However any + kind of string can be used as category. + """ + # Original implementation: + # + # session.setdefault('_flashes', []).append((category, message)) + # + # This assumed that changes made to mutable structures in the session are + # always in sync with the session object, which is not true for session + # implementations that use external storage for keeping their keys/values. + flashes = session.get("_flashes", []) + flashes.append((category, message)) + session["_flashes"] = flashes + message_flashed.send( + current_app._get_current_object(), message=message, category=category + ) + + +def get_flashed_messages(with_categories=False, category_filter=()): + """Pulls all flashed messages from the session and returns them. + Further calls in the same request to the function will return + the same messages. By default just the messages are returned, + but when `with_categories` is set to ``True``, the return value will + be a list of tuples in the form ``(category, message)`` instead. + + Filter the flashed messages to one or more categories by providing those + categories in `category_filter`. This allows rendering categories in + separate html blocks. The `with_categories` and `category_filter` + arguments are distinct: + + * `with_categories` controls whether categories are returned with message + text (``True`` gives a tuple, where ``False`` gives just the message text). + * `category_filter` filters the messages down to only those matching the + provided categories. + + See :ref:`message-flashing-pattern` for examples. + + .. versionchanged:: 0.3 + `with_categories` parameter added. + + .. versionchanged:: 0.9 + `category_filter` parameter added. + + :param with_categories: set to ``True`` to also receive categories. + :param category_filter: whitelist of categories to limit return values + """ + flashes = _request_ctx_stack.top.flashes + if flashes is None: + _request_ctx_stack.top.flashes = flashes = ( + session.pop("_flashes") if "_flashes" in session else [] + ) + if category_filter: + flashes = list(filter(lambda f: f[0] in category_filter, flashes)) + if not with_categories: + return [x[1] for x in flashes] + return flashes + + +def send_file( + filename_or_fp, + mimetype=None, + as_attachment=False, + attachment_filename=None, + add_etags=True, + cache_timeout=None, + conditional=False, + last_modified=None, +): + """Sends the contents of a file to the client. This will use the + most efficient method available and configured. By default it will + try to use the WSGI server's file_wrapper support. Alternatively + you can set the application's :attr:`~Flask.use_x_sendfile` attribute + to ``True`` to directly emit an ``X-Sendfile`` header. This however + requires support of the underlying webserver for ``X-Sendfile``. + + By default it will try to guess the mimetype for you, but you can + also explicitly provide one. For extra security you probably want + to send certain files as attachment (HTML for instance). The mimetype + guessing requires a `filename` or an `attachment_filename` to be + provided. + + ETags will also be attached automatically if a `filename` is provided. You + can turn this off by setting `add_etags=False`. + + If `conditional=True` and `filename` is provided, this method will try to + upgrade the response stream to support range requests. This will allow + the request to be answered with partial content response. + + Please never pass filenames to this function from user sources; + you should use :func:`send_from_directory` instead. + + .. versionadded:: 0.2 + + .. versionadded:: 0.5 + The `add_etags`, `cache_timeout` and `conditional` parameters were + added. The default behavior is now to attach etags. + + .. versionchanged:: 0.7 + mimetype guessing and etag support for file objects was + deprecated because it was unreliable. Pass a filename if you are + able to, otherwise attach an etag yourself. This functionality + will be removed in Flask 1.0 + + .. versionchanged:: 0.9 + cache_timeout pulls its default from application config, when None. + + .. versionchanged:: 0.12 + The filename is no longer automatically inferred from file objects. If + you want to use automatic mimetype and etag support, pass a filepath via + `filename_or_fp` or `attachment_filename`. + + .. versionchanged:: 0.12 + The `attachment_filename` is preferred over `filename` for MIME-type + detection. + + .. versionchanged:: 1.0 + UTF-8 filenames, as specified in `RFC 2231`_, are supported. + + .. _RFC 2231: https://tools.ietf.org/html/rfc2231#section-4 + + .. versionchanged:: 1.0.3 + Filenames are encoded with ASCII instead of Latin-1 for broader + compatibility with WSGI servers. + + .. versionchanged:: 1.1 + Filename may be a :class:`~os.PathLike` object. + + .. versionadded:: 1.1 + Partial content supports :class:`~io.BytesIO`. + + :param filename_or_fp: the filename of the file to send. + This is relative to the :attr:`~Flask.root_path` + if a relative path is specified. + Alternatively a file object might be provided in + which case ``X-Sendfile`` might not work and fall + back to the traditional method. Make sure that the + file pointer is positioned at the start of data to + send before calling :func:`send_file`. + :param mimetype: the mimetype of the file if provided. If a file path is + given, auto detection happens as fallback, otherwise an + error will be raised. + :param as_attachment: set to ``True`` if you want to send this file with + a ``Content-Disposition: attachment`` header. + :param attachment_filename: the filename for the attachment if it + differs from the file's filename. + :param add_etags: set to ``False`` to disable attaching of etags. + :param conditional: set to ``True`` to enable conditional responses. + + :param cache_timeout: the timeout in seconds for the headers. When ``None`` + (default), this value is set by + :meth:`~Flask.get_send_file_max_age` of + :data:`~flask.current_app`. + :param last_modified: set the ``Last-Modified`` header to this value, + a :class:`~datetime.datetime` or timestamp. + If a file was passed, this overrides its mtime. + """ + mtime = None + fsize = None + + if hasattr(filename_or_fp, "__fspath__"): + filename_or_fp = fspath(filename_or_fp) + + if isinstance(filename_or_fp, string_types): + filename = filename_or_fp + if not os.path.isabs(filename): + filename = os.path.join(current_app.root_path, filename) + file = None + if attachment_filename is None: + attachment_filename = os.path.basename(filename) + else: + file = filename_or_fp + filename = None + + if mimetype is None: + if attachment_filename is not None: + mimetype = ( + mimetypes.guess_type(attachment_filename)[0] + or "application/octet-stream" + ) + + if mimetype is None: + raise ValueError( + "Unable to infer MIME-type because no filename is available. " + "Please set either `attachment_filename`, pass a filepath to " + "`filename_or_fp` or set your own MIME-type via `mimetype`." + ) + + headers = Headers() + if as_attachment: + if attachment_filename is None: + raise TypeError("filename unavailable, required for sending as attachment") + + if not isinstance(attachment_filename, text_type): + attachment_filename = attachment_filename.decode("utf-8") + + try: + attachment_filename = attachment_filename.encode("ascii") + except UnicodeEncodeError: + filenames = { + "filename": unicodedata.normalize("NFKD", attachment_filename).encode( + "ascii", "ignore" + ), + "filename*": "UTF-8''%s" % url_quote(attachment_filename, safe=b""), + } + else: + filenames = {"filename": attachment_filename} + + headers.add("Content-Disposition", "attachment", **filenames) + + if current_app.use_x_sendfile and filename: + if file is not None: + file.close() + headers["X-Sendfile"] = filename + fsize = os.path.getsize(filename) + headers["Content-Length"] = fsize + data = None + else: + if file is None: + file = open(filename, "rb") + mtime = os.path.getmtime(filename) + fsize = os.path.getsize(filename) + headers["Content-Length"] = fsize + elif isinstance(file, io.BytesIO): + try: + fsize = file.getbuffer().nbytes + except AttributeError: + # Python 2 doesn't have getbuffer + fsize = len(file.getvalue()) + headers["Content-Length"] = fsize + data = wrap_file(request.environ, file) + + rv = current_app.response_class( + data, mimetype=mimetype, headers=headers, direct_passthrough=True + ) + + if last_modified is not None: + rv.last_modified = last_modified + elif mtime is not None: + rv.last_modified = mtime + + rv.cache_control.public = True + if cache_timeout is None: + cache_timeout = current_app.get_send_file_max_age(filename) + if cache_timeout is not None: + rv.cache_control.max_age = cache_timeout + rv.expires = int(time() + cache_timeout) + + if add_etags and filename is not None: + from warnings import warn + + try: + rv.set_etag( + "%s-%s-%s" + % ( + os.path.getmtime(filename), + os.path.getsize(filename), + adler32( + filename.encode("utf-8") + if isinstance(filename, text_type) + else filename + ) + & 0xFFFFFFFF, + ) + ) + except OSError: + warn( + "Access %s failed, maybe it does not exist, so ignore etags in " + "headers" % filename, + stacklevel=2, + ) + + if conditional: + try: + rv = rv.make_conditional(request, accept_ranges=True, complete_length=fsize) + except RequestedRangeNotSatisfiable: + if file is not None: + file.close() + raise + # make sure we don't send x-sendfile for servers that + # ignore the 304 status code for x-sendfile. + if rv.status_code == 304: + rv.headers.pop("x-sendfile", None) + return rv + + +def safe_join(directory, *pathnames): + """Safely join `directory` and zero or more untrusted `pathnames` + components. + + Example usage:: + + @app.route('/wiki/') + def wiki_page(filename): + filename = safe_join(app.config['WIKI_FOLDER'], filename) + with open(filename, 'rb') as fd: + content = fd.read() # Read and process the file content... + + :param directory: the trusted base directory. + :param pathnames: the untrusted pathnames relative to that directory. + :raises: :class:`~werkzeug.exceptions.NotFound` if one or more passed + paths fall out of its boundaries. + """ + + parts = [directory] + + for filename in pathnames: + if filename != "": + filename = posixpath.normpath(filename) + + if ( + any(sep in filename for sep in _os_alt_seps) + or os.path.isabs(filename) + or filename == ".." + or filename.startswith("../") + ): + raise NotFound() + + parts.append(filename) + + return posixpath.join(*parts) + + +def send_from_directory(directory, filename, **options): + """Send a file from a given directory with :func:`send_file`. This + is a secure way to quickly expose static files from an upload folder + or something similar. + + Example usage:: + + @app.route('/uploads/') + def download_file(filename): + return send_from_directory(app.config['UPLOAD_FOLDER'], + filename, as_attachment=True) + + .. admonition:: Sending files and Performance + + It is strongly recommended to activate either ``X-Sendfile`` support in + your webserver or (if no authentication happens) to tell the webserver + to serve files for the given path on its own without calling into the + web application for improved performance. + + .. versionadded:: 0.5 + + :param directory: the directory where all the files are stored. + :param filename: the filename relative to that directory to + download. + :param options: optional keyword arguments that are directly + forwarded to :func:`send_file`. + """ + filename = fspath(filename) + directory = fspath(directory) + filename = safe_join(directory, filename) + if not os.path.isabs(filename): + filename = os.path.join(current_app.root_path, filename) + try: + if not os.path.isfile(filename): + raise NotFound() + except (TypeError, ValueError): + raise BadRequest() + options.setdefault("conditional", True) + return send_file(filename, **options) + + +def get_root_path(import_name): + """Returns the path to a package or cwd if that cannot be found. This + returns the path of a package or the folder that contains a module. + + Not to be confused with the package path returned by :func:`find_package`. + """ + # Module already imported and has a file attribute. Use that first. + mod = sys.modules.get(import_name) + if mod is not None and hasattr(mod, "__file__"): + return os.path.dirname(os.path.abspath(mod.__file__)) + + # Next attempt: check the loader. + loader = pkgutil.get_loader(import_name) + + # Loader does not exist or we're referring to an unloaded main module + # or a main module without path (interactive sessions), go with the + # current working directory. + if loader is None or import_name == "__main__": + return os.getcwd() + + # For .egg, zipimporter does not have get_filename until Python 2.7. + # Some other loaders might exhibit the same behavior. + if hasattr(loader, "get_filename"): + filepath = loader.get_filename(import_name) + else: + # Fall back to imports. + __import__(import_name) + mod = sys.modules[import_name] + filepath = getattr(mod, "__file__", None) + + # If we don't have a filepath it might be because we are a + # namespace package. In this case we pick the root path from the + # first module that is contained in our package. + if filepath is None: + raise RuntimeError( + "No root path can be found for the provided " + 'module "%s". This can happen because the ' + "module came from an import hook that does " + "not provide file name information or because " + "it's a namespace package. In this case " + "the root path needs to be explicitly " + "provided." % import_name + ) + + # filepath is import_name.py for a module, or __init__.py for a package. + return os.path.dirname(os.path.abspath(filepath)) + + +def _matching_loader_thinks_module_is_package(loader, mod_name): + """Given the loader that loaded a module and the module this function + attempts to figure out if the given module is actually a package. + """ + # If the loader can tell us if something is a package, we can + # directly ask the loader. + if hasattr(loader, "is_package"): + return loader.is_package(mod_name) + # importlib's namespace loaders do not have this functionality but + # all the modules it loads are packages, so we can take advantage of + # this information. + elif ( + loader.__class__.__module__ == "_frozen_importlib" + and loader.__class__.__name__ == "NamespaceLoader" + ): + return True + # Otherwise we need to fail with an error that explains what went + # wrong. + raise AttributeError( + ( + "%s.is_package() method is missing but is required by Flask of " + "PEP 302 import hooks. If you do not use import hooks and " + "you encounter this error please file a bug against Flask." + ) + % loader.__class__.__name__ + ) + + +def _find_package_path(root_mod_name): + """Find the path where the module's root exists in""" + if sys.version_info >= (3, 4): + import importlib.util + + try: + spec = importlib.util.find_spec(root_mod_name) + if spec is None: + raise ValueError("not found") + # ImportError: the machinery told us it does not exist + # ValueError: + # - the module name was invalid + # - the module name is __main__ + # - *we* raised `ValueError` due to `spec` being `None` + except (ImportError, ValueError): + pass # handled below + else: + # namespace package + if spec.origin in {"namespace", None}: + return os.path.dirname(next(iter(spec.submodule_search_locations))) + # a package (with __init__.py) + elif spec.submodule_search_locations: + return os.path.dirname(os.path.dirname(spec.origin)) + # just a normal module + else: + return os.path.dirname(spec.origin) + + # we were unable to find the `package_path` using PEP 451 loaders + loader = pkgutil.get_loader(root_mod_name) + if loader is None or root_mod_name == "__main__": + # import name is not found, or interactive/main module + return os.getcwd() + else: + # For .egg, zipimporter does not have get_filename until Python 2.7. + if hasattr(loader, "get_filename"): + filename = loader.get_filename(root_mod_name) + elif hasattr(loader, "archive"): + # zipimporter's loader.archive points to the .egg or .zip + # archive filename is dropped in call to dirname below. + filename = loader.archive + else: + # At least one loader is missing both get_filename and archive: + # Google App Engine's HardenedModulesHook + # + # Fall back to imports. + __import__(root_mod_name) + filename = sys.modules[root_mod_name].__file__ + package_path = os.path.abspath(os.path.dirname(filename)) + + # In case the root module is a package we need to chop of the + # rightmost part. This needs to go through a helper function + # because of python 3.3 namespace packages. + if _matching_loader_thinks_module_is_package(loader, root_mod_name): + package_path = os.path.dirname(package_path) + + return package_path + + +def find_package(import_name): + """Finds a package and returns the prefix (or None if the package is + not installed) as well as the folder that contains the package or + module as a tuple. The package path returned is the module that would + have to be added to the pythonpath in order to make it possible to + import the module. The prefix is the path below which a UNIX like + folder structure exists (lib, share etc.). + """ + root_mod_name, _, _ = import_name.partition(".") + package_path = _find_package_path(root_mod_name) + site_parent, site_folder = os.path.split(package_path) + py_prefix = os.path.abspath(sys.prefix) + if package_path.startswith(py_prefix): + return py_prefix, package_path + elif site_folder.lower() == "site-packages": + parent, folder = os.path.split(site_parent) + # Windows like installations + if folder.lower() == "lib": + base_dir = parent + # UNIX like installations + elif os.path.basename(parent).lower() == "lib": + base_dir = os.path.dirname(parent) + else: + base_dir = site_parent + return base_dir, package_path + return None, package_path + + +class locked_cached_property(object): + """A decorator that converts a function into a lazy property. The + function wrapped is called the first time to retrieve the result + and then that calculated result is used the next time you access + the value. Works like the one in Werkzeug but has a lock for + thread safety. + """ + + def __init__(self, func, name=None, doc=None): + self.__name__ = name or func.__name__ + self.__module__ = func.__module__ + self.__doc__ = doc or func.__doc__ + self.func = func + self.lock = RLock() + + def __get__(self, obj, type=None): + if obj is None: + return self + with self.lock: + value = obj.__dict__.get(self.__name__, _missing) + if value is _missing: + value = self.func(obj) + obj.__dict__[self.__name__] = value + return value + + +class _PackageBoundObject(object): + #: The name of the package or module that this app belongs to. Do not + #: change this once it is set by the constructor. + import_name = None + + #: Location of the template files to be added to the template lookup. + #: ``None`` if templates should not be added. + template_folder = None + + #: Absolute path to the package on the filesystem. Used to look up + #: resources contained in the package. + root_path = None + + def __init__(self, import_name, template_folder=None, root_path=None): + self.import_name = import_name + self.template_folder = template_folder + + if root_path is None: + root_path = get_root_path(self.import_name) + + self.root_path = root_path + self._static_folder = None + self._static_url_path = None + + # circular import + from .cli import AppGroup + + #: The Click command group for registration of CLI commands + #: on the application and associated blueprints. These commands + #: are accessible via the :command:`flask` command once the + #: application has been discovered and blueprints registered. + self.cli = AppGroup() + + @property + def static_folder(self): + """The absolute path to the configured static folder.""" + if self._static_folder is not None: + return os.path.join(self.root_path, self._static_folder) + + @static_folder.setter + def static_folder(self, value): + self._static_folder = value + + @property + def static_url_path(self): + """The URL prefix that the static route will be accessible from. + + If it was not configured during init, it is derived from + :attr:`static_folder`. + """ + if self._static_url_path is not None: + return self._static_url_path + + if self.static_folder is not None: + basename = os.path.basename(self.static_folder) + return ("/" + basename).rstrip("/") + + @static_url_path.setter + def static_url_path(self, value): + if value is not None: + value = value.rstrip("/") + + self._static_url_path = value + + @property + def has_static_folder(self): + """This is ``True`` if the package bound object's container has a + folder for static files. + + .. versionadded:: 0.5 + """ + return self.static_folder is not None + + @locked_cached_property + def jinja_loader(self): + """The Jinja loader for this package bound object. + + .. versionadded:: 0.5 + """ + if self.template_folder is not None: + return FileSystemLoader(os.path.join(self.root_path, self.template_folder)) + + def get_send_file_max_age(self, filename): + """Provides default cache_timeout for the :func:`send_file` functions. + + By default, this function returns ``SEND_FILE_MAX_AGE_DEFAULT`` from + the configuration of :data:`~flask.current_app`. + + Static file functions such as :func:`send_from_directory` use this + function, and :func:`send_file` calls this function on + :data:`~flask.current_app` when the given cache_timeout is ``None``. If a + cache_timeout is given in :func:`send_file`, that timeout is used; + otherwise, this method is called. + + This allows subclasses to change the behavior when sending files based + on the filename. For example, to set the cache timeout for .js files + to 60 seconds:: + + class MyFlask(flask.Flask): + def get_send_file_max_age(self, name): + if name.lower().endswith('.js'): + return 60 + return flask.Flask.get_send_file_max_age(self, name) + + .. versionadded:: 0.9 + """ + return total_seconds(current_app.send_file_max_age_default) + + def send_static_file(self, filename): + """Function used internally to send static files from the static + folder to the browser. + + .. versionadded:: 0.5 + """ + if not self.has_static_folder: + raise RuntimeError("No static folder for this object") + # Ensure get_send_file_max_age is called in all cases. + # Here, we ensure get_send_file_max_age is called for Blueprints. + cache_timeout = self.get_send_file_max_age(filename) + return send_from_directory( + self.static_folder, filename, cache_timeout=cache_timeout + ) + + def open_resource(self, resource, mode="rb"): + """Opens a resource from the application's resource folder. To see + how this works, consider the following folder structure:: + + /myapplication.py + /schema.sql + /static + /style.css + /templates + /layout.html + /index.html + + If you want to open the :file:`schema.sql` file you would do the + following:: + + with app.open_resource('schema.sql') as f: + contents = f.read() + do_something_with(contents) + + :param resource: the name of the resource. To access resources within + subfolders use forward slashes as separator. + :param mode: Open file in this mode. Only reading is supported, + valid values are "r" (or "rt") and "rb". + """ + if mode not in {"r", "rt", "rb"}: + raise ValueError("Resources can only be opened for reading") + + return open(os.path.join(self.root_path, resource), mode) + + +def total_seconds(td): + """Returns the total seconds from a timedelta object. + + :param timedelta td: the timedelta to be converted in seconds + + :returns: number of seconds + :rtype: int + """ + return td.days * 60 * 60 * 24 + td.seconds + + +def is_ip(value): + """Determine if the given string is an IP address. + + Python 2 on Windows doesn't provide ``inet_pton``, so this only + checks IPv4 addresses in that environment. + + :param value: value to check + :type value: str + + :return: True if string is an IP address + :rtype: bool + """ + if PY2 and os.name == "nt": + try: + socket.inet_aton(value) + return True + except socket.error: + return False + + for family in (socket.AF_INET, socket.AF_INET6): + try: + socket.inet_pton(family, value) + except socket.error: + pass + else: + return True + + return False diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/json/__init__.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/json/__init__.py new file mode 100644 index 00000000..a141068b --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/flask/json/__init__.py @@ -0,0 +1,376 @@ +# -*- coding: utf-8 -*- +""" +flask.json +~~~~~~~~~~ + +:copyright: 2010 Pallets +:license: BSD-3-Clause +""" +import codecs +import io +import uuid +from datetime import date +from datetime import datetime + +from itsdangerous import json as _json +from jinja2 import Markup +from werkzeug.http import http_date + +from .._compat import PY2 +from .._compat import text_type +from ..globals import current_app +from ..globals import request + +try: + import dataclasses +except ImportError: + dataclasses = None + +# Figure out if simplejson escapes slashes. This behavior was changed +# from one version to another without reason. +_slash_escape = "\\/" not in _json.dumps("/") + + +__all__ = [ + "dump", + "dumps", + "load", + "loads", + "htmlsafe_dump", + "htmlsafe_dumps", + "JSONDecoder", + "JSONEncoder", + "jsonify", +] + + +def _wrap_reader_for_text(fp, encoding): + if isinstance(fp.read(0), bytes): + fp = io.TextIOWrapper(io.BufferedReader(fp), encoding) + return fp + + +def _wrap_writer_for_text(fp, encoding): + try: + fp.write("") + except TypeError: + fp = io.TextIOWrapper(fp, encoding) + return fp + + +class JSONEncoder(_json.JSONEncoder): + """The default Flask JSON encoder. This one extends the default + encoder by also supporting ``datetime``, ``UUID``, ``dataclasses``, + and ``Markup`` objects. + + ``datetime`` objects are serialized as RFC 822 datetime strings. + This is the same as the HTTP date format. + + In order to support more data types, override the :meth:`default` + method. + """ + + def default(self, o): + """Implement this method in a subclass such that it returns a + serializable object for ``o``, or calls the base implementation (to + raise a :exc:`TypeError`). + + For example, to support arbitrary iterators, you could implement + default like this:: + + def default(self, o): + try: + iterable = iter(o) + except TypeError: + pass + else: + return list(iterable) + return JSONEncoder.default(self, o) + """ + if isinstance(o, datetime): + return http_date(o.utctimetuple()) + if isinstance(o, date): + return http_date(o.timetuple()) + if isinstance(o, uuid.UUID): + return str(o) + if dataclasses and dataclasses.is_dataclass(o): + return dataclasses.asdict(o) + if hasattr(o, "__html__"): + return text_type(o.__html__()) + return _json.JSONEncoder.default(self, o) + + +class JSONDecoder(_json.JSONDecoder): + """The default JSON decoder. This one does not change the behavior from + the default simplejson decoder. Consult the :mod:`json` documentation + for more information. This decoder is not only used for the load + functions of this module but also :attr:`~flask.Request`. + """ + + +def _dump_arg_defaults(kwargs, app=None): + """Inject default arguments for dump functions.""" + if app is None: + app = current_app + + if app: + bp = app.blueprints.get(request.blueprint) if request else None + kwargs.setdefault( + "cls", bp.json_encoder if bp and bp.json_encoder else app.json_encoder + ) + + if not app.config["JSON_AS_ASCII"]: + kwargs.setdefault("ensure_ascii", False) + + kwargs.setdefault("sort_keys", app.config["JSON_SORT_KEYS"]) + else: + kwargs.setdefault("sort_keys", True) + kwargs.setdefault("cls", JSONEncoder) + + +def _load_arg_defaults(kwargs, app=None): + """Inject default arguments for load functions.""" + if app is None: + app = current_app + + if app: + bp = app.blueprints.get(request.blueprint) if request else None + kwargs.setdefault( + "cls", bp.json_decoder if bp and bp.json_decoder else app.json_decoder + ) + else: + kwargs.setdefault("cls", JSONDecoder) + + +def detect_encoding(data): + """Detect which UTF codec was used to encode the given bytes. + + The latest JSON standard (:rfc:`8259`) suggests that only UTF-8 is + accepted. Older documents allowed 8, 16, or 32. 16 and 32 can be big + or little endian. Some editors or libraries may prepend a BOM. + + :param data: Bytes in unknown UTF encoding. + :return: UTF encoding name + """ + head = data[:4] + + if head[:3] == codecs.BOM_UTF8: + return "utf-8-sig" + + if b"\x00" not in head: + return "utf-8" + + if head in (codecs.BOM_UTF32_BE, codecs.BOM_UTF32_LE): + return "utf-32" + + if head[:2] in (codecs.BOM_UTF16_BE, codecs.BOM_UTF16_LE): + return "utf-16" + + if len(head) == 4: + if head[:3] == b"\x00\x00\x00": + return "utf-32-be" + + if head[::2] == b"\x00\x00": + return "utf-16-be" + + if head[1:] == b"\x00\x00\x00": + return "utf-32-le" + + if head[1::2] == b"\x00\x00": + return "utf-16-le" + + if len(head) == 2: + return "utf-16-be" if head.startswith(b"\x00") else "utf-16-le" + + return "utf-8" + + +def dumps(obj, app=None, **kwargs): + """Serialize ``obj`` to a JSON-formatted string. If there is an + app context pushed, use the current app's configured encoder + (:attr:`~flask.Flask.json_encoder`), or fall back to the default + :class:`JSONEncoder`. + + Takes the same arguments as the built-in :func:`json.dumps`, and + does some extra configuration based on the application. If the + simplejson package is installed, it is preferred. + + :param obj: Object to serialize to JSON. + :param app: App instance to use to configure the JSON encoder. + Uses ``current_app`` if not given, and falls back to the default + encoder when not in an app context. + :param kwargs: Extra arguments passed to :func:`json.dumps`. + + .. versionchanged:: 1.0.3 + + ``app`` can be passed directly, rather than requiring an app + context for configuration. + """ + _dump_arg_defaults(kwargs, app=app) + encoding = kwargs.pop("encoding", None) + rv = _json.dumps(obj, **kwargs) + if encoding is not None and isinstance(rv, text_type): + rv = rv.encode(encoding) + return rv + + +def dump(obj, fp, app=None, **kwargs): + """Like :func:`dumps` but writes into a file object.""" + _dump_arg_defaults(kwargs, app=app) + encoding = kwargs.pop("encoding", None) + if encoding is not None: + fp = _wrap_writer_for_text(fp, encoding) + _json.dump(obj, fp, **kwargs) + + +def loads(s, app=None, **kwargs): + """Deserialize an object from a JSON-formatted string ``s``. If + there is an app context pushed, use the current app's configured + decoder (:attr:`~flask.Flask.json_decoder`), or fall back to the + default :class:`JSONDecoder`. + + Takes the same arguments as the built-in :func:`json.loads`, and + does some extra configuration based on the application. If the + simplejson package is installed, it is preferred. + + :param s: JSON string to deserialize. + :param app: App instance to use to configure the JSON decoder. + Uses ``current_app`` if not given, and falls back to the default + encoder when not in an app context. + :param kwargs: Extra arguments passed to :func:`json.dumps`. + + .. versionchanged:: 1.0.3 + + ``app`` can be passed directly, rather than requiring an app + context for configuration. + """ + _load_arg_defaults(kwargs, app=app) + if isinstance(s, bytes): + encoding = kwargs.pop("encoding", None) + if encoding is None: + encoding = detect_encoding(s) + s = s.decode(encoding) + return _json.loads(s, **kwargs) + + +def load(fp, app=None, **kwargs): + """Like :func:`loads` but reads from a file object.""" + _load_arg_defaults(kwargs, app=app) + if not PY2: + fp = _wrap_reader_for_text(fp, kwargs.pop("encoding", None) or "utf-8") + return _json.load(fp, **kwargs) + + +def htmlsafe_dumps(obj, **kwargs): + """Works exactly like :func:`dumps` but is safe for use in `` + + + + +

    + +
    +
    +

    Console Locked

    +

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

    +

    PIN: + + +

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

    %(exception_type)s

    +
    +

    %(exception)s

    +
    +

    Traceback (most recent call last)

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

    Interactive Console

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

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

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

    %s

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

    {}: {}

    ".format( + exception.__name__, escape(exception.__str__(self)) + ) + + return out + + newcls.__module__ = sys._getframe(1).f_globals.get("__name__") + newcls.__name__ = name or cls.__name__ + exception.__name__ + return newcls + + @property + def name(self): + """The status name.""" + return HTTP_STATUS_CODES.get(self.code, "Unknown Error") + + def get_description(self, environ=None): + """Get the description.""" + return u"

    %s

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

    %(name)s

    \n" + u"%(description)s\n" + ) + % { + "code": self.code, + "name": escape(self.name), + "description": self.get_description(environ), + } + ) + + def get_headers(self, environ=None): + """Get a list of headers.""" + return [("Content-Type", "text/html")] + + def get_response(self, environ=None): + """Get a response object. If one was passed to the exception + it's returned directly. + + :param environ: the optional environ for the request. This + can be used to modify the response depending + on how the request looked like. + :return: a :class:`Response` object or a subclass thereof. + """ + if self.response is not None: + return self.response + if environ is not None: + environ = _get_environ(environ) + headers = self.get_headers(environ) + return Response(self.get_body(environ), self.code, headers) + + def __call__(self, environ, start_response): + """Call the exception as WSGI application. + + :param environ: the WSGI environment. + :param start_response: the response callable provided by the WSGI + server. + """ + response = self.get_response(environ) + return response(environ, start_response) + + def __str__(self): + code = self.code if self.code is not None else "???" + return "%s %s: %s" % (code, self.name, self.description) + + def __repr__(self): + code = self.code if self.code is not None else "???" + return "<%s '%s: %s'>" % (self.__class__.__name__, code, self.name) + + +class BadRequest(HTTPException): + """*400* `Bad Request` + + Raise if the browser sends something to the application the application + or server cannot handle. + """ + + code = 400 + description = ( + "The browser (or proxy) sent a request that this server could " + "not understand." + ) + + +class ClientDisconnected(BadRequest): + """Internal exception that is raised if Werkzeug detects a disconnected + client. Since the client is already gone at that point attempting to + send the error message to the client might not work and might ultimately + result in another exception in the server. Mainly this is here so that + it is silenced by default as far as Werkzeug is concerned. + + Since disconnections cannot be reliably detected and are unspecified + by WSGI to a large extent this might or might not be raised if a client + is gone. + + .. versionadded:: 0.8 + """ + + +class SecurityError(BadRequest): + """Raised if something triggers a security error. This is otherwise + exactly like a bad request error. + + .. versionadded:: 0.9 + """ + + +class BadHost(BadRequest): + """Raised if the submitted host is badly formatted. + + .. versionadded:: 0.11.2 + """ + + +class Unauthorized(HTTPException): + """*401* ``Unauthorized`` + + Raise if the user is not authorized to access a resource. + + The ``www_authenticate`` argument should be used to set the + ``WWW-Authenticate`` header. This is used for HTTP basic auth and + other schemes. Use :class:`~werkzeug.datastructures.WWWAuthenticate` + to create correctly formatted values. Strictly speaking a 401 + response is invalid if it doesn't provide at least one value for + this header, although real clients typically don't care. + + :param description: Override the default message used for the body + of the response. + :param www-authenticate: A single value, or list of values, for the + WWW-Authenticate header. + + .. versionchanged:: 0.15.3 + If the ``www_authenticate`` argument is not set, the + ``WWW-Authenticate`` header is not set. + + .. versionchanged:: 0.15.3 + The ``response`` argument was restored. + + .. versionchanged:: 0.15.1 + ``description`` was moved back as the first argument, restoring + its previous position. + + .. versionchanged:: 0.15.0 + ``www_authenticate`` was added as the first argument, ahead of + ``description``. + """ + + code = 401 + description = ( + "The server could not verify that you are authorized to access" + " the URL requested. You either supplied the wrong credentials" + " (e.g. a bad password), or your browser doesn't understand" + " how to supply the credentials required." + ) + + def __init__(self, description=None, response=None, www_authenticate=None): + HTTPException.__init__(self, description, response) + + if www_authenticate is not None: + if not isinstance(www_authenticate, (tuple, list)): + www_authenticate = (www_authenticate,) + + self.www_authenticate = www_authenticate + + def get_headers(self, environ=None): + headers = HTTPException.get_headers(self, environ) + if self.www_authenticate: + headers.append( + ("WWW-Authenticate", ", ".join([str(x) for x in self.www_authenticate])) + ) + return headers + + +class Forbidden(HTTPException): + """*403* `Forbidden` + + Raise if the user doesn't have the permission for the requested resource + but was authenticated. + """ + + code = 403 + description = ( + "You don't have the permission to access the requested" + " resource. It is either read-protected or not readable by the" + " server." + ) + + +class NotFound(HTTPException): + """*404* `Not Found` + + Raise if a resource does not exist and never existed. + """ + + code = 404 + description = ( + "The requested URL was not found on the server. If you entered" + " the URL manually please check your spelling and try again." + ) + + +class MethodNotAllowed(HTTPException): + """*405* `Method Not Allowed` + + Raise if the server used a method the resource does not handle. For + example `POST` if the resource is view only. Especially useful for REST. + + The first argument for this exception should be a list of allowed methods. + Strictly speaking the response would be invalid if you don't provide valid + methods in the header which you can do with that list. + """ + + code = 405 + description = "The method is not allowed for the requested URL." + + def __init__(self, valid_methods=None, description=None): + """Takes an optional list of valid http methods + starting with werkzeug 0.3 the list will be mandatory.""" + HTTPException.__init__(self, description) + self.valid_methods = valid_methods + + def get_headers(self, environ=None): + headers = HTTPException.get_headers(self, environ) + if self.valid_methods: + headers.append(("Allow", ", ".join(self.valid_methods))) + return headers + + +class NotAcceptable(HTTPException): + """*406* `Not Acceptable` + + Raise if the server can't return any content conforming to the + `Accept` headers of the client. + """ + + code = 406 + + description = ( + "The resource identified by the request is only capable of" + " generating response entities which have content" + " characteristics not acceptable according to the accept" + " headers sent in the request." + ) + + +class RequestTimeout(HTTPException): + """*408* `Request Timeout` + + Raise to signalize a timeout. + """ + + code = 408 + description = ( + "The server closed the network connection because the browser" + " didn't finish the request within the specified time." + ) + + +class Conflict(HTTPException): + """*409* `Conflict` + + Raise to signal that a request cannot be completed because it conflicts + with the current state on the server. + + .. versionadded:: 0.7 + """ + + code = 409 + description = ( + "A conflict happened while processing the request. The" + " resource might have been modified while the request was being" + " processed." + ) + + +class Gone(HTTPException): + """*410* `Gone` + + Raise if a resource existed previously and went away without new location. + """ + + code = 410 + description = ( + "The requested URL is no longer available on this server and" + " there is no forwarding address. If you followed a link from a" + " foreign page, please contact the author of this page." + ) + + +class LengthRequired(HTTPException): + """*411* `Length Required` + + Raise if the browser submitted data but no ``Content-Length`` header which + is required for the kind of processing the server does. + """ + + code = 411 + description = ( + "A request with this method requires a valid Content-" + "Length header." + ) + + +class PreconditionFailed(HTTPException): + """*412* `Precondition Failed` + + Status code used in combination with ``If-Match``, ``If-None-Match``, or + ``If-Unmodified-Since``. + """ + + code = 412 + description = ( + "The precondition on the request for the URL failed positive evaluation." + ) + + +class RequestEntityTooLarge(HTTPException): + """*413* `Request Entity Too Large` + + The status code one should return if the data submitted exceeded a given + limit. + """ + + code = 413 + description = "The data value transmitted exceeds the capacity limit." + + +class RequestURITooLarge(HTTPException): + """*414* `Request URI Too Large` + + Like *413* but for too long URLs. + """ + + code = 414 + description = ( + "The length of the requested URL exceeds the capacity limit for" + " this server. The request cannot be processed." + ) + + +class UnsupportedMediaType(HTTPException): + """*415* `Unsupported Media Type` + + The status code returned if the server is unable to handle the media type + the client transmitted. + """ + + code = 415 + description = ( + "The server does not support the media type transmitted in the request." + ) + + +class RequestedRangeNotSatisfiable(HTTPException): + """*416* `Requested Range Not Satisfiable` + + The client asked for an invalid part of the file. + + .. versionadded:: 0.7 + """ + + code = 416 + description = "The server cannot provide the requested range." + + def __init__(self, length=None, units="bytes", description=None): + """Takes an optional `Content-Range` header value based on ``length`` + parameter. + """ + HTTPException.__init__(self, description) + self.length = length + self.units = units + + def get_headers(self, environ=None): + headers = HTTPException.get_headers(self, environ) + if self.length is not None: + headers.append(("Content-Range", "%s */%d" % (self.units, self.length))) + return headers + + +class ExpectationFailed(HTTPException): + """*417* `Expectation Failed` + + The server cannot meet the requirements of the Expect request-header. + + .. versionadded:: 0.7 + """ + + code = 417 + description = "The server could not meet the requirements of the Expect header" + + +class ImATeapot(HTTPException): + """*418* `I'm a teapot` + + The server should return this if it is a teapot and someone attempted + to brew coffee with it. + + .. versionadded:: 0.7 + """ + + code = 418 + description = "This server is a teapot, not a coffee machine" + + +class UnprocessableEntity(HTTPException): + """*422* `Unprocessable Entity` + + Used if the request is well formed, but the instructions are otherwise + incorrect. + """ + + code = 422 + description = ( + "The request was well-formed but was unable to be followed due" + " to semantic errors." + ) + + +class Locked(HTTPException): + """*423* `Locked` + + Used if the resource that is being accessed is locked. + """ + + code = 423 + description = "The resource that is being accessed is locked." + + +class FailedDependency(HTTPException): + """*424* `Failed Dependency` + + Used if the method could not be performed on the resource + because the requested action depended on another action and that action failed. + """ + + code = 424 + description = ( + "The method could not be performed on the resource because the" + " requested action depended on another action and that action" + " failed." + ) + + +class PreconditionRequired(HTTPException): + """*428* `Precondition Required` + + The server requires this request to be conditional, typically to prevent + the lost update problem, which is a race condition between two or more + clients attempting to update a resource through PUT or DELETE. By requiring + each client to include a conditional header ("If-Match" or "If-Unmodified- + Since") with the proper value retained from a recent GET request, the + server ensures that each client has at least seen the previous revision of + the resource. + """ + + code = 428 + description = ( + "This request is required to be conditional; try using" + ' "If-Match" or "If-Unmodified-Since".' + ) + + +class TooManyRequests(HTTPException): + """*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. + """ + + 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. + """ + + 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." + ) + + +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(HTTPException): + """*503* `Service Unavailable` + + Status code you should return if a service is temporarily unavailable. + """ + + code = 503 + description = ( + "The server is temporarily unable to service your request due" + " to maintenance downtime or capacity problems. Please try" + " again later." + ) + + +class GatewayTimeout(HTTPException): + """*504* `Gateway Timeout` + + Status code you should return if a connection to an upstream server + times out. + """ + + code = 504 + description = "The connection to an upstream server timed out." + + +class HTTPVersionNotSupported(HTTPException): + """*505* `HTTP Version Not Supported` + + The server does not support the HTTP protocol version used in the request. + """ + + code = 505 + description = ( + "The server does not support the HTTP protocol version used in the request." + ) + + +default_exceptions = {} +__all__ = ["HTTPException"] + + +def _find_exceptions(): + for _name, obj in iteritems(globals()): + try: + is_http_exception = issubclass(obj, HTTPException) + except TypeError: + is_http_exception = False + if not is_http_exception or obj.code is None: + continue + __all__.append(obj.__name__) + old_obj = default_exceptions.get(obj.code, None) + if old_obj is not None and issubclass(obj, old_obj): + continue + default_exceptions[obj.code] = obj + + +_find_exceptions() +del _find_exceptions + + +class Aborter(object): + """When passed a dict of code -> exception items it can be used as + callable that raises exceptions. If the first argument to the + callable is an integer it will be looked up in the mapping, if it's + a WSGI application it will be raised in a proxy exception. + + The rest of the arguments are forwarded to the exception constructor. + """ + + def __init__(self, mapping=None, extra=None): + if mapping is None: + mapping = default_exceptions + self.mapping = dict(mapping) + if extra is not None: + self.mapping.update(extra) + + def __call__(self, code, *args, **kwargs): + if not args and not kwargs and not isinstance(code, integer_types): + raise HTTPException(response=code) + if code not in self.mapping: + raise LookupError("no exception for %r" % code) + raise self.mapping[code](*args, **kwargs) + + +def abort(status, *args, **kwargs): + """Raises an :py:exc:`HTTPException` for the given status code or WSGI + application:: + + abort(404) # 404 Not Found + abort(Response('Hello World')) + + Can be passed a WSGI application or a status code. If a status code is + given it's 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) + abort(Response('Hello World')) + + """ + return _aborter(status, *args, **kwargs) + + +_aborter = Aborter() + + +#: an exception that is used internally to signal both a key error and a +#: bad request. Used by a lot of the datastructures. +BadRequestKeyError = BadRequest.wrap(KeyError) + +# imported here because of circular dependencies of werkzeug.utils +from .http import HTTP_STATUS_CODES +from .utils import escape diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/filesystem.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/filesystem.py new file mode 100644 index 00000000..d016caea --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/filesystem.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.filesystem + ~~~~~~~~~~~~~~~~~~~ + + Various utilities for the local filesystem. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import sys +import warnings + +# We do not trust traditional unixes. +has_likely_buggy_unicode_filesystem = ( + sys.platform.startswith("linux") or "bsd" in sys.platform +) + + +def _is_ascii_encoding(encoding): + """Given an encoding this figures out if the encoding is actually ASCII (which + is something we don't actually want in most cases). This is necessary + because ASCII comes under many names such as ANSI_X3.4-1968. + """ + if encoding is None: + return False + try: + return codecs.lookup(encoding).name == "ascii" + except LookupError: + return False + + +class BrokenFilesystemWarning(RuntimeWarning, UnicodeWarning): + """The warning used by Werkzeug to signal a broken filesystem. Will only be + used once per runtime.""" + + +_warned_about_filesystem_encoding = False + + +def get_filesystem_encoding(): + """Returns the filesystem encoding that should be used. Note that this is + different from the Python understanding of the filesystem encoding which + might be deeply flawed. Do not use this value against Python's unicode APIs + because it might be different. See :ref:`filesystem-encoding` for the exact + behavior. + + The concept of a filesystem encoding in generally is not something you + should rely on. As such if you ever need to use this function except for + writing wrapper code reconsider. + """ + global _warned_about_filesystem_encoding + rv = sys.getfilesystemencoding() + if has_likely_buggy_unicode_filesystem and not rv or _is_ascii_encoding(rv): + if not _warned_about_filesystem_encoding: + warnings.warn( + "Detected a misconfigured UNIX filesystem: Will use" + " UTF-8 as filesystem encoding instead of {0!r}".format(rv), + BrokenFilesystemWarning, + ) + _warned_about_filesystem_encoding = True + return "utf-8" + return rv diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/formparser.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/formparser.py new file mode 100644 index 00000000..0ddc5c8f --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/formparser.py @@ -0,0 +1,586 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.formparser + ~~~~~~~~~~~~~~~~~~~ + + This module implements the form parsing. It supports url-encoded forms + as well as non-nested multipart uploads. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import re +from functools import update_wrapper +from itertools import chain +from itertools import repeat +from itertools import tee + +from ._compat import BytesIO +from ._compat import text_type +from ._compat import to_native +from .datastructures import FileStorage +from .datastructures import Headers +from .datastructures import MultiDict +from .http import parse_options_header +from .urls import url_decode_stream +from .wsgi import get_content_length +from .wsgi import get_input_stream +from .wsgi import make_line_iter + +# there are some platforms where SpooledTemporaryFile is not available. +# In that case we need to provide a fallback. +try: + from tempfile import SpooledTemporaryFile +except ImportError: + from tempfile import TemporaryFile + + SpooledTemporaryFile = None + + +#: an iterator that yields empty strings +_empty_string_iter = repeat("") + +#: a regular expression for multipart boundaries +_multipart_boundary_re = re.compile("^[ -~]{0,200}[!-~]$") + +#: supported http encodings that are also available in python we support +#: for multipart messages. +_supported_multipart_encodings = frozenset(["base64", "quoted-printable"]) + + +def default_stream_factory( + total_content_length, filename, content_type, content_length=None +): + """The stream factory that is used per default.""" + max_size = 1024 * 500 + if SpooledTemporaryFile is not None: + return SpooledTemporaryFile(max_size=max_size, mode="wb+") + if total_content_length is None or total_content_length > max_size: + return TemporaryFile("wb+") + return BytesIO() + + +def parse_form_data( + environ, + stream_factory=None, + charset="utf-8", + errors="replace", + max_form_memory_size=None, + max_content_length=None, + cls=None, + silent=True, +): + """Parse the form data in the environ and return it as tuple in the form + ``(stream, form, files)``. You should only call this method if the + transport method is `POST`, `PUT`, or `PATCH`. + + If the mimetype of the data transmitted is `multipart/form-data` the + files multidict will be filled with `FileStorage` objects. If the + mimetype is unknown the input stream is wrapped and returned as first + argument, else the stream is empty. + + This is a shortcut for the common usage of :class:`FormDataParser`. + + Have a look at :ref:`dealing-with-request-data` for more details. + + .. versionadded:: 0.5 + The `max_form_memory_size`, `max_content_length` and + `cls` parameters were added. + + .. versionadded:: 0.5.1 + The optional `silent` flag was added. + + :param environ: the WSGI environment to be used for parsing. + :param stream_factory: An optional callable that returns a new read and + writeable file descriptor. This callable works + the same as :meth:`~BaseResponse._get_file_stream`. + :param charset: The character set for URL and url encoded form data. + :param errors: The encoding error behavior. + :param max_form_memory_size: the maximum number of bytes to be accepted for + in-memory stored form data. If the data + exceeds the value specified an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param max_content_length: If this is provided and the transmitted data + is longer than this value an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + :param silent: If set to False parsing errors will not be caught. + :return: A tuple in the form ``(stream, form, files)``. + """ + return FormDataParser( + stream_factory, + charset, + errors, + max_form_memory_size, + max_content_length, + cls, + silent, + ).parse_from_environ(environ) + + +def exhaust_stream(f): + """Helper decorator for methods that exhausts the stream on return.""" + + def wrapper(self, stream, *args, **kwargs): + try: + return f(self, stream, *args, **kwargs) + finally: + exhaust = getattr(stream, "exhaust", None) + if exhaust is not None: + exhaust() + else: + while 1: + chunk = stream.read(1024 * 64) + if not chunk: + break + + return update_wrapper(wrapper, f) + + +class FormDataParser(object): + """This class implements parsing of form data for Werkzeug. By itself + it can parse multipart and url encoded form data. It can be subclassed + and extended but for most mimetypes it is a better idea to use the + untouched stream and expose it as separate attributes on a request + object. + + .. versionadded:: 0.8 + + :param stream_factory: An optional callable that returns a new read and + writeable file descriptor. This callable works + the same as :meth:`~BaseResponse._get_file_stream`. + :param charset: The character set for URL and url encoded form data. + :param errors: The encoding error behavior. + :param max_form_memory_size: the maximum number of bytes to be accepted for + in-memory stored form data. If the data + exceeds the value specified an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param max_content_length: If this is provided and the transmitted data + is longer than this value an + :exc:`~exceptions.RequestEntityTooLarge` + exception is raised. + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + :param silent: If set to False parsing errors will not be caught. + """ + + def __init__( + self, + stream_factory=None, + charset="utf-8", + errors="replace", + max_form_memory_size=None, + max_content_length=None, + cls=None, + silent=True, + ): + if stream_factory is None: + stream_factory = default_stream_factory + self.stream_factory = stream_factory + self.charset = charset + self.errors = errors + self.max_form_memory_size = max_form_memory_size + self.max_content_length = max_content_length + if cls is None: + cls = MultiDict + self.cls = cls + self.silent = silent + + def get_parse_func(self, mimetype, options): + return self.parse_functions.get(mimetype) + + def parse_from_environ(self, environ): + """Parses the information from the environment as form data. + + :param environ: the WSGI environment to be used for parsing. + :return: A tuple in the form ``(stream, form, files)``. + """ + content_type = environ.get("CONTENT_TYPE", "") + content_length = get_content_length(environ) + mimetype, options = parse_options_header(content_type) + return self.parse(get_input_stream(environ), mimetype, content_length, options) + + def parse(self, stream, mimetype, content_length, options=None): + """Parses the information from the given stream, mimetype, + content length and mimetype parameters. + + :param stream: an input stream + :param mimetype: the mimetype of the data + :param content_length: the content length of the incoming data + :param options: optional mimetype parameters (used for + the multipart boundary for instance) + :return: A tuple in the form ``(stream, form, files)``. + """ + if ( + self.max_content_length is not None + and content_length is not None + and content_length > self.max_content_length + ): + raise exceptions.RequestEntityTooLarge() + if options is None: + options = {} + + parse_func = self.get_parse_func(mimetype, options) + if parse_func is not None: + try: + return parse_func(self, stream, mimetype, content_length, options) + except ValueError: + if not self.silent: + raise + + return stream, self.cls(), self.cls() + + @exhaust_stream + def _parse_multipart(self, stream, mimetype, content_length, options): + parser = MultiPartParser( + self.stream_factory, + self.charset, + self.errors, + max_form_memory_size=self.max_form_memory_size, + cls=self.cls, + ) + boundary = options.get("boundary") + if boundary is None: + raise ValueError("Missing boundary") + if isinstance(boundary, text_type): + boundary = boundary.encode("ascii") + form, files = parser.parse(stream, boundary, content_length) + return stream, form, files + + @exhaust_stream + def _parse_urlencoded(self, stream, mimetype, content_length, options): + if ( + self.max_form_memory_size is not None + and content_length is not None + and content_length > self.max_form_memory_size + ): + raise exceptions.RequestEntityTooLarge() + form = url_decode_stream(stream, self.charset, errors=self.errors, cls=self.cls) + return stream, form, self.cls() + + #: mapping of mimetypes to parsing functions + parse_functions = { + "multipart/form-data": _parse_multipart, + "application/x-www-form-urlencoded": _parse_urlencoded, + "application/x-url-encoded": _parse_urlencoded, + } + + +def is_valid_multipart_boundary(boundary): + """Checks if the string given is a valid multipart boundary.""" + return _multipart_boundary_re.match(boundary) is not None + + +def _line_parse(line): + """Removes line ending characters and returns a tuple (`stripped_line`, + `is_terminated`). + """ + if line[-2:] in ["\r\n", b"\r\n"]: + return line[:-2], True + elif line[-1:] in ["\r", "\n", b"\r", b"\n"]: + return line[:-1], True + return line, False + + +def parse_multipart_headers(iterable): + """Parses multipart headers from an iterable that yields lines (including + the trailing newline symbol). The iterable has to be newline terminated. + + The iterable will stop at the line where the headers ended so it can be + further consumed. + + :param iterable: iterable of strings that are newline terminated + """ + result = [] + for line in iterable: + line = to_native(line) + line, line_terminated = _line_parse(line) + if not line_terminated: + raise ValueError("unexpected end of line in multipart header") + if not line: + break + elif line[0] in " \t" and result: + key, value = result[-1] + result[-1] = (key, value + "\n " + line[1:]) + else: + parts = line.split(":", 1) + if len(parts) == 2: + result.append((parts[0].strip(), parts[1].strip())) + + # we link the list to the headers, no need to create a copy, the + # list was not shared anyways. + return Headers(result) + + +_begin_form = "begin_form" +_begin_file = "begin_file" +_cont = "cont" +_end = "end" + + +class MultiPartParser(object): + def __init__( + self, + stream_factory=None, + charset="utf-8", + errors="replace", + max_form_memory_size=None, + cls=None, + buffer_size=64 * 1024, + ): + self.charset = charset + self.errors = errors + self.max_form_memory_size = max_form_memory_size + self.stream_factory = ( + default_stream_factory if stream_factory is None else stream_factory + ) + self.cls = MultiDict if cls is None else cls + + # make sure the buffer size is divisible by four so that we can base64 + # decode chunk by chunk + assert buffer_size % 4 == 0, "buffer size has to be divisible by 4" + # also the buffer size has to be at least 1024 bytes long or long headers + # will freak out the system + assert buffer_size >= 1024, "buffer size has to be at least 1KB" + + self.buffer_size = buffer_size + + def _fix_ie_filename(self, filename): + """Internet Explorer 6 transmits the full file name if a file is + uploaded. This function strips the full path if it thinks the + filename is Windows-like absolute. + """ + if filename[1:3] == ":\\" or filename[:2] == "\\\\": + return filename.split("\\")[-1] + return filename + + def _find_terminator(self, iterator): + """The terminator might have some additional newlines before it. + There is at least one application that sends additional newlines + before headers (the python setuptools package). + """ + for line in iterator: + if not line: + break + line = line.strip() + if line: + return line + return b"" + + def fail(self, message): + raise ValueError(message) + + def get_part_encoding(self, headers): + transfer_encoding = headers.get("content-transfer-encoding") + if ( + transfer_encoding is not None + and transfer_encoding in _supported_multipart_encodings + ): + return transfer_encoding + + def get_part_charset(self, headers): + # Figure out input charset for current part + content_type = headers.get("content-type") + if content_type: + mimetype, ct_params = parse_options_header(content_type) + return ct_params.get("charset", self.charset) + return self.charset + + def start_file_streaming(self, filename, headers, total_content_length): + if isinstance(filename, bytes): + filename = filename.decode(self.charset, self.errors) + filename = self._fix_ie_filename(filename) + content_type = headers.get("content-type") + try: + content_length = int(headers["content-length"]) + except (KeyError, ValueError): + content_length = 0 + container = self.stream_factory( + total_content_length=total_content_length, + filename=filename, + content_type=content_type, + content_length=content_length, + ) + return filename, container + + def in_memory_threshold_reached(self, bytes): + raise exceptions.RequestEntityTooLarge() + + def validate_boundary(self, boundary): + if not boundary: + self.fail("Missing boundary") + if not is_valid_multipart_boundary(boundary): + self.fail("Invalid boundary: %s" % boundary) + if len(boundary) > self.buffer_size: # pragma: no cover + # this should never happen because we check for a minimum size + # of 1024 and boundaries may not be longer than 200. The only + # situation when this happens is for non debug builds where + # the assert is skipped. + self.fail("Boundary longer than buffer size") + + def parse_lines(self, file, boundary, content_length, cap_at_buffer=True): + """Generate parts of + ``('begin_form', (headers, name))`` + ``('begin_file', (headers, name, filename))`` + ``('cont', bytestring)`` + ``('end', None)`` + + Always obeys the grammar + parts = ( begin_form cont* end | + begin_file cont* end )* + """ + next_part = b"--" + boundary + last_part = next_part + b"--" + + iterator = chain( + make_line_iter( + file, + limit=content_length, + buffer_size=self.buffer_size, + cap_at_buffer=cap_at_buffer, + ), + _empty_string_iter, + ) + + terminator = self._find_terminator(iterator) + + if terminator == last_part: + return + elif terminator != next_part: + self.fail("Expected boundary at start of multipart data") + + while terminator != last_part: + headers = parse_multipart_headers(iterator) + + disposition = headers.get("content-disposition") + if disposition is None: + self.fail("Missing Content-Disposition header") + disposition, extra = parse_options_header(disposition) + transfer_encoding = self.get_part_encoding(headers) + name = extra.get("name") + filename = extra.get("filename") + + # if no content type is given we stream into memory. A list is + # used as a temporary container. + if filename is None: + yield _begin_form, (headers, name) + + # otherwise we parse the rest of the headers and ask the stream + # factory for something we can write in. + else: + yield _begin_file, (headers, name, filename) + + buf = b"" + for line in iterator: + if not line: + self.fail("unexpected end of stream") + + if line[:2] == b"--": + terminator = line.rstrip() + if terminator in (next_part, last_part): + break + + if transfer_encoding is not None: + if transfer_encoding == "base64": + transfer_encoding = "base64_codec" + try: + line = codecs.decode(line, transfer_encoding) + except Exception: + self.fail("could not decode transfer encoded chunk") + + # we have something in the buffer from the last iteration. + # this is usually a newline delimiter. + if buf: + yield _cont, buf + buf = b"" + + # If the line ends with windows CRLF we write everything except + # the last two bytes. In all other cases however we write + # everything except the last byte. If it was a newline, that's + # fine, otherwise it does not matter because we will write it + # the next iteration. this ensures we do not write the + # final newline into the stream. That way we do not have to + # truncate the stream. However we do have to make sure that + # if something else than a newline is in there we write it + # out. + if line[-2:] == b"\r\n": + buf = b"\r\n" + cutoff = -2 + else: + buf = line[-1:] + cutoff = -1 + yield _cont, line[:cutoff] + + else: # pragma: no cover + raise ValueError("unexpected end of part") + + # if we have a leftover in the buffer that is not a newline + # character we have to flush it, otherwise we will chop of + # certain values. + if buf not in (b"", b"\r", b"\n", b"\r\n"): + yield _cont, buf + + yield _end, None + + def parse_parts(self, file, boundary, content_length): + """Generate ``('file', (name, val))`` and + ``('form', (name, val))`` parts. + """ + in_memory = 0 + + for ellt, ell in self.parse_lines(file, boundary, content_length): + if ellt == _begin_file: + headers, name, filename = ell + is_file = True + guard_memory = False + filename, container = self.start_file_streaming( + filename, headers, content_length + ) + _write = container.write + + elif ellt == _begin_form: + headers, name = ell + is_file = False + container = [] + _write = container.append + guard_memory = self.max_form_memory_size is not None + + elif ellt == _cont: + _write(ell) + # if we write into memory and there is a memory size limit we + # count the number of bytes in memory and raise an exception if + # there is too much data in memory. + if guard_memory: + in_memory += len(ell) + if in_memory > self.max_form_memory_size: + self.in_memory_threshold_reached(in_memory) + + elif ellt == _end: + if is_file: + container.seek(0) + yield ( + "file", + (name, FileStorage(container, filename, name, headers=headers)), + ) + else: + part_charset = self.get_part_charset(headers) + yield ( + "form", + (name, b"".join(container).decode(part_charset, self.errors)), + ) + + def parse(self, file, boundary, content_length): + formstream, filestream = tee( + self.parse_parts(file, boundary, content_length), 2 + ) + form = (p[1] for p in formstream if p[0] == "form") + files = (p[1] for p in filestream if p[0] == "file") + return self.cls(form), self.cls(files) + + +from . import exceptions diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/http.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/http.py new file mode 100644 index 00000000..af320075 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/http.py @@ -0,0 +1,1303 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.http + ~~~~~~~~~~~~~ + + Werkzeug comes with a bunch of utilities that help Werkzeug to deal with + HTTP data. Most of the classes and functions provided by this module are + used by the wrappers, but they are useful on their own, too, especially if + the response and request objects are not used. + + This covers some of the more HTTP centric features of WSGI, some other + utilities such as cookie handling are documented in the `werkzeug.utils` + module. + + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import base64 +import re +import warnings +from datetime import datetime +from datetime import timedelta +from hashlib import md5 +from time import gmtime +from time import time + +from ._compat import integer_types +from ._compat import iteritems +from ._compat import PY2 +from ._compat import string_types +from ._compat import text_type +from ._compat import to_bytes +from ._compat import to_unicode +from ._compat import try_coerce_native +from ._internal import _cookie_parse_impl +from ._internal import _cookie_quote +from ._internal import _make_cookie_domain + +try: + from email.utils import parsedate_tz +except ImportError: + from email.Utils import parsedate_tz + +try: + from urllib.request import parse_http_list as _parse_list_header + from urllib.parse import unquote_to_bytes as _unquote +except ImportError: + from urllib2 import parse_http_list as _parse_list_header + from urllib2 import unquote as _unquote + +_cookie_charset = "latin1" +_basic_auth_charset = "utf-8" +# for explanation of "media-range", etc. see Sections 5.3.{1,2} of RFC 7231 +_accept_re = re.compile( + r""" + ( # media-range capturing-parenthesis + [^\s;,]+ # type/subtype + (?:[ \t]*;[ \t]* # ";" + (?: # parameter non-capturing-parenthesis + [^\s;,q][^\s;,]* # token that doesn't start with "q" + | # or + q[^\s;,=][^\s;,]* # token that is more than just "q" + ) + )* # zero or more parameters + ) # end of media-range + (?:[ \t]*;[ \t]*q= # weight is a "q" parameter + (\d*(?:\.\d+)?) # qvalue capturing-parentheses + [^,]* # "extension" accept params: who cares? + )? # accept params are optional + """, + re.VERBOSE, +) +_token_chars = frozenset( + "!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~" +) +_etag_re = re.compile(r'([Ww]/)?(?:"(.*?)"|(.*?))(?:\s*,\s*|$)') +_unsafe_header_chars = set('()<>@,;:"/[]?={} \t') +_option_header_piece_re = re.compile( + r""" + ;\s*,?\s* # newlines were replaced with commas + (?P + "[^"\\]*(?:\\.[^"\\]*)*" # quoted string + | + [^\s;,=*]+ # token + ) + (?:\*(?P\d+))? # *1, optional continuation index + \s* + (?: # optionally followed by =value + (?: # equals sign, possibly with encoding + \*\s*=\s* # * indicates extended notation + (?: # optional encoding + (?P[^\s]+?) + '(?P[^\s]*?)' + )? + | + =\s* # basic notation + ) + (?P + "[^"\\]*(?:\\.[^"\\]*)*" # quoted string + | + [^;,]+ # token + )? + )? + \s* + """, + flags=re.VERBOSE, +) +_option_header_start_mime_type = re.compile(r",\s*([^;,\s]+)([;,]\s*.+)?") + +_entity_headers = frozenset( + [ + "allow", + "content-encoding", + "content-language", + "content-length", + "content-location", + "content-md5", + "content-range", + "content-type", + "expires", + "last-modified", + ] +) +_hop_by_hop_headers = frozenset( + [ + "connection", + "keep-alive", + "proxy-authenticate", + "proxy-authorization", + "te", + "trailer", + "transfer-encoding", + "upgrade", + ] +) + + +HTTP_STATUS_CODES = { + 100: "Continue", + 101: "Switching Protocols", + 102: "Processing", + 200: "OK", + 201: "Created", + 202: "Accepted", + 203: "Non Authoritative Information", + 204: "No Content", + 205: "Reset Content", + 206: "Partial Content", + 207: "Multi Status", + 226: "IM Used", # see RFC 3229 + 300: "Multiple Choices", + 301: "Moved Permanently", + 302: "Found", + 303: "See Other", + 304: "Not Modified", + 305: "Use Proxy", + 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", + 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", + 507: "Insufficient Storage", + 510: "Not Extended", +} + + +def wsgi_to_bytes(data): + """coerce wsgi unicode represented bytes to real ones""" + if isinstance(data, bytes): + return data + return data.encode("latin1") # XXX: utf8 fallback? + + +def bytes_to_wsgi(data): + assert isinstance(data, bytes), "data must be bytes" + if isinstance(data, str): + return data + else: + return data.decode("latin1") + + +def quote_header_value(value, extra_chars="", allow_token=True): + """Quote a header value if necessary. + + .. versionadded:: 0.5 + + :param value: the value to quote. + :param extra_chars: a list of extra characters to skip quoting. + :param allow_token: if this is enabled token values are returned + unchanged. + """ + if isinstance(value, bytes): + value = bytes_to_wsgi(value) + value = str(value) + if allow_token: + token_chars = _token_chars | set(extra_chars) + if set(value).issubset(token_chars): + return value + return '"%s"' % value.replace("\\", "\\\\").replace('"', '\\"') + + +def unquote_header_value(value, is_filename=False): + r"""Unquotes a header value. (Reversal of :func:`quote_header_value`). + This does not use the real unquoting but what browsers are actually + using for quoting. + + .. versionadded:: 0.5 + + :param value: the header value to unquote. + """ + if value and value[0] == value[-1] == '"': + # this is not the real unquoting, but fixing this so that the + # RFC is met will result in bugs with internet explorer and + # probably some other browsers as well. IE for example is + # uploading files with "C:\foo\bar.txt" as filename + value = value[1:-1] + + # if this is a filename and the starting characters look like + # a UNC path, then just return the value without quotes. Using the + # replace sequence below on a UNC path has the effect of turning + # the leading double slash into a single slash and then + # _fix_ie_filename() doesn't work correctly. See #458. + if not is_filename or value[:2] != "\\\\": + return value.replace("\\\\", "\\").replace('\\"', '"') + return value + + +def dump_options_header(header, options): + """The reverse function to :func:`parse_options_header`. + + :param header: the header to dump + :param options: a dict of options to append. + """ + segments = [] + if header is not None: + segments.append(header) + for key, value in iteritems(options): + if value is None: + segments.append(key) + else: + segments.append("%s=%s" % (key, quote_header_value(value))) + return "; ".join(segments) + + +def dump_header(iterable, allow_token=True): + """Dump an HTTP header again. This is the reversal of + :func:`parse_list_header`, :func:`parse_set_header` and + :func:`parse_dict_header`. This also quotes strings that include an + equals sign unless you pass it as dict of key, value pairs. + + >>> dump_header({'foo': 'bar baz'}) + 'foo="bar baz"' + >>> dump_header(('foo', 'bar baz')) + 'foo, "bar baz"' + + :param iterable: the iterable or dict of values to quote. + :param allow_token: if set to `False` tokens as values are disallowed. + See :func:`quote_header_value` for more details. + """ + if isinstance(iterable, dict): + items = [] + for key, value in iteritems(iterable): + if value is None: + items.append(key) + else: + items.append( + "%s=%s" % (key, quote_header_value(value, allow_token=allow_token)) + ) + else: + items = [quote_header_value(x, allow_token=allow_token) for x in iterable] + return ", ".join(items) + + +def parse_list_header(value): + """Parse lists as described by RFC 2068 Section 2. + + In particular, parse comma-separated lists where the elements of + the list may include quoted-strings. A quoted-string could + contain a comma. A non-quoted string could have quotes in the + middle. Quotes are removed automatically after parsing. + + It basically works like :func:`parse_set_header` just that items + may appear multiple times and case sensitivity is preserved. + + The return value is a standard :class:`list`: + + >>> parse_list_header('token, "quoted value"') + ['token', 'quoted value'] + + To create a header from the :class:`list` again, use the + :func:`dump_header` function. + + :param value: a string with a list header. + :return: :class:`list` + """ + result = [] + for item in _parse_list_header(value): + if item[:1] == item[-1:] == '"': + item = unquote_header_value(item[1:-1]) + result.append(item) + return result + + +def parse_dict_header(value, cls=dict): + """Parse lists of key, value pairs as described by RFC 2068 Section 2 and + convert them into a python dict (or any other mapping object created from + the type with a dict like interface provided by the `cls` argument): + + >>> d = parse_dict_header('foo="is a fish", bar="as well"') + >>> type(d) is dict + True + >>> sorted(d.items()) + [('bar', 'as well'), ('foo', 'is a fish')] + + If there is no value for a key it will be `None`: + + >>> parse_dict_header('key_without_value') + {'key_without_value': None} + + To create a header from the :class:`dict` again, use the + :func:`dump_header` function. + + .. versionchanged:: 0.9 + Added support for `cls` argument. + + :param value: a string with a dict header. + :param cls: callable to use for storage of parsed results. + :return: an instance of `cls` + """ + result = cls() + if not isinstance(value, text_type): + # XXX: validate + value = bytes_to_wsgi(value) + for item in _parse_list_header(value): + if "=" not in item: + result[item] = None + continue + name, value = item.split("=", 1) + if value[:1] == value[-1:] == '"': + value = unquote_header_value(value[1:-1]) + result[name] = value + return result + + +def parse_options_header(value, multiple=False): + """Parse a ``Content-Type`` like header into a tuple with the content + type and the options: + + >>> parse_options_header('text/html; charset=utf8') + ('text/html', {'charset': 'utf8'}) + + This should not be used to parse ``Cache-Control`` like headers that use + a slightly different format. For these headers use the + :func:`parse_dict_header` function. + + .. versionchanged:: 0.15 + :rfc:`2231` parameter continuations are handled. + + .. versionadded:: 0.5 + + :param value: the header to parse. + :param multiple: Whether try to parse and return multiple MIME types + :return: (mimetype, options) or (mimetype, options, mimetype, options, …) + if multiple=True + """ + if not value: + return "", {} + + result = [] + + value = "," + value.replace("\n", ",") + while value: + match = _option_header_start_mime_type.match(value) + if not match: + break + result.append(match.group(1)) # mimetype + options = {} + # Parse options + rest = match.group(2) + continued_encoding = None + while rest: + optmatch = _option_header_piece_re.match(rest) + if not optmatch: + break + option, count, encoding, language, option_value = optmatch.groups() + # Continuations don't have to supply the encoding after the + # first line. If we're in a continuation, track the current + # encoding to use for subsequent lines. Reset it when the + # continuation ends. + if not count: + continued_encoding = None + else: + if not encoding: + encoding = continued_encoding + continued_encoding = encoding + option = unquote_header_value(option) + if option_value is not None: + option_value = unquote_header_value(option_value, option == "filename") + if encoding is not None: + option_value = _unquote(option_value).decode(encoding) + if count: + # Continuations append to the existing value. For + # simplicity, this ignores the possibility of + # out-of-order indices, which shouldn't happen anyway. + options[option] = options.get(option, "") + option_value + else: + options[option] = option_value + rest = rest[optmatch.end() :] + result.append(options) + if multiple is False: + return tuple(result) + value = rest + + return tuple(result) if result else ("", {}) + + +def parse_accept_header(value, cls=None): + """Parses an HTTP Accept-* header. This does not implement a complete + valid algorithm but one that supports at least value and quality + extraction. + + Returns a new :class:`Accept` object (basically a list of ``(value, quality)`` + tuples sorted by the quality with some additional accessor methods). + + The second parameter can be a subclass of :class:`Accept` that is created + with the parsed values and returned. + + :param value: the accept header string to be parsed. + :param cls: the wrapper class for the return value (can be + :class:`Accept` or a subclass thereof) + :return: an instance of `cls`. + """ + if cls is None: + cls = Accept + + if not value: + return cls(None) + + result = [] + for match in _accept_re.finditer(value): + quality = match.group(2) + if not quality: + quality = 1 + else: + quality = max(min(float(quality), 1), 0) + result.append((match.group(1), quality)) + return cls(result) + + +def parse_cache_control_header(value, on_update=None, cls=None): + """Parse a cache control header. The RFC differs between response and + request cache control, this method does not. It's your responsibility + to not use the wrong control statements. + + .. versionadded:: 0.5 + The `cls` was added. If not specified an immutable + :class:`~werkzeug.datastructures.RequestCacheControl` is returned. + + :param value: a cache control header to be parsed. + :param on_update: an optional callable that is called every time a value + on the :class:`~werkzeug.datastructures.CacheControl` + object is changed. + :param cls: the class for the returned object. By default + :class:`~werkzeug.datastructures.RequestCacheControl` is used. + :return: a `cls` object. + """ + if cls is None: + cls = RequestCacheControl + if not value: + return cls(None, on_update) + return cls(parse_dict_header(value), on_update) + + +def parse_set_header(value, on_update=None): + """Parse a set-like header and return a + :class:`~werkzeug.datastructures.HeaderSet` object: + + >>> hs = parse_set_header('token, "quoted value"') + + The return value is an object that treats the items case-insensitively + and keeps the order of the items: + + >>> 'TOKEN' in hs + True + >>> hs.index('quoted value') + 1 + >>> hs + HeaderSet(['token', 'quoted value']) + + To create a header from the :class:`HeaderSet` again, use the + :func:`dump_header` function. + + :param value: a set header to be parsed. + :param on_update: an optional callable that is called every time a + value on the :class:`~werkzeug.datastructures.HeaderSet` + object is changed. + :return: a :class:`~werkzeug.datastructures.HeaderSet` + """ + if not value: + return HeaderSet(None, on_update) + return HeaderSet(parse_list_header(value), on_update) + + +def parse_authorization_header(value): + """Parse an HTTP basic/digest authorization header transmitted by the web + browser. The return value is either `None` if the header was invalid or + not given, otherwise an :class:`~werkzeug.datastructures.Authorization` + object. + + :param value: the authorization header to parse. + :return: a :class:`~werkzeug.datastructures.Authorization` object or `None`. + """ + if not value: + return + value = wsgi_to_bytes(value) + try: + auth_type, auth_info = value.split(None, 1) + auth_type = auth_type.lower() + except ValueError: + return + if auth_type == b"basic": + try: + username, password = base64.b64decode(auth_info).split(b":", 1) + except Exception: + return + return Authorization( + "basic", + { + "username": to_unicode(username, _basic_auth_charset), + "password": to_unicode(password, _basic_auth_charset), + }, + ) + elif auth_type == b"digest": + auth_map = parse_dict_header(auth_info) + for key in "username", "realm", "nonce", "uri", "response": + if key not in auth_map: + return + if "qop" in auth_map: + if not auth_map.get("nc") or not auth_map.get("cnonce"): + return + return Authorization("digest", auth_map) + + +def parse_www_authenticate_header(value, on_update=None): + """Parse an HTTP WWW-Authenticate header into a + :class:`~werkzeug.datastructures.WWWAuthenticate` object. + + :param value: a WWW-Authenticate header to parse. + :param on_update: an optional callable that is called every time a value + on the :class:`~werkzeug.datastructures.WWWAuthenticate` + object is changed. + :return: a :class:`~werkzeug.datastructures.WWWAuthenticate` object. + """ + if not value: + return WWWAuthenticate(on_update=on_update) + try: + auth_type, auth_info = value.split(None, 1) + auth_type = auth_type.lower() + except (ValueError, AttributeError): + return WWWAuthenticate(value.strip().lower(), on_update=on_update) + return WWWAuthenticate(auth_type, parse_dict_header(auth_info), on_update) + + +def parse_if_range_header(value): + """Parses an if-range header which can be an etag or a date. Returns + a :class:`~werkzeug.datastructures.IfRange` object. + + .. versionadded:: 0.7 + """ + if not value: + return IfRange() + date = parse_date(value) + if date is not None: + return IfRange(date=date) + # drop weakness information + return IfRange(unquote_etag(value)[0]) + + +def parse_range_header(value, make_inclusive=True): + """Parses a range header into a :class:`~werkzeug.datastructures.Range` + object. If the header is missing or malformed `None` is returned. + `ranges` is a list of ``(start, stop)`` tuples where the ranges are + non-inclusive. + + .. versionadded:: 0.7 + """ + if not value or "=" not in value: + return None + + ranges = [] + last_end = 0 + units, rng = value.split("=", 1) + units = units.strip().lower() + + for item in rng.split(","): + item = item.strip() + if "-" not in item: + return None + if item.startswith("-"): + if last_end < 0: + return None + try: + begin = int(item) + except ValueError: + return None + end = None + last_end = -1 + elif "-" in item: + begin, end = item.split("-", 1) + begin = begin.strip() + end = end.strip() + if not begin.isdigit(): + return None + begin = int(begin) + if begin < last_end or last_end < 0: + return None + if end: + if not end.isdigit(): + return None + end = int(end) + 1 + if begin >= end: + return None + else: + end = None + last_end = end + ranges.append((begin, end)) + + return Range(units, ranges) + + +def parse_content_range_header(value, on_update=None): + """Parses a range header into a + :class:`~werkzeug.datastructures.ContentRange` object or `None` if + parsing is not possible. + + .. versionadded:: 0.7 + + :param value: a content range header to be parsed. + :param on_update: an optional callable that is called every time a value + on the :class:`~werkzeug.datastructures.ContentRange` + object is changed. + """ + if value is None: + return None + try: + units, rangedef = (value or "").strip().split(None, 1) + except ValueError: + return None + + if "/" not in rangedef: + return None + rng, length = rangedef.split("/", 1) + if length == "*": + length = None + elif length.isdigit(): + length = int(length) + else: + return None + + if rng == "*": + return ContentRange(units, None, None, length, on_update=on_update) + elif "-" not in rng: + return None + + start, stop = rng.split("-", 1) + try: + start = int(start) + stop = int(stop) + 1 + except ValueError: + return None + + if is_byte_range_valid(start, stop, length): + return ContentRange(units, start, stop, length, on_update=on_update) + + +def quote_etag(etag, weak=False): + """Quote an etag. + + :param etag: the etag to quote. + :param weak: set to `True` to tag it "weak". + """ + if '"' in etag: + raise ValueError("invalid etag") + etag = '"%s"' % etag + if weak: + etag = "W/" + etag + return etag + + +def unquote_etag(etag): + """Unquote a single etag: + + >>> unquote_etag('W/"bar"') + ('bar', True) + >>> unquote_etag('"bar"') + ('bar', False) + + :param etag: the etag identifier to unquote. + :return: a ``(etag, weak)`` tuple. + """ + if not etag: + return None, None + etag = etag.strip() + weak = False + if etag.startswith(("W/", "w/")): + weak = True + etag = etag[2:] + if etag[:1] == etag[-1:] == '"': + etag = etag[1:-1] + return etag, weak + + +def parse_etags(value): + """Parse an etag header. + + :param value: the tag header to parse + :return: an :class:`~werkzeug.datastructures.ETags` object. + """ + if not value: + return ETags() + strong = [] + weak = [] + end = len(value) + pos = 0 + while pos < end: + match = _etag_re.match(value, pos) + if match is None: + break + is_weak, quoted, raw = match.groups() + if raw == "*": + return ETags(star_tag=True) + elif quoted: + raw = quoted + if is_weak: + weak.append(raw) + else: + strong.append(raw) + pos = match.end() + return ETags(strong, weak) + + +def generate_etag(data): + """Generate an etag for some data.""" + return md5(data).hexdigest() + + +def parse_date(value): + """Parse one of the following date formats into a datetime object: + + .. sourcecode:: text + + Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 + Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 + Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format + + If parsing fails the return value is `None`. + + :param value: a string with a supported date format. + :return: a :class:`datetime.datetime` object. + """ + if value: + t = parsedate_tz(value.strip()) + if t is not None: + try: + year = t[0] + # unfortunately that function does not tell us if two digit + # years were part of the string, or if they were prefixed + # with two zeroes. So what we do is to assume that 69-99 + # refer to 1900, and everything below to 2000 + if year >= 0 and year <= 68: + year += 2000 + elif year >= 69 and year <= 99: + year += 1900 + return datetime(*((year,) + t[1:7])) - timedelta(seconds=t[-1] or 0) + except (ValueError, OverflowError): + return None + + +def _dump_date(d, delim): + """Used for `http_date` and `cookie_date`.""" + if d is None: + d = gmtime() + elif isinstance(d, datetime): + d = d.utctimetuple() + elif isinstance(d, (integer_types, float)): + d = gmtime(d) + return "%s, %02d%s%s%s%s %02d:%02d:%02d GMT" % ( + ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")[d.tm_wday], + d.tm_mday, + delim, + ( + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + )[d.tm_mon - 1], + delim, + str(d.tm_year), + d.tm_hour, + d.tm_min, + d.tm_sec, + ) + + +def cookie_date(expires=None): + """Formats the time to ensure compatibility with Netscape's cookie + standard. + + Accepts a floating point number expressed in seconds since the epoch in, a + datetime object or a timetuple. All times in UTC. The :func:`parse_date` + function can be used to parse such a date. + + Outputs a string in the format ``Wdy, DD-Mon-YYYY HH:MM:SS GMT``. + + :param expires: If provided that date is used, otherwise the current. + """ + return _dump_date(expires, "-") + + +def http_date(timestamp=None): + """Formats the time to match the RFC1123 date format. + + Accepts a floating point number expressed in seconds since the epoch in, a + datetime object or a timetuple. All times in UTC. The :func:`parse_date` + function can be used to parse such a date. + + Outputs a string in the format ``Wdy, DD Mon YYYY HH:MM:SS GMT``. + + :param timestamp: If provided that date is used, otherwise the current. + """ + return _dump_date(timestamp, " ") + + +def parse_age(value=None): + """Parses a base-10 integer count of seconds into a timedelta. + + If parsing fails, the return value is `None`. + + :param value: a string consisting of an integer represented in base-10 + :return: a :class:`datetime.timedelta` object or `None`. + """ + if not value: + return None + try: + seconds = int(value) + except ValueError: + return None + if seconds < 0: + return None + try: + return timedelta(seconds=seconds) + except OverflowError: + return None + + +def dump_age(age=None): + """Formats the duration as a base-10 integer. + + :param age: should be an integer number of seconds, + a :class:`datetime.timedelta` object, or, + if the age is unknown, `None` (default). + """ + if age is None: + return + if isinstance(age, timedelta): + # do the equivalent of Python 2.7's timedelta.total_seconds(), + # but disregarding fractional seconds + age = age.seconds + (age.days * 24 * 3600) + + age = int(age) + if age < 0: + raise ValueError("age cannot be negative") + + return str(age) + + +def is_resource_modified( + environ, etag=None, data=None, last_modified=None, ignore_if_range=True +): + """Convenience method for conditional requests. + + :param environ: the WSGI environment of the request to be checked. + :param etag: the etag for the response for comparison. + :param data: or alternatively the data of the response to automatically + generate an etag using :func:`generate_etag`. + :param last_modified: an optional date of the last modification. + :param ignore_if_range: If `False`, `If-Range` header will be taken into + account. + :return: `True` if the resource was modified, otherwise `False`. + """ + 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") + if environ["REQUEST_METHOD"] not in ("GET", "HEAD"): + return False + + unmodified = False + if isinstance(last_modified, string_types): + last_modified = parse_date(last_modified) + + # ensure that microsecond is zero because the HTTP spec does not transmit + # that either and we might have some false positives. See issue #39 + if last_modified is not None: + last_modified = last_modified.replace(microsecond=0) + + if_range = None + if not ignore_if_range and "HTTP_RANGE" in environ: + # https://tools.ietf.org/html/rfc7233#section-3.2 + # A server MUST ignore an If-Range header field received in a request + # that does not contain a Range header field. + if_range = parse_if_range_header(environ.get("HTTP_IF_RANGE")) + + if if_range is not None and if_range.date is not None: + modified_since = if_range.date + else: + modified_since = parse_date(environ.get("HTTP_IF_MODIFIED_SINCE")) + + if modified_since and last_modified and last_modified <= modified_since: + unmodified = True + + if etag: + etag, _ = unquote_etag(etag) + if if_range is not None and if_range.etag is not None: + unmodified = parse_etags(if_range.etag).contains(etag) + else: + if_none_match = parse_etags(environ.get("HTTP_IF_NONE_MATCH")) + if if_none_match: + # https://tools.ietf.org/html/rfc7232#section-3.2 + # "A recipient MUST use the weak comparison function when comparing + # entity-tags for If-None-Match" + unmodified = if_none_match.contains_weak(etag) + + # https://tools.ietf.org/html/rfc7232#section-3.1 + # "Origin server MUST use the strong comparison function when + # comparing entity-tags for If-Match" + if_match = parse_etags(environ.get("HTTP_IF_MATCH")) + if if_match: + unmodified = not if_match.is_strong(etag) + + return not unmodified + + +def remove_entity_headers(headers, allowed=("expires", "content-location")): + """Remove all entity headers from a list or :class:`Headers` object. This + operation works in-place. `Expires` and `Content-Location` headers are + by default not removed. The reason for this is :rfc:`2616` section + 10.3.5 which specifies some entity headers that should be sent. + + .. versionchanged:: 0.5 + added `allowed` parameter. + + :param headers: a list or :class:`Headers` object. + :param allowed: a list of headers that should still be allowed even though + they are entity headers. + """ + allowed = set(x.lower() for x in allowed) + headers[:] = [ + (key, value) + for key, value in headers + if not is_entity_header(key) or key.lower() in allowed + ] + + +def remove_hop_by_hop_headers(headers): + """Remove all HTTP/1.1 "Hop-by-Hop" headers from a list or + :class:`Headers` object. This operation works in-place. + + .. versionadded:: 0.5 + + :param headers: a list or :class:`Headers` object. + """ + headers[:] = [ + (key, value) for key, value in headers if not is_hop_by_hop_header(key) + ] + + +def is_entity_header(header): + """Check if a header is an entity header. + + .. versionadded:: 0.5 + + :param header: the header to test. + :return: `True` if it's an entity header, `False` otherwise. + """ + return header.lower() in _entity_headers + + +def is_hop_by_hop_header(header): + """Check if a header is an HTTP/1.1 "Hop-by-Hop" header. + + .. versionadded:: 0.5 + + :param header: the header to test. + :return: `True` if it's an HTTP/1.1 "Hop-by-Hop" header, `False` otherwise. + """ + return header.lower() in _hop_by_hop_headers + + +def parse_cookie(header, charset="utf-8", errors="replace", cls=None): + """Parse a cookie. Either from a string or WSGI environ. + + Per default encoding errors are ignored. If you want a different behavior + you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a + :exc:`HTTPUnicodeError` is raised. + + .. versionchanged:: 0.5 + This function now returns a :class:`TypeConversionDict` instead of a + regular dict. The `cls` parameter was added. + + :param header: the header to be used to parse the cookie. Alternatively + this can be a WSGI environment. + :param charset: the charset for the cookie values. + :param errors: the error behavior for the charset decoding. + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`TypeConversionDict` is + used. + """ + if isinstance(header, dict): + header = header.get("HTTP_COOKIE", "") + elif header is None: + header = "" + + # If the value is an unicode string it's mangled through latin1. This + # is done because on PEP 3333 on Python 3 all headers are assumed latin1 + # which however is incorrect for cookies, which are sent in page encoding. + # As a result we + if isinstance(header, text_type): + header = header.encode("latin1", "replace") + + if cls is None: + cls = TypeConversionDict + + def _parse_pairs(): + for key, val in _cookie_parse_impl(header): + key = to_unicode(key, charset, errors, allow_none_charset=True) + if not key: + continue + val = to_unicode(val, charset, errors, allow_none_charset=True) + yield try_coerce_native(key), val + + return cls(_parse_pairs()) + + +def dump_cookie( + key, + value="", + max_age=None, + expires=None, + path="/", + domain=None, + secure=False, + httponly=False, + charset="utf-8", + sync_expires=True, + max_size=4093, + samesite=None, +): + """Creates a new Set-Cookie header without the ``Set-Cookie`` prefix + The parameters are the same as in the cookie Morsel object in the + Python standard library but it accepts unicode data, too. + + On Python 3 the return value of this function will be a unicode + string, on Python 2 it will be a native string. In both cases the + return value is usually restricted to ascii as the vast majority of + values are properly escaped, but that is no guarantee. If a unicode + string is returned it's tunneled through latin1 as required by + PEP 3333. + + The return value is not ASCII safe if the key contains unicode + characters. This is technically against the specification but + happens in the wild. It's strongly recommended to not use + non-ASCII values for the keys. + + :param max_age: should be a number of seconds, or `None` (default) if + the cookie should last only as long as the client's + browser session. Additionally `timedelta` objects + are accepted, too. + :param expires: should be a `datetime` object or unix timestamp. + :param path: limits the cookie to a given path, per default it will + span the whole domain. + :param domain: Use this if you want to set a cross-domain cookie. For + example, ``domain=".example.com"`` will set a cookie + that is readable by the domain ``www.example.com``, + ``foo.example.com`` etc. Otherwise, a cookie will only + be readable by the domain that set it. + :param secure: The cookie will only be available via HTTPS + :param httponly: disallow JavaScript to access the cookie. This is an + extension to the cookie standard and probably not + supported by all browsers. + :param charset: the encoding for unicode values. + :param sync_expires: automatically set expires if max_age is defined + but expires not. + :param max_size: Warn if the final header value exceeds this size. The + default, 4093, should be safely `supported by most browsers + `_. Set to 0 to disable this check. + :param samesite: Limits the scope of the cookie such that it will only + be attached to requests if those requests are "same-site". + + .. _`cookie`: http://browsercookielimits.squawky.net/ + """ + key = to_bytes(key, charset) + value = to_bytes(value, charset) + + if path is not None: + path = iri_to_uri(path, charset) + domain = _make_cookie_domain(domain) + if isinstance(max_age, timedelta): + max_age = (max_age.days * 60 * 60 * 24) + max_age.seconds + if expires is not None: + if not isinstance(expires, string_types): + expires = cookie_date(expires) + elif max_age is not None and sync_expires: + expires = to_bytes(cookie_date(time() + max_age)) + + samesite = samesite.title() if samesite else None + if samesite not in ("Strict", "Lax", None): + raise ValueError("invalid SameSite value; must be 'Strict', 'Lax' or None") + + buf = [key + b"=" + _cookie_quote(value)] + + # XXX: In theory all of these parameters that are not marked with `None` + # should be quoted. Because stdlib did not quote it before I did not + # want to introduce quoting there now. + for k, v, q in ( + (b"Domain", domain, True), + (b"Expires", expires, False), + (b"Max-Age", max_age, False), + (b"Secure", secure, None), + (b"HttpOnly", httponly, None), + (b"Path", path, False), + (b"SameSite", samesite, False), + ): + if q is None: + if v: + buf.append(k) + continue + + if v is None: + continue + + tmp = bytearray(k) + if not isinstance(v, (bytes, bytearray)): + v = to_bytes(text_type(v), charset) + if q: + v = _cookie_quote(v) + tmp += b"=" + v + buf.append(bytes(tmp)) + + # The return value will be an incorrectly encoded latin1 header on + # Python 3 for consistency with the headers object and a bytestring + # on Python 2 because that's how the API makes more sense. + rv = b"; ".join(buf) + if not PY2: + rv = rv.decode("latin1") + + # Warn if the final value of the cookie is less than the limit. If the + # cookie is too large, then it may be silently ignored, which can be quite + # hard to debug. + cookie_size = len(rv) + + if max_size and cookie_size > max_size: + value_size = len(value) + warnings.warn( + 'The "{key}" cookie is too large: the value was {value_size} bytes' + " but the header required {extra_size} extra bytes. The final size" + " was {cookie_size} bytes but the limit is {max_size} bytes." + " Browsers may silently ignore cookies larger than this.".format( + key=key, + value_size=value_size, + extra_size=cookie_size - value_size, + cookie_size=cookie_size, + max_size=max_size, + ), + stacklevel=2, + ) + + return rv + + +def is_byte_range_valid(start, stop, length): + """Checks if a given byte content range is valid for the given length. + + .. versionadded:: 0.7 + """ + if (start is None) != (stop is None): + return False + elif start is None: + return length is None or length >= 0 + elif length is None: + return 0 <= start < stop + elif start >= stop: + return False + return 0 <= start < length + + +# circular dependency fun +from .datastructures import Accept +from .datastructures import Authorization +from .datastructures import ContentRange +from .datastructures import ETags +from .datastructures import HeaderSet +from .datastructures import IfRange +from .datastructures import Range +from .datastructures import RequestCacheControl +from .datastructures import TypeConversionDict +from .datastructures import WWWAuthenticate +from .urls import iri_to_uri + +# DEPRECATED +from .datastructures import CharsetAccept as _CharsetAccept +from .datastructures import Headers as _Headers +from .datastructures import LanguageAccept as _LanguageAccept +from .datastructures import MIMEAccept as _MIMEAccept + + +class MIMEAccept(_MIMEAccept): + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.http.MIMEAccept' has moved to 'werkzeug" + ".datastructures.MIMEAccept' as of version 0.5. This old" + " import will be removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(MIMEAccept, self).__init__(*args, **kwargs) + + +class CharsetAccept(_CharsetAccept): + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.http.CharsetAccept' has moved to 'werkzeug" + ".datastructures.CharsetAccept' as of version 0.5. This old" + " import will be removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(CharsetAccept, self).__init__(*args, **kwargs) + + +class LanguageAccept(_LanguageAccept): + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.http.LanguageAccept' has moved to 'werkzeug" + ".datastructures.LanguageAccept' as of version 0.5. This" + " old import will be removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(LanguageAccept, self).__init__(*args, **kwargs) + + +class Headers(_Headers): + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.http.Headers' has moved to 'werkzeug" + ".datastructures.Headers' as of version 0.5. This old" + " import will be removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(Headers, self).__init__(*args, **kwargs) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/local.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/local.py new file mode 100644 index 00000000..9a6088cc --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/local.py @@ -0,0 +1,421 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.local + ~~~~~~~~~~~~~~ + + This module implements context-local objects. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import copy +from functools import update_wrapper + +from ._compat import implements_bool +from ._compat import PY2 +from .wsgi import ClosingIterator + +# since each thread has its own greenlet we can just use those as identifiers +# for the context. If greenlets are not available we fall back to the +# current thread ident depending on where it is. +try: + from greenlet import getcurrent as get_ident +except ImportError: + try: + from thread import get_ident + except ImportError: + from _thread import get_ident + + +def release_local(local): + """Releases the contents of the local for the current context. + This makes it possible to use locals without a manager. + + Example:: + + >>> loc = Local() + >>> loc.foo = 42 + >>> release_local(loc) + >>> hasattr(loc, 'foo') + False + + With this function one can release :class:`Local` objects as well + as :class:`LocalStack` objects. However it is not possible to + release data held by proxies that way, one always has to retain + a reference to the underlying local object in order to be able + to release it. + + .. versionadded:: 0.6.1 + """ + local.__release_local__() + + +class Local(object): + __slots__ = ("__storage__", "__ident_func__") + + def __init__(self): + object.__setattr__(self, "__storage__", {}) + object.__setattr__(self, "__ident_func__", get_ident) + + def __iter__(self): + return iter(self.__storage__.items()) + + def __call__(self, proxy): + """Create a proxy for a name.""" + return LocalProxy(self, proxy) + + def __release_local__(self): + self.__storage__.pop(self.__ident_func__(), None) + + def __getattr__(self, name): + try: + return self.__storage__[self.__ident_func__()][name] + except KeyError: + raise AttributeError(name) + + def __setattr__(self, name, value): + ident = self.__ident_func__() + storage = self.__storage__ + try: + storage[ident][name] = value + except KeyError: + storage[ident] = {name: value} + + def __delattr__(self, name): + try: + del self.__storage__[self.__ident_func__()][name] + except KeyError: + raise AttributeError(name) + + +class LocalStack(object): + """This class works similar to a :class:`Local` but keeps a stack + of objects instead. This is best explained with an example:: + + >>> ls = LocalStack() + >>> ls.push(42) + >>> ls.top + 42 + >>> ls.push(23) + >>> ls.top + 23 + >>> ls.pop() + 23 + >>> ls.top + 42 + + They can be force released by using a :class:`LocalManager` or with + the :func:`release_local` function but the correct way is to pop the + item from the stack after using. When the stack is empty it will + no longer be bound to the current context (and as such released). + + By calling the stack without arguments it returns a proxy that resolves to + the topmost item on the stack. + + .. versionadded:: 0.6.1 + """ + + def __init__(self): + self._local = Local() + + def __release_local__(self): + self._local.__release_local__() + + def _get__ident_func__(self): + return self._local.__ident_func__ + + def _set__ident_func__(self, value): + object.__setattr__(self._local, "__ident_func__", value) + + __ident_func__ = property(_get__ident_func__, _set__ident_func__) + del _get__ident_func__, _set__ident_func__ + + def __call__(self): + def _lookup(): + rv = self.top + if rv is None: + raise RuntimeError("object unbound") + return rv + + return LocalProxy(_lookup) + + def push(self, obj): + """Pushes a new item to the stack""" + rv = getattr(self._local, "stack", None) + if rv is None: + self._local.stack = rv = [] + rv.append(obj) + return rv + + def pop(self): + """Removes the topmost item from the stack, will return the + old value or `None` if the stack was already empty. + """ + stack = getattr(self._local, "stack", None) + if stack is None: + return None + elif len(stack) == 1: + release_local(self._local) + return stack[-1] + else: + return stack.pop() + + @property + def top(self): + """The topmost item on the stack. If the stack is empty, + `None` is returned. + """ + try: + return self._local.stack[-1] + except (AttributeError, IndexError): + return None + + +class LocalManager(object): + """Local objects cannot manage themselves. For that you need a local + manager. You can pass a local manager multiple locals or add them later + by appending them to `manager.locals`. Every time the manager cleans up, + it will clean up all the data left in the locals for this context. + + The `ident_func` parameter can be added to override the default ident + function for the wrapped locals. + + .. versionchanged:: 0.6.1 + Instead of a manager the :func:`release_local` function can be used + as well. + + .. versionchanged:: 0.7 + `ident_func` was added. + """ + + def __init__(self, locals=None, ident_func=None): + if locals is None: + self.locals = [] + elif isinstance(locals, Local): + self.locals = [locals] + else: + self.locals = list(locals) + if ident_func is not None: + self.ident_func = ident_func + for local in self.locals: + object.__setattr__(local, "__ident_func__", ident_func) + else: + self.ident_func = get_ident + + def get_ident(self): + """Return the context identifier the local objects use internally for + this context. You cannot override this method to change the behavior + but use it to link other context local objects (such as SQLAlchemy's + scoped sessions) to the Werkzeug locals. + + .. versionchanged:: 0.7 + You can pass a different ident function to the local manager that + will then be propagated to all the locals passed to the + constructor. + """ + return self.ident_func() + + def cleanup(self): + """Manually clean up the data in the locals for this context. Call + this at the end of the request or use `make_middleware()`. + """ + for local in self.locals: + release_local(local) + + def make_middleware(self, app): + """Wrap a WSGI application so that cleaning up happens after + request end. + """ + + def application(environ, start_response): + return ClosingIterator(app(environ, start_response), self.cleanup) + + return application + + def middleware(self, func): + """Like `make_middleware` but for decorating functions. + + Example usage:: + + @manager.middleware + def application(environ, start_response): + ... + + The difference to `make_middleware` is that the function passed + will have all the arguments copied from the inner application + (name, docstring, module). + """ + return update_wrapper(self.make_middleware(func), func) + + def __repr__(self): + return "<%s storages: %d>" % (self.__class__.__name__, len(self.locals)) + + +@implements_bool +class LocalProxy(object): + """Acts as a proxy for a werkzeug local. Forwards all operations to + a proxied object. The only operations not supported for forwarding + are right handed operands and any kind of assignment. + + Example usage:: + + from werkzeug.local import Local + l = Local() + + # these are proxies + request = l('request') + user = l('user') + + + from werkzeug.local import LocalStack + _response_local = LocalStack() + + # this is a proxy + response = _response_local() + + Whenever something is bound to l.user / l.request the proxy objects + will forward all operations. If no object is bound a :exc:`RuntimeError` + will be raised. + + To create proxies to :class:`Local` or :class:`LocalStack` objects, + call the object as shown above. If you want to have a proxy to an + object looked up by a function, you can (as of Werkzeug 0.6.1) pass + a function to the :class:`LocalProxy` constructor:: + + session = LocalProxy(lambda: get_current_request().session) + + .. versionchanged:: 0.6.1 + The class can be instantiated with a callable as well now. + """ + + __slots__ = ("__local", "__dict__", "__name__", "__wrapped__") + + def __init__(self, local, name=None): + object.__setattr__(self, "_LocalProxy__local", local) + object.__setattr__(self, "__name__", name) + if callable(local) and not hasattr(local, "__release_local__"): + # "local" is a callable that is not an instance of Local or + # LocalManager: mark it as a wrapped function. + object.__setattr__(self, "__wrapped__", local) + + def _get_current_object(self): + """Return the current object. This is useful if you want the real + object behind the proxy at a time for performance reasons or because + you want to pass the object into a different context. + """ + if not hasattr(self.__local, "__release_local__"): + return self.__local() + try: + return getattr(self.__local, self.__name__) + except AttributeError: + raise RuntimeError("no object bound to %s" % self.__name__) + + @property + def __dict__(self): + try: + return self._get_current_object().__dict__ + except RuntimeError: + raise AttributeError("__dict__") + + def __repr__(self): + try: + obj = self._get_current_object() + except RuntimeError: + return "<%s unbound>" % self.__class__.__name__ + return repr(obj) + + def __bool__(self): + try: + return bool(self._get_current_object()) + except RuntimeError: + return False + + def __unicode__(self): + try: + return unicode(self._get_current_object()) # noqa + except RuntimeError: + return repr(self) + + def __dir__(self): + try: + return dir(self._get_current_object()) + except RuntimeError: + return [] + + def __getattr__(self, name): + if name == "__members__": + return dir(self._get_current_object()) + return getattr(self._get_current_object(), name) + + def __setitem__(self, key, value): + self._get_current_object()[key] = value + + def __delitem__(self, key): + del self._get_current_object()[key] + + if PY2: + __getslice__ = lambda x, i, j: x._get_current_object()[i:j] + + def __setslice__(self, i, j, seq): + self._get_current_object()[i:j] = seq + + def __delslice__(self, i, j): + del self._get_current_object()[i:j] + + __setattr__ = lambda x, n, v: setattr(x._get_current_object(), n, v) + __delattr__ = lambda x, n: delattr(x._get_current_object(), n) + __str__ = lambda x: str(x._get_current_object()) + __lt__ = lambda x, o: x._get_current_object() < o + __le__ = lambda x, o: x._get_current_object() <= o + __eq__ = lambda x, o: x._get_current_object() == o + __ne__ = lambda x, o: x._get_current_object() != o + __gt__ = lambda x, o: x._get_current_object() > o + __ge__ = lambda x, o: x._get_current_object() >= o + __cmp__ = lambda x, o: cmp(x._get_current_object(), o) # noqa + __hash__ = lambda x: hash(x._get_current_object()) + __call__ = lambda x, *a, **kw: x._get_current_object()(*a, **kw) + __len__ = lambda x: len(x._get_current_object()) + __getitem__ = lambda x, i: x._get_current_object()[i] + __iter__ = lambda x: iter(x._get_current_object()) + __contains__ = lambda x, i: i in x._get_current_object() + __add__ = lambda x, o: x._get_current_object() + o + __sub__ = lambda x, o: x._get_current_object() - o + __mul__ = lambda x, o: x._get_current_object() * o + __floordiv__ = lambda x, o: x._get_current_object() // o + __mod__ = lambda x, o: x._get_current_object() % o + __divmod__ = lambda x, o: x._get_current_object().__divmod__(o) + __pow__ = lambda x, o: x._get_current_object() ** o + __lshift__ = lambda x, o: x._get_current_object() << o + __rshift__ = lambda x, o: x._get_current_object() >> o + __and__ = lambda x, o: x._get_current_object() & o + __xor__ = lambda x, o: x._get_current_object() ^ o + __or__ = lambda x, o: x._get_current_object() | o + __div__ = lambda x, o: x._get_current_object().__div__(o) + __truediv__ = lambda x, o: x._get_current_object().__truediv__(o) + __neg__ = lambda x: -(x._get_current_object()) + __pos__ = lambda x: +(x._get_current_object()) + __abs__ = lambda x: abs(x._get_current_object()) + __invert__ = lambda x: ~(x._get_current_object()) + __complex__ = lambda x: complex(x._get_current_object()) + __int__ = lambda x: int(x._get_current_object()) + __long__ = lambda x: long(x._get_current_object()) # noqa + __float__ = lambda x: float(x._get_current_object()) + __oct__ = lambda x: oct(x._get_current_object()) + __hex__ = lambda x: hex(x._get_current_object()) + __index__ = lambda x: x._get_current_object().__index__() + __coerce__ = lambda x, o: x._get_current_object().__coerce__(x, o) + __enter__ = lambda x: x._get_current_object().__enter__() + __exit__ = lambda x, *a, **kw: x._get_current_object().__exit__(*a, **kw) + __radd__ = lambda x, o: o + x._get_current_object() + __rsub__ = lambda x, o: o - x._get_current_object() + __rmul__ = lambda x, o: o * x._get_current_object() + __rdiv__ = lambda x, o: o / x._get_current_object() + if PY2: + __rtruediv__ = lambda x, o: x._get_current_object().__rtruediv__(o) + else: + __rtruediv__ = __rdiv__ + __rfloordiv__ = lambda x, o: o // x._get_current_object() + __rmod__ = lambda x, o: o % x._get_current_object() + __rdivmod__ = lambda x, o: x._get_current_object().__rdivmod__(o) + __copy__ = lambda x: copy.copy(x._get_current_object()) + __deepcopy__ = lambda x, memo: copy.deepcopy(x._get_current_object(), memo) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__init__.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__init__.py new file mode 100644 index 00000000..5e049f5e --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__init__.py @@ -0,0 +1,25 @@ +""" +Middleware +========== + +A WSGI middleware is a WSGI application that wraps another application +in order to observe or change its behavior. Werkzeug provides some +middleware for common use cases. + +.. toctree:: + :maxdepth: 1 + + proxy_fix + shared_data + dispatcher + http_proxy + lint + profiler + +The :doc:`interactive debugger ` is also a middleware that can +be applied manually, although it is typically used automatically with +the :doc:`development server `. + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a7e3769a5ddcb6d7c3e0eb63f7132afa52871fec GIT binary patch literal 704 zcmYjP&1xGl5MJlfAjkvsQsz=hp!T}Sp|GST{ejX$OTmRepvdxSyb{%}RB6_0_howS zE9Kg^=&7@Enpz++^NnUS-#5BEI}<-|pM8CLQWU?7qcvgsns++oLl?J&o-B*=6ZM2I zijP)nhl7eJUOg-!Uc=4u{Re0tqF@uK1E@l9wpL_)2V@k%5LMu4=gDA%qp+|Y_^25q z4}P66Zjk|~jp`Z%O9|F!)YkeqgBy(Beqi4~h<8loU`Ms}U; zC>soItm8}Ki$SQgud5ZuFshm?6Vtfvn}*3=mDyaZvS==OR_=&K)~r^YSmQw~)X=J~ zSI+I9gK}hi-xyYBOs9QdtvNDM)}VUwElYoZ21`b;==aTN+@kZL#f~6rJ+?9$wrdtE zR;sFf*hkwKs^DTie+i$tGEx#14-~tE6}(x#n_f=eI>pb4Pv?`nM^Z9VDSs7_|I6X{ zb6rv!%3#BE-CL)pa?@PQ?f0SlH^g$dpJw@=cqygrEJ-;F`@7St*6ZHk;_>)1c^7{H D6rkax literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e686f4019599c1fd5ef128204b745219f46eaaf5 GIT binary patch literal 2393 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 I&|x+AzuX0*4FCWD literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/lint.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/lint.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2148d959337f1a0ea12a508e51a0187d9b02ba34 GIT binary patch literal 11687 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 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..84a2eb8aa7a327253521fd57e439e749bec20970 GIT binary patch literal 4433 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 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/dispatcher.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/dispatcher.py new file mode 100644 index 00000000..2eb173e0 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/dispatcher.py @@ -0,0 +1,66 @@ +""" +Application Dispatcher +====================== + +This middleware creates a single WSGI application that dispatches to +multiple other WSGI applications mounted at different URL paths. + +A common example is writing a Single Page Application, where you have a +backend API and a frontend written in JavaScript that does the routing +in the browser rather than requesting different pages from the server. +The frontend is a single HTML and JS file that should be served for any +path besides "/api". + +This example dispatches to an API app under "/api", an admin app +under "/admin", and an app that serves frontend files for all other +requests:: + + app = DispatcherMiddleware(serve_frontend, { + '/api': api_app, + '/admin': admin_app, + }) + +In production, you might instead handle this at the HTTP server level, +serving files or proxying to application servers based on location. The +API and admin apps would each be deployed with a separate WSGI server, +and the static files would be served directly by the HTTP server. + +.. autoclass:: DispatcherMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" + + +class DispatcherMiddleware(object): + """Combine multiple applications as a single WSGI application. + Requests are dispatched to an application based on the path it is + mounted under. + + :param app: The WSGI application to dispatch to if the request + doesn't match a mounted path. + :param mounts: Maps path prefixes to applications for dispatching. + """ + + def __init__(self, app, mounts=None): + self.app = app + self.mounts = mounts or {} + + def __call__(self, environ, start_response): + script = environ.get("PATH_INFO", "") + path_info = "" + + while "/" in script: + if script in self.mounts: + app = self.mounts[script] + break + + script, last_item = script.rsplit("/", 1) + path_info = "/%s%s" % (last_item, path_info) + else: + app = self.mounts.get(script, self.app) + + original_script_name = environ.get("SCRIPT_NAME", "") + environ["SCRIPT_NAME"] = original_script_name + script + environ["PATH_INFO"] = path_info + return app(environ, start_response) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/http_proxy.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/http_proxy.py new file mode 100644 index 00000000..bfdc0712 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/http_proxy.py @@ -0,0 +1,219 @@ +""" +Basic HTTP Proxy +================ + +.. autoclass:: ProxyMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +import socket + +from ..datastructures import EnvironHeaders +from ..http import is_hop_by_hop_header +from ..urls import url_parse +from ..urls import url_quote +from ..wsgi import get_input_stream + +try: + from http import client +except ImportError: + import httplib as client + + +class ProxyMiddleware(object): + """Proxy requests under a path to an external server, routing other + requests to the app. + + This middleware can only proxy HTTP requests, as that is the only + protocol handled by the WSGI server. Other protocols, such as + websocket requests, cannot be proxied at this layer. This should + only be used for development, in production a real proxying server + should be used. + + The middleware takes a dict that maps a path prefix to a dict + describing the host to be proxied to:: + + app = ProxyMiddleware(app, { + "/static/": { + "target": "http://127.0.0.1:5001/", + } + }) + + Each host has the following options: + + ``target``: + The target URL to dispatch to. This is required. + ``remove_prefix``: + Whether to remove the prefix from the URL before dispatching it + to the target. The default is ``False``. + ``host``: + ``""`` (default): + The host header is automatically rewritten to the URL of the + target. + ``None``: + The host header is unmodified from the client request. + Any other value: + The host header is overwritten with the value. + ``headers``: + A dictionary of headers to be sent with the request to the + target. The default is ``{}``. + ``ssl_context``: + A :class:`ssl.SSLContext` defining how to verify requests if the + target is HTTPS. The default is ``None``. + + In the example above, everything under ``"/static/"`` is proxied to + the server on port 5001. The host header is rewritten to the target, + and the ``"/static/"`` prefix is removed from the URLs. + + :param app: The WSGI application to wrap. + :param targets: Proxy target configurations. See description above. + :param chunk_size: Size of chunks to read from input stream and + write to target. + :param timeout: Seconds before an operation to a target fails. + + .. versionadded:: 0.14 + """ + + def __init__(self, app, targets, chunk_size=2 << 13, timeout=10): + def _set_defaults(opts): + opts.setdefault("remove_prefix", False) + opts.setdefault("host", "") + opts.setdefault("headers", {}) + opts.setdefault("ssl_context", None) + return opts + + self.app = app + self.targets = dict( + ("/%s/" % k.strip("/"), _set_defaults(v)) for k, v in targets.items() + ) + self.chunk_size = chunk_size + self.timeout = timeout + + def proxy_to(self, opts, path, prefix): + target = url_parse(opts["target"]) + + def application(environ, start_response): + headers = list(EnvironHeaders(environ).items()) + headers[:] = [ + (k, v) + for k, v in headers + if not is_hop_by_hop_header(k) + and k.lower() not in ("content-length", "host") + ] + headers.append(("Connection", "close")) + + if opts["host"] == "": + headers.append(("Host", target.ascii_host)) + elif opts["host"] is None: + headers.append(("Host", environ["HTTP_HOST"])) + else: + headers.append(("Host", opts["host"])) + + headers.extend(opts["headers"].items()) + remote_path = path + + if opts["remove_prefix"]: + remote_path = "%s/%s" % ( + target.path.rstrip("/"), + remote_path[len(prefix) :].lstrip("/"), + ) + + content_length = environ.get("CONTENT_LENGTH") + chunked = False + + if content_length not in ("", None): + headers.append(("Content-Length", content_length)) + elif content_length is not None: + headers.append(("Transfer-Encoding", "chunked")) + chunked = True + + try: + if target.scheme == "http": + con = client.HTTPConnection( + target.ascii_host, target.port or 80, timeout=self.timeout + ) + elif target.scheme == "https": + con = client.HTTPSConnection( + target.ascii_host, + target.port or 443, + timeout=self.timeout, + context=opts["ssl_context"], + ) + else: + raise RuntimeError( + "Target scheme must be 'http' or 'https', got '{}'.".format( + target.scheme + ) + ) + + con.connect() + remote_url = url_quote(remote_path) + querystring = environ["QUERY_STRING"] + + if querystring: + remote_url = remote_url + "?" + querystring + + con.putrequest(environ["REQUEST_METHOD"], remote_url, skip_host=True) + + for k, v in headers: + if k.lower() == "connection": + v = "close" + + con.putheader(k, v) + + con.endheaders() + stream = get_input_stream(environ) + + while 1: + data = stream.read(self.chunk_size) + + if not data: + break + + if chunked: + con.send(b"%x\r\n%s\r\n" % (len(data), data)) + else: + con.send(data) + + resp = con.getresponse() + except socket.error: + from ..exceptions import BadGateway + + return BadGateway()(environ, start_response) + + start_response( + "%d %s" % (resp.status, resp.reason), + [ + (k.title(), v) + for k, v in resp.getheaders() + if not is_hop_by_hop_header(k) + ], + ) + + def read(): + while 1: + try: + data = resp.read(self.chunk_size) + except socket.error: + break + + if not data: + break + + yield data + + return read() + + return application + + def __call__(self, environ, start_response): + path = environ["PATH_INFO"] + app = self.app + + for prefix, opts in self.targets.items(): + if path.startswith(prefix): + app = self.proxy_to(opts, path, prefix) + break + + return app(environ, start_response) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/lint.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/lint.py new file mode 100644 index 00000000..98f95817 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/lint.py @@ -0,0 +1,408 @@ +""" +WSGI Protocol Linter +==================== + +This module provides a middleware that performs sanity checks on the +behavior of the WSGI server and application. It checks that the +:pep:`3333` WSGI spec is properly implemented. It also warns on some +common HTTP errors such as non-empty responses for 304 status codes. + +.. autoclass:: LintMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +from warnings import warn + +from .._compat import implements_iterator +from .._compat import PY2 +from .._compat import string_types +from ..datastructures import Headers +from ..http import is_entity_header +from ..wsgi import FileWrapper + +try: + from urllib.parse import urlparse +except ImportError: + from urlparse import urlparse + + +class WSGIWarning(Warning): + """Warning class for WSGI warnings.""" + + +class HTTPWarning(Warning): + """Warning class for HTTP warnings.""" + + +def check_string(context, obj, stacklevel=3): + if type(obj) is not str: + warn( + "'%s' requires strings, got '%s'" % (context, type(obj).__name__), + WSGIWarning, + ) + + +class InputStream(object): + def __init__(self, stream): + self._stream = stream + + def read(self, *args): + if len(args) == 0: + warn( + "WSGI does not guarantee an EOF marker on the input stream, thus making" + " calls to 'wsgi.input.read()' unsafe. Conforming servers may never" + " return from this call.", + WSGIWarning, + stacklevel=2, + ) + elif len(args) != 1: + warn( + "Too many parameters passed to 'wsgi.input.read()'.", + WSGIWarning, + stacklevel=2, + ) + return self._stream.read(*args) + + def readline(self, *args): + if len(args) == 0: + warn( + "Calls to 'wsgi.input.readline()' without arguments are unsafe. Use" + " 'wsgi.input.read()' instead.", + WSGIWarning, + stacklevel=2, + ) + elif len(args) == 1: + warn( + "'wsgi.input.readline()' was called with a size hint. WSGI does not" + " support this, although it's available on all major servers.", + WSGIWarning, + stacklevel=2, + ) + else: + raise TypeError("Too many arguments passed to 'wsgi.input.readline()'.") + return self._stream.readline(*args) + + def __iter__(self): + try: + return iter(self._stream) + except TypeError: + warn("'wsgi.input' is not iterable.", WSGIWarning, stacklevel=2) + return iter(()) + + def close(self): + warn("The application closed the input stream!", WSGIWarning, stacklevel=2) + self._stream.close() + + +class ErrorStream(object): + def __init__(self, stream): + self._stream = stream + + def write(self, s): + check_string("wsgi.error.write()", s) + self._stream.write(s) + + def flush(self): + self._stream.flush() + + def writelines(self, seq): + for line in seq: + self.write(line) + + def close(self): + warn("The application closed the error stream!", WSGIWarning, stacklevel=2) + self._stream.close() + + +class GuardedWrite(object): + def __init__(self, write, chunks): + self._write = write + self._chunks = chunks + + def __call__(self, s): + check_string("write()", s) + self._write.write(s) + self._chunks.append(len(s)) + + +@implements_iterator +class GuardedIterator(object): + def __init__(self, iterator, headers_set, chunks): + self._iterator = iterator + if PY2: + self._next = iter(iterator).next + else: + self._next = iter(iterator).__next__ + self.closed = False + self.headers_set = headers_set + self.chunks = chunks + + def __iter__(self): + return self + + def __next__(self): + if self.closed: + warn("Iterated over closed 'app_iter'.", WSGIWarning, stacklevel=2) + + rv = self._next() + + if not self.headers_set: + warn( + "The application returned before it started the response.", + WSGIWarning, + stacklevel=2, + ) + + check_string("application iterator items", rv) + self.chunks.append(len(rv)) + return rv + + def close(self): + self.closed = True + + if hasattr(self._iterator, "close"): + self._iterator.close() + + if self.headers_set: + status_code, headers = self.headers_set + bytes_sent = sum(self.chunks) + content_length = headers.get("content-length", type=int) + + if status_code == 304: + for key, _value in headers: + key = key.lower() + if key not in ("expires", "content-location") and is_entity_header( + key + ): + warn( + "Entity header %r found in 304 response." % key, HTTPWarning + ) + if bytes_sent: + warn("304 responses must not have a body.", HTTPWarning) + elif 100 <= status_code < 200 or status_code == 204: + if content_length != 0: + warn( + "%r responses must have an empty content length." % status_code, + HTTPWarning, + ) + if bytes_sent: + warn( + "%r responses must not have a body." % status_code, HTTPWarning + ) + elif content_length is not None and content_length != bytes_sent: + warn( + "Content-Length and the number of bytes sent to the client do not" + " match.", + WSGIWarning, + ) + + def __del__(self): + if not self.closed: + try: + warn( + "Iterator was garbage collected before it was closed.", WSGIWarning + ) + except Exception: + pass + + +class LintMiddleware(object): + """Warns about common errors in the WSGI and HTTP behavior of the + server and wrapped application. Some of the issues it check are: + + - invalid status codes + - non-bytestrings sent to the WSGI server + - strings returned from the WSGI application + - non-empty conditional responses + - unquoted etags + - relative URLs in the Location header + - unsafe calls to wsgi.input + - unclosed iterators + + Error information is emitted using the :mod:`warnings` module. + + :param app: The WSGI application to wrap. + + .. code-block:: python + + from werkzeug.middleware.lint import LintMiddleware + app = LintMiddleware(app) + """ + + def __init__(self, app): + self.app = app + + def check_environ(self, environ): + if type(environ) is not dict: + warn( + "WSGI environment is not a standard Python dict.", + WSGIWarning, + stacklevel=4, + ) + for key in ( + "REQUEST_METHOD", + "SERVER_NAME", + "SERVER_PORT", + "wsgi.version", + "wsgi.input", + "wsgi.errors", + "wsgi.multithread", + "wsgi.multiprocess", + "wsgi.run_once", + ): + if key not in environ: + warn( + "Required environment key %r not found" % key, + WSGIWarning, + stacklevel=3, + ) + if environ["wsgi.version"] != (1, 0): + warn("Environ is not a WSGI 1.0 environ.", WSGIWarning, stacklevel=3) + + script_name = environ.get("SCRIPT_NAME", "") + path_info = environ.get("PATH_INFO", "") + + if script_name and script_name[0] != "/": + warn( + "'SCRIPT_NAME' does not start with a slash: %r" % script_name, + WSGIWarning, + stacklevel=3, + ) + + if path_info and path_info[0] != "/": + warn( + "'PATH_INFO' does not start with a slash: %r" % path_info, + WSGIWarning, + stacklevel=3, + ) + + def check_start_response(self, status, headers, exc_info): + check_string("status", status) + status_code = status.split(None, 1)[0] + + if len(status_code) != 3 or not status_code.isdigit(): + warn(WSGIWarning("Status code must be three digits"), stacklevel=3) + + if len(status) < 4 or status[3] != " ": + warn( + WSGIWarning( + "Invalid value for status %r. Valid " + "status strings are three digits, a space " + "and a status explanation" + ), + stacklevel=3, + ) + + status_code = int(status_code) + + if status_code < 100: + warn(WSGIWarning("status code < 100 detected"), stacklevel=3) + + if type(headers) is not list: + warn(WSGIWarning("header list is not a list"), stacklevel=3) + + for item in headers: + if type(item) is not tuple or len(item) != 2: + warn(WSGIWarning("Headers must tuple 2-item tuples"), stacklevel=3) + name, value = item + if type(name) is not str or type(value) is not str: + warn(WSGIWarning("header items must be strings"), stacklevel=3) + if name.lower() == "status": + warn( + WSGIWarning( + "The status header is not supported due to " + "conflicts with the CGI spec." + ), + stacklevel=3, + ) + + if exc_info is not None and not isinstance(exc_info, tuple): + warn(WSGIWarning("invalid value for exc_info"), stacklevel=3) + + headers = Headers(headers) + self.check_headers(headers) + + return status_code, headers + + def check_headers(self, headers): + etag = headers.get("etag") + + if etag is not None: + if etag.startswith(("W/", "w/")): + if etag.startswith("w/"): + warn( + HTTPWarning("weak etag indicator should be upcase."), + stacklevel=4, + ) + + etag = etag[2:] + + if not (etag[:1] == etag[-1:] == '"'): + warn(HTTPWarning("unquoted etag emitted."), stacklevel=4) + + location = headers.get("location") + + if location is not None: + if not urlparse(location).netloc: + warn( + HTTPWarning("absolute URLs required for location header"), + stacklevel=4, + ) + + def check_iterator(self, app_iter): + if isinstance(app_iter, string_types): + warn( + "The application returned astring. The response will send one character" + " at a time to the client, which will kill performance. Return a list" + " or iterable instead.", + WSGIWarning, + stacklevel=3, + ) + + def __call__(self, *args, **kwargs): + if len(args) != 2: + warn("A WSGI app takes two arguments.", WSGIWarning, stacklevel=2) + + if kwargs: + warn( + "A WSGI app does not take keyword arguments.", WSGIWarning, stacklevel=2 + ) + + environ, start_response = args + + self.check_environ(environ) + environ["wsgi.input"] = InputStream(environ["wsgi.input"]) + environ["wsgi.errors"] = ErrorStream(environ["wsgi.errors"]) + + # Hook our own file wrapper in so that applications will always + # iterate to the end and we can check the content length. + environ["wsgi.file_wrapper"] = FileWrapper + + headers_set = [] + chunks = [] + + def checking_start_response(*args, **kwargs): + if len(args) not in (2, 3): + warn( + "Invalid number of arguments: %s, expected 2 or 3." % len(args), + WSGIWarning, + stacklevel=2, + ) + + if kwargs: + warn("'start_response' does not take keyword arguments.", WSGIWarning) + + status, headers = args[:2] + + if len(args) == 3: + exc_info = args[2] + else: + exc_info = None + + headers_set[:] = self.check_start_response(status, headers, exc_info) + return GuardedWrite(start_response(status, headers, exc_info), chunks) + + app_iter = self.app(environ, checking_start_response) + self.check_iterator(app_iter) + return GuardedIterator(app_iter, headers_set, chunks) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/profiler.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/profiler.py new file mode 100644 index 00000000..32a14d9f --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/profiler.py @@ -0,0 +1,132 @@ +""" +Application Profiler +==================== + +This module provides a middleware that profiles each request with the +:mod:`cProfile` module. This can help identify bottlenecks in your code +that may be slowing down your application. + +.. autoclass:: ProfilerMiddleware + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +from __future__ import print_function + +import os.path +import sys +import time +from pstats import Stats + +try: + from cProfile import Profile +except ImportError: + from profile import Profile + + +class ProfilerMiddleware(object): + """Wrap a WSGI application and profile the execution of each + request. Responses are buffered so that timings are more exact. + + If ``stream`` is given, :class:`pstats.Stats` are written to it + after each request. If ``profile_dir`` is given, :mod:`cProfile` + data files are saved to that directory, one file per request. + + The filename can be customized by passing ``filename_format``. If + it is a string, it will be formatted using :meth:`str.format` with + the following fields available: + + - ``{method}`` - The request method; GET, POST, etc. + - ``{path}`` - The request path or 'root' should one not exist. + - ``{elapsed}`` - The elapsed time of the request. + - ``{time}`` - The time of the request. + + If it is a callable, it will be called with the WSGI ``environ`` + dict and should return a filename. + + :param app: The WSGI application to wrap. + :param stream: Write stats to this stream. Disable with ``None``. + :param sort_by: A tuple of columns to sort stats by. See + :meth:`pstats.Stats.sort_stats`. + :param restrictions: A tuple of restrictions to filter stats by. See + :meth:`pstats.Stats.print_stats`. + :param profile_dir: Save profile data files to this directory. + :param filename_format: Format string for profile data file names, + or a callable returning a name. See explanation above. + + .. code-block:: python + + from werkzeug.middleware.profiler import ProfilerMiddleware + app = ProfilerMiddleware(app) + + .. versionchanged:: 0.15 + Stats are written even if ``profile_dir`` is given, and can be + disable by passing ``stream=None``. + + .. versionadded:: 0.15 + Added ``filename_format``. + + .. versionadded:: 0.9 + Added ``restrictions`` and ``profile_dir``. + """ + + def __init__( + self, + app, + stream=sys.stdout, + sort_by=("time", "calls"), + restrictions=(), + profile_dir=None, + filename_format="{method}.{path}.{elapsed:.0f}ms.{time:.0f}.prof", + ): + self._app = app + self._stream = stream + self._sort_by = sort_by + self._restrictions = restrictions + self._profile_dir = profile_dir + self._filename_format = filename_format + + def __call__(self, environ, start_response): + response_body = [] + + def catching_start_response(status, headers, exc_info=None): + start_response(status, headers, exc_info) + return response_body.append + + def runapp(): + app_iter = self._app(environ, catching_start_response) + response_body.extend(app_iter) + + if hasattr(app_iter, "close"): + app_iter.close() + + profile = Profile() + start = time.time() + profile.runcall(runapp) + body = b"".join(response_body) + elapsed = time.time() - start + + if self._profile_dir is not None: + if callable(self._filename_format): + filename = self._filename_format(environ) + else: + filename = self._filename_format.format( + method=environ["REQUEST_METHOD"], + path=( + environ.get("PATH_INFO").strip("/").replace("/", ".") or "root" + ), + elapsed=elapsed * 1000.0, + time=time.time(), + ) + filename = os.path.join(self._profile_dir, filename) + profile.dump_stats(filename) + + if self._stream is not None: + stats = Stats(profile, stream=self._stream) + stats.sort_stats(*self._sort_by) + print("-" * 80, file=self._stream) + print("PATH: {!r}".format(environ.get("PATH_INFO", "")), file=self._stream) + stats.print_stats(*self._restrictions) + print("-" * 80 + "\n", file=self._stream) + + return [body] diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/proxy_fix.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/proxy_fix.py new file mode 100644 index 00000000..dc1dacc8 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/proxy_fix.py @@ -0,0 +1,228 @@ +""" +X-Forwarded-For Proxy Fix +========================= + +This module provides a middleware that adjusts the WSGI environ based on +``X-Forwarded-`` headers that proxies in front of an application may +set. + +When an application is running behind a proxy server, WSGI may see the +request as coming from that server rather than the real client. Proxies +set various headers to track where the request actually came from. + +This middleware should only be applied if the application is actually +behind such a proxy, and should be configured with the number of proxies +that are chained in front of it. Not all proxies set all the headers. +Since incoming headers can be faked, you must set how many proxies are +setting each header so the middleware knows what to trust. + +.. autoclass:: ProxyFix + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +import warnings + + +class ProxyFix(object): + """Adjust the WSGI environ based on ``X-Forwarded-`` that proxies in + front of the application may set. + + - ``X-Forwarded-For`` sets ``REMOTE_ADDR``. + - ``X-Forwarded-Proto`` sets ``wsgi.url_scheme``. + - ``X-Forwarded-Host`` sets ``HTTP_HOST``, ``SERVER_NAME``, and + ``SERVER_PORT``. + - ``X-Forwarded-Port`` sets ``HTTP_HOST`` and ``SERVER_PORT``. + - ``X-Forwarded-Prefix`` sets ``SCRIPT_NAME``. + + You must tell the middleware how many proxies set each header so it + knows what values to trust. It is a security issue to trust values + that came from the client rather than a proxy. + + The original values of the headers are stored in the WSGI + environ as ``werkzeug.proxy_fix.orig``, a dict. + + :param app: The WSGI application to wrap. + :param x_for: Number of values to trust for ``X-Forwarded-For``. + :param x_proto: Number of values to trust for ``X-Forwarded-Proto``. + :param x_host: Number of values to trust for ``X-Forwarded-Host``. + :param x_port: Number of values to trust for ``X-Forwarded-Port``. + :param x_prefix: Number of values to trust for + ``X-Forwarded-Prefix``. + :param num_proxies: Deprecated, use ``x_for`` instead. + + .. 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:: 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-Fowarded-Host`` and ``X-Forwarded-Port`` modify + ``SERVER_NAME`` and ``SERVER_PORT``. + """ + + def __init__( + self, app, num_proxies=None, x_for=1, x_proto=0, x_host=0, x_port=0, x_prefix=0 + ): + self.app = app + self.x_for = x_for + self.x_proto = x_proto + self.x_host = x_host + self.x_port = x_port + self.x_prefix = x_prefix + self.num_proxies = num_proxies + + @property + def num_proxies(self): + """The number of proxies setting ``X-Forwarded-For`` in front + of the application. + + .. deprecated:: 0.15 + A separate number of trusted proxies is configured for each + header. ``num_proxies`` maps to ``x_for``. This method will + be removed in 1.0. + + :internal: + """ + warnings.warn( + "'num_proxies' is deprecated as of version 0.15 and will be" + " removed in version 1.0. Use 'x_for' instead.", + DeprecationWarning, + stacklevel=2, + ) + return self.x_for + + @num_proxies.setter + def num_proxies(self, value): + if value is not None: + warnings.warn( + "'num_proxies' is deprecated as of version 0.15 and" + " will be removed in version 1.0. Use 'x_for' instead.", + DeprecationWarning, + stacklevel=2, + ) + self.x_for = value + + def get_remote_addr(self, forwarded_for): + """Get the real ``remote_addr`` by looking backwards ``x_for`` + number of values in the ``X-Forwarded-For`` header. + + :param forwarded_for: List of values parsed from the + ``X-Forwarded-For`` header. + :return: The real ``remote_addr``, or ``None`` if there were not + at least ``x_for`` values. + + .. deprecated:: 0.15 + This is handled internally for each header. This method will + be removed in 1.0. + + .. versionchanged:: 0.9 + Use ``num_proxies`` instead of always picking the first + value. + + .. versionadded:: 0.8 + """ + warnings.warn( + "'get_remote_addr' is deprecated as of version 0.15 and" + " will be removed in version 1.0. It is now handled" + " internally for each header.", + DeprecationWarning, + ) + return self._get_trusted_comma(self.x_for, ",".join(forwarded_for)) + + def _get_trusted_comma(self, trusted, value): + """Get the real value from a comma-separated header based on the + configured number of trusted proxies. + + :param trusted: Number of values to trust in the header. + :param value: Header value to parse. + :return: The real value, or ``None`` if there are fewer values + than the number of trusted proxies. + + .. versionadded:: 0.15 + """ + if not (trusted and value): + return + values = [x.strip() for x in value.split(",")] + if len(values) >= trusted: + return values[-trusted] + + def __call__(self, environ, start_response): + """Modify the WSGI environ based on the various ``Forwarded`` + headers before calling the wrapped application. Store the + original environ values in ``werkzeug.proxy_fix.orig_{key}``. + """ + environ_get = environ.get + orig_remote_addr = environ_get("REMOTE_ADDR") + orig_wsgi_url_scheme = environ_get("wsgi.url_scheme") + orig_http_host = environ_get("HTTP_HOST") + environ.update( + { + "werkzeug.proxy_fix.orig": { + "REMOTE_ADDR": orig_remote_addr, + "wsgi.url_scheme": orig_wsgi_url_scheme, + "HTTP_HOST": orig_http_host, + "SERVER_NAME": environ_get("SERVER_NAME"), + "SERVER_PORT": environ_get("SERVER_PORT"), + "SCRIPT_NAME": environ_get("SCRIPT_NAME"), + }, + # todo: remove deprecated keys + "werkzeug.proxy_fix.orig_remote_addr": orig_remote_addr, + "werkzeug.proxy_fix.orig_wsgi_url_scheme": orig_wsgi_url_scheme, + "werkzeug.proxy_fix.orig_http_host": orig_http_host, + } + ) + + x_for = self._get_trusted_comma(self.x_for, environ_get("HTTP_X_FORWARDED_FOR")) + if x_for: + environ["REMOTE_ADDR"] = x_for + + x_proto = self._get_trusted_comma( + self.x_proto, environ_get("HTTP_X_FORWARDED_PROTO") + ) + if x_proto: + environ["wsgi.url_scheme"] = x_proto + + x_host = self._get_trusted_comma( + 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_trusted_comma( + self.x_port, environ_get("HTTP_X_FORWARDED_PORT") + ) + if x_port: + host = environ.get("HTTP_HOST") + if host: + parts = host.split(":", 1) + host = parts[0] if len(parts) == 2 else host + environ["HTTP_HOST"] = "%s:%s" % (host, x_port) + environ["SERVER_PORT"] = x_port + + x_prefix = self._get_trusted_comma( + 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/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py new file mode 100644 index 00000000..a902281d --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py @@ -0,0 +1,260 @@ +""" +Serve Shared Static Files +========================= + +.. autoclass:: SharedDataMiddleware + :members: is_allowed + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +import mimetypes +import os +import posixpath +from datetime import datetime +from io import BytesIO +from time import mktime +from time import time +from zlib import adler32 + +from .._compat import PY2 +from .._compat import string_types +from ..filesystem import get_filesystem_encoding +from ..http import http_date +from ..http import is_resource_modified +from ..wsgi import get_path_info +from ..wsgi import wrap_file + + +class SharedDataMiddleware(object): + + """A WSGI middleware that provides static content for development + environments or simple server setups. Usage is quite simple:: + + import os + from werkzeug.wsgi import SharedDataMiddleware + + app = SharedDataMiddleware(app, { + '/static': os.path.join(os.path.dirname(__file__), 'static') + }) + + The contents of the folder ``./shared`` will now be available on + ``http://example.com/shared/``. This is pretty useful during development + because a standalone media server is not required. One can also mount + files on the root folder and still continue to use the application because + the shared data middleware forwards all unhandled requests to the + application, even if the requests are below one of the shared folders. + + If `pkg_resources` is available you can also tell the middleware to serve + files from package data:: + + app = SharedDataMiddleware(app, { + '/static': ('myapplication', 'static') + }) + + This will then serve the ``static`` folder in the `myapplication` + Python package. + + The optional `disallow` parameter can be a list of :func:`~fnmatch.fnmatch` + rules for files that are not accessible from the web. If `cache` is set to + `False` no caching headers are sent. + + Currently the middleware does not support non ASCII filenames. If the + encoding on the file system happens to be the encoding of the URI it may + work but this could also be by accident. We strongly suggest using ASCII + only file names for static files. + + The middleware will guess the mimetype using the Python `mimetype` + module. If it's unable to figure out the charset it will fall back + to `fallback_mimetype`. + + .. versionchanged:: 0.5 + The cache timeout is configurable now. + + .. versionadded:: 0.6 + The `fallback_mimetype` parameter was added. + + :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 fallback_mimetype: the fallback mimetype for unknown files. + :param cache: enable or disable caching headers. + :param cache_timeout: the cache timeout in seconds for the headers. + """ + + def __init__( + self, + app, + exports, + disallow=None, + cache=True, + cache_timeout=60 * 60 * 12, + fallback_mimetype="text/plain", + ): + self.app = app + self.exports = [] + self.cache = cache + self.cache_timeout = cache_timeout + + if hasattr(exports, "items"): + exports = exports.items() + + for key, value in exports: + if isinstance(value, tuple): + loader = self.get_package_loader(*value) + elif isinstance(value, string_types): + if os.path.isfile(value): + loader = self.get_file_loader(value) + else: + loader = self.get_directory_loader(value) + else: + raise TypeError("unknown def %r" % value) + + self.exports.append((key, loader)) + + if disallow is not None: + from fnmatch import fnmatch + + self.is_allowed = lambda x: not fnmatch(x, disallow) + + self.fallback_mimetype = fallback_mimetype + + def is_allowed(self, filename): + """Subclasses can override this method to disallow the access to + certain files. However by providing `disallow` in the constructor + this method is overwritten. + """ + return True + + def _opener(self, filename): + return lambda: ( + open(filename, "rb"), + datetime.utcfromtimestamp(os.path.getmtime(filename)), + int(os.path.getsize(filename)), + ) + + def get_file_loader(self, filename): + return lambda x: (os.path.basename(filename), self._opener(filename)) + + def get_package_loader(self, package, package_path): + from pkg_resources import DefaultProvider, ResourceManager, get_provider + + loadtime = datetime.utcnow() + provider = get_provider(package) + manager = ResourceManager() + filesystem_bound = isinstance(provider, DefaultProvider) + + def loader(path): + if path is None: + return None, None + + path = posixpath.join(package_path, path) + + if not provider.has_resource(path): + return None, None + + basename = posixpath.basename(path) + + if filesystem_bound: + return ( + basename, + self._opener(provider.get_resource_filename(manager, path)), + ) + + s = provider.get_resource_string(manager, path) + return basename, lambda: (BytesIO(s), loadtime, len(s)) + + return loader + + def get_directory_loader(self, directory): + def loader(path): + if path is not None: + path = os.path.join(directory, path) + else: + path = directory + + if os.path.isfile(path): + return os.path.basename(path), self._opener(path) + + return None, None + + return loader + + def generate_etag(self, mtime, file_size, real_filename): + if not isinstance(real_filename, bytes): + real_filename = real_filename.encode(get_filesystem_encoding()) + + return "wzsdm-%d-%s-%s" % ( + mktime(mtime.timetuple()), + file_size, + adler32(real_filename) & 0xFFFFFFFF, + ) + + def __call__(self, environ, start_response): + cleaned_path = get_path_info(environ) + + if PY2: + cleaned_path = cleaned_path.encode(get_filesystem_encoding()) + + # sanitize the path for non unix systems + cleaned_path = cleaned_path.strip("/") + + for sep in os.sep, os.altsep: + if sep and sep != "/": + cleaned_path = cleaned_path.replace(sep, "/") + + path = "/" + "/".join(x for x in cleaned_path.split("/") if x and x != "..") + file_loader = None + + for search_path, loader in self.exports: + if search_path == path: + real_filename, file_loader = loader(None) + + if file_loader is not None: + break + + if not search_path.endswith("/"): + search_path += "/" + + if path.startswith(search_path): + real_filename, file_loader = loader(path[len(search_path) :]) + + if file_loader is not None: + break + + if file_loader is None or not self.is_allowed(real_filename): + return self.app(environ, start_response) + + guessed_type = mimetypes.guess_type(real_filename) + mime_type = guessed_type[0] or self.fallback_mimetype + f, mtime, file_size = file_loader() + + headers = [("Date", http_date())] + + if self.cache: + timeout = self.cache_timeout + etag = self.generate_etag(mtime, file_size, real_filename) + headers += [ + ("Etag", '"%s"' % etag), + ("Cache-Control", "max-age=%d, public" % timeout), + ] + + if not is_resource_modified(environ, etag, last_modified=mtime): + f.close() + start_response("304 Not Modified", headers) + return [] + + headers.append(("Expires", http_date(time() + timeout))) + else: + headers.append(("Cache-Control", "public")) + + headers.extend( + ( + ("Content-Type", mime_type), + ("Content-Length", str(file_size)), + ("Last-Modified", http_date(mtime)), + ) + ) + start_response("200 OK", headers) + return wrap_file(environ, f) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/posixemulation.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/posixemulation.py new file mode 100644 index 00000000..696b4562 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/posixemulation.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +r""" + werkzeug.posixemulation + ~~~~~~~~~~~~~~~~~~~~~~~ + + Provides a POSIX emulation for some features that are relevant to + web applications. The main purpose is to simplify support for + systems such as Windows NT that are not 100% POSIX compatible. + + Currently this only implements a :func:`rename` function that + follows POSIX semantics. Eg: if the target file already exists it + will be replaced without asking. + + This module was introduced in 0.6.1 and is not a public interface. + It might become one in later versions of Werkzeug. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import errno +import os +import random +import sys +import time + +from ._compat import to_unicode +from .filesystem import get_filesystem_encoding + +can_rename_open_file = False + +if os.name == "nt": + try: + import ctypes + + _MOVEFILE_REPLACE_EXISTING = 0x1 + _MOVEFILE_WRITE_THROUGH = 0x8 + _MoveFileEx = ctypes.windll.kernel32.MoveFileExW + + def _rename(src, dst): + src = to_unicode(src, get_filesystem_encoding()) + dst = to_unicode(dst, get_filesystem_encoding()) + if _rename_atomic(src, dst): + return True + retry = 0 + rv = False + while not rv and retry < 100: + rv = _MoveFileEx( + src, dst, _MOVEFILE_REPLACE_EXISTING | _MOVEFILE_WRITE_THROUGH + ) + if not rv: + time.sleep(0.001) + retry += 1 + return rv + + # new in Vista and Windows Server 2008 + _CreateTransaction = ctypes.windll.ktmw32.CreateTransaction + _CommitTransaction = ctypes.windll.ktmw32.CommitTransaction + _MoveFileTransacted = ctypes.windll.kernel32.MoveFileTransactedW + _CloseHandle = ctypes.windll.kernel32.CloseHandle + can_rename_open_file = True + + def _rename_atomic(src, dst): + ta = _CreateTransaction(None, 0, 0, 0, 0, 1000, "Werkzeug rename") + if ta == -1: + return False + try: + retry = 0 + rv = False + while not rv and retry < 100: + rv = _MoveFileTransacted( + src, + dst, + None, + None, + _MOVEFILE_REPLACE_EXISTING | _MOVEFILE_WRITE_THROUGH, + ta, + ) + if rv: + rv = _CommitTransaction(ta) + break + else: + time.sleep(0.001) + retry += 1 + return rv + finally: + _CloseHandle(ta) + + except Exception: + + def _rename(src, dst): + return False + + def _rename_atomic(src, dst): + return False + + def rename(src, dst): + # Try atomic or pseudo-atomic rename + if _rename(src, dst): + return + # Fall back to "move away and replace" + try: + os.rename(src, dst) + except OSError as e: + if e.errno != errno.EEXIST: + raise + old = "%s-%08x" % (dst, random.randint(0, sys.maxsize)) + os.rename(dst, old) + os.rename(src, dst) + try: + os.unlink(old) + except Exception: + pass + + +else: + rename = os.rename + can_rename_open_file = True diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/routing.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/routing.py new file mode 100644 index 00000000..6b1dd98d --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/routing.py @@ -0,0 +1,2026 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.routing + ~~~~~~~~~~~~~~~~ + + When it comes to combining multiple controller or view functions (however + you want to call them) you need a dispatcher. A simple way would be + applying regular expression tests on the ``PATH_INFO`` and calling + registered callback functions that return the value then. + + This module implements a much more powerful system than simple regular + expression matching because it can also convert values in the URLs and + build URLs. + + Here a simple example that creates an URL map for an application with + two subdomains (www and kb) and some URL rules: + + >>> m = Map([ + ... # Static URLs + ... Rule('/', endpoint='static/index'), + ... Rule('/about', endpoint='static/about'), + ... Rule('/help', endpoint='static/help'), + ... # Knowledge Base + ... Subdomain('kb', [ + ... Rule('/', endpoint='kb/index'), + ... Rule('/browse/', endpoint='kb/browse'), + ... Rule('/browse//', endpoint='kb/browse'), + ... Rule('/browse//', endpoint='kb/browse') + ... ]) + ... ], default_subdomain='www') + + If the application doesn't use subdomains it's perfectly fine to not set + the default subdomain and not use the `Subdomain` rule factory. The endpoint + in the rules can be anything, for example import paths or unique + identifiers. The WSGI application can use those endpoints to get the + handler for that URL. It doesn't have to be a string at all but it's + recommended. + + Now it's possible to create a URL adapter for one of the subdomains and + build URLs: + + >>> c = m.bind('example.com') + >>> c.build("kb/browse", dict(id=42)) + 'http://kb.example.com/browse/42/' + >>> c.build("kb/browse", dict()) + 'http://kb.example.com/browse/' + >>> c.build("kb/browse", dict(id=42, page=3)) + 'http://kb.example.com/browse/42/3' + >>> c.build("static/about") + '/about' + >>> c.build("static/index", force_external=True) + 'http://www.example.com/' + + >>> c = m.bind('example.com', subdomain='kb') + >>> c.build("static/about") + 'http://www.example.com/about' + + The first argument to bind is the server name *without* the subdomain. + Per default it will assume that the script is mounted on the root, but + often that's not the case so you can provide the real mount point as + second argument: + + >>> c = m.bind('example.com', '/applications/example') + + The third argument can be the subdomain, if not given the default + subdomain is used. For more details about binding have a look at the + documentation of the `MapAdapter`. + + And here is how you can match URLs: + + >>> c = m.bind('example.com') + >>> c.match("/") + ('static/index', {}) + >>> c.match("/about") + ('static/about', {}) + >>> c = m.bind('example.com', '/', 'kb') + >>> c.match("/") + ('kb/index', {}) + >>> c.match("/browse/42/23") + ('kb/browse', {'id': 42, 'page': 23}) + + If matching fails you get a `NotFound` exception, if the rule thinks + it's a good idea to redirect (for example because the URL was defined + to have a slash at the end but the request was missing that slash) it + will raise a `RequestRedirect` exception. Both are subclasses of the + `HTTPException` so you can use those errors as responses in the + application. + + If matching succeeded but the URL rule was incompatible to the given + method (for example there were only rules for `GET` and `HEAD` and + routing system tried to match a `POST` request) a `MethodNotAllowed` + exception is raised. + + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import ast +import difflib +import posixpath +import re +import uuid +from pprint import pformat +from threading import Lock + +from ._compat import implements_to_string +from ._compat import iteritems +from ._compat import itervalues +from ._compat import native_string_result +from ._compat import string_types +from ._compat import text_type +from ._compat import to_bytes +from ._compat import to_unicode +from ._compat import wsgi_decoding_dance +from ._internal import _encode_idna +from ._internal import _get_environ +from .datastructures import ImmutableDict +from .datastructures import MultiDict +from .exceptions import BadHost +from .exceptions import HTTPException +from .exceptions import MethodNotAllowed +from .exceptions import NotFound +from .urls import _fast_url_quote +from .urls import url_encode +from .urls import url_join +from .urls import url_quote +from .utils import cached_property +from .utils import format_string +from .utils import redirect +from .wsgi import get_host + +_rule_re = re.compile( + r""" + (?P[^<]*) # static rule data + < + (?: + (?P[a-zA-Z_][a-zA-Z0-9_]*) # converter name + (?:\((?P.*?)\))? # converter arguments + \: # variable delimiter + )? + (?P[a-zA-Z_][a-zA-Z0-9_]*) # variable name + > + """, + re.VERBOSE, +) +_simple_rule_re = re.compile(r"<([^>]+)>") +_converter_args_re = re.compile( + r""" + ((?P\w+)\s*=\s*)? + (?P + True|False| + \d+.\d+| + \d+.| + \d+| + [\w\d_.]+| + [urUR]?(?P"[^"]*?"|'[^']*') + )\s*, + """, + re.VERBOSE | re.UNICODE, +) + + +_PYTHON_CONSTANTS = {"None": None, "True": True, "False": False} + + +def _pythonize(value): + if value in _PYTHON_CONSTANTS: + return _PYTHON_CONSTANTS[value] + for convert in int, float: + try: + return convert(value) + except ValueError: + pass + if value[:1] == value[-1:] and value[0] in "\"'": + value = value[1:-1] + return text_type(value) + + +def parse_converter_args(argstr): + argstr += "," + args = [] + kwargs = {} + + for item in _converter_args_re.finditer(argstr): + value = item.group("stringval") + if value is None: + value = item.group("value") + value = _pythonize(value) + if not item.group("name"): + args.append(value) + else: + name = item.group("name") + kwargs[name] = value + + return tuple(args), kwargs + + +def parse_rule(rule): + """Parse a rule and return it as generator. Each iteration yields tuples + in the form ``(converter, arguments, variable)``. If the converter is + `None` it's a static url part, otherwise it's a dynamic one. + + :internal: + """ + pos = 0 + end = len(rule) + do_match = _rule_re.match + used_names = set() + while pos < end: + m = do_match(rule, pos) + if m is None: + break + data = m.groupdict() + if data["static"]: + yield None, None, data["static"] + variable = data["variable"] + converter = data["converter"] or "default" + if variable in used_names: + raise ValueError("variable name %r used twice." % variable) + used_names.add(variable) + yield converter, data["args"] or None, variable + pos = m.end() + if pos < end: + remaining = rule[pos:] + if ">" in remaining or "<" in remaining: + raise ValueError("malformed url rule: %r" % rule) + yield None, None, remaining + + +class RoutingException(Exception): + """Special exceptions that require the application to redirect, notifying + about missing urls, etc. + + :internal: + """ + + +class RequestRedirect(HTTPException, RoutingException): + """Raise if the map requests a redirect. This is for example the case if + `strict_slashes` are activated and an url that requires a trailing slash. + + The attribute `new_url` contains the absolute destination url. + """ + + code = 308 + + def __init__(self, new_url): + RoutingException.__init__(self, new_url) + self.new_url = new_url + + def get_response(self, environ): + return redirect(self.new_url, self.code) + + +class RequestSlash(RoutingException): + """Internal exception.""" + + +class RequestAliasRedirect(RoutingException): # noqa: B903 + """This rule is an alias and wants to redirect to the canonical URL.""" + + def __init__(self, matched_values): + self.matched_values = matched_values + + +@implements_to_string +class BuildError(RoutingException, LookupError): + """Raised if the build system cannot find a URL for an endpoint with the + values provided. + """ + + def __init__(self, endpoint, values, method, adapter=None): + LookupError.__init__(self, endpoint, values, method) + self.endpoint = endpoint + self.values = values + self.method = method + self.adapter = adapter + + @cached_property + def suggested(self): + return self.closest_rule(self.adapter) + + def closest_rule(self, adapter): + def _score_rule(rule): + return sum( + [ + 0.98 + * difflib.SequenceMatcher( + None, rule.endpoint, self.endpoint + ).ratio(), + 0.01 * bool(set(self.values or ()).issubset(rule.arguments)), + 0.01 * bool(rule.methods and self.method in rule.methods), + ] + ) + + if adapter and adapter.map._rules: + return max(adapter.map._rules, key=_score_rule) + + def __str__(self): + message = [] + message.append("Could not build url for endpoint %r" % self.endpoint) + if self.method: + message.append(" (%r)" % self.method) + if self.values: + message.append(" with values %r" % sorted(self.values.keys())) + message.append(".") + if self.suggested: + if self.endpoint == self.suggested.endpoint: + if self.method and self.method not in self.suggested.methods: + message.append( + " Did you mean to use methods %r?" + % sorted(self.suggested.methods) + ) + missing_values = self.suggested.arguments.union( + set(self.suggested.defaults or ()) + ) - set(self.values.keys()) + if missing_values: + message.append( + " Did you forget to specify values %r?" % sorted(missing_values) + ) + else: + message.append(" Did you mean %r instead?" % self.suggested.endpoint) + return u"".join(message) + + +class ValidationError(ValueError): + """Validation error. If a rule converter raises this exception the rule + does not match the current URL and the next URL is tried. + """ + + +class RuleFactory(object): + """As soon as you have more complex URL setups it's a good idea to use rule + factories to avoid repetitive tasks. Some of them are builtin, others can + be added by subclassing `RuleFactory` and overriding `get_rules`. + """ + + def get_rules(self, map): + """Subclasses of `RuleFactory` have to override this method and return + an iterable of rules.""" + raise NotImplementedError() + + +class Subdomain(RuleFactory): + """All URLs provided by this factory have the subdomain set to a + specific domain. For example if you want to use the subdomain for + the current language this can be a good setup:: + + url_map = Map([ + Rule('/', endpoint='#select_language'), + Subdomain('', [ + Rule('/', endpoint='index'), + Rule('/about', endpoint='about'), + Rule('/help', endpoint='help') + ]) + ]) + + All the rules except for the ``'#select_language'`` endpoint will now + listen on a two letter long subdomain that holds the language code + for the current request. + """ + + def __init__(self, subdomain, rules): + self.subdomain = subdomain + self.rules = rules + + def get_rules(self, map): + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + rule = rule.empty() + rule.subdomain = self.subdomain + yield rule + + +class Submount(RuleFactory): + """Like `Subdomain` but prefixes the URL rule with a given string:: + + url_map = Map([ + Rule('/', endpoint='index'), + Submount('/blog', [ + Rule('/', endpoint='blog/index'), + Rule('/entry/', endpoint='blog/show') + ]) + ]) + + Now the rule ``'blog/show'`` matches ``/blog/entry/``. + """ + + def __init__(self, path, rules): + self.path = path.rstrip("/") + self.rules = rules + + def get_rules(self, map): + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + rule = rule.empty() + rule.rule = self.path + rule.rule + yield rule + + +class EndpointPrefix(RuleFactory): + """Prefixes all endpoints (which must be strings for this factory) with + another string. This can be useful for sub applications:: + + url_map = Map([ + Rule('/', endpoint='index'), + EndpointPrefix('blog/', [Submount('/blog', [ + Rule('/', endpoint='index'), + Rule('/entry/', endpoint='show') + ])]) + ]) + """ + + def __init__(self, prefix, rules): + self.prefix = prefix + self.rules = rules + + def get_rules(self, map): + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + rule = rule.empty() + rule.endpoint = self.prefix + rule.endpoint + yield rule + + +class RuleTemplate(object): + """Returns copies of the rules wrapped and expands string templates in + the endpoint, rule, defaults or subdomain sections. + + Here a small example for such a rule template:: + + from werkzeug.routing import Map, Rule, RuleTemplate + + resource = RuleTemplate([ + Rule('/$name/', endpoint='$name.list'), + Rule('/$name/', endpoint='$name.show') + ]) + + url_map = Map([resource(name='user'), resource(name='page')]) + + When a rule template is called the keyword arguments are used to + replace the placeholders in all the string parameters. + """ + + def __init__(self, rules): + self.rules = list(rules) + + def __call__(self, *args, **kwargs): + return RuleTemplateFactory(self.rules, dict(*args, **kwargs)) + + +class RuleTemplateFactory(RuleFactory): + """A factory that fills in template variables into rules. Used by + `RuleTemplate` internally. + + :internal: + """ + + def __init__(self, rules, context): + self.rules = rules + self.context = context + + def get_rules(self, map): + for rulefactory in self.rules: + for rule in rulefactory.get_rules(map): + new_defaults = subdomain = None + if rule.defaults: + new_defaults = {} + for key, value in iteritems(rule.defaults): + if isinstance(value, string_types): + value = format_string(value, self.context) + new_defaults[key] = value + if rule.subdomain is not None: + subdomain = format_string(rule.subdomain, self.context) + new_endpoint = rule.endpoint + if isinstance(new_endpoint, string_types): + new_endpoint = format_string(new_endpoint, self.context) + yield Rule( + format_string(rule.rule, self.context), + new_defaults, + subdomain, + rule.methods, + rule.build_only, + new_endpoint, + rule.strict_slashes, + ) + + +def _prefix_names(src): + """ast parse and prefix names with `.` to avoid collision with user vars""" + tree = ast.parse(src).body[0] + if isinstance(tree, ast.Expr): + tree = tree.value + for node in ast.walk(tree): + if isinstance(node, ast.Name): + node.id = "." + node.id + return tree + + +_CALL_CONVERTER_CODE_FMT = "self._converters[{elem!r}].to_url()" +_IF_KWARGS_URL_ENCODE_CODE = """\ +if kwargs: + q = '?' + params = self._encode_query_vars(kwargs) +else: + q = params = '' +""" +_IF_KWARGS_URL_ENCODE_AST = _prefix_names(_IF_KWARGS_URL_ENCODE_CODE) +_URL_ENCODE_AST_NAMES = (_prefix_names("q"), _prefix_names("params")) + + +@implements_to_string +class Rule(RuleFactory): + """A Rule represents one URL pattern. There are some options for `Rule` + that change the way it behaves and are passed to the `Rule` constructor. + Note that besides the rule-string all arguments *must* be keyword arguments + in order to not break the application on Werkzeug upgrades. + + `string` + Rule strings basically are just normal URL paths with placeholders in + the format ```` where the converter and the + arguments are optional. If no converter is defined the `default` + converter is used which means `string` in the normal configuration. + + URL rules that end with a slash are branch URLs, others are leaves. + If you have `strict_slashes` enabled (which is the default), all + branch URLs that are matched without a trailing slash will trigger a + redirect to the same URL with the missing slash appended. + + The converters are defined on the `Map`. + + `endpoint` + The endpoint for this rule. This can be anything. A reference to a + function, a string, a number etc. The preferred way is using a string + because the endpoint is used for URL generation. + + `defaults` + An optional dict with defaults for other rules with the same endpoint. + This is a bit tricky but useful if you want to have unique URLs:: + + url_map = Map([ + Rule('/all/', defaults={'page': 1}, endpoint='all_entries'), + Rule('/all/page/', endpoint='all_entries') + ]) + + If a user now visits ``http://example.com/all/page/1`` he will be + redirected to ``http://example.com/all/``. If `redirect_defaults` is + disabled on the `Map` instance this will only affect the URL + generation. + + `subdomain` + The subdomain rule string for this rule. If not specified the rule + only matches for the `default_subdomain` of the map. If the map is + not bound to a subdomain this feature is disabled. + + Can be useful if you want to have user profiles on different subdomains + and all subdomains are forwarded to your application:: + + url_map = Map([ + Rule('/', subdomain='', endpoint='user/homepage'), + Rule('/stats', subdomain='', endpoint='user/stats') + ]) + + `methods` + A sequence of http methods this rule applies to. If not specified, all + methods are allowed. For example this can be useful if you want different + endpoints for `POST` and `GET`. If methods are defined and the path + matches but the method matched against is not in this list or in the + list of another rule for that path the error raised is of the type + `MethodNotAllowed` rather than `NotFound`. If `GET` is present in the + list of methods and `HEAD` is not, `HEAD` is added automatically. + + .. versionchanged:: 0.6.1 + `HEAD` is now automatically added to the methods if `GET` is + present. The reason for this is that existing code often did not + work properly in servers not rewriting `HEAD` to `GET` + automatically and it was not documented how `HEAD` should be + treated. This was considered a bug in Werkzeug because of that. + + `strict_slashes` + Override the `Map` setting for `strict_slashes` only for this rule. If + not specified the `Map` setting is used. + + `build_only` + Set this to True and the rule will never match but will create a URL + that can be build. This is useful if you have resources on a subdomain + or folder that are not handled by the WSGI application (like static data) + + `redirect_to` + If given this must be either a string or callable. In case of a + callable it's called with the url adapter that triggered the match and + the values of the URL as keyword arguments and has to return the target + for the redirect, otherwise it has to be a string with placeholders in + rule syntax:: + + def foo_with_slug(adapter, id): + # ask the database for the slug for the old id. this of + # course has nothing to do with werkzeug. + return 'foo/' + Foo.get_slug_for_id(id) + + url_map = Map([ + Rule('/foo/', endpoint='foo'), + Rule('/some/old/url/', redirect_to='foo/'), + Rule('/other/old/url/', redirect_to=foo_with_slug) + ]) + + When the rule is matched the routing system will raise a + `RequestRedirect` exception with the target for the redirect. + + Keep in mind that the URL will be joined against the URL root of the + script so don't use a leading slash on the target URL unless you + really mean root of that domain. + + `alias` + If enabled this rule serves as an alias for another rule with the same + endpoint and arguments. + + `host` + If provided and the URL map has host matching enabled this can be + used to provide a match rule for the whole host. This also means + that the subdomain feature is disabled. + + .. versionadded:: 0.7 + The `alias` and `host` parameters were added. + """ + + def __init__( + self, + string, + defaults=None, + subdomain=None, + methods=None, + build_only=False, + endpoint=None, + strict_slashes=None, + redirect_to=None, + alias=False, + host=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 = None + self.strict_slashes = strict_slashes + self.subdomain = subdomain + self.host = host + self.defaults = defaults + self.build_only = build_only + self.alias = alias + if methods is None: + self.methods = None + else: + if isinstance(methods, str): + raise TypeError("param `methods` should be `Iterable[str]`, not `str`") + self.methods = set([x.upper() for x in methods]) + if "HEAD" not in self.methods and "GET" in self.methods: + self.methods.add("HEAD") + self.endpoint = endpoint + self.redirect_to = redirect_to + + if defaults: + self.arguments = set(map(str, defaults)) + else: + self.arguments = set() + self._trace = self._converters = self._regex = self._argument_weights = None + + def empty(self): + """ + Return an unbound copy of this rule. + + This can be useful if want to reuse an already bound URL for another + map. See ``get_empty_kwargs`` to override what keyword arguments are + provided to the new copy. + """ + return type(self)(self.rule, **self.get_empty_kwargs()) + + def get_empty_kwargs(self): + """ + Provides kwargs for instantiating empty copy with empty() + + Use this method to provide custom keyword arguments to the subclass of + ``Rule`` when calling ``some_rule.empty()``. Helpful when the subclass + has custom keyword arguments that are needed at instantiation. + + Must return a ``dict`` that will be provided as kwargs to the new + instance of ``Rule``, following the initial ``self.rule`` value which + is always provided as the first, required positional argument. + """ + defaults = None + if self.defaults: + defaults = dict(self.defaults) + return dict( + defaults=defaults, + subdomain=self.subdomain, + methods=self.methods, + build_only=self.build_only, + endpoint=self.endpoint, + strict_slashes=self.strict_slashes, + redirect_to=self.redirect_to, + alias=self.alias, + host=self.host, + ) + + def get_rules(self, map): + yield self + + def refresh(self): + """Rebinds and refreshes the URL. Call this if you modified the + rule in place. + + :internal: + """ + self.bind(self.map, rebind=True) + + def bind(self, map, rebind=False): + """Bind the url to a map and create a regular expression based on + the information from the rule itself and the defaults from the map. + + :internal: + """ + if self.map is not None and not rebind: + raise RuntimeError("url rule %r already bound to map %r" % (self, self.map)) + self.map = map + if self.strict_slashes is None: + self.strict_slashes = map.strict_slashes + if self.subdomain is None: + self.subdomain = map.default_subdomain + self.compile() + + def get_converter(self, variable_name, converter_name, args, kwargs): + """Looks up the converter for the given parameter. + + .. versionadded:: 0.9 + """ + if converter_name not in self.map.converters: + raise LookupError("the converter %r does not exist" % converter_name) + return self.map.converters[converter_name](self.map, *args, **kwargs) + + def _encode_query_vars(self, query_vars): + return url_encode( + query_vars, + charset=self.map.charset, + sort=self.map.sort_parameters, + key=self.map.sort_key, + ) + + def compile(self): + """Compiles the regular expression and stores it.""" + assert self.map is not None, "rule not bound" + + if self.map.host_matching: + domain_rule = self.host or "" + else: + domain_rule = self.subdomain or "" + + self._trace = [] + self._converters = {} + self._static_weights = [] + self._argument_weights = [] + regex_parts = [] + + def _build_regex(rule): + index = 0 + for converter, arguments, variable in parse_rule(rule): + if converter is None: + regex_parts.append(re.escape(variable)) + self._trace.append((False, variable)) + for part in variable.split("/"): + if part: + self._static_weights.append((index, -len(part))) + else: + if arguments: + c_args, c_kwargs = parse_converter_args(arguments) + else: + c_args = () + c_kwargs = {} + convobj = self.get_converter(variable, converter, c_args, c_kwargs) + regex_parts.append("(?P<%s>%s)" % (variable, convobj.regex)) + self._converters[variable] = convobj + self._trace.append((True, variable)) + self._argument_weights.append(convobj.weight) + self.arguments.add(str(variable)) + index = index + 1 + + _build_regex(domain_rule) + regex_parts.append("\\|") + self._trace.append((False, "|")) + _build_regex(self.rule if self.is_leaf else self.rule.rstrip("/")) + if not self.is_leaf: + self._trace.append((False, "/")) + + self._build = self._compile_builder(False).__get__(self, None) + self._build_unknown = self._compile_builder(True).__get__(self, None) + + if self.build_only: + return + regex = r"^%s%s$" % ( + u"".join(regex_parts), + (not self.is_leaf or not self.strict_slashes) + and "(?/?)" + or "", + ) + self._regex = re.compile(regex, re.UNICODE) + + def match(self, path, method=None): + """Check if the rule matches a given path. Path is a string in the + form ``"subdomain|/path"`` and is assembled by the map. If + the map is doing host matching the subdomain part will be the host + instead. + + If the rule matches a dict with the converted values is returned, + otherwise the return value is `None`. + + :internal: + """ + if not self.build_only: + 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 + ) + ): + raise RequestSlash() + # if we are not in strict slashes mode we have to remove + # a __suffix__ + elif not self.strict_slashes: + del groups["__suffix__"] + + result = {} + for name, value in iteritems(groups): + try: + value = self._converters[name].to_python(value) + except ValidationError: + return + result[str(name)] = value + if self.defaults: + result.update(self.defaults) + + if self.alias and self.map.redirect_defaults: + raise RequestAliasRedirect(result) + + return result + + @staticmethod + def _get_func_code(code, name): + globs, locs = {}, {} + exec(code, globs, locs) + return locs[name] + + def _compile_builder(self, append_unknown=True): + defaults = self.defaults or {} + dom_ops = [] + url_ops = [] + + opl = dom_ops + for is_dynamic, data in self._trace: + if data == "|" and opl is dom_ops: + opl = url_ops + continue + # this seems like a silly case to ever come up but: + # if a default is given for a value that appears in the rule, + # resolve it to a constant ahead of time + if is_dynamic and data in defaults: + data = self._converters[data].to_url(defaults[data]) + opl.append((False, data)) + elif not is_dynamic: + opl.append( + (False, url_quote(to_bytes(data, self.map.charset), safe="/:|+")) + ) + else: + opl.append((True, data)) + + def _convert(elem): + ret = _prefix_names(_CALL_CONVERTER_CODE_FMT.format(elem=elem)) + ret.args = [ast.Name(str(elem), ast.Load())] # str for py2 + return ret + + def _parts(ops): + parts = [ + _convert(elem) if is_dynamic else ast.Str(s=elem) + for is_dynamic, elem in ops + ] + parts = parts or [ast.Str("")] + # constant fold + ret = [parts[0]] + for p in parts[1:]: + if isinstance(p, ast.Str) and isinstance(ret[-1], ast.Str): + ret[-1] = ast.Str(ret[-1].s + p.s) + else: + ret.append(p) + return ret + + dom_parts = _parts(dom_ops) + url_parts = _parts(url_ops) + if not append_unknown: + body = [] + else: + body = [_IF_KWARGS_URL_ENCODE_AST] + url_parts.extend(_URL_ENCODE_AST_NAMES) + + def _join(parts): + if len(parts) == 1: # shortcut + return parts[0] + elif hasattr(ast, "JoinedStr"): # py36+ + return ast.JoinedStr(parts) + else: + call = _prefix_names('"".join()') + call.args = [ast.Tuple(parts, ast.Load())] + return call + + body.append( + ast.Return(ast.Tuple([_join(dom_parts), _join(url_parts)], ast.Load())) + ) + + # str is necessary for python2 + pargs = [ + str(elem) + for is_dynamic, elem in dom_ops + url_ops + if is_dynamic and elem not in defaults + ] + kargs = [str(k) for k in defaults] + + func_ast = _prefix_names("def _(): pass") + func_ast.name = "".format(self.rule) + if hasattr(ast, "arg"): # py3 + func_ast.args.args.append(ast.arg(".self", None)) + for arg in pargs + kargs: + func_ast.args.args.append(ast.arg(arg, None)) + func_ast.args.kwarg = ast.arg(".kwargs", None) + else: + func_ast.args.args.append(ast.Name(".self", ast.Load())) + for arg in pargs + kargs: + func_ast.args.args.append(ast.Name(arg, ast.Load())) + func_ast.args.kwarg = ".kwargs" + for _ in kargs: + func_ast.args.defaults.append(ast.Str("")) + func_ast.body = body + + module = ast.fix_missing_locations(ast.Module([func_ast])) + code = compile(module, "", "exec") + return self._get_func_code(code, func_ast.name) + + def build(self, values, append_unknown=True): + """Assembles the relative url for that rule and the subdomain. + If building doesn't work for some reasons `None` is returned. + + :internal: + """ + try: + if append_unknown: + return self._build_unknown(**values) + else: + return self._build(**values) + except ValidationError: + return None + + def provides_defaults_for(self, rule): + """Check if this rule has defaults for a given rule. + + :internal: + """ + return ( + not self.build_only + and self.defaults + and self.endpoint == rule.endpoint + and self != rule + and self.arguments == rule.arguments + ) + + def suitable_for(self, values, method=None): + """Check if the dict of values has enough data for url generation. + + :internal: + """ + # if a method was given explicitly and that method is not supported + # by this rule, this rule is not suitable. + if ( + method is not None + and self.methods is not None + and method not in self.methods + ): + return False + + defaults = self.defaults or () + + # all arguments required must be either in the defaults dict or + # the value dictionary otherwise it's not suitable + for key in self.arguments: + if key not in defaults and key not in values: + return False + + # in case defaults are given we ensure that either the value was + # skipped or the value is the same as the default value. + if defaults: + for key, value in iteritems(defaults): + if key in values and value != values[key]: + return False + + return True + + def match_compare_key(self): + """The match compare key for sorting. + + Current implementation: + + 1. rules without any arguments come first for performance + reasons only as we expect them to match faster and some + common ones usually don't have any arguments (index pages etc.) + 2. rules with more static parts come first so the second argument + is the negative length of the number of the static weights. + 3. we order by static weights, which is a combination of index + and length + 4. The more complex rules come first so the next argument is the + negative length of the number of argument weights. + 5. lastly we order by the actual argument weights. + + :internal: + """ + return ( + bool(self.arguments), + -len(self._static_weights), + self._static_weights, + -len(self._argument_weights), + self._argument_weights, + ) + + def build_compare_key(self): + """The build compare key for sorting. + + :internal: + """ + return 1 if self.alias else 0, -len(self.arguments), -len(self.defaults or ()) + + def __eq__(self, other): + return self.__class__ is other.__class__ and self._trace == other._trace + + __hash__ = None + + def __ne__(self, other): + return not self.__eq__(other) + + def __str__(self): + return self.rule + + @native_string_result + def __repr__(self): + if self.map is None: + return u"<%s (unbound)>" % self.__class__.__name__ + tmp = [] + for is_dynamic, data in self._trace: + if is_dynamic: + tmp.append(u"<%s>" % data) + else: + tmp.append(data) + return u"<%s %s%s -> %s>" % ( + self.__class__.__name__, + repr((u"".join(tmp)).lstrip(u"|")).lstrip(u"u"), + self.methods is not None and u" (%s)" % u", ".join(self.methods) or u"", + self.endpoint, + ) + + +class BaseConverter(object): + """Base class for all converters.""" + + regex = "[^/]+" + weight = 100 + + def __init__(self, map): + self.map = map + + def to_python(self, value): + return value + + def to_url(self, value): + if isinstance(value, (bytes, bytearray)): + return _fast_url_quote(value) + return _fast_url_quote(text_type(value).encode(self.map.charset)) + + +class UnicodeConverter(BaseConverter): + """This converter is the default converter and accepts any string but + only one path segment. Thus the string can not include a slash. + + This is the default validator. + + Example:: + + Rule('/pages/'), + Rule('/') + + :param map: the :class:`Map`. + :param minlength: the minimum length of the string. Must be greater + or equal 1. + :param maxlength: the maximum length of the string. + :param length: the exact length of the string. + """ + + def __init__(self, map, minlength=1, maxlength=None, length=None): + BaseConverter.__init__(self, map) + if length is not None: + length = "{%d}" % int(length) + else: + if maxlength is None: + maxlength = "" + else: + maxlength = int(maxlength) + length = "{%s,%s}" % (int(minlength), maxlength) + self.regex = "[^/]" + length + + +class AnyConverter(BaseConverter): + """Matches one of the items provided. Items can either be Python + identifiers or strings:: + + Rule('/') + + :param map: the :class:`Map`. + :param items: this function accepts the possible items as positional + arguments. + """ + + def __init__(self, map, *items): + BaseConverter.__init__(self, map) + self.regex = "(?:%s)" % "|".join([re.escape(x) for x in items]) + + +class PathConverter(BaseConverter): + """Like the default :class:`UnicodeConverter`, but it also matches + slashes. This is useful for wikis and similar applications:: + + Rule('/') + Rule('//edit') + + :param map: the :class:`Map`. + """ + + regex = "[^/].*?" + weight = 200 + + +class NumberConverter(BaseConverter): + """Baseclass for `IntegerConverter` and `FloatConverter`. + + :internal: + """ + + weight = 50 + + def __init__(self, map, fixed_digits=0, min=None, max=None, signed=False): + if signed: + self.regex = self.signed_regex + BaseConverter.__init__(self, map) + self.fixed_digits = fixed_digits + self.min = min + self.max = max + self.signed = signed + + def to_python(self, value): + if self.fixed_digits and len(value) != self.fixed_digits: + raise ValidationError() + value = self.num_convert(value) + if (self.min is not None and value < self.min) or ( + self.max is not None and value > self.max + ): + raise ValidationError() + return value + + def to_url(self, value): + value = self.num_convert(value) + if self.fixed_digits: + value = ("%%0%sd" % self.fixed_digits) % value + return str(value) + + @property + def signed_regex(self): + return r"-?" + self.regex + + +class IntegerConverter(NumberConverter): + """This converter only accepts integer values:: + + Rule("/page/") + + By default it only accepts unsigned, positive values. The ``signed`` + parameter will enable signed, negative values. :: + + Rule("/page/") + + :param map: The :class:`Map`. + :param fixed_digits: The number of fixed digits in the URL. If you + set this to ``4`` for example, the rule will only match if the + URL looks like ``/0001/``. The default is variable length. + :param min: The minimal value. + :param max: The maximal value. + :param signed: Allow signed (negative) values. + + .. versionadded:: 0.15 + The ``signed`` parameter. + """ + + regex = r"\d+" + num_convert = int + + +class FloatConverter(NumberConverter): + """This converter only accepts floating point values:: + + Rule("/probability/") + + By default it only accepts unsigned, positive values. The ``signed`` + parameter will enable signed, negative values. :: + + Rule("/offset/") + + :param map: The :class:`Map`. + :param min: The minimal value. + :param max: The maximal value. + :param signed: Allow signed (negative) values. + + .. versionadded:: 0.15 + The ``signed`` parameter. + """ + + regex = r"\d+\.\d+" + num_convert = float + + def __init__(self, map, min=None, max=None, signed=False): + NumberConverter.__init__(self, map, min=min, max=max, signed=signed) + + +class UUIDConverter(BaseConverter): + """This converter only accepts UUID strings:: + + Rule('/object/') + + .. versionadded:: 0.10 + + :param map: the :class:`Map`. + """ + + regex = ( + r"[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-" + r"[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}" + ) + + def to_python(self, value): + return uuid.UUID(value) + + def to_url(self, value): + return str(value) + + +#: the default converter mapping for the map. +DEFAULT_CONVERTERS = { + "default": UnicodeConverter, + "string": UnicodeConverter, + "any": AnyConverter, + "path": PathConverter, + "int": IntegerConverter, + "float": FloatConverter, + "uuid": UUIDConverter, +} + + +class Map(object): + """The map class stores all the URL rules and some configuration + parameters. Some of the configuration values are only stored on the + `Map` instance since those affect all rules, others are just defaults + and can be overridden for each rule. Note that you have to specify all + arguments besides the `rules` as keyword arguments! + + :param rules: sequence of url rules for this map. + :param default_subdomain: The default subdomain for rules without a + subdomain defined. + :param charset: charset of the url. defaults to ``"utf-8"`` + :param strict_slashes: Take care of trailing slashes. + :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. + + .. versionadded:: 0.5 + `sort_parameters` and `sort_key` was added. + + .. versionadded:: 0.7 + `encoding_errors` and `host_matching` was added. + """ + + #: A dict of default converters to be used. + default_converters = ImmutableDict(DEFAULT_CONVERTERS) + + def __init__( + self, + rules=None, + default_subdomain="", + charset="utf-8", + strict_slashes=True, + redirect_defaults=True, + converters=None, + sort_parameters=False, + sort_key=None, + encoding_errors="replace", + host_matching=False, + ): + self._rules = [] + self._rules_by_endpoint = {} + self._remap = True + self._remap_lock = Lock() + + self.default_subdomain = default_subdomain + self.charset = charset + self.encoding_errors = encoding_errors + self.strict_slashes = strict_slashes + self.redirect_defaults = redirect_defaults + self.host_matching = host_matching + + self.converters = self.default_converters.copy() + if converters: + self.converters.update(converters) + + self.sort_parameters = sort_parameters + self.sort_key = sort_key + + for rulefactory in rules or (): + self.add(rulefactory) + + def is_endpoint_expecting(self, endpoint, *arguments): + """Iterate over all rules and check if the endpoint expects + the arguments provided. This is for example useful if you have + some URLs that expect a language code and others that do not and + you want to wrap the builder a bit so that the current language + code is automatically added if not provided but endpoints expect + it. + + :param endpoint: the endpoint to check. + :param arguments: this function accepts one or more arguments + as positional arguments. Each one of them is + checked. + """ + self.update() + arguments = set(arguments) + for rule in self._rules_by_endpoint[endpoint]: + if arguments.issubset(rule.arguments): + return True + return False + + def iter_rules(self, endpoint=None): + """Iterate over all rules or the rules of an endpoint. + + :param endpoint: if provided only the rules for that endpoint + are returned. + :return: an iterator + """ + self.update() + if endpoint is not None: + return iter(self._rules_by_endpoint[endpoint]) + return iter(self._rules) + + def add(self, rulefactory): + """Add a new rule or factory to the map and bind it. Requires that the + rule is not bound to another map. + + :param rulefactory: a :class:`Rule` or :class:`RuleFactory` + """ + for rule in rulefactory.get_rules(self): + rule.bind(self) + self._rules.append(rule) + self._rules_by_endpoint.setdefault(rule.endpoint, []).append(rule) + self._remap = True + + def bind( + self, + server_name, + script_name=None, + subdomain=None, + url_scheme="http", + default_method="GET", + path_info=None, + query_args=None, + ): + """Return a new :class:`MapAdapter` with the details specified to the + call. Note that `script_name` will default to ``'/'`` if not further + specified or `None`. The `server_name` at least is a requirement + because the HTTP RFC requires absolute URLs for redirects and so all + redirect exceptions raised by Werkzeug will contain the full canonical + URL. + + If no path_info is passed to :meth:`match` it will use the default path + info passed to bind. While this doesn't really make sense for + manual bind calls, it's useful if you bind a map to a WSGI + environment which already contains the path info. + + `subdomain` will default to the `default_subdomain` for this map if + no defined. If there is no `default_subdomain` you cannot use the + subdomain feature. + + .. versionadded:: 0.7 + `query_args` added + + .. versionadded:: 0.8 + `query_args` can now also be a string. + + .. versionchanged:: 0.15 + ``path_info`` defaults to ``'/'`` if ``None``. + """ + server_name = server_name.lower() + if self.host_matching: + if subdomain is not None: + raise RuntimeError("host matching enabled and a subdomain was provided") + elif subdomain is None: + subdomain = self.default_subdomain + if script_name is None: + script_name = "/" + if path_info is None: + path_info = "/" + try: + server_name = _encode_idna(server_name) + except UnicodeError: + raise BadHost() + return MapAdapter( + self, + server_name, + script_name, + subdomain, + url_scheme, + path_info, + default_method, + query_args, + ) + + def bind_to_environ(self, environ, server_name=None, subdomain=None): + """Like :meth:`bind` but you can pass it an WSGI environment and it + will fetch the information from that dictionary. Note that because of + limitations in the protocol there is no way to get the current + subdomain and real `server_name` from the environment. If you don't + provide it, Werkzeug will use `SERVER_NAME` and `SERVER_PORT` (or + `HTTP_HOST` if provided) as used `server_name` with disabled subdomain + feature. + + If `subdomain` is `None` but an environment and a server name is + provided it will calculate the current subdomain automatically. + Example: `server_name` is ``'example.com'`` and the `SERVER_NAME` + in the wsgi `environ` is ``'staging.dev.example.com'`` the calculated + subdomain will be ``'staging.dev'``. + + If the object passed as environ has an environ attribute, the value of + this attribute is used instead. This allows you to pass request + objects. Additionally `PATH_INFO` added as a default of the + :class:`MapAdapter` so that you don't have to pass the path info to + the match method. + + .. versionchanged:: 0.5 + previously this method accepted a bogus `calculate_subdomain` + parameter that did not have any effect. It was removed because + of that. + + .. versionchanged:: 0.8 + This will no longer raise a ValueError when an unexpected server + name was passed. + + :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() + + if server_name is None: + server_name = wsgi_server_name + else: + server_name = server_name.lower() + + 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 + # accesssed 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. + subdomain = "" + else: + subdomain = ".".join(filter(None, cur_server_name[:offset])) + + def _get_wsgi_string(name): + val = environ.get(name) + if val is not None: + return wsgi_decoding_dance(val, self.charset) + + script_name = _get_wsgi_string("SCRIPT_NAME") + path_info = _get_wsgi_string("PATH_INFO") + query_args = _get_wsgi_string("QUERY_STRING") + return Map.bind( + self, + server_name, + script_name, + subdomain, + environ["wsgi.url_scheme"], + environ["REQUEST_METHOD"], + path_info, + query_args=query_args, + ) + + def update(self): + """Called before matching and building to keep the compiled rules + in the correct order after things changed. + """ + if not self._remap: + return + + with self._remap_lock: + if not self._remap: + return + + self._rules.sort(key=lambda x: x.match_compare_key()) + for rules in itervalues(self._rules_by_endpoint): + rules.sort(key=lambda x: x.build_compare_key()) + self._remap = False + + def __repr__(self): + rules = self.iter_rules() + return "%s(%s)" % (self.__class__.__name__, pformat(list(rules))) + + +class MapAdapter(object): + + """Returned by :meth:`Map.bind` or :meth:`Map.bind_to_environ` and does + the URL matching and building based on runtime information. + """ + + def __init__( + self, + map, + server_name, + script_name, + subdomain, + url_scheme, + path_info, + default_method, + query_args=None, + ): + self.map = map + self.server_name = to_unicode(server_name) + script_name = to_unicode(script_name) + if not script_name.endswith(u"/"): + script_name += u"/" + self.script_name = script_name + self.subdomain = to_unicode(subdomain) + self.url_scheme = to_unicode(url_scheme) + self.path_info = to_unicode(path_info) + self.default_method = to_unicode(default_method) + self.query_args = query_args + + def dispatch( + self, view_func, path_info=None, method=None, catch_http_exceptions=False + ): + """Does the complete dispatching process. `view_func` is called with + the endpoint and a dict with the values for the view. It should + look up the view function, call it, and return a response object + or WSGI application. http exceptions are not caught by default + so that applications can display nicer error messages by just + catching them by hand. If you want to stick with the default + error messages you can pass it ``catch_http_exceptions=True`` and + it will catch the http exceptions. + + Here a small example for the dispatch usage:: + + from werkzeug.wrappers import Request, Response + from werkzeug.wsgi import responder + from werkzeug.routing import Map, Rule + + def on_index(request): + return Response('Hello from the index') + + url_map = Map([Rule('/', endpoint='index')]) + views = {'index': on_index} + + @responder + def application(environ, start_response): + request = Request(environ) + urls = url_map.bind_to_environ(environ) + return urls.dispatch(lambda e, v: views[e](request, **v), + catch_http_exceptions=True) + + Keep in mind that this method might return exception objects, too, so + use :class:`Response.force_type` to get a response object. + + :param view_func: a function that is called with the endpoint as + first argument and the value dict as second. Has + to dispatch to the actual view function with this + information. (see above) + :param path_info: the path info to use for matching. Overrides the + path info specified on binding. + :param method: the HTTP method used for matching. Overrides the + method specified on binding. + :param catch_http_exceptions: set to `True` to catch any of the + werkzeug :class:`HTTPException`\\s. + """ + try: + try: + endpoint, args = self.match(path_info, method) + except RequestRedirect as e: + return e + return view_func(endpoint, args) + except HTTPException as e: + if catch_http_exceptions: + return e + raise + + def match(self, path_info=None, method=None, return_rule=False, query_args=None): + """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 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. + + .. versionadded:: 0.6 + `return_rule` was added. + + .. versionadded:: 0.7 + `query_args` was added. + + .. versionchanged:: 0.8 + `query_args` can now also be a string. + """ + self.map.update() + if path_info is None: + path_info = self.path_info + else: + path_info = to_unicode(path_info, self.map.charset) + if query_args is None: + query_args = self.query_args + method = (method or self.default_method).upper() + + path = u"%s|%s" % ( + self.map.host_matching and self.server_name or self.subdomain, + path_info and "/%s" % path_info.lstrip("/"), + ) + + have_match_for = set() + for rule in self.map._rules: + try: + rv = rule.match(path, method) + except RequestSlash: + raise RequestRedirect( + self.make_redirect_url( + url_quote(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 self.map.redirect_defaults: + redirect_url = self.get_default_redirect(rule, method, rv, query_args) + if redirect_url is not None: + raise RequestRedirect(redirect_url) + + if rule.redirect_to is not None: + if isinstance(rule.redirect_to, string_types): + + def _handle_match(match): + value = rv[match.group(1)] + return rule._converters[match.group(1)].to_url(value) + + redirect_url = _simple_rule_re.sub(_handle_match, rule.redirect_to) + else: + redirect_url = rule.redirect_to(self, **rv) + raise RequestRedirect( + str( + url_join( + "%s://%s%s%s" + % ( + self.url_scheme or "http", + self.subdomain + "." if self.subdomain else "", + self.server_name, + self.script_name, + ), + redirect_url, + ) + ) + ) + + if return_rule: + return rule, rv + else: + return rule.endpoint, rv + + if have_match_for: + raise MethodNotAllowed(valid_methods=list(have_match_for)) + raise NotFound() + + def test(self, path_info=None, method=None): + """Test if a rule would match. Works like `match` but returns `True` + if the URL matches, or `False` if it does not exist. + + :param path_info: the path info to use for matching. Overrides the + path info specified on binding. + :param method: the HTTP method used for matching. Overrides the + method specified on binding. + """ + try: + self.match(path_info, method) + except RequestRedirect: + pass + except HTTPException: + return False + return True + + def allowed_methods(self, path_info=None): + """Returns the valid methods that match for a given path. + + .. versionadded:: 0.7 + """ + try: + self.match(path_info, method="--") + except MethodNotAllowed as e: + return e.valid_methods + except HTTPException: + pass + return [] + + def get_host(self, domain_part): + """Figures out the full host name for the given domain part. The + domain part is a subdomain in case host matching is disabled or + a full host name. + """ + if self.map.host_matching: + if domain_part is None: + return self.server_name + return to_unicode(domain_part, "ascii") + subdomain = domain_part + if subdomain is None: + subdomain = self.subdomain + else: + subdomain = to_unicode(subdomain, "ascii") + return (subdomain + u"." if subdomain else u"") + self.server_name + + def get_default_redirect(self, rule, method, values, query_args): + """A helper that returns the URL to redirect to if it finds one. + This is used for default redirecting only. + + :internal: + """ + assert self.map.redirect_defaults + for r in self.map._rules_by_endpoint[rule.endpoint]: + # every rule that comes after this one, including ourself + # has a lower priority for the defaults. We order the ones + # with the highest priority up for building. + if r is rule: + break + if r.provides_defaults_for(rule) and r.suitable_for(values, method): + values.update(r.defaults) + domain_part, path = r.build(values) + return self.make_redirect_url(path, query_args, domain_part=domain_part) + + def encode_query_args(self, query_args): + if not isinstance(query_args, string_types): + query_args = url_encode(query_args, self.map.charset) + return query_args + + def make_redirect_url(self, path_info, query_args=None, domain_part=None): + """Creates a redirect URL. + + :internal: + """ + suffix = "" + if query_args: + suffix = "?" + self.encode_query_args(query_args) + return str( + "%s://%s/%s%s" + % ( + self.url_scheme or "http", + self.get_host(domain_part), + posixpath.join( + self.script_name[:-1].lstrip("/"), path_info.lstrip("/") + ), + suffix, + ) + ) + + def make_alias_redirect_url(self, path, endpoint, values, method, query_args): + """Internally called to make an alias redirect URL.""" + url = self.build( + endpoint, values, method, append_unknown=False, force_external=True + ) + if query_args: + url += "?" + self.encode_query_args(query_args) + assert url != path, "detected invalid alias setting. No canonical URL found" + return url + + def _partial_build(self, endpoint, values, method, append_unknown): + """Helper for :meth:`build`. Returns subdomain and path for the + rule that accepts this endpoint, values and method. + + :internal: + """ + # in case the method is none, try with the default method first + if method is None: + rv = self._partial_build( + endpoint, values, self.default_method, append_unknown + ) + if rv is not None: + return rv + + # default method did not match or a specific method is passed, + # check all and go with first result. + for rule in self.map._rules_by_endpoint.get(endpoint, ()): + if rule.suitable_for(values, method): + rv = rule.build(values, append_unknown) + if rv is not None: + return rv + + def build( + self, + endpoint, + values=None, + method=None, + force_external=False, + append_unknown=True, + ): + """Building URLs works pretty much the other way round. Instead of + `match` you call `build` and pass it the endpoint and a dict of + arguments for the placeholders. + + The `build` function also accepts an argument called `force_external` + which, if you set it to `True` will force external URLs. Per default + external URLs (include the server name) will only be used if the + target URL is on a different subdomain. + + >>> m = Map([ + ... Rule('/', endpoint='index'), + ... Rule('/downloads/', endpoint='downloads/index'), + ... Rule('/downloads/', endpoint='downloads/show') + ... ]) + >>> urls = m.bind("example.com", "/") + >>> urls.build("index", {}) + '/' + >>> urls.build("downloads/show", {'id': 42}) + '/downloads/42' + >>> urls.build("downloads/show", {'id': 42}, force_external=True) + 'http://example.com/downloads/42' + + Because URLs cannot contain non ASCII data you will always get + bytestrings back. Non ASCII characters are urlencoded with the + charset defined on the map instance. + + Additional values are converted to unicode and appended to the URL as + URL querystring parameters: + + >>> urls.build("index", {'q': 'My Searchstring'}) + '/?q=My+Searchstring' + + When processing those additional values, lists are furthermore + interpreted as multiple values (as per + :py:class:`werkzeug.datastructures.MultiDict`): + + >>> urls.build("index", {'q': ['a', 'b', 'c']}) + '/?q=a&q=b&q=c' + + Passing a ``MultiDict`` will also add multiple values: + + >>> urls.build("index", MultiDict((('p', 'z'), ('q', 'a'), ('q', 'b')))) + '/?p=z&q=a&q=b' + + If a rule does not exist when building a `BuildError` exception is + raised. + + The build method accepts an argument called `method` which allows you + to specify the method you want to have an URL built for if you have + different methods for the same endpoint specified. + + .. versionadded:: 0.6 + the `append_unknown` parameter was added. + + :param endpoint: the endpoint of the URL to build. + :param values: the values for the URL to build. Unhandled values are + appended to the URL as query parameters. + :param method: the HTTP method for the rule if there are different + URLs for different methods on the same endpoint. + :param force_external: enforce full canonical external URLs. If the URL + scheme is not provided, this will generate + a protocol-relative URL. + :param append_unknown: unknown parameters are appended to the generated + URL as query string argument. Disable this + if you want the builder to ignore those. + """ + self.map.update() + + if values: + if isinstance(values, MultiDict): + temp_values = {} + # iteritems(dict, values) is like `values.lists()` + # without the call or `list()` coercion overhead. + for key, value in iteritems(dict, values): + if not value: + continue + if len(value) == 1: # flatten single item lists + value = value[0] + if value is None: # drop None + continue + temp_values[key] = value + values = temp_values + else: + # drop None + values = dict(i for i in iteritems(values) if i[1] is not None) + else: + values = {} + + rv = self._partial_build(endpoint, values, method, append_unknown) + if rv is None: + raise BuildError(endpoint, values, method, self) + domain_part, path = rv + + host = self.get_host(domain_part) + + # shortcut this. + if not force_external and ( + (self.map.host_matching and host == self.server_name) + or (not self.map.host_matching and domain_part == self.subdomain) + ): + return "%s/%s" % (self.script_name.rstrip("/"), path.lstrip("/")) + return str( + "%s//%s%s/%s" + % ( + self.url_scheme + ":" if self.url_scheme else "", + host, + self.script_name[:-1], + path.lstrip("/"), + ) + ) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/security.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/security.py new file mode 100644 index 00000000..1842afd0 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/security.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.security + ~~~~~~~~~~~~~~~~~ + + Security related helpers such as secure password hashing tools. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import hashlib +import hmac +import os +import posixpath +from random import SystemRandom +from struct import Struct + +from ._compat import izip +from ._compat import PY2 +from ._compat import range_type +from ._compat import text_type +from ._compat import to_bytes +from ._compat import to_native + +SALT_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +DEFAULT_PBKDF2_ITERATIONS = 150000 + +_pack_int = Struct(">I").pack +_builtin_safe_str_cmp = getattr(hmac, "compare_digest", None) +_sys_rng = SystemRandom() +_os_alt_seps = list( + sep for sep in [os.path.sep, os.path.altsep] if sep not in (None, "/") +) + + +def pbkdf2_hex( + data, salt, iterations=DEFAULT_PBKDF2_ITERATIONS, keylen=None, hashfunc=None +): + """Like :func:`pbkdf2_bin`, but returns a hex-encoded string. + + .. versionadded:: 0.9 + + :param data: the data to derive. + :param salt: the salt for the derivation. + :param iterations: the number of iterations. + :param keylen: the length of the resulting key. If not provided, + the digest size will be used. + :param hashfunc: the hash function to use. This can either be the + string name of a known hash function, or a function + from the hashlib module. Defaults to sha256. + """ + rv = pbkdf2_bin(data, salt, iterations, keylen, hashfunc) + return to_native(codecs.encode(rv, "hex_codec")) + + +def pbkdf2_bin( + data, salt, iterations=DEFAULT_PBKDF2_ITERATIONS, keylen=None, hashfunc=None +): + """Returns a binary digest for the PBKDF2 hash algorithm of `data` + with the given `salt`. It iterates `iterations` times and produces a + key of `keylen` bytes. By default, SHA-256 is used as hash function; + a different hashlib `hashfunc` can be provided. + + .. versionadded:: 0.9 + + :param data: the data to derive. + :param salt: the salt for the derivation. + :param iterations: the number of iterations. + :param keylen: the length of the resulting key. If not provided + the digest size will be used. + :param hashfunc: the hash function to use. This can either be the + string name of a known hash function or a function + from the hashlib module. Defaults to sha256. + """ + if not hashfunc: + hashfunc = "sha256" + + data = to_bytes(data) + salt = to_bytes(salt) + + if callable(hashfunc): + _test_hash = hashfunc() + hash_name = getattr(_test_hash, "name", None) + else: + hash_name = hashfunc + return hashlib.pbkdf2_hmac(hash_name, data, salt, iterations, keylen) + + +def safe_str_cmp(a, b): + """This function compares strings in somewhat constant time. This + requires that the length of at least one string is known in advance. + + Returns `True` if the two strings are equal, or `False` if they are not. + + .. versionadded:: 0.7 + """ + if isinstance(a, text_type): + a = a.encode("utf-8") + if isinstance(b, text_type): + b = b.encode("utf-8") + + if _builtin_safe_str_cmp is not None: + return _builtin_safe_str_cmp(a, b) + + if len(a) != len(b): + return False + + rv = 0 + if PY2: + for x, y in izip(a, b): + rv |= ord(x) ^ ord(y) + else: + for x, y in izip(a, b): + rv |= x ^ y + + return rv == 0 + + +def gen_salt(length): + """Generate a random string of SALT_CHARS with specified ``length``.""" + if length <= 0: + raise ValueError("Salt length must be positive") + return "".join(_sys_rng.choice(SALT_CHARS) for _ in range_type(length)) + + +def _hash_internal(method, salt, password): + """Internal password hash helper. Supports plaintext without salt, + unsalted and salted passwords. In case salted passwords are used + hmac is used. + """ + if method == "plain": + return password, method + + if isinstance(password, text_type): + password = password.encode("utf-8") + + if method.startswith("pbkdf2:"): + args = method[7:].split(":") + if len(args) not in (1, 2): + raise ValueError("Invalid number of arguments for PBKDF2") + method = args.pop(0) + iterations = args and int(args[0] or 0) or DEFAULT_PBKDF2_ITERATIONS + is_pbkdf2 = True + actual_method = "pbkdf2:%s:%d" % (method, iterations) + else: + is_pbkdf2 = False + actual_method = method + + if is_pbkdf2: + if not salt: + raise ValueError("Salt is required for PBKDF2") + rv = pbkdf2_hex(password, salt, iterations, hashfunc=method) + elif salt: + if isinstance(salt, text_type): + salt = salt.encode("utf-8") + mac = _create_mac(salt, password, method) + rv = mac.hexdigest() + else: + rv = hashlib.new(method, password).hexdigest() + return rv, actual_method + + +def _create_mac(key, msg, method): + if callable(method): + return hmac.HMAC(key, msg, method) + + def hashfunc(d=b""): + return hashlib.new(method, d) + + # Python 2.7 used ``hasattr(digestmod, '__call__')`` + # to detect if hashfunc is callable + hashfunc.__call__ = hashfunc + return hmac.HMAC(key, msg, hashfunc) + + +def generate_password_hash(password, method="pbkdf2:sha256", salt_length=8): + """Hash a password with the given method and salt with a string of + the given length. The format of the string returned includes the method + that was used so that :func:`check_password_hash` can check the hash. + + The format for the hashed string looks like this:: + + method$salt$hash + + This method can **not** generate unsalted passwords but it is possible + to set param method='plain' in order to enforce plaintext passwords. + If a salt is used, hmac is used internally to salt the password. + + If PBKDF2 is wanted it can be enabled by setting the method to + ``pbkdf2:method:iterations`` where iterations is optional:: + + pbkdf2:sha256:80000$salt$hash + pbkdf2:sha256$salt$hash + + :param password: the password to hash. + :param method: the hash method to use (one that hashlib supports). Can + optionally be in the format ``pbkdf2:[:iterations]`` + to enable PBKDF2. + :param salt_length: the length of the salt in letters. + """ + salt = gen_salt(salt_length) if method != "plain" else "" + h, actual_method = _hash_internal(method, salt, password) + return "%s$%s$%s" % (actual_method, salt, h) + + +def check_password_hash(pwhash, password): + """check a password against a given salted and hashed password value. + In order to support unsalted legacy passwords this method supports + plain text passwords, md5 and sha1 hashes (both salted and unsalted). + + Returns `True` if the password matched, `False` otherwise. + + :param pwhash: a hashed string like returned by + :func:`generate_password_hash`. + :param password: the plaintext password to compare against the hash. + """ + if pwhash.count("$") < 2: + return False + method, salt, hashval = pwhash.split("$", 2) + return safe_str_cmp(_hash_internal(method, salt, password)[0], hashval) + + +def safe_join(directory, *pathnames): + """Safely join `directory` and one or more untrusted `pathnames`. If this + cannot be done, this function returns ``None``. + + :param directory: the base directory. + :param pathnames: the untrusted pathnames relative to that directory. + """ + parts = [directory] + for filename in pathnames: + if filename != "": + filename = posixpath.normpath(filename) + for sep in _os_alt_seps: + if sep in filename: + return None + if os.path.isabs(filename) or filename == ".." or filename.startswith("../"): + return None + parts.append(filename) + return posixpath.join(*parts) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/serving.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/serving.py new file mode 100644 index 00000000..ff9f8805 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/serving.py @@ -0,0 +1,1074 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.serving + ~~~~~~~~~~~~~~~~ + + There are many ways to serve a WSGI application. While you're developing + it you usually don't want a full blown webserver like Apache but a simple + standalone one. From Python 2.5 onwards there is the `wsgiref`_ server in + the standard library. If you're using older versions of Python you can + download the package from the cheeseshop. + + However there are some caveats. Sourcecode won't reload itself when + changed and each time you kill the server using ``^C`` you get an + `KeyboardInterrupt` error. While the latter is easy to solve the first + one can be a pain in the ass in some situations. + + The easiest way is creating a small ``start-myproject.py`` that runs the + application:: + + #!/usr/bin/env python + # -*- coding: utf-8 -*- + from myproject import make_app + from werkzeug.serving import run_simple + + app = make_app(...) + run_simple('localhost', 8080, app, use_reloader=True) + + You can also pass it a `extra_files` keyword argument with a list of + additional files (like configuration files) you want to observe. + + For bigger applications you should consider using `click` + (http://click.pocoo.org) instead of a simple start file. + + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import io +import os +import signal +import socket +import sys + +import werkzeug +from ._compat import PY2 +from ._compat import reraise +from ._compat import WIN +from ._compat import wsgi_encoding_dance +from ._internal import _log +from .exceptions import InternalServerError +from .urls import uri_to_iri +from .urls import url_parse +from .urls import url_unquote + +try: + import socketserver + from http.server import BaseHTTPRequestHandler + from http.server import HTTPServer +except ImportError: + import SocketServer as socketserver + from BaseHTTPServer import HTTPServer + from BaseHTTPServer import BaseHTTPRequestHandler + +try: + import ssl +except ImportError: + + class _SslDummy(object): + def __getattr__(self, name): + raise RuntimeError("SSL support unavailable") + + ssl = _SslDummy() + +try: + import termcolor +except ImportError: + termcolor = None + + +def _get_openssl_crypto_module(): + try: + from OpenSSL import crypto + except ImportError: + raise TypeError("Using ad-hoc certificates requires the pyOpenSSL library.") + else: + return crypto + + +ThreadingMixIn = socketserver.ThreadingMixIn +can_fork = hasattr(os, "fork") + +if can_fork: + ForkingMixIn = socketserver.ForkingMixIn +else: + + class ForkingMixIn(object): + pass + + +try: + af_unix = socket.AF_UNIX +except AttributeError: + af_unix = None + + +LISTEN_QUEUE = 128 +can_open_by_fd = not WIN and hasattr(socket, "fromfd") + +# On Python 3, ConnectionError represents the same errnos as +# socket.error from Python 2, while socket.error is an alias for the +# more generic OSError. +if PY2: + _ConnectionError = socket.error +else: + _ConnectionError = ConnectionError + + +class DechunkedInput(io.RawIOBase): + """An input stream that handles Transfer-Encoding 'chunked'""" + + def __init__(self, rfile): + self._rfile = rfile + self._done = False + self._len = 0 + + def readable(self): + return True + + def read_chunk_len(self): + try: + line = self._rfile.readline().decode("latin1") + _len = int(line.strip(), 16) + except ValueError: + raise IOError("Invalid chunk header") + if _len < 0: + raise IOError("Negative chunk length not allowed") + return _len + + def readinto(self, buf): + read = 0 + while not self._done and read < len(buf): + if self._len == 0: + # This is the first chunk or we fully consumed the previous + # one. Read the next length of the next chunk + self._len = self.read_chunk_len() + + if self._len == 0: + # Found the final chunk of size 0. The stream is now exhausted, + # but there is still a final newline that should be consumed + self._done = True + + if self._len > 0: + # There is data (left) in this chunk, so append it to the + # buffer. If this operation fully consumes the chunk, this will + # reset self._len to 0. + n = min(len(buf), self._len) + buf[read : read + n] = self._rfile.read(n) + self._len -= n + read += n + + if self._len == 0: + # Skip the terminating newline of a chunk that has been fully + # consumed. This also applies to the 0-sized final chunk + terminator = self._rfile.readline() + if terminator not in (b"\n", b"\r\n", b"\r"): + raise IOError("Missing chunk terminating newline") + + return read + + +class WSGIRequestHandler(BaseHTTPRequestHandler, object): + + """A request handler that implements WSGI dispatching.""" + + @property + def server_version(self): + return "Werkzeug/" + werkzeug.__version__ + + def make_environ(self): + request_url = url_parse(self.path) + + def shutdown_server(): + self.server.shutdown_signal = True + + url_scheme = "http" if self.server.ssl_context is None else "https" + if not self.client_address: + self.client_address = "" + if isinstance(self.client_address, str): + self.client_address = (self.client_address, 0) + else: + pass + path_info = url_unquote(request_url.path) + + environ = { + "wsgi.version": (1, 0), + "wsgi.url_scheme": url_scheme, + "wsgi.input": self.rfile, + "wsgi.errors": sys.stderr, + "wsgi.multithread": self.server.multithread, + "wsgi.multiprocess": self.server.multiprocess, + "wsgi.run_once": False, + "werkzeug.server.shutdown": shutdown_server, + "SERVER_SOFTWARE": self.server_version, + "REQUEST_METHOD": self.command, + "SCRIPT_NAME": "", + "PATH_INFO": wsgi_encoding_dance(path_info), + "QUERY_STRING": wsgi_encoding_dance(request_url.query), + # Non-standard, added by mod_wsgi, uWSGI + "REQUEST_URI": wsgi_encoding_dance(self.path), + # Non-standard, added by gunicorn + "RAW_URI": wsgi_encoding_dance(self.path), + "REMOTE_ADDR": self.address_string(), + "REMOTE_PORT": self.port_integer(), + "SERVER_NAME": self.server.server_address[0], + "SERVER_PORT": str(self.server.server_address[1]), + "SERVER_PROTOCOL": self.request_version, + } + + for key, value in self.get_header_items(): + key = key.upper().replace("-", "_") + value = value.replace("\r\n", "") + if key not in ("CONTENT_TYPE", "CONTENT_LENGTH"): + key = "HTTP_" + key + if key in environ: + value = "{},{}".format(environ[key], value) + environ[key] = value + + if environ.get("HTTP_TRANSFER_ENCODING", "").strip().lower() == "chunked": + environ["wsgi.input_terminated"] = True + environ["wsgi.input"] = DechunkedInput(environ["wsgi.input"]) + + if request_url.scheme and request_url.netloc: + environ["HTTP_HOST"] = request_url.netloc + + return environ + + def run_wsgi(self): + if self.headers.get("Expect", "").lower().strip() == "100-continue": + self.wfile.write(b"HTTP/1.1 100 Continue\r\n\r\n") + + self.environ = environ = self.make_environ() + headers_set = [] + headers_sent = [] + + def write(data): + assert headers_set, "write() before start_response" + if not headers_sent: + status, response_headers = headers_sent[:] = headers_set + try: + code, msg = status.split(None, 1) + except ValueError: + code, msg = status, "" + code = int(code) + self.send_response(code, msg) + header_keys = set() + for key, value in response_headers: + self.send_header(key, value) + key = key.lower() + header_keys.add(key) + if not ( + "content-length" in header_keys + or environ["REQUEST_METHOD"] == "HEAD" + or code < 200 + or code in (204, 304) + ): + self.close_connection = True + self.send_header("Connection", "close") + if "server" not in header_keys: + self.send_header("Server", self.version_string()) + if "date" not in header_keys: + self.send_header("Date", self.date_time_string()) + self.end_headers() + + assert isinstance(data, bytes), "applications must write bytes" + self.wfile.write(data) + self.wfile.flush() + + def start_response(status, response_headers, exc_info=None): + if exc_info: + try: + if headers_sent: + reraise(*exc_info) + finally: + exc_info = None + elif headers_set: + raise AssertionError("Headers already set") + headers_set[:] = [status, response_headers] + return write + + def execute(app): + application_iter = app(environ, start_response) + try: + for data in application_iter: + write(data) + if not headers_sent: + write(b"") + finally: + if hasattr(application_iter, "close"): + application_iter.close() + application_iter = None + + try: + execute(self.server.app) + except (_ConnectionError, socket.timeout) as e: + self.connection_dropped(e, environ) + except Exception: + if self.server.passthrough_errors: + raise + from .debug.tbtools import get_current_traceback + + traceback = get_current_traceback(ignore_system_exceptions=True) + try: + # if we haven't yet sent the headers but they are set + # we roll back to be able to set them again. + if not headers_sent: + del headers_set[:] + execute(InternalServerError()) + except Exception: + pass + self.server.log("error", "Error on request:\n%s", traceback.plaintext) + + def handle(self): + """Handles a request ignoring dropped connections.""" + rv = None + try: + rv = BaseHTTPRequestHandler.handle(self) + except (_ConnectionError, socket.timeout) as e: + self.connection_dropped(e) + except Exception as e: + if self.server.ssl_context is None or not is_ssl_error(e): + raise + if self.server.shutdown_signal: + self.initiate_shutdown() + return rv + + def initiate_shutdown(self): + """A horrible, horrible way to kill the server for Python 2.6 and + later. It's the best we can do. + """ + # Windows does not provide SIGKILL, go with SIGTERM then. + sig = getattr(signal, "SIGKILL", signal.SIGTERM) + # reloader active + if is_running_from_reloader(): + os.kill(os.getpid(), sig) + # python 2.7 + self.server._BaseServer__shutdown_request = True + # python 2.6 + self.server._BaseServer__serving = False + + def connection_dropped(self, error, environ=None): + """Called if the connection was closed by the client. By default + nothing happens. + """ + + def handle_one_request(self): + """Handle a single HTTP request.""" + self.raw_requestline = self.rfile.readline() + if not self.raw_requestline: + self.close_connection = 1 + elif self.parse_request(): + return self.run_wsgi() + + def send_response(self, code, message=None): + """Send the response header and log the response code.""" + self.log_request(code) + if message is None: + message = code in self.responses and self.responses[code][0] or "" + if self.request_version != "HTTP/0.9": + hdr = "%s %d %s\r\n" % (self.protocol_version, code, message) + self.wfile.write(hdr.encode("ascii")) + + def version_string(self): + return BaseHTTPRequestHandler.version_string(self).strip() + + def address_string(self): + if getattr(self, "environ", None): + return self.environ["REMOTE_ADDR"] + elif not self.client_address: + return "" + elif isinstance(self.client_address, str): + return self.client_address + else: + return self.client_address[0] + + def port_integer(self): + return self.client_address[1] + + def log_request(self, code="-", size="-"): + try: + path = uri_to_iri(self.path) + msg = "%s %s %s" % (self.command, path, self.request_version) + except AttributeError: + # path isn't set if the requestline was bad + msg = self.requestline + + code = str(code) + + if termcolor: + color = termcolor.colored + + if code[0] == "1": # 1xx - Informational + msg = color(msg, attrs=["bold"]) + elif code[0] == "2": # 2xx - Success + msg = color(msg, color="white") + elif code == "304": # 304 - Resource Not Modified + msg = color(msg, color="cyan") + elif code[0] == "3": # 3xx - Redirection + msg = color(msg, color="green") + elif code == "404": # 404 - Resource Not Found + msg = color(msg, color="yellow") + elif code[0] == "4": # 4xx - Client Error + msg = color(msg, color="red", attrs=["bold"]) + else: # 5xx, or any other response + msg = color(msg, color="magenta", attrs=["bold"]) + + self.log("info", '"%s" %s %s', msg, code, size) + + def log_error(self, *args): + self.log("error", *args) + + def log_message(self, format, *args): + self.log("info", format, *args) + + def log(self, type, message, *args): + _log( + type, + "%s - - [%s] %s\n" + % (self.address_string(), self.log_date_time_string(), message % args), + ) + + def get_header_items(self): + """ + Get an iterable list of key/value pairs representing headers. + + This function provides Python 2/3 compatibility as related to the + parsing of request headers. Python 2.7 is not compliant with + RFC 3875 Section 4.1.18 which requires multiple values for headers + to be provided or RFC 2616 which allows for folding of multi-line + headers. This function will return a matching list regardless + of Python version. It can be removed once Python 2.7 support + is dropped. + + :return: List of tuples containing header hey/value pairs + """ + if PY2: + # For Python 2, process the headers manually according to + # W3C RFC 2616 Section 4.2. + items = [] + for header in self.headers.headers: + # Remove "\r\n" from the header and split on ":" to get + # the field name and value. + try: + key, value = header[0:-2].split(":", 1) + except ValueError: + # If header could not be slit with : but starts with white + # space and it follows an existing header, it's a folded + # header. + if header[0] in ("\t", " ") and items: + # Pop off the last header + key, value = items.pop() + # Append the current header to the value of the last + # header which will be placed back on the end of the + # list + value = value + header + # Otherwise it's just a bad header and should error + else: + # Re-raise the value error + raise + + # Add the key and the value once stripped of leading + # white space. The specification allows for stripping + # trailing white space but the Python 3 code does not + # strip trailing white space. Therefore, trailing space + # will be left as is to match the Python 3 behavior. + items.append((key, value.lstrip())) + else: + items = self.headers.items() + + return items + + +#: backwards compatible name if someone is subclassing it +BaseRequestHandler = WSGIRequestHandler + + +def generate_adhoc_ssl_pair(cn=None): + from random import random + + crypto = _get_openssl_crypto_module() + + # pretty damn sure that this is not actually accepted by anyone + if cn is None: + cn = "*" + + cert = crypto.X509() + cert.set_serial_number(int(random() * sys.maxsize)) + cert.gmtime_adj_notBefore(0) + cert.gmtime_adj_notAfter(60 * 60 * 24 * 365) + + subject = cert.get_subject() + subject.CN = cn + subject.O = "Dummy Certificate" # noqa: E741 + + issuer = cert.get_issuer() + issuer.CN = subject.CN + issuer.O = subject.O # noqa: E741 + + pkey = crypto.PKey() + pkey.generate_key(crypto.TYPE_RSA, 2048) + cert.set_pubkey(pkey) + cert.sign(pkey, "sha256") + + return cert, pkey + + +def make_ssl_devcert(base_path, host=None, cn=None): + """Creates an SSL key for development. This should be used instead of + the ``'adhoc'`` key which generates a new cert on each server start. + It accepts a path for where it should store the key and cert and + either a host or CN. If a host is given it will use the CN + ``*.host/CN=host``. + + For more information see :func:`run_simple`. + + .. versionadded:: 0.9 + + :param base_path: the path to the certificate and key. The extension + ``.crt`` is added for the certificate, ``.key`` is + added for the key. + :param host: the name of the host. This can be used as an alternative + for the `cn`. + :param cn: the `CN` to use. + """ + from OpenSSL import crypto + + if host is not None: + cn = "*.%s/CN=%s" % (host, host) + cert, pkey = generate_adhoc_ssl_pair(cn=cn) + + cert_file = base_path + ".crt" + pkey_file = base_path + ".key" + + with open(cert_file, "wb") as f: + f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert)) + with open(pkey_file, "wb") as f: + f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey)) + + return cert_file, pkey_file + + +def generate_adhoc_ssl_context(): + """Generates an adhoc SSL context for the development server.""" + crypto = _get_openssl_crypto_module() + import tempfile + import atexit + + cert, pkey = generate_adhoc_ssl_pair() + 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, crypto.dump_certificate(crypto.FILETYPE_PEM, cert)) + os.write(pkey_handle, crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey)) + os.close(cert_handle) + os.close(pkey_handle) + ctx = load_ssl_context(cert_file, pkey_file) + return ctx + + +def load_ssl_context(cert_file, pkey_file=None, protocol=None): + """Loads SSL context from cert/private key files and optional protocol. + Many parameters are directly taken from the API of + :py:class:`ssl.SSLContext`. + + :param cert_file: Path of the certificate to use. + :param pkey_file: Path of the private key to use. If not given, the key + will be obtained from the certificate file. + :param protocol: One of the ``PROTOCOL_*`` constants in the stdlib ``ssl`` + module. Defaults to ``PROTOCOL_SSLv23``. + """ + if protocol is None: + protocol = ssl.PROTOCOL_SSLv23 + ctx = _SSLContext(protocol) + ctx.load_cert_chain(cert_file, pkey_file) + return ctx + + +class _SSLContext(object): + + """A dummy class with a small subset of Python3's ``ssl.SSLContext``, only + intended to be used with and by Werkzeug.""" + + def __init__(self, protocol): + self._protocol = protocol + self._certfile = None + self._keyfile = None + self._password = None + + def load_cert_chain(self, certfile, keyfile=None, password=None): + self._certfile = certfile + self._keyfile = keyfile or certfile + self._password = password + + def wrap_socket(self, sock, **kwargs): + return ssl.wrap_socket( + sock, + keyfile=self._keyfile, + certfile=self._certfile, + ssl_version=self._protocol, + **kwargs + ) + + +def is_ssl_error(error=None): + """Checks if the given error (or the current one) is an SSL error.""" + exc_types = (ssl.SSLError,) + try: + from OpenSSL.SSL import Error + + exc_types += (Error,) + except ImportError: + pass + + if error is None: + error = sys.exc_info()[1] + return isinstance(error, exc_types) + + +def select_address_family(host, port): + """Return ``AF_INET4``, ``AF_INET6``, or ``AF_UNIX`` depending on + the host and port.""" + # disabled due to problems with current ipv6 implementations + # and various operating systems. Probably this code also is + # not supposed to work, but I can't come up with any other + # ways to implement this. + # try: + # info = socket.getaddrinfo(host, port, socket.AF_UNSPEC, + # socket.SOCK_STREAM, 0, + # socket.AI_PASSIVE) + # if info: + # return info[0][0] + # except socket.gaierror: + # pass + if host.startswith("unix://"): + return socket.AF_UNIX + elif ":" in host and hasattr(socket, "AF_INET6"): + return socket.AF_INET6 + return socket.AF_INET + + +def get_sockaddr(host, port, family): + """Return a fully qualified socket address that can be passed to + :func:`socket.bind`.""" + if family == af_unix: + return host.split("://", 1)[1] + try: + res = socket.getaddrinfo( + host, port, family, socket.SOCK_STREAM, socket.IPPROTO_TCP + ) + except socket.gaierror: + return host, port + return res[0][4] + + +class BaseWSGIServer(HTTPServer, object): + + """Simple single-threaded, single-process WSGI server.""" + + multithread = False + multiprocess = False + request_queue_size = LISTEN_QUEUE + + def __init__( + self, + host, + port, + app, + handler=None, + passthrough_errors=False, + ssl_context=None, + fd=None, + ): + if handler is None: + handler = WSGIRequestHandler + + self.address_family = select_address_family(host, port) + + if fd is not None: + real_sock = socket.fromfd(fd, self.address_family, socket.SOCK_STREAM) + port = 0 + + server_address = get_sockaddr(host, int(port), self.address_family) + + # remove socket file if it already exists + if self.address_family == af_unix and os.path.exists(server_address): + os.unlink(server_address) + HTTPServer.__init__(self, server_address, handler) + + self.app = app + self.passthrough_errors = passthrough_errors + self.shutdown_signal = False + self.host = host + self.port = self.socket.getsockname()[1] + + # Patch in the original socket. + if fd is not None: + self.socket.close() + self.socket = real_sock + self.server_address = self.socket.getsockname() + + if ssl_context is not None: + if isinstance(ssl_context, tuple): + ssl_context = load_ssl_context(*ssl_context) + if ssl_context == "adhoc": + ssl_context = generate_adhoc_ssl_context() + # If we are on Python 2 the return value from socket.fromfd + # is an internal socket object but what we need for ssl wrap + # is the wrapper around it :( + sock = self.socket + if PY2 and not isinstance(sock, socket.socket): + sock = socket.socket(sock.family, sock.type, sock.proto, sock) + self.socket = ssl_context.wrap_socket(sock, server_side=True) + self.ssl_context = ssl_context + else: + self.ssl_context = None + + def log(self, type, message, *args): + _log(type, message, *args) + + def serve_forever(self): + self.shutdown_signal = False + try: + HTTPServer.serve_forever(self) + except KeyboardInterrupt: + pass + finally: + self.server_close() + + def handle_error(self, request, client_address): + if self.passthrough_errors: + raise + # Python 2 still causes a socket.error after the earlier + # handling, so silence it here. + if isinstance(sys.exc_info()[1], _ConnectionError): + return + return HTTPServer.handle_error(self, request, client_address) + + def get_request(self): + con, info = self.socket.accept() + return con, info + + +class ThreadedWSGIServer(ThreadingMixIn, BaseWSGIServer): + + """A WSGI server that does threading.""" + + multithread = True + daemon_threads = True + + +class ForkingWSGIServer(ForkingMixIn, BaseWSGIServer): + + """A WSGI server that does forking.""" + + multiprocess = True + + def __init__( + self, + host, + port, + app, + processes=40, + handler=None, + passthrough_errors=False, + ssl_context=None, + fd=None, + ): + if not can_fork: + raise ValueError("Your platform does not support forking.") + BaseWSGIServer.__init__( + self, host, port, app, handler, passthrough_errors, ssl_context, fd + ) + self.max_children = processes + + +def make_server( + host=None, + port=None, + app=None, + threaded=False, + processes=1, + request_handler=None, + passthrough_errors=False, + ssl_context=None, + fd=None, +): + """Create a new server instance that is either threaded, or forks + or just processes one request after another. + """ + if threaded and processes > 1: + raise ValueError("cannot have a multithreaded and multi process server.") + elif threaded: + return ThreadedWSGIServer( + host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd + ) + elif processes > 1: + return ForkingWSGIServer( + host, + port, + app, + processes, + request_handler, + passthrough_errors, + ssl_context, + fd=fd, + ) + else: + return BaseWSGIServer( + host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd + ) + + +def is_running_from_reloader(): + """Checks if the application is running from within the Werkzeug + reloader subprocess. + + .. versionadded:: 0.10 + """ + return os.environ.get("WERKZEUG_RUN_MAIN") == "true" + + +def run_simple( + hostname, + port, + application, + use_reloader=False, + use_debugger=False, + use_evalex=True, + extra_files=None, + reloader_interval=1, + reloader_type="auto", + threaded=False, + processes=1, + request_handler=None, + static_files=None, + passthrough_errors=False, + ssl_context=None, +): + """Start a WSGI application. Optional features include a reloader, + multithreading and fork support. + + This function has a command-line interface too:: + + python -m werkzeug.serving --help + + .. versionadded:: 0.5 + `static_files` was added to simplify serving of static files as well + as `passthrough_errors`. + + .. versionadded:: 0.6 + support for SSL was added. + + .. versionadded:: 0.8 + Added support for automatically loading a SSL context from certificate + file and private key. + + .. versionadded:: 0.9 + Added command-line interface. + + .. versionadded:: 0.10 + Improved the reloader and added support for changing the backend + through the `reloader_type` parameter. See :ref:`reloader` + for more information. + + .. versionchanged:: 0.15 + Bind to a Unix socket by passing a path that starts with + ``unix://`` as the ``hostname``. + + :param hostname: The host to bind to, for example ``'localhost'``. + If the value is a path that starts with ``unix://`` it will bind + to a Unix socket instead of a TCP socket.. + :param port: The port for the server. eg: ``8080`` + :param application: the WSGI application to execute + :param use_reloader: should the server automatically restart the python + process if modules were changed? + :param use_debugger: should the werkzeug debugging system be used? + :param use_evalex: should the exception evaluation feature be enabled? + :param extra_files: a list of files the reloader should watch + additionally to the modules. For example configuration + files. + :param reloader_interval: the interval for the reloader in seconds. + :param reloader_type: the type of reloader to use. The default is + auto detection. Valid values are ``'stat'`` and + ``'watchdog'``. See :ref:`reloader` for more + information. + :param threaded: should the process handle each request in a separate + thread? + :param processes: if greater than 1 then handle each request in a new process + up to this maximum number of concurrent processes. + :param request_handler: optional parameter that can be used to replace + the default one. You can use this to replace it + with a different + :class:`~BaseHTTPServer.BaseHTTPRequestHandler` + subclass. + :param static_files: a list or dict of paths for static files. This works + exactly like :class:`SharedDataMiddleware`, it's actually + just wrapping the application in that middleware before + serving. + :param passthrough_errors: set this to `True` to disable the error catching. + This means that the server will die on errors but + it can be useful to hook debuggers in (pdb etc.) + :param ssl_context: an SSL context for the connection. Either an + :class:`ssl.SSLContext`, a tuple in the form + ``(cert_file, pkey_file)``, the string ``'adhoc'`` if + the server should automatically create one, or ``None`` + to disable SSL (which is the default). + """ + if not isinstance(port, int): + raise TypeError("port must be an integer") + if use_debugger: + from .debug import DebuggedApplication + + application = DebuggedApplication(application, use_evalex) + if static_files: + from .middleware.shared_data import SharedDataMiddleware + + application = SharedDataMiddleware(application, static_files) + + def log_startup(sock): + display_hostname = hostname if hostname not in ("", "*") else "localhost" + quit_msg = "(Press CTRL+C to quit)" + if sock.family == af_unix: + _log("info", " * Running on %s %s", display_hostname, quit_msg) + else: + if ":" in display_hostname: + display_hostname = "[%s]" % display_hostname + port = sock.getsockname()[1] + _log( + "info", + " * Running on %s://%s:%d/ %s", + "http" if ssl_context is None else "https", + display_hostname, + port, + quit_msg, + ) + + def inner(): + try: + fd = int(os.environ["WERKZEUG_SERVER_FD"]) + except (LookupError, ValueError): + fd = None + srv = make_server( + hostname, + port, + application, + threaded, + processes, + request_handler, + passthrough_errors, + ssl_context, + fd=fd, + ) + if fd is None: + log_startup(srv.socket) + srv.serve_forever() + + if use_reloader: + # If we're not running already in the subprocess that is the + # reloader we want to open up a socket early to make sure the + # port is actually available. + if not is_running_from_reloader(): + if port == 0 and not can_open_by_fd: + raise ValueError( + "Cannot bind to a random port with enabled " + "reloader if the Python interpreter does " + "not support socket opening by fd." + ) + + # Create and destroy a socket so that any exceptions are + # raised before we spawn a separate Python interpreter and + # lose this ability. + address_family = select_address_family(hostname, port) + server_address = get_sockaddr(hostname, port, address_family) + s = socket.socket(address_family, socket.SOCK_STREAM) + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + s.bind(server_address) + if hasattr(s, "set_inheritable"): + s.set_inheritable(True) + + # If we can open the socket by file descriptor, then we can just + # reuse this one and our socket will survive the restarts. + if can_open_by_fd: + os.environ["WERKZEUG_SERVER_FD"] = str(s.fileno()) + s.listen(LISTEN_QUEUE) + log_startup(s) + else: + s.close() + if address_family == af_unix: + _log("info", "Unlinking %s" % server_address) + os.unlink(server_address) + + # Do not use relative imports, otherwise "python -m werkzeug.serving" + # breaks. + from ._reloader import run_with_reloader + + run_with_reloader(inner, extra_files, reloader_interval, reloader_type) + else: + inner() + + +def run_with_reloader(*args, **kwargs): + # People keep using undocumented APIs. Do not use this function + # please, we do not guarantee that it continues working. + from ._reloader import run_with_reloader + + return run_with_reloader(*args, **kwargs) + + +def main(): + """A simple command-line interface for :py:func:`run_simple`.""" + + # in contrast to argparse, this works at least under Python < 2.7 + import optparse + from .utils import import_string + + parser = optparse.OptionParser(usage="Usage: %prog [options] app_module:app_object") + parser.add_option( + "-b", + "--bind", + dest="address", + help="The hostname:port the app should listen on.", + ) + parser.add_option( + "-d", + "--debug", + dest="use_debugger", + action="store_true", + default=False, + help="Use Werkzeug's debugger.", + ) + parser.add_option( + "-r", + "--reload", + dest="use_reloader", + action="store_true", + default=False, + help="Reload Python process if modules change.", + ) + options, args = parser.parse_args() + + hostname, port = None, None + if options.address: + address = options.address.split(":") + hostname = address[0] + if len(address) > 1: + port = address[1] + + if len(args) != 1: + sys.stdout.write("No application supplied, or too much. See --help\n") + sys.exit(1) + app = import_string(args[0]) + + run_simple( + hostname=(hostname or "127.0.0.1"), + port=int(port or 5000), + application=app, + use_reloader=options.use_reloader, + use_debugger=options.use_debugger, + ) + + +if __name__ == "__main__": + main() diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/test.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/test.py new file mode 100644 index 00000000..61486656 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/test.py @@ -0,0 +1,1146 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.test + ~~~~~~~~~~~~~ + + This module implements a client to WSGI applications for testing. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import mimetypes +import sys +from io import BytesIO +from itertools import chain +from random import random +from tempfile import TemporaryFile +from time import time + +from ._compat import iteritems +from ._compat import iterlists +from ._compat import itervalues +from ._compat import make_literal_wrapper +from ._compat import reraise +from ._compat import string_types +from ._compat import text_type +from ._compat import to_bytes +from ._compat import wsgi_encoding_dance +from ._internal import _get_environ +from .datastructures import CallbackDict +from .datastructures import CombinedMultiDict +from .datastructures import EnvironHeaders +from .datastructures import FileMultiDict +from .datastructures import FileStorage +from .datastructures import Headers +from .datastructures import MultiDict +from .http import dump_cookie +from .http import dump_options_header +from .http import parse_options_header +from .urls import iri_to_uri +from .urls import url_encode +from .urls import url_fix +from .urls import url_parse +from .urls import url_unparse +from .urls import url_unquote +from .utils import get_content_type +from .wrappers import BaseRequest +from .wsgi import ClosingIterator +from .wsgi import get_current_url + +try: + from urllib.request import Request as U2Request +except ImportError: + from urllib2 import Request as U2Request + +try: + from http.cookiejar import CookieJar +except ImportError: + from cookielib import CookieJar + + +def stream_encode_multipart( + values, use_tempfile=True, threshold=1024 * 500, boundary=None, charset="utf-8" +): + """Encode a dict of values (either strings or file descriptors or + :class:`FileStorage` objects.) into a multipart encoded string stored + in a file descriptor. + """ + if boundary is None: + boundary = "---------------WerkzeugFormPart_%s%s" % (time(), random()) + _closure = [BytesIO(), 0, False] + + if use_tempfile: + + def write_binary(string): + stream, total_length, on_disk = _closure + if on_disk: + stream.write(string) + else: + length = len(string) + if length + _closure[1] <= threshold: + stream.write(string) + else: + new_stream = TemporaryFile("wb+") + new_stream.write(stream.getvalue()) + new_stream.write(string) + _closure[0] = new_stream + _closure[2] = True + _closure[1] = total_length + length + + else: + write_binary = _closure[0].write + + def write(string): + write_binary(string.encode(charset)) + + if not isinstance(values, MultiDict): + values = MultiDict(values) + + for key, values in iterlists(values): + for value in values: + write('--%s\r\nContent-Disposition: form-data; name="%s"' % (boundary, key)) + reader = getattr(value, "read", None) + if reader is not None: + filename = getattr(value, "filename", getattr(value, "name", None)) + content_type = getattr(value, "content_type", None) + if content_type is None: + content_type = ( + filename + and mimetypes.guess_type(filename)[0] + or "application/octet-stream" + ) + if filename is not None: + write('; filename="%s"\r\n' % filename) + else: + write("\r\n") + write("Content-Type: %s\r\n\r\n" % content_type) + while 1: + chunk = reader(16384) + if not chunk: + break + write_binary(chunk) + else: + if not isinstance(value, string_types): + value = str(value) + + value = to_bytes(value, charset) + write("\r\n\r\n") + write_binary(value) + write("\r\n") + write("--%s--\r\n" % boundary) + + length = int(_closure[0].tell()) + _closure[0].seek(0) + return _closure[0], length, boundary + + +def encode_multipart(values, boundary=None, charset="utf-8"): + """Like `stream_encode_multipart` but returns a tuple in the form + (``boundary``, ``data``) where data is a bytestring. + """ + stream, length, boundary = stream_encode_multipart( + values, use_tempfile=False, boundary=boundary, charset=charset + ) + return boundary, stream.read() + + +def File(fd, filename=None, mimetype=None): + """Backwards compat. + + .. deprecated:: 0.5 + """ + from warnings import warn + + warn( + "'werkzeug.test.File' is deprecated as of version 0.5 and will" + " be removed in version 1.0. Use 'EnvironBuilder' or" + " 'FileStorage' instead.", + DeprecationWarning, + stacklevel=2, + ) + return FileStorage(fd, filename=filename, content_type=mimetype) + + +class _TestCookieHeaders(object): + + """A headers adapter for cookielib + """ + + def __init__(self, headers): + self.headers = headers + + def getheaders(self, name): + headers = [] + name = name.lower() + for k, v in self.headers: + if k.lower() == name: + headers.append(v) + return headers + + def get_all(self, name, default=None): + rv = [] + for k, v in self.headers: + if k.lower() == name.lower(): + rv.append(v) + return rv or default or [] + + +class _TestCookieResponse(object): + + """Something that looks like a httplib.HTTPResponse, but is actually just an + adapter for our test responses to make them available for cookielib. + """ + + def __init__(self, headers): + self.headers = _TestCookieHeaders(headers) + + def info(self): + return self.headers + + +class _TestCookieJar(CookieJar): + + """A cookielib.CookieJar modified to inject and read cookie headers from + and to wsgi environments, and wsgi application responses. + """ + + def inject_wsgi(self, environ): + """Inject the cookies as client headers into the server's wsgi + environment. + """ + cvals = ["%s=%s" % (c.name, c.value) for c in self] + + if cvals: + environ["HTTP_COOKIE"] = "; ".join(cvals) + else: + environ.pop("HTTP_COOKIE", None) + + def extract_wsgi(self, environ, headers): + """Extract the server's set-cookie headers as cookies into the + cookie jar. + """ + self.extract_cookies( + _TestCookieResponse(headers), U2Request(get_current_url(environ)) + ) + + +def _iter_data(data): + """Iterates over a `dict` or :class:`MultiDict` yielding all keys and + values. + This is used to iterate over the data passed to the + :class:`EnvironBuilder`. + """ + if isinstance(data, MultiDict): + for key, values in iterlists(data): + for value in values: + yield key, value + else: + for key, values in iteritems(data): + if isinstance(values, list): + for value in values: + yield key, value + else: + yield key, values + + +class EnvironBuilder(object): + """This class can be used to conveniently create a WSGI environment + for testing purposes. It can be used to quickly create WSGI environments + or request objects from arbitrary data. + + The signature of this class is also used in some other places as of + Werkzeug 0.5 (:func:`create_environ`, :meth:`BaseResponse.from_values`, + :meth:`Client.open`). Because of this most of the functionality is + available through the constructor alone. + + Files and regular form data can be manipulated independently of each + other with the :attr:`form` and :attr:`files` attributes, but are + passed with the same argument to the constructor: `data`. + + `data` can be any of these values: + + - a `str` or `bytes` object: The object is converted into an + :attr:`input_stream`, the :attr:`content_length` is set and you have to + provide a :attr:`content_type`. + - a `dict` or :class:`MultiDict`: The keys have to be strings. The values + have to be either any of the following objects, or a list of any of the + following objects: + + - a :class:`file`-like object: These are converted into + :class:`FileStorage` objects automatically. + - a `tuple`: The :meth:`~FileMultiDict.add_file` method is called + with the key and the unpacked `tuple` items as positional + arguments. + - a `str`: The string is set as form data for the associated key. + - a file-like object: The object content is loaded in memory and then + handled like a regular `str` or a `bytes`. + + :param path: the path of the request. In the WSGI environment this will + end up as `PATH_INFO`. If the `query_string` is not defined + and there is a question mark in the `path` everything after + it is used as query string. + :param base_url: the base URL is a URL that is used to extract the WSGI + URL scheme, host (server name + server port) and the + script root (`SCRIPT_NAME`). + :param query_string: an optional string or dict with URL parameters. + :param method: the HTTP method to use, defaults to `GET`. + :param input_stream: an optional input stream. Do not specify this and + `data`. As soon as an input stream is set you can't + modify :attr:`args` and :attr:`files` unless you + set the :attr:`input_stream` to `None` again. + :param content_type: The content type for the request. As of 0.5 you + don't have to provide this when specifying files + and form data via `data`. + :param content_length: The content length for the request. You don't + have to specify this when providing data via + `data`. + :param errors_stream: an optional error stream that is used for + `wsgi.errors`. Defaults to :data:`stderr`. + :param multithread: controls `wsgi.multithread`. Defaults to `False`. + :param multiprocess: controls `wsgi.multiprocess`. Defaults to `False`. + :param run_once: controls `wsgi.run_once`. Defaults to `False`. + :param headers: an optional list or :class:`Headers` object of headers. + :param data: a string or dict of form data or a file-object. + See explanation above. + :param json: An object to be serialized and assigned to ``data``. + Defaults the content type to ``"application/json"``. + Serialized with the function assigned to :attr:`json_dumps`. + :param environ_base: an optional dict of environment defaults. + :param environ_overrides: an optional dict of environment overrides. + :param charset: the charset used to encode unicode data. + + .. versionadded:: 0.15 + The ``json`` param and :meth:`json_dumps` method. + + .. versionadded:: 0.15 + The environ has keys ``REQUEST_URI`` and ``RAW_URI`` containing + the path before perecent-decoding. This is not part of the WSGI + PEP, but many WSGI servers include it. + + .. versionchanged:: 0.6 + ``path`` and ``base_url`` can now be unicode strings that are + encoded with :func:`iri_to_uri`. + """ + + #: the server protocol to use. defaults to HTTP/1.1 + server_protocol = "HTTP/1.1" + + #: the wsgi version to use. defaults to (1, 0) + wsgi_version = (1, 0) + + #: the default request class for :meth:`get_request` + request_class = BaseRequest + + import json + + #: The serialization function used when ``json`` is passed. + json_dumps = staticmethod(json.dumps) + del json + + def __init__( + self, + path="/", + base_url=None, + query_string=None, + method="GET", + input_stream=None, + content_type=None, + content_length=None, + errors_stream=None, + multithread=False, + multiprocess=False, + run_once=False, + headers=None, + data=None, + environ_base=None, + environ_overrides=None, + charset="utf-8", + mimetype=None, + json=None, + ): + path_s = make_literal_wrapper(path) + if query_string is not None and path_s("?") in path: + raise ValueError("Query string is defined in the path and as an argument") + if query_string is None and path_s("?") in path: + path, query_string = path.split(path_s("?"), 1) + self.charset = charset + self.path = iri_to_uri(path) + if base_url is not None: + base_url = url_fix(iri_to_uri(base_url, charset), charset) + self.base_url = base_url + if isinstance(query_string, (bytes, text_type)): + self.query_string = query_string + else: + if query_string is None: + query_string = MultiDict() + elif not isinstance(query_string, MultiDict): + query_string = MultiDict(query_string) + self.args = query_string + self.method = method + if headers is None: + headers = Headers() + elif not isinstance(headers, Headers): + headers = Headers(headers) + self.headers = headers + if content_type is not None: + self.content_type = content_type + if errors_stream is None: + errors_stream = sys.stderr + self.errors_stream = errors_stream + self.multithread = multithread + self.multiprocess = multiprocess + self.run_once = run_once + self.environ_base = environ_base + self.environ_overrides = environ_overrides + self.input_stream = input_stream + self.content_length = content_length + self.closed = False + + if json is not None: + if data is not None: + raise TypeError("can't provide both json and data") + + data = self.json_dumps(json) + + if self.content_type is None: + self.content_type = "application/json" + + if data: + if input_stream is not None: + raise TypeError("can't provide input stream and data") + if hasattr(data, "read"): + data = data.read() + if isinstance(data, text_type): + data = data.encode(self.charset) + if isinstance(data, bytes): + self.input_stream = BytesIO(data) + if self.content_length is None: + self.content_length = len(data) + else: + for key, value in _iter_data(data): + if isinstance(value, (tuple, dict)) or hasattr(value, "read"): + self._add_file_from_data(key, value) + else: + self.form.setlistdefault(key).append(value) + + if mimetype is not None: + self.mimetype = mimetype + + @classmethod + def from_environ(cls, environ, **kwargs): + """Turn an environ dict back into a builder. Any extra kwargs + override the args extracted from the environ. + + .. versionadded:: 0.15 + """ + headers = Headers(EnvironHeaders(environ)) + out = { + "path": environ["PATH_INFO"], + "base_url": cls._make_base_url( + environ["wsgi.url_scheme"], headers.pop("Host"), environ["SCRIPT_NAME"] + ), + "query_string": environ["QUERY_STRING"], + "method": environ["REQUEST_METHOD"], + "input_stream": environ["wsgi.input"], + "content_type": headers.pop("Content-Type", None), + "content_length": headers.pop("Content-Length", None), + "errors_stream": environ["wsgi.errors"], + "multithread": environ["wsgi.multithread"], + "multiprocess": environ["wsgi.multiprocess"], + "run_once": environ["wsgi.run_once"], + "headers": headers, + } + out.update(kwargs) + return cls(**out) + + def _add_file_from_data(self, key, value): + """Called in the EnvironBuilder to add files from the data dict.""" + if isinstance(value, tuple): + self.files.add_file(key, *value) + elif isinstance(value, dict): + from warnings import warn + + warn( + "Passing a dict as file data is deprecated as of" + " version 0.5 and will be removed in version 1.0. Use" + " a tuple or 'FileStorage' object instead.", + DeprecationWarning, + stacklevel=2, + ) + value = dict(value) + mimetype = value.pop("mimetype", None) + if mimetype is not None: + value["content_type"] = mimetype + self.files.add_file(key, **value) + else: + self.files.add_file(key, value) + + @staticmethod + def _make_base_url(scheme, host, script_root): + return url_unparse((scheme, host, script_root, "", "")).rstrip("/") + "/" + + @property + def base_url(self): + """The base URL is used to extract the URL scheme, host name, + port, and root path. + """ + return self._make_base_url(self.url_scheme, self.host, self.script_root) + + @base_url.setter + def base_url(self, value): + if value is None: + scheme = "http" + netloc = "localhost" + script_root = "" + else: + scheme, netloc, script_root, qs, anchor = url_parse(value) + if qs or anchor: + raise ValueError("base url must not contain a query string or fragment") + self.script_root = script_root.rstrip("/") + self.host = netloc + self.url_scheme = scheme + + def _get_content_type(self): + ct = self.headers.get("Content-Type") + if ct is None and not self._input_stream: + if self._files: + return "multipart/form-data" + elif self._form: + return "application/x-www-form-urlencoded" + return None + return ct + + def _set_content_type(self, value): + if value is None: + self.headers.pop("Content-Type", None) + else: + self.headers["Content-Type"] = value + + content_type = property( + _get_content_type, + _set_content_type, + doc="""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.""", + ) + del _get_content_type, _set_content_type + + def _get_content_length(self): + return self.headers.get("Content-Length", type=int) + + def _get_mimetype(self): + ct = self.content_type + if ct: + return ct.split(";")[0].strip() + + def _set_mimetype(self, value): + self.content_type = get_content_type(value, self.charset) + + def _get_mimetype_params(self): + def on_update(d): + self.headers["Content-Type"] = dump_options_header(self.mimetype, d) + + d = parse_options_header(self.headers.get("content-type", ""))[1] + return CallbackDict(d, on_update) + + mimetype = property( + _get_mimetype, + _set_mimetype, + doc="""The mimetype (content type without charset etc.) + + .. versionadded:: 0.14 + """, + ) + mimetype_params = property( + _get_mimetype_params, + doc=""" 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 + """, + ) + del _get_mimetype, _set_mimetype, _get_mimetype_params + + def _set_content_length(self, value): + if value is None: + self.headers.pop("Content-Length", None) + else: + self.headers["Content-Length"] = str(value) + + content_length = property( + _get_content_length, + _set_content_length, + doc="""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.""", + ) + del _get_content_length, _set_content_length + + def form_property(name, storage, doc): # noqa: B902 + key = "_" + name + + def getter(self): + if self._input_stream is not None: + raise AttributeError("an input stream is defined") + rv = getattr(self, key) + if rv is None: + rv = storage() + setattr(self, key, rv) + + return rv + + def setter(self, value): + self._input_stream = None + setattr(self, key, value) + + return property(getter, setter, doc=doc) + + form = form_property("form", MultiDict, doc="A :class:`MultiDict` of form values.") + files = form_property( + "files", + FileMultiDict, + doc="""A :class:`FileMultiDict` of uploaded files. You can use + the :meth:`~FileMultiDict.add_file` method to add new files to + the dict.""", + ) + del form_property + + def _get_input_stream(self): + return self._input_stream + + def _set_input_stream(self, value): + self._input_stream = value + self._form = self._files = None + + input_stream = property( + _get_input_stream, + _set_input_stream, + doc="""An optional input stream. If you set this it will clear + :attr:`form` and :attr:`files`.""", + ) + del _get_input_stream, _set_input_stream + + def _get_query_string(self): + 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 + + def _set_query_string(self, value): + self._query_string = value + self._args = None + + query_string = property( + _get_query_string, + _set_query_string, + doc="""The query string. If you set this to a string + :attr:`args` will no longer be available.""", + ) + del _get_query_string, _set_query_string + + def _get_args(self): + 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 + + def _set_args(self, value): + self._query_string = None + self._args = value + + args = property( + _get_args, _set_args, doc="The URL arguments as :class:`MultiDict`." + ) + del _get_args, _set_args + + @property + def server_name(self): + """The server name (read-only, use :attr:`host` to set)""" + return self.host.split(":", 1)[0] + + @property + def server_port(self): + """The server port as integer (read-only, use :attr:`host` to set)""" + pieces = self.host.split(":", 1) + if len(pieces) == 2 and pieces[1].isdigit(): + return int(pieces[1]) + elif self.url_scheme == "https": + return 443 + return 80 + + def __del__(self): + try: + self.close() + except Exception: + pass + + def close(self): + """Closes all files. If you put real :class:`file` objects into the + :attr:`files` dict you can call this method to automatically close + them all in one go. + """ + if self.closed: + return + try: + files = itervalues(self.files) + except AttributeError: + files = () + for f in files: + try: + f.close() + except Exception: + pass + self.closed = True + + def get_environ(self): + """Return the built environ. + + .. versionchanged:: 0.15 + The content type and length headers are set based on + input stream detection. Previously this only set the WSGI + keys. + """ + input_stream = self.input_stream + content_length = self.content_length + + mimetype = self.mimetype + content_type = self.content_type + + if input_stream is not None: + start_pos = input_stream.tell() + input_stream.seek(0, 2) + end_pos = input_stream.tell() + input_stream.seek(start_pos) + content_length = end_pos - start_pos + elif mimetype == "multipart/form-data": + values = CombinedMultiDict([self.form, self.files]) + input_stream, content_length, boundary = stream_encode_multipart( + values, charset=self.charset + ) + content_type = mimetype + '; boundary="%s"' % boundary + elif mimetype == "application/x-www-form-urlencoded": + # XXX: py2v3 review + values = url_encode(self.form, charset=self.charset) + values = values.encode("ascii") + content_length = len(values) + input_stream = BytesIO(values) + else: + input_stream = BytesIO() + + result = {} + if self.environ_base: + result.update(self.environ_base) + + def _path_encode(x): + return wsgi_encoding_dance(url_unquote(x, self.charset), self.charset) + + qs = wsgi_encoding_dance(self.query_string) + + result.update( + { + "REQUEST_METHOD": self.method, + "SCRIPT_NAME": _path_encode(self.script_root), + "PATH_INFO": _path_encode(self.path), + "QUERY_STRING": qs, + # Non-standard, added by mod_wsgi, uWSGI + "REQUEST_URI": wsgi_encoding_dance(self.path), + # Non-standard, added by gunicorn + "RAW_URI": wsgi_encoding_dance(self.path), + "SERVER_NAME": self.server_name, + "SERVER_PORT": str(self.server_port), + "HTTP_HOST": self.host, + "SERVER_PROTOCOL": self.server_protocol, + "wsgi.version": self.wsgi_version, + "wsgi.url_scheme": self.url_scheme, + "wsgi.input": input_stream, + "wsgi.errors": self.errors_stream, + "wsgi.multithread": self.multithread, + "wsgi.multiprocess": self.multiprocess, + "wsgi.run_once": self.run_once, + } + ) + + headers = self.headers.copy() + + if content_type is not None: + result["CONTENT_TYPE"] = content_type + headers.set("Content-Type", content_type) + + if content_length is not None: + result["CONTENT_LENGTH"] = str(content_length) + headers.set("Content-Length", content_length) + + for key, value in headers.to_wsgi_list(): + result["HTTP_%s" % key.upper().replace("-", "_")] = value + + if self.environ_overrides: + result.update(self.environ_overrides) + + return result + + def get_request(self, cls=None): + """Returns a request with the data. If the request class is not + specified :attr:`request_class` is used. + + :param cls: The request wrapper to use. + """ + if cls is None: + cls = self.request_class + return cls(self.get_environ()) + + +class ClientRedirectError(Exception): + """If a redirect loop is detected when using follow_redirects=True with + the :cls:`Client`, then this exception is raised. + """ + + +class Client(object): + """This class allows you to send requests to a wrapped application. + + The response wrapper can be a class or factory function that takes + three arguments: app_iter, status and headers. The default response + wrapper just returns a tuple. + + Example:: + + class ClientResponse(BaseResponse): + ... + + client = Client(MyApplication(), response_wrapper=ClientResponse) + + The use_cookies parameter indicates whether cookies should be stored and + sent for subsequent requests. This is True by default, but passing False + will disable this behaviour. + + If you want to request some subdomain of your application you may set + `allow_subdomain_redirects` to `True` as if not no external redirects + are allowed. + + .. versionadded:: 0.5 + `use_cookies` is new in this version. Older versions did not provide + builtin cookie support. + + .. versionadded:: 0.14 + The `mimetype` parameter was added. + + .. versionadded:: 0.15 + The ``json`` parameter. + """ + + def __init__( + self, + application, + response_wrapper=None, + use_cookies=True, + allow_subdomain_redirects=False, + ): + self.application = application + self.response_wrapper = response_wrapper + if use_cookies: + self.cookie_jar = _TestCookieJar() + else: + self.cookie_jar = None + self.allow_subdomain_redirects = allow_subdomain_redirects + + def set_cookie( + self, + server_name, + key, + value="", + max_age=None, + expires=None, + path="/", + domain=None, + secure=None, + httponly=False, + charset="utf-8", + ): + """Sets a cookie in the client's cookie jar. The server name + is required and has to match the one that is also passed to + the open call. + """ + assert self.cookie_jar is not None, "cookies disabled" + header = dump_cookie( + key, value, max_age, expires, path, domain, secure, httponly, charset + ) + environ = create_environ(path, base_url="http://" + server_name) + headers = [("Set-Cookie", header)] + self.cookie_jar.extract_wsgi(environ, headers) + + def delete_cookie(self, server_name, key, path="/", domain=None): + """Deletes a cookie in the test client.""" + self.set_cookie( + server_name, key, expires=0, max_age=0, path=path, domain=domain + ) + + def run_wsgi_app(self, environ, buffered=False): + """Runs the wrapped WSGI app with the given environment.""" + if self.cookie_jar is not None: + self.cookie_jar.inject_wsgi(environ) + rv = run_wsgi_app(self.application, environ, buffered=buffered) + if self.cookie_jar is not None: + self.cookie_jar.extract_wsgi(environ, rv[2]) + return rv + + def resolve_redirect(self, response, new_location, environ, buffered=False): + """Perform a new request to the location given by the redirect + response to the previous request. + """ + scheme, netloc, path, qs, anchor = url_parse(new_location) + builder = EnvironBuilder.from_environ(environ, query_string=qs) + + to_name_parts = netloc.split(":", 1)[0].split(".") + from_name_parts = builder.server_name.split(".") + + if to_name_parts != [""]: + # The new location has a host, use it for the base URL. + builder.url_scheme = scheme + builder.host = netloc + else: + # A local redirect with autocorrect_location_header=False + # doesn't have a host, so use the request's host. + to_name_parts = from_name_parts + + # Explain why a redirect to a different server name won't be followed. + if to_name_parts != from_name_parts: + if to_name_parts[-len(from_name_parts) :] == from_name_parts: + if not self.allow_subdomain_redirects: + raise RuntimeError("Following subdomain redirects is not enabled.") + else: + raise RuntimeError("Following external redirects is not supported.") + + path_parts = path.split("/") + root_parts = builder.script_root.split("/") + + if path_parts[: len(root_parts)] == root_parts: + # Strip the script root from the path. + builder.path = path[len(builder.script_root) :] + else: + # The new location is not under the script root, so use the + # whole path and clear the previous root. + builder.path = path + builder.script_root = "" + + status_code = int(response[1].split(None, 1)[0]) + + # Only 307 and 308 preserve all of the original request. + if status_code not in {307, 308}: + # HEAD is preserved, everything else becomes GET. + if builder.method != "HEAD": + builder.method = "GET" + + # Clear the body and the headers that describe it. + builder.input_stream = None + builder.content_type = None + builder.content_length = None + builder.headers.pop("Transfer-Encoding", None) + + # Disable the response wrapper while handling redirects. Not + # thread safe, but the client should not be shared anyway. + old_response_wrapper = self.response_wrapper + self.response_wrapper = None + + try: + return self.open(builder, as_tuple=True, buffered=buffered) + finally: + self.response_wrapper = old_response_wrapper + + def open(self, *args, **kwargs): + """Takes the same arguments as the :class:`EnvironBuilder` class with + some additions: You can provide a :class:`EnvironBuilder` or a WSGI + environment as only argument instead of the :class:`EnvironBuilder` + arguments and two optional keyword arguments (`as_tuple`, `buffered`) + that change the type of the return value or the way the application is + executed. + + .. versionchanged:: 0.5 + If a dict is provided as file in the dict for the `data` parameter + the content type has to be called `content_type` now instead of + `mimetype`. This change was made for consistency with + :class:`werkzeug.FileWrapper`. + + The `follow_redirects` parameter was added to :func:`open`. + + Additional parameters: + + :param as_tuple: Returns a tuple in the form ``(environ, result)`` + :param buffered: Set this to True to buffer the application run. + This will automatically close the application for + you as well. + :param follow_redirects: Set this to True if the `Client` should + follow HTTP redirects. + """ + as_tuple = kwargs.pop("as_tuple", False) + buffered = kwargs.pop("buffered", False) + follow_redirects = kwargs.pop("follow_redirects", False) + environ = None + if not kwargs and len(args) == 1: + if isinstance(args[0], EnvironBuilder): + environ = args[0].get_environ() + elif isinstance(args[0], dict): + environ = args[0] + if environ is None: + builder = EnvironBuilder(*args, **kwargs) + try: + environ = builder.get_environ() + finally: + builder.close() + + response = self.run_wsgi_app(environ.copy(), buffered=buffered) + + # handle redirects + redirect_chain = [] + while 1: + status_code = int(response[1].split(None, 1)[0]) + if ( + status_code not in {301, 302, 303, 305, 307, 308} + or not follow_redirects + ): + break + + # Exhaust intermediate response bodies to ensure middleware + # that returns an iterator runs any cleanup code. + if not buffered: + for _ in response[0]: + pass + + new_location = response[2]["location"] + new_redirect_entry = (new_location, status_code) + if new_redirect_entry in redirect_chain: + raise ClientRedirectError("loop detected") + redirect_chain.append(new_redirect_entry) + environ, response = self.resolve_redirect( + response, new_location, environ, buffered=buffered + ) + + if self.response_wrapper is not None: + response = self.response_wrapper(*response) + if as_tuple: + return environ, response + return response + + def get(self, *args, **kw): + """Like open but method is enforced to GET.""" + kw["method"] = "GET" + return self.open(*args, **kw) + + def patch(self, *args, **kw): + """Like open but method is enforced to PATCH.""" + kw["method"] = "PATCH" + return self.open(*args, **kw) + + def post(self, *args, **kw): + """Like open but method is enforced to POST.""" + kw["method"] = "POST" + return self.open(*args, **kw) + + def head(self, *args, **kw): + """Like open but method is enforced to HEAD.""" + kw["method"] = "HEAD" + return self.open(*args, **kw) + + def put(self, *args, **kw): + """Like open but method is enforced to PUT.""" + kw["method"] = "PUT" + return self.open(*args, **kw) + + def delete(self, *args, **kw): + """Like open but method is enforced to DELETE.""" + kw["method"] = "DELETE" + return self.open(*args, **kw) + + def options(self, *args, **kw): + """Like open but method is enforced to OPTIONS.""" + kw["method"] = "OPTIONS" + return self.open(*args, **kw) + + def trace(self, *args, **kw): + """Like open but method is enforced to TRACE.""" + kw["method"] = "TRACE" + return self.open(*args, **kw) + + def __repr__(self): + return "<%s %r>" % (self.__class__.__name__, self.application) + + +def create_environ(*args, **kwargs): + """Create a new WSGI environ dict based on the values passed. The first + parameter should be the path of the request which defaults to '/'. The + second one can either be an absolute path (in that case the host is + localhost:80) or a full path to the request with scheme, netloc port and + the path to the script. + + This accepts the same arguments as the :class:`EnvironBuilder` + constructor. + + .. versionchanged:: 0.5 + This function is now a thin wrapper over :class:`EnvironBuilder` which + was added in 0.5. The `headers`, `environ_base`, `environ_overrides` + and `charset` parameters were added. + """ + builder = EnvironBuilder(*args, **kwargs) + try: + return builder.get_environ() + finally: + builder.close() + + +def run_wsgi_app(app, environ, buffered=False): + """Return a tuple in the form (app_iter, status, headers) of the + application output. This works best if you pass it an application that + returns an iterator all the time. + + Sometimes applications may use the `write()` callable returned + by the `start_response` function. This tries to resolve such edge + cases automatically. But if you don't get the expected output you + should set `buffered` to `True` which enforces buffering. + + If passed an invalid WSGI application the behavior of this function is + undefined. Never pass non-conforming WSGI applications to this function. + + :param app: the application to execute. + :param buffered: set to `True` to enforce buffering. + :return: tuple in the form ``(app_iter, status, headers)`` + """ + environ = _get_environ(environ) + response = [] + buffer = [] + + def start_response(status, headers, exc_info=None): + if exc_info is not None: + reraise(*exc_info) + response[:] = [status, headers] + return buffer.append + + app_rv = app(environ, start_response) + close_func = getattr(app_rv, "close", None) + app_iter = iter(app_rv) + + # when buffering we emit the close call early and convert the + # application iterator into a regular list + if buffered: + try: + app_iter = list(app_iter) + finally: + if close_func is not None: + close_func() + + # otherwise we iterate the application iter until we have a response, chain + # the already received data with the already collected data and wrap it in + # a new `ClosingIterator` if we need to restore a `close` callable from the + # original return value. + else: + for item in app_iter: + buffer.append(item) + if response: + break + if buffer: + app_iter = chain(buffer, app_iter) + if close_func is not None and app_iter is not app_rv: + app_iter = ClosingIterator(app_iter, close_func) + + return app_iter, response[0], Headers(response[1]) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/testapp.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/testapp.py new file mode 100644 index 00000000..8ea23bee --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/testapp.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.testapp + ~~~~~~~~~~~~~~~~ + + Provide a small test application that can be used to test a WSGI server + and check it for WSGI compliance. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import base64 +import os +import sys +from textwrap import wrap + +import werkzeug +from .utils import escape +from .wrappers import BaseRequest as Request +from .wrappers import BaseResponse as Response + +logo = Response( + base64.b64decode( + """ +R0lGODlhoACgAOMIAAEDACwpAEpCAGdgAJaKAM28AOnVAP3rAP///////// +//////////////////////yH5BAEKAAgALAAAAACgAKAAAAT+EMlJq704680R+F0ojmRpnuj0rWnrv +nB8rbRs33gu0bzu/0AObxgsGn3D5HHJbCUFyqZ0ukkSDlAidctNFg7gbI9LZlrBaHGtzAae0eloe25 +7w9EDOX2fst/xenyCIn5/gFqDiVVDV4aGeYiKkhSFjnCQY5OTlZaXgZp8nJ2ekaB0SQOjqphrpnOiq +ncEn65UsLGytLVmQ6m4sQazpbtLqL/HwpnER8bHyLrLOc3Oz8PRONPU1crXN9na263dMt/g4SzjMeX +m5yDpLqgG7OzJ4u8lT/P69ej3JPn69kHzN2OIAHkB9RUYSFCFQYQJFTIkCDBiwoXWGnowaLEjRm7+G +p9A7Hhx4rUkAUaSLJlxHMqVMD/aSycSZkyTplCqtGnRAM5NQ1Ly5OmzZc6gO4d6DGAUKA+hSocWYAo +SlM6oUWX2O/o0KdaVU5vuSQLAa0ADwQgMEMB2AIECZhVSnTno6spgbtXmHcBUrQACcc2FrTrWS8wAf +78cMFBgwIBgbN+qvTt3ayikRBk7BoyGAGABAdYyfdzRQGV3l4coxrqQ84GpUBmrdR3xNIDUPAKDBSA +ADIGDhhqTZIWaDcrVX8EsbNzbkvCOxG8bN5w8ly9H8jyTJHC6DFndQydbguh2e/ctZJFXRxMAqqPVA +tQH5E64SPr1f0zz7sQYjAHg0In+JQ11+N2B0XXBeeYZgBZFx4tqBToiTCPv0YBgQv8JqA6BEf6RhXx +w1ENhRBnWV8ctEX4Ul2zc3aVGcQNC2KElyTDYyYUWvShdjDyMOGMuFjqnII45aogPhz/CodUHFwaDx +lTgsaOjNyhGWJQd+lFoAGk8ObghI0kawg+EV5blH3dr+digkYuAGSaQZFHFz2P/cTaLmhF52QeSb45 +Jwxd+uSVGHlqOZpOeJpCFZ5J+rkAkFjQ0N1tah7JJSZUFNsrkeJUJMIBi8jyaEKIhKPomnC91Uo+NB +yyaJ5umnnpInIFh4t6ZSpGaAVmizqjpByDegYl8tPE0phCYrhcMWSv+uAqHfgH88ak5UXZmlKLVJhd +dj78s1Fxnzo6yUCrV6rrDOkluG+QzCAUTbCwf9SrmMLzK6p+OPHx7DF+bsfMRq7Ec61Av9i6GLw23r +idnZ+/OO0a99pbIrJkproCQMA17OPG6suq3cca5ruDfXCCDoS7BEdvmJn5otdqscn+uogRHHXs8cbh +EIfYaDY1AkrC0cqwcZpnM6ludx72x0p7Fo/hZAcpJDjax0UdHavMKAbiKltMWCF3xxh9k25N/Viud8 +ba78iCvUkt+V6BpwMlErmcgc502x+u1nSxJSJP9Mi52awD1V4yB/QHONsnU3L+A/zR4VL/indx/y64 +gqcj+qgTeweM86f0Qy1QVbvmWH1D9h+alqg254QD8HJXHvjQaGOqEqC22M54PcftZVKVSQG9jhkv7C +JyTyDoAJfPdu8v7DRZAxsP/ky9MJ3OL36DJfCFPASC3/aXlfLOOON9vGZZHydGf8LnxYJuuVIbl83y +Az5n/RPz07E+9+zw2A2ahz4HxHo9Kt79HTMx1Q7ma7zAzHgHqYH0SoZWyTuOLMiHwSfZDAQTn0ajk9 +YQqodnUYjByQZhZak9Wu4gYQsMyEpIOAOQKze8CmEF45KuAHTvIDOfHJNipwoHMuGHBnJElUoDmAyX +c2Qm/R8Ah/iILCCJOEokGowdhDYc/yoL+vpRGwyVSCWFYZNljkhEirGXsalWcAgOdeAdoXcktF2udb +qbUhjWyMQxYO01o6KYKOr6iK3fE4MaS+DsvBsGOBaMb0Y6IxADaJhFICaOLmiWTlDAnY1KzDG4ambL +cWBA8mUzjJsN2KjSaSXGqMCVXYpYkj33mcIApyhQf6YqgeNAmNvuC0t4CsDbSshZJkCS1eNisKqlyG +cF8G2JeiDX6tO6Mv0SmjCa3MFb0bJaGPMU0X7c8XcpvMaOQmCajwSeY9G0WqbBmKv34DsMIEztU6Y2 +KiDlFdt6jnCSqx7Dmt6XnqSKaFFHNO5+FmODxMCWBEaco77lNDGXBM0ECYB/+s7nKFdwSF5hgXumQe +EZ7amRg39RHy3zIjyRCykQh8Zo2iviRKyTDn/zx6EefptJj2Cw+Ep2FSc01U5ry4KLPYsTyWnVGnvb +UpyGlhjBUljyjHhWpf8OFaXwhp9O4T1gU9UeyPPa8A2l0p1kNqPXEVRm1AOs1oAGZU596t6SOR2mcB +Oco1srWtkaVrMUzIErrKri85keKqRQYX9VX0/eAUK1hrSu6HMEX3Qh2sCh0q0D2CtnUqS4hj62sE/z +aDs2Sg7MBS6xnQeooc2R2tC9YrKpEi9pLXfYXp20tDCpSP8rKlrD4axprb9u1Df5hSbz9QU0cRpfgn +kiIzwKucd0wsEHlLpe5yHXuc6FrNelOl7pY2+11kTWx7VpRu97dXA3DO1vbkhcb4zyvERYajQgAADs +=""" + ), + mimetype="image/png", +) + + +TEMPLATE = u"""\ + +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(): + if os.name == "posix": + + def strip(x): + prefix = os.path.expanduser("~") + if x.startswith(prefix): + x = "~" + x[len(prefix) :] + return x + + else: + + def strip(x): + return x + + cwd = os.path.abspath(os.getcwd()) + for item in sys.path: + path = os.path.join(cwd, item or os.path.curdir) + yield strip(os.path.normpath(path)), not os.path.isdir(path), path != item + + +def render_testapp(req): + try: + import pkg_resources + except ImportError: + eggs = () + else: + eggs = sorted(pkg_resources.working_set, key=lambda x: x.project_name.lower()) + python_eggs = [] + for egg in eggs: + try: + version = egg.version + except (ValueError, AttributeError): + version = "unknown" + python_eggs.append( + "
  • %s [%s]" % (escape(egg.project_name), escape(version)) + ) + + wsgi_env = [] + sorted_environ = sorted(req.environ.items(), key=lambda x: repr(x[0]).lower()) + for key, value in sorted_environ: + wsgi_env.append( + "%s%s" + % (escape(str(key)), " ".join(wrap(escape(repr(value))))) + ) + + sys_path = [] + for item, virtual, expanded in iter_sys_path(): + class_ = [] + if virtual: + class_.append("virtual") + if expanded: + class_.append("exp") + sys_path.append( + "%s" + % (' class="%s"' % " ".join(class_) if class_ else "", escape(item)) + ) + + return ( + TEMPLATE + % { + "python_version": "
    ".join(escape(sys.version).splitlines()), + "platform": escape(sys.platform), + "os": escape(os.name), + "api_version": sys.api_version, + "byteorder": sys.byteorder, + "werkzeug_version": werkzeug.__version__, + "python_eggs": "\n".join(python_eggs), + "wsgi_env": "\n".join(wsgi_env), + "sys_path": "\n".join(sys_path), + } + ).encode("utf-8") + + +def test_app(environ, start_response): + """Simple test application that dumps the environment. You can use + it to check if Werkzeug is working properly: + + .. sourcecode:: pycon + + >>> from werkzeug.serving import run_simple + >>> from werkzeug.testapp import test_app + >>> run_simple('localhost', 3000, test_app) + * Running on http://localhost:3000/ + + The application displays important information from the WSGI environment, + the Python interpreter and the installed libraries. + """ + req = Request(environ, populate_request=False) + if req.args.get("resource") == "logo": + response = logo + else: + response = Response(render_testapp(req), mimetype="text/html") + return response(environ, start_response) + + +if __name__ == "__main__": + from .serving import run_simple + + run_simple("localhost", 5000, test_app, use_reloader=True) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/urls.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/urls.py new file mode 100644 index 00000000..38e9e5ad --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/urls.py @@ -0,0 +1,1134 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.urls + ~~~~~~~~~~~~~ + + ``werkzeug.urls`` used to provide several wrapper functions for Python 2 + urlparse, whose main purpose were to work around the behavior of the Py2 + stdlib and its lack of unicode support. While this was already a somewhat + inconvenient situation, it got even more complicated because Python 3's + ``urllib.parse`` actually does handle unicode properly. In other words, + this module would wrap two libraries with completely different behavior. So + now this module contains a 2-and-3-compatible backport of Python 3's + ``urllib.parse``, which is mostly API-compatible. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import os +import re +from collections import namedtuple + +from ._compat import fix_tuple_repr +from ._compat import implements_to_string +from ._compat import make_literal_wrapper +from ._compat import normalize_string_tuple +from ._compat import PY2 +from ._compat import text_type +from ._compat import to_native +from ._compat import to_unicode +from ._compat import try_coerce_native +from ._internal import _decode_idna +from ._internal import _encode_idna +from .datastructures import iter_multi_items +from .datastructures import MultiDict + +# A regular expression for what a valid schema looks like +_scheme_re = re.compile(r"^[a-zA-Z0-9+-.]+$") + +# Characters that are safe in any part of an URL. +_always_safe = frozenset( + bytearray( + b"abcdefghijklmnopqrstuvwxyz" + b"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + b"0123456789" + b"-._~" + ) +) + +_hexdigits = "0123456789ABCDEFabcdef" +_hextobyte = dict( + ((a + b).encode(), int(a + b, 16)) for a in _hexdigits for b in _hexdigits +) +_bytetohex = [("%%%02X" % char).encode("ascii") for char in range(256)] + + +_URLTuple = fix_tuple_repr( + namedtuple("_URLTuple", ["scheme", "netloc", "path", "query", "fragment"]) +) + + +class BaseURL(_URLTuple): + """Superclass of :py:class:`URL` and :py:class:`BytesURL`.""" + + __slots__ = () + + def replace(self, **kwargs): + """Return an URL with the same values, except for those parameters + given new values by whichever keyword arguments are specified.""" + return self._replace(**kwargs) + + @property + def host(self): + """The host part of the URL if available, otherwise `None`. The + host is either the hostname or the IP address mentioned in the + URL. It will not contain the port. + """ + return self._split_host()[0] + + @property + def ascii_host(self): + """Works exactly like :attr:`host` but will return a result that + is restricted to ASCII. If it finds a netloc that is not ASCII + it will attempt to idna decode it. This is useful for socket + operations when the URL might include internationalized characters. + """ + rv = self.host + if rv is not None and isinstance(rv, text_type): + try: + rv = _encode_idna(rv) + except UnicodeError: + rv = rv.encode("ascii", "ignore") + return to_native(rv, "ascii", "ignore") + + @property + def port(self): + """The port in the URL as an integer if it was present, `None` + otherwise. This does not fill in default ports. + """ + try: + rv = int(to_native(self._split_host()[1])) + if 0 <= rv <= 65535: + return rv + except (ValueError, TypeError): + pass + + @property + def auth(self): + """The authentication part in the URL if available, `None` + otherwise. + """ + return self._split_netloc()[0] + + @property + def username(self): + """The username if it was part of the URL, `None` otherwise. + This undergoes URL decoding and will always be a unicode string. + """ + rv = self._split_auth()[0] + if rv is not None: + return _url_unquote_legacy(rv) + + @property + def raw_username(self): + """The username if it was part of the URL, `None` otherwise. + Unlike :attr:`username` this one is not being decoded. + """ + return self._split_auth()[0] + + @property + def password(self): + """The password if it was part of the URL, `None` otherwise. + This undergoes URL decoding and will always be a unicode string. + """ + rv = self._split_auth()[1] + if rv is not None: + return _url_unquote_legacy(rv) + + @property + def raw_password(self): + """The password if it was part of the URL, `None` otherwise. + Unlike :attr:`password` this one is not being decoded. + """ + return self._split_auth()[1] + + def decode_query(self, *args, **kwargs): + """Decodes the query part of the URL. Ths is a shortcut for + calling :func:`url_decode` on the query argument. The arguments and + keyword arguments are forwarded to :func:`url_decode` unchanged. + """ + return url_decode(self.query, *args, **kwargs) + + def join(self, *args, **kwargs): + """Joins this URL with another one. This is just a convenience + function for calling into :meth:`url_join` and then parsing the + return value again. + """ + return url_parse(url_join(self, *args, **kwargs)) + + def to_url(self): + """Returns a URL string or bytes depending on the type of the + information stored. This is just a convenience function + for calling :meth:`url_unparse` for this URL. + """ + return url_unparse(self) + + def decode_netloc(self): + """Decodes the netloc part into a string.""" + rv = _decode_idna(self.host or "") + + if ":" in rv: + rv = "[%s]" % rv + port = self.port + if port is not None: + rv = "%s:%d" % (rv, port) + auth = ":".join( + filter( + None, + [ + _url_unquote_legacy(self.raw_username or "", "/:%@"), + _url_unquote_legacy(self.raw_password or "", "/:%@"), + ], + ) + ) + if auth: + rv = "%s@%s" % (auth, rv) + return rv + + def to_uri_tuple(self): + """Returns a :class:`BytesURL` tuple that holds a URI. This will + encode all the information in the URL properly to ASCII using the + rules a web browser would follow. + + It's usually more interesting to directly call :meth:`iri_to_uri` which + will return a string. + """ + return url_parse(iri_to_uri(self).encode("ascii")) + + def to_iri_tuple(self): + """Returns a :class:`URL` tuple that holds a IRI. This will try + to decode as much information as possible in the URL without + losing information similar to how a web browser does it for the + URL bar. + + It's usually more interesting to directly call :meth:`uri_to_iri` which + will return a string. + """ + return url_parse(uri_to_iri(self)) + + def get_file_location(self, pathformat=None): + """Returns a tuple with the location of the file in the form + ``(server, location)``. If the netloc is empty in the URL or + points to localhost, it's represented as ``None``. + + The `pathformat` by default is autodetection but needs to be set + when working with URLs of a specific system. The supported values + are ``'windows'`` when working with Windows or DOS paths and + ``'posix'`` when working with posix paths. + + If the URL does not point to a local file, the server and location + are both represented as ``None``. + + :param pathformat: The expected format of the path component. + Currently ``'windows'`` and ``'posix'`` are + supported. Defaults to ``None`` which is + autodetect. + """ + if self.scheme != "file": + return None, None + + path = url_unquote(self.path) + host = self.netloc or None + + if pathformat is None: + if os.name == "nt": + pathformat = "windows" + else: + pathformat = "posix" + + if pathformat == "windows": + if path[:1] == "/" and path[1:2].isalpha() and path[2:3] in "|:": + path = path[1:2] + ":" + path[3:] + windows_share = path[:3] in ("\\" * 3, "/" * 3) + import ntpath + + path = ntpath.normpath(path) + # Windows shared drives are represented as ``\\host\\directory``. + # That results in a URL like ``file://///host/directory``, and a + # path like ``///host/directory``. We need to special-case this + # because the path contains the hostname. + if windows_share and host is None: + parts = path.lstrip("\\").split("\\", 1) + if len(parts) == 2: + host, path = parts + else: + host = parts[0] + path = "" + elif pathformat == "posix": + import posixpath + + path = posixpath.normpath(path) + else: + raise TypeError("Invalid path format %s" % repr(pathformat)) + + if host in ("127.0.0.1", "::1", "localhost"): + host = None + + return host, path + + def _split_netloc(self): + if self._at in self.netloc: + return self.netloc.split(self._at, 1) + return None, self.netloc + + def _split_auth(self): + auth = self._split_netloc()[0] + if not auth: + return None, None + if self._colon not in auth: + return auth, None + return auth.split(self._colon, 1) + + def _split_host(self): + rv = self._split_netloc()[1] + if not rv: + return None, None + + if not rv.startswith(self._lbracket): + if self._colon in rv: + return rv.split(self._colon, 1) + return rv, None + + idx = rv.find(self._rbracket) + if idx < 0: + return rv, None + + host = rv[1:idx] + rest = rv[idx + 1 :] + if rest.startswith(self._colon): + return host, rest[1:] + return host, None + + +@implements_to_string +class URL(BaseURL): + """Represents a parsed URL. This behaves like a regular tuple but + also has some extra attributes that give further insight into the + URL. + """ + + __slots__ = () + _at = "@" + _colon = ":" + _lbracket = "[" + _rbracket = "]" + + def __str__(self): + return self.to_url() + + def encode_netloc(self): + """Encodes the netloc part to an ASCII safe URL as bytes.""" + rv = self.ascii_host or "" + if ":" in rv: + rv = "[%s]" % rv + port = self.port + if port is not None: + rv = "%s:%d" % (rv, port) + auth = ":".join( + filter( + None, + [ + url_quote(self.raw_username or "", "utf-8", "strict", "/:%"), + url_quote(self.raw_password or "", "utf-8", "strict", "/:%"), + ], + ) + ) + if auth: + rv = "%s@%s" % (auth, rv) + return to_native(rv) + + def encode(self, charset="utf-8", errors="replace"): + """Encodes the URL to a tuple made out of bytes. The charset is + only being used for the path, query and fragment. + """ + return BytesURL( + self.scheme.encode("ascii"), + self.encode_netloc(), + self.path.encode(charset, errors), + self.query.encode(charset, errors), + self.fragment.encode(charset, errors), + ) + + +class BytesURL(BaseURL): + """Represents a parsed URL in bytes.""" + + __slots__ = () + _at = b"@" + _colon = b":" + _lbracket = b"[" + _rbracket = b"]" + + def __str__(self): + return self.to_url().decode("utf-8", "replace") + + def encode_netloc(self): + """Returns the netloc unchanged as bytes.""" + return self.netloc + + def decode(self, charset="utf-8", errors="replace"): + """Decodes the URL to a tuple made out of strings. The charset is + only being used for the path, query and fragment. + """ + return URL( + self.scheme.decode("ascii"), + self.decode_netloc(), + self.path.decode(charset, errors), + self.query.decode(charset, errors), + self.fragment.decode(charset, errors), + ) + + +_unquote_maps = {frozenset(): _hextobyte} + + +def _unquote_to_bytes(string, unsafe=""): + if isinstance(string, text_type): + string = string.encode("utf-8") + + if isinstance(unsafe, text_type): + unsafe = unsafe.encode("utf-8") + + unsafe = frozenset(bytearray(unsafe)) + groups = iter(string.split(b"%")) + result = bytearray(next(groups, b"")) + + try: + hex_to_byte = _unquote_maps[unsafe] + except KeyError: + hex_to_byte = _unquote_maps[unsafe] = { + h: b for h, b in _hextobyte.items() if b not in unsafe + } + + for group in groups: + code = group[:2] + + if code in hex_to_byte: + result.append(hex_to_byte[code]) + result.extend(group[2:]) + else: + result.append(37) # % + result.extend(group) + + return bytes(result) + + +def _url_encode_impl(obj, charset, encode_keys, sort, key): + iterable = iter_multi_items(obj) + if sort: + iterable = sorted(iterable, key=key) + for key, value in iterable: + if value is None: + continue + if not isinstance(key, bytes): + key = text_type(key).encode(charset) + if not isinstance(value, bytes): + value = text_type(value).encode(charset) + yield _fast_url_quote_plus(key) + "=" + _fast_url_quote_plus(value) + + +def _url_unquote_legacy(value, unsafe=""): + try: + return url_unquote(value, charset="utf-8", errors="strict", unsafe=unsafe) + except UnicodeError: + return url_unquote(value, charset="latin1", unsafe=unsafe) + + +def url_parse(url, scheme=None, allow_fragments=True): + """Parses a URL from a string into a :class:`URL` tuple. If the URL + is lacking a scheme it can be provided as second argument. Otherwise, + it is ignored. Optionally fragments can be stripped from the URL + by setting `allow_fragments` to `False`. + + The inverse of this function is :func:`url_unparse`. + + :param url: the URL to parse. + :param scheme: the default schema to use if the URL is schemaless. + :param allow_fragments: if set to `False` a fragment will be removed + from the URL. + """ + s = make_literal_wrapper(url) + is_text_based = isinstance(url, text_type) + + if scheme is None: + scheme = s("") + netloc = query = fragment = s("") + i = url.find(s(":")) + if i > 0 and _scheme_re.match(to_native(url[:i], errors="replace")): + # make sure "iri" is not actually a port number (in which case + # "scheme" is really part of the path) + rest = url[i + 1 :] + if not rest or any(c not in s("0123456789") for c in rest): + # not a port number + scheme, url = url[:i].lower(), rest + + if url[:2] == s("//"): + delim = len(url) + for c in s("/?#"): + wdelim = url.find(c, 2) + if wdelim >= 0: + delim = min(delim, wdelim) + netloc, url = url[2:delim], url[delim:] + if (s("[") in netloc and s("]") not in netloc) or ( + s("]") in netloc and s("[") not in netloc + ): + raise ValueError("Invalid IPv6 URL") + + if allow_fragments and s("#") in url: + url, fragment = url.split(s("#"), 1) + if s("?") in url: + url, query = url.split(s("?"), 1) + + result_type = URL if is_text_based else BytesURL + return result_type(scheme, netloc, url, query, fragment) + + +def _make_fast_url_quote(charset="utf-8", errors="strict", safe="/:", unsafe=""): + """Precompile the translation table for a URL encoding function. + + Unlike :func:`url_quote`, the generated function only takes the + string to quote. + + :param charset: The charset to encode the result with. + :param errors: How to handle encoding errors. + :param safe: An optional sequence of safe characters to never encode. + :param unsafe: An optional sequence of unsafe characters to always encode. + """ + if isinstance(safe, text_type): + safe = safe.encode(charset, errors) + + if isinstance(unsafe, text_type): + unsafe = unsafe.encode(charset, errors) + + safe = (frozenset(bytearray(safe)) | _always_safe) - frozenset(bytearray(unsafe)) + table = [chr(c) if c in safe else "%%%02X" % c for c in range(256)] + + if not PY2: + + def quote(string): + return "".join([table[c] for c in string]) + + else: + + def quote(string): + return "".join([table[c] for c in bytearray(string)]) + + return quote + + +_fast_url_quote = _make_fast_url_quote() +_fast_quote_plus = _make_fast_url_quote(safe=" ", unsafe="+") + + +def _fast_url_quote_plus(string): + return _fast_quote_plus(string).replace(" ", "+") + + +def url_quote(string, charset="utf-8", errors="strict", safe="/:", unsafe=""): + """URL encode a single string with a given encoding. + + :param s: the string to quote. + :param charset: the charset to be used. + :param safe: an optional sequence of safe characters. + :param unsafe: an optional sequence of unsafe characters. + + .. versionadded:: 0.9.2 + The `unsafe` parameter was added. + """ + if not isinstance(string, (text_type, bytes, bytearray)): + string = text_type(string) + if isinstance(string, text_type): + string = string.encode(charset, errors) + if isinstance(safe, text_type): + safe = safe.encode(charset, errors) + if isinstance(unsafe, text_type): + unsafe = unsafe.encode(charset, errors) + safe = (frozenset(bytearray(safe)) | _always_safe) - frozenset(bytearray(unsafe)) + rv = bytearray() + for char in bytearray(string): + if char in safe: + rv.append(char) + else: + rv.extend(_bytetohex[char]) + return to_native(bytes(rv)) + + +def url_quote_plus(string, charset="utf-8", errors="strict", safe=""): + """URL encode a single string with the given encoding and convert + whitespace to "+". + + :param s: The string to quote. + :param charset: The charset to be used. + :param safe: An optional sequence of safe characters. + """ + return url_quote(string, charset, errors, safe + " ", "+").replace(" ", "+") + + +def url_unparse(components): + """The reverse operation to :meth:`url_parse`. This accepts arbitrary + as well as :class:`URL` tuples and returns a URL as a string. + + :param components: the parsed URL as tuple which should be converted + into a URL string. + """ + scheme, netloc, path, query, fragment = normalize_string_tuple(components) + s = make_literal_wrapper(scheme) + url = s("") + + # We generally treat file:///x and file:/x the same which is also + # what browsers seem to do. This also allows us to ignore a schema + # register for netloc utilization or having to differenciate between + # empty and missing netloc. + if netloc or (scheme and path.startswith(s("/"))): + if path and path[:1] != s("/"): + path = s("/") + path + url = s("//") + (netloc or s("")) + path + elif path: + url += path + if scheme: + url = scheme + s(":") + url + if query: + url = url + s("?") + query + if fragment: + url = url + s("#") + fragment + return url + + +def url_unquote(string, charset="utf-8", errors="replace", unsafe=""): + """URL decode a single string with a given encoding. If the charset + is set to `None` no unicode decoding is performed and raw bytes + are returned. + + :param s: the string to unquote. + :param charset: the charset of the query string. If set to `None` + no unicode decoding will take place. + :param errors: the error handling for the charset decoding. + """ + rv = _unquote_to_bytes(string, unsafe) + if charset is not None: + rv = rv.decode(charset, errors) + return rv + + +def url_unquote_plus(s, charset="utf-8", errors="replace"): + """URL decode a single string with the given `charset` and decode "+" to + whitespace. + + Per default encoding errors are ignored. If you want a different behavior + you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a + :exc:`HTTPUnicodeError` is raised. + + :param s: The string to unquote. + :param charset: the charset of the query string. If set to `None` + no unicode decoding will take place. + :param errors: The error handling for the `charset` decoding. + """ + if isinstance(s, text_type): + s = s.replace(u"+", u" ") + else: + s = s.replace(b"+", b" ") + return url_unquote(s, charset, errors) + + +def url_fix(s, charset="utf-8"): + r"""Sometimes you get an URL by a user that just isn't a real URL because + it contains unsafe characters like ' ' and so on. This function can fix + some of the problems in a similar way browsers handle data entered by the + user: + + >>> url_fix(u'http://de.wikipedia.org/wiki/Elf (Begriffskl\xe4rung)') + 'http://de.wikipedia.org/wiki/Elf%20(Begriffskl%C3%A4rung)' + + :param s: the string with the URL to fix. + :param charset: The target charset for the URL if the url was given as + unicode string. + """ + # First step is to switch to unicode processing and to convert + # backslashes (which are invalid in URLs anyways) to slashes. This is + # consistent with what Chrome does. + s = to_unicode(s, charset, "replace").replace("\\", "/") + + # For the specific case that we look like a malformed windows URL + # we want to fix this up manually: + if s.startswith("file://") and s[7:8].isalpha() and s[8:10] in (":/", "|/"): + s = "file:///" + s[7:] + + url = url_parse(s) + path = url_quote(url.path, charset, safe="/%+$!*'(),") + qs = url_quote_plus(url.query, charset, safe=":&%=+$!*'(),") + anchor = url_quote_plus(url.fragment, charset, safe=":&%=+$!*'(),") + return to_native(url_unparse((url.scheme, url.encode_netloc(), path, qs, anchor))) + + +# not-unreserved characters remain quoted when unquoting to IRI +_to_iri_unsafe = "".join([chr(c) for c in range(128) if c not in _always_safe]) + + +def _codec_error_url_quote(e): + """Used in :func:`uri_to_iri` after unquoting to re-quote any + invalid bytes. + """ + out = _fast_url_quote(e.object[e.start : e.end]) + + if PY2: + out = out.decode("utf-8") + + return out, e.end + + +codecs.register_error("werkzeug.url_quote", _codec_error_url_quote) + + +def uri_to_iri(uri, charset="utf-8", errors="werkzeug.url_quote"): + """Convert a URI to an IRI. All valid UTF-8 characters are unquoted, + leaving all reserved and invalid characters quoted. If the URL has + a domain, it is decoded from Punycode. + + >>> uri_to_iri("http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF") + 'http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF' + + :param uri: The URI to convert. + :param charset: The encoding to encode unquoted bytes with. + :param errors: Error handler to use during ``bytes.encode``. By + default, invalid bytes are left quoted. + + .. versionchanged:: 0.15 + All reserved and invalid characters remain quoted. Previously, + only some reserved characters were preserved, and invalid bytes + were replaced instead of left quoted. + + .. versionadded:: 0.6 + """ + if isinstance(uri, tuple): + uri = url_unparse(uri) + + uri = url_parse(to_unicode(uri, charset)) + path = url_unquote(uri.path, charset, errors, _to_iri_unsafe) + query = url_unquote(uri.query, charset, errors, _to_iri_unsafe) + fragment = url_unquote(uri.fragment, charset, errors, _to_iri_unsafe) + return url_unparse((uri.scheme, uri.decode_netloc(), path, query, fragment)) + + +# reserved characters remain unquoted when quoting to URI +_to_uri_safe = ":/?#[]@!$&'()*+,;=%" + + +def iri_to_uri(iri, charset="utf-8", errors="strict", safe_conversion=False): + """Convert an IRI to a URI. All non-ASCII and unsafe characters are + quoted. If the URL has a domain, it is encoded to Punycode. + + >>> iri_to_uri('http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF') + 'http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF' + + :param iri: The IRI to convert. + :param charset: The encoding of the IRI. + :param errors: Error handler to use during ``bytes.encode``. + :param safe_conversion: Return the URL unchanged if it only contains + ASCII characters and no whitespace. See the explanation below. + + There is a general problem with IRI conversion with some protocols + that are in violation of the URI specification. Consider the + following two IRIs:: + + magnet:?xt=uri:whatever + itms-services://?action=download-manifest + + After parsing, we don't know if the scheme requires the ``//``, + which is dropped if empty, but conveys different meanings in the + final URL if it's present or not. In this case, you can use + ``safe_conversion``, which will return the URL unchanged if it only + contains ASCII characters and no whitespace. This can result in a + URI with unquoted characters if it was not already quoted correctly, + but preserves the URL's semantics. Werkzeug uses this for the + ``Location`` header for redirects. + + .. versionchanged:: 0.15 + All reserved characters remain unquoted. Previously, only some + reserved characters were left unquoted. + + .. versionchanged:: 0.9.6 + The ``safe_conversion`` parameter was added. + + .. versionadded:: 0.6 + """ + if isinstance(iri, tuple): + iri = url_unparse(iri) + + if safe_conversion: + # If we're not sure if it's safe to convert the URL, and it only + # contains ASCII characters, return it unconverted. + try: + native_iri = to_native(iri) + ascii_iri = native_iri.encode("ascii") + + # Only return if it doesn't have whitespace. (Why?) + if len(ascii_iri.split()) == 1: + return native_iri + except UnicodeError: + pass + + iri = url_parse(to_unicode(iri, charset, errors)) + path = url_quote(iri.path, charset, errors, _to_uri_safe) + query = url_quote(iri.query, charset, errors, _to_uri_safe) + fragment = url_quote(iri.fragment, charset, errors, _to_uri_safe) + return to_native( + url_unparse((iri.scheme, iri.encode_netloc(), path, query, fragment)) + ) + + +def url_decode( + s, + charset="utf-8", + decode_keys=False, + include_empty=True, + errors="replace", + separator="&", + cls=None, +): + """ + Parse a querystring and return it as :class:`MultiDict`. There is a + difference in key decoding on different Python versions. On Python 3 + keys will always be fully decoded whereas on Python 2, keys will + remain bytestrings if they fit into ASCII. On 2.x keys can be forced + to be unicode by setting `decode_keys` to `True`. + + If the charset is set to `None` no unicode decoding will happen and + raw bytes will be returned. + + Per default a missing value for a key will default to an empty key. If + you don't want that behavior you can set `include_empty` to `False`. + + Per default encoding errors are ignored. If you want a different behavior + you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a + `HTTPUnicodeError` is raised. + + .. versionchanged:: 0.5 + In previous versions ";" and "&" could be used for url decoding. + This changed in 0.5 where only "&" is supported. If you want to + use ";" instead a different `separator` can be provided. + + The `cls` parameter was added. + + :param s: a string with the query string to decode. + :param charset: the charset of the query string. If set to `None` + no unicode decoding will take place. + :param decode_keys: Used on Python 2.x to control whether keys should + be forced to be unicode objects. If set to `True` + then keys will be unicode in all cases. Otherwise, + they remain `str` if they fit into ASCII. + :param include_empty: Set to `False` if you don't want empty values to + appear in the dict. + :param errors: the decoding error behavior. + :param separator: the pair separator to be used, defaults to ``&`` + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + """ + if cls is None: + cls = MultiDict + if isinstance(s, text_type) and not isinstance(separator, text_type): + separator = separator.decode(charset or "ascii") + elif isinstance(s, bytes) and not isinstance(separator, bytes): + separator = separator.encode(charset or "ascii") + return cls( + _url_decode_impl( + s.split(separator), charset, decode_keys, include_empty, errors + ) + ) + + +def url_decode_stream( + stream, + charset="utf-8", + decode_keys=False, + include_empty=True, + errors="replace", + separator="&", + cls=None, + limit=None, + return_iterator=False, +): + """Works like :func:`url_decode` but decodes a stream. The behavior + of stream and limit follows functions like + :func:`~werkzeug.wsgi.make_line_iter`. The generator of pairs is + directly fed to the `cls` so you can consume the data while it's + parsed. + + .. versionadded:: 0.8 + + :param stream: a stream with the encoded querystring + :param charset: the charset of the query string. If set to `None` + no unicode decoding will take place. + :param decode_keys: Used on Python 2.x to control whether keys should + be forced to be unicode objects. If set to `True`, + keys will be unicode in all cases. Otherwise, they + remain `str` if they fit into ASCII. + :param include_empty: Set to `False` if you don't want empty values to + appear in the dict. + :param errors: the decoding error behavior. + :param separator: the pair separator to be used, defaults to ``&`` + :param cls: an optional dict class to use. If this is not specified + or `None` the default :class:`MultiDict` is used. + :param limit: the content length of the URL data. Not necessary if + a limited stream is provided. + :param return_iterator: if set to `True` the `cls` argument is ignored + and an iterator over all decoded pairs is + returned + """ + from .wsgi import make_chunk_iter + + pair_iter = make_chunk_iter(stream, separator, limit) + decoder = _url_decode_impl(pair_iter, charset, decode_keys, include_empty, errors) + + if return_iterator: + return decoder + + if cls is None: + cls = MultiDict + + return cls(decoder) + + +def _url_decode_impl(pair_iter, charset, decode_keys, include_empty, errors): + for pair in pair_iter: + if not pair: + continue + s = make_literal_wrapper(pair) + equal = s("=") + if equal in pair: + key, value = pair.split(equal, 1) + else: + if not include_empty: + continue + key = pair + value = s("") + key = url_unquote_plus(key, charset, errors) + if charset is not None and PY2 and not decode_keys: + key = try_coerce_native(key) + yield key, url_unquote_plus(value, charset, errors) + + +def url_encode( + obj, charset="utf-8", encode_keys=False, sort=False, key=None, separator=b"&" +): + """URL encode a dict/`MultiDict`. If a value is `None` it will not appear + in the result string. Per default only values are encoded into the target + charset strings. If `encode_keys` is set to ``True`` unicode keys are + supported too. + + If `sort` is set to `True` the items are sorted by `key` or the default + sorting algorithm. + + .. versionadded:: 0.5 + `sort`, `key`, and `separator` were added. + + :param obj: the object to encode into a query string. + :param charset: the charset of the query string. + :param encode_keys: set to `True` if you have unicode keys. (Ignored on + Python 3.x) + :param sort: set to `True` if you want parameters to be sorted by `key`. + :param separator: the separator to be used for the pairs. + :param key: an optional function to be used for sorting. For more details + check out the :func:`sorted` documentation. + """ + separator = to_native(separator, "ascii") + return separator.join(_url_encode_impl(obj, charset, encode_keys, sort, key)) + + +def url_encode_stream( + obj, + stream=None, + charset="utf-8", + encode_keys=False, + sort=False, + key=None, + separator=b"&", +): + """Like :meth:`url_encode` but writes the results to a stream + object. If the stream is `None` a generator over all encoded + pairs is returned. + + .. versionadded:: 0.8 + + :param obj: the object to encode into a query string. + :param stream: a stream to write the encoded object into or `None` if + an iterator over the encoded pairs should be returned. In + that case the separator argument is ignored. + :param charset: the charset of the query string. + :param encode_keys: set to `True` if you have unicode keys. (Ignored on + Python 3.x) + :param sort: set to `True` if you want parameters to be sorted by `key`. + :param separator: the separator to be used for the pairs. + :param key: an optional function to be used for sorting. For more details + check out the :func:`sorted` documentation. + """ + separator = to_native(separator, "ascii") + gen = _url_encode_impl(obj, charset, encode_keys, sort, key) + if stream is None: + return gen + for idx, chunk in enumerate(gen): + if idx: + stream.write(separator) + stream.write(chunk) + + +def url_join(base, url, allow_fragments=True): + """Join a base URL and a possibly relative URL to form an absolute + interpretation of the latter. + + :param base: the base URL for the join operation. + :param url: the URL to join. + :param allow_fragments: indicates whether fragments should be allowed. + """ + if isinstance(base, tuple): + base = url_unparse(base) + if isinstance(url, tuple): + url = url_unparse(url) + + base, url = normalize_string_tuple((base, url)) + s = make_literal_wrapper(base) + + if not base: + return url + if not url: + return base + + bscheme, bnetloc, bpath, bquery, bfragment = url_parse( + base, allow_fragments=allow_fragments + ) + scheme, netloc, path, query, fragment = url_parse(url, bscheme, allow_fragments) + if scheme != bscheme: + return url + if netloc: + return url_unparse((scheme, netloc, path, query, fragment)) + netloc = bnetloc + + if path[:1] == s("/"): + segments = path.split(s("/")) + elif not path: + segments = bpath.split(s("/")) + if not query: + query = bquery + else: + segments = bpath.split(s("/"))[:-1] + path.split(s("/")) + + # If the rightmost part is "./" we want to keep the slash but + # remove the dot. + if segments[-1] == s("."): + segments[-1] = s("") + + # Resolve ".." and "." + segments = [segment for segment in segments if segment != s(".")] + while 1: + i = 1 + n = len(segments) - 1 + while i < n: + if segments[i] == s("..") and segments[i - 1] not in (s(""), s("..")): + del segments[i - 1 : i + 1] + break + i += 1 + else: + break + + # Remove trailing ".." if the URL is absolute + unwanted_marker = [s(""), s("..")] + while segments[:2] == unwanted_marker: + del segments[1] + + path = s("/").join(segments) + return url_unparse((scheme, netloc, path, query, fragment)) + + +class Href(object): + """Implements a callable that constructs URLs with the given base. The + function can be called with any number of positional and keyword + arguments which than are used to assemble the URL. Works with URLs + and posix paths. + + Positional arguments are appended as individual segments to + the path of the URL: + + >>> href = Href('/foo') + >>> href('bar', 23) + '/foo/bar/23' + >>> href('foo', bar=23) + '/foo/foo?bar=23' + + If any of the arguments (positional or keyword) evaluates to `None` it + will be skipped. If no keyword arguments are given the last argument + can be a :class:`dict` or :class:`MultiDict` (or any other dict subclass), + otherwise the keyword arguments are used for the query parameters, cutting + off the first trailing underscore of the parameter name: + + >>> href(is_=42) + '/foo?is=42' + >>> href({'foo': 'bar'}) + '/foo?foo=bar' + + Combining of both methods is not allowed: + + >>> href({'foo': 'bar'}, bar=42) + Traceback (most recent call last): + ... + TypeError: keyword arguments and query-dicts can't be combined + + Accessing attributes on the href object creates a new href object with + the attribute name as prefix: + + >>> bar_href = href.bar + >>> bar_href("blub") + '/foo/bar/blub' + + If `sort` is set to `True` the items are sorted by `key` or the default + sorting algorithm: + + >>> href = Href("/", sort=True) + >>> href(a=1, b=2, c=3) + '/?a=1&b=2&c=3' + + .. versionadded:: 0.5 + `sort` and `key` were added. + """ + + def __init__(self, base="./", charset="utf-8", sort=False, key=None): + if not base: + base = "./" + self.base = base + self.charset = charset + self.sort = sort + self.key = key + + def __getattr__(self, name): + if name[:2] == "__": + raise AttributeError(name) + base = self.base + if base[-1:] != "/": + base += "/" + return Href(url_join(base, name), self.charset, self.sort, self.key) + + def __call__(self, *path, **query): + if path and isinstance(path[-1], dict): + if query: + raise TypeError("keyword arguments and query-dicts can't be combined") + query, path = path[-1], path[:-1] + elif query: + query = dict( + [(k.endswith("_") and k[:-1] or k, v) for k, v in query.items()] + ) + path = "/".join( + [ + to_unicode(url_quote(x, self.charset), "ascii") + for x in path + if x is not None + ] + ).lstrip("/") + rv = self.base + if path: + if not rv.endswith("/"): + rv += "/" + rv = url_join(rv, "./" + path) + if query: + rv += "?" + to_unicode( + url_encode(query, self.charset, sort=self.sort, key=self.key), "ascii" + ) + return to_native(rv) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/useragents.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/useragents.py new file mode 100644 index 00000000..e265e093 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/useragents.py @@ -0,0 +1,220 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.useragents + ~~~~~~~~~~~~~~~~~~~ + + This module provides a helper to inspect user agent strings. This module + is far from complete but should work for most of the currently available + browsers. + + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import re +import warnings + + +class UserAgentParser(object): + """A simple user agent parser. Used by the `UserAgent`.""" + + platforms = ( + ("cros", "chromeos"), + ("iphone|ios", "iphone"), + ("ipad", "ipad"), + (r"darwin|mac|os\s*x", "macos"), + ("win", "windows"), + (r"android", "android"), + ("netbsd", "netbsd"), + ("openbsd", "openbsd"), + ("freebsd", "freebsd"), + ("dragonfly", "dragonflybsd"), + ("(sun|i86)os", "solaris"), + (r"x11|lin(\b|ux)?", "linux"), + (r"nintendo\s+wii", "wii"), + ("irix", "irix"), + ("hp-?ux", "hpux"), + ("aix", "aix"), + ("sco|unix_sv", "sco"), + ("bsd", "bsd"), + ("amiga", "amiga"), + ("blackberry|playbook", "blackberry"), + ("symbian", "symbian"), + ) + browsers = ( + ("googlebot", "google"), + ("msnbot", "msn"), + ("yahoo", "yahoo"), + ("ask jeeves", "ask"), + (r"aol|america\s+online\s+browser", "aol"), + ("opera", "opera"), + ("edge", "edge"), + ("chrome|crios", "chrome"), + ("seamonkey", "seamonkey"), + ("firefox|firebird|phoenix|iceweasel", "firefox"), + ("galeon", "galeon"), + ("safari|version", "safari"), + ("webkit", "webkit"), + ("camino", "camino"), + ("konqueror", "konqueror"), + ("k-meleon", "kmeleon"), + ("netscape", "netscape"), + (r"msie|microsoft\s+internet\s+explorer|trident/.+? rv:", "msie"), + ("lynx", "lynx"), + ("links", "links"), + ("Baiduspider", "baidu"), + ("bingbot", "bing"), + ("mozilla", "mozilla"), + ) + + _browser_version_re = r"(?:%s)[/\sa-z(]*(\d+[.\da-z]+)?" + _language_re = re.compile( + r"(?:;\s*|\s+)(\b\w{2}\b(?:-\b\w{2}\b)?)\s*;|" + r"(?:\(|\[|;)\s*(\b\w{2}\b(?:-\b\w{2}\b)?)\s*(?:\]|\)|;)" + ) + + def __init__(self): + self.platforms = [(b, re.compile(a, re.I)) for a, b in self.platforms] + self.browsers = [ + (b, re.compile(self._browser_version_re % a, re.I)) + for a, b in self.browsers + ] + + def __call__(self, user_agent): + for platform, regex in self.platforms: # noqa: B007 + match = regex.search(user_agent) + if match is not None: + break + else: + platform = None + for browser, regex in self.browsers: # noqa: B007 + match = regex.search(user_agent) + if match is not None: + version = match.group(1) + break + else: + browser = version = None + match = self._language_re.search(user_agent) + if match is not None: + language = match.group(1) or match.group(2) + else: + language = None + return platform, browser, version, language + + +class UserAgent(object): + """Represents a user agent. Pass it a WSGI environment or a user agent + string and you can inspect some of the details from the user agent + string via the attributes. The following attributes exist: + + .. attribute:: string + + the raw user agent string + + .. attribute:: platform + + the browser platform. The following platforms are currently + recognized: + + - `aix` + - `amiga` + - `android` + - `blackberry` + - `bsd` + - `chromeos` + - `dragonflybsd` + - `freebsd` + - `hpux` + - `ipad` + - `iphone` + - `irix` + - `linux` + - `macos` + - `netbsd` + - `openbsd` + - `sco` + - `solaris` + - `symbian` + - `wii` + - `windows` + + .. attribute:: browser + + the name of the browser. The following browsers are currently + recognized: + + - `aol` * + - `ask` * + - `baidu` * + - `bing` * + - `camino` + - `chrome` + - `edge` + - `firefox` + - `galeon` + - `google` * + - `kmeleon` + - `konqueror` + - `links` + - `lynx` + - `mozilla` + - `msie` + - `msn` + - `netscape` + - `opera` + - `safari` + - `seamonkey` + - `webkit` + - `yahoo` * + + (Browsers marked with a star (``*``) are crawlers.) + + .. attribute:: version + + the version of the browser + + .. attribute:: language + + the language of the browser + """ + + _parser = UserAgentParser() + + def __init__(self, environ_or_string): + if isinstance(environ_or_string, dict): + environ_or_string = environ_or_string.get("HTTP_USER_AGENT", "") + self.string = environ_or_string + self.platform, self.browser, self.version, self.language = self._parser( + environ_or_string + ) + + def to_header(self): + return self.string + + def __str__(self): + return self.string + + def __nonzero__(self): + return bool(self.browser) + + __bool__ = __nonzero__ + + def __repr__(self): + return "<%s %r/%s>" % (self.__class__.__name__, self.browser, self.version) + + +# DEPRECATED +from .wrappers import UserAgentMixin as _UserAgentMixin + + +class UserAgentMixin(_UserAgentMixin): + @property + def user_agent(self, *args, **kwargs): + warnings.warn( + "'werkzeug.useragents.UserAgentMixin' should be imported" + " from 'werkzeug.wrappers.UserAgentMixin'. This old import" + " will be removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + return super(_UserAgentMixin, self).user_agent diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/utils.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/utils.py new file mode 100644 index 00000000..20620572 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/utils.py @@ -0,0 +1,836 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.utils + ~~~~~~~~~~~~~~ + + This module implements various utilities for WSGI applications. Most of + them are used by the request and response wrappers but especially for + middleware development it makes sense to use them without the wrappers. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import codecs +import os +import pkgutil +import re +import sys +import warnings + +from ._compat import iteritems +from ._compat import PY2 +from ._compat import reraise +from ._compat import string_types +from ._compat import text_type +from ._compat import unichr +from ._internal import _DictAccessorProperty +from ._internal import _missing +from ._internal import _parse_signature + +try: + from html.entities import name2codepoint +except ImportError: + from htmlentitydefs import name2codepoint + + +_format_re = re.compile(r"\$(?:(%s)|\{(%s)\})" % (("[a-zA-Z_][a-zA-Z0-9_]*",) * 2)) +_entity_re = re.compile(r"&([^;]+);") +_filename_ascii_strip_re = re.compile(r"[^A-Za-z0-9_.-]") +_windows_device_files = ( + "CON", + "AUX", + "COM1", + "COM2", + "COM3", + "COM4", + "LPT1", + "LPT2", + "LPT3", + "PRN", + "NUL", +) + + +class cached_property(property): + """A decorator that converts a function into a lazy property. The + function wrapped is called the first time to retrieve the result + and then that calculated result is used the next time you access + the value:: + + class Foo(object): + + @cached_property + def foo(self): + # calculate something important here + return 42 + + The class has to have a `__dict__` in order for this property to + work. + """ + + # implementation detail: A subclass of python's builtin property + # decorator, we override __get__ to check for a cached value. If one + # chooses to invoke __get__ by hand the property will still work as + # expected because the lookup logic is replicated in __get__ for + # manual invocation. + + def __init__(self, func, name=None, doc=None): + self.__name__ = name or func.__name__ + self.__module__ = func.__module__ + self.__doc__ = doc or func.__doc__ + self.func = func + + def __set__(self, obj, value): + obj.__dict__[self.__name__] = value + + def __get__(self, obj, type=None): + if obj is None: + return self + value = obj.__dict__.get(self.__name__, _missing) + if value is _missing: + value = self.func(obj) + obj.__dict__[self.__name__] = value + return value + + +class environ_property(_DictAccessorProperty): + """Maps request attributes to environment variables. This works not only + for the Werzeug request object, but also any other class with an + environ attribute: + + >>> class Test(object): + ... environ = {'key': 'value'} + ... test = environ_property('key') + >>> var = Test() + >>> var.test + 'value' + + If you pass it a second value it's used as default if the key does not + exist, the third one can be a converter that takes a value and converts + it. If it raises :exc:`ValueError` or :exc:`TypeError` the default value + is used. If no default value is provided `None` is used. + + Per default the property is read only. You have to explicitly enable it + by passing ``read_only=False`` to the constructor. + """ + + read_only = True + + def lookup(self, obj): + return obj.environ + + +class header_property(_DictAccessorProperty): + """Like `environ_property` but for headers.""" + + def lookup(self, obj): + return obj.headers + + +class HTMLBuilder(object): + """Helper object for HTML generation. + + Per default there are two instances of that class. The `html` one, and + the `xhtml` one for those two dialects. The class uses keyword parameters + and positional parameters to generate small snippets of HTML. + + Keyword parameters are converted to XML/SGML attributes, positional + arguments are used as children. Because Python accepts positional + arguments before keyword arguments it's a good idea to use a list with the + star-syntax for some children: + + >>> html.p(class_='foo', *[html.a('foo', href='foo.html'), ' ', + ... html.a('bar', href='bar.html')]) + u'

    foo bar

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

    <foo>

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

    Redirecting...

    \n" + "

    You should be redirected automatically to target URL: " + '%s. If not click the link.' + % (escape(location), display_location), + code, + mimetype="text/html", + ) + response.headers["Location"] = location + return response + + +def append_slash_redirect(environ, code=301): + """Redirects to the same URL but with a slash appended. The behavior + of this function is undefined if the path ends with a slash already. + + :param environ: the WSGI environment for the request that triggers + the redirect. + :param code: the status code for the redirect. + """ + new_path = environ["PATH_INFO"].strip("/") + "/" + query_string = environ.get("QUERY_STRING") + if query_string: + new_path += "?" + query_string + return redirect(new_path, code) + + +def import_string(import_name, silent=False): + """Imports an object based on a string. This is useful if you want to + use import paths as endpoints or something similar. An import path can + be specified either in dotted notation (``xml.sax.saxutils.escape``) + or with a colon as object delimiter (``xml.sax.saxutils:escape``). + + If `silent` is True the return value will be `None` if the import fails. + + :param import_name: the dotted name for the object to import. + :param silent: if set to `True` import errors are ignored and + `None` is returned instead. + :return: imported object + """ + # force the import name to automatically convert to strings + # __import__ is not able to handle unicode strings in the fromlist + # if the module is a package + import_name = str(import_name).replace(":", ".") + try: + try: + __import__(import_name) + except ImportError: + if "." not in import_name: + raise + else: + return sys.modules[import_name] + + module_name, obj_name = import_name.rsplit(".", 1) + module = __import__(module_name, globals(), locals(), [obj_name]) + try: + return getattr(module, obj_name) + except AttributeError as e: + raise ImportError(e) + + except ImportError as e: + if not silent: + reraise( + ImportStringError, ImportStringError(import_name, e), sys.exc_info()[2] + ) + + +def find_modules(import_path, include_packages=False, recursive=False): + """Finds all the modules below a package. This can be useful to + automatically import all views / controllers so that their metaclasses / + function decorators have a chance to register themselves on the + application. + + Packages are not returned unless `include_packages` is `True`. This can + also recursively list modules but in that case it will import all the + packages to get the correct load path of that module. + + :param import_path: the dotted name for the package to find child modules. + :param include_packages: set to `True` if packages should be returned, too. + :param recursive: set to `True` if recursion should happen. + :return: generator + """ + module = import_string(import_path) + path = getattr(module, "__path__", None) + if path is None: + raise ValueError("%r is not a package" % import_path) + basename = module.__name__ + "." + for _importer, modname, ispkg in pkgutil.iter_modules(path): + modname = basename + modname + if ispkg: + if include_packages: + yield modname + if recursive: + for item in find_modules(modname, include_packages, True): + yield item + else: + yield modname + + +def validate_arguments(func, args, kwargs, drop_extra=True): + """Checks if the function accepts the arguments and keyword arguments. + Returns a new ``(args, kwargs)`` tuple that can safely be passed to + the function without causing a `TypeError` because the function signature + is incompatible. If `drop_extra` is set to `True` (which is the default) + any extra positional or keyword arguments are dropped automatically. + + The exception raised provides three attributes: + + `missing` + A set of argument names that the function expected but where + missing. + + `extra` + A dict of keyword arguments that the function can not handle but + where provided. + + `extra_positional` + A list of values that where given by positional argument but the + function cannot accept. + + This can be useful for decorators that forward user submitted data to + a view function:: + + from werkzeug.utils import ArgumentValidationError, validate_arguments + + def sanitize(f): + def proxy(request): + data = request.values.to_dict() + try: + args, kwargs = validate_arguments(f, (request,), data) + except ArgumentValidationError: + raise BadRequest('The browser failed to transmit all ' + 'the data expected.') + return f(*args, **kwargs) + return proxy + + :param func: the function the validation is performed against. + :param args: a tuple of positional arguments. + :param kwargs: a dict of keyword arguments. + :param drop_extra: set to `False` if you don't want extra arguments + to be silently dropped. + :return: tuple in the form ``(args, kwargs)``. + """ + parser = _parse_signature(func) + args, kwargs, missing, extra, extra_positional = parser(args, kwargs)[:5] + if missing: + raise ArgumentValidationError(tuple(missing)) + elif (extra or extra_positional) and not drop_extra: + raise ArgumentValidationError(None, extra, extra_positional) + return tuple(args), kwargs + + +def bind_arguments(func, args, kwargs): + """Bind the arguments provided into a dict. When passed a function, + a tuple of arguments and a dict of keyword arguments `bind_arguments` + returns a dict of names as the function would see it. This can be useful + to implement a cache decorator that uses the function arguments to build + the cache key based on the values of the arguments. + + :param func: the function the arguments should be bound for. + :param args: tuple of positional arguments. + :param kwargs: a dict of keyword arguments. + :return: a :class:`dict` of bound keyword arguments. + """ + ( + args, + kwargs, + missing, + extra, + extra_positional, + arg_spec, + vararg_var, + kwarg_var, + ) = _parse_signature(func)(args, kwargs) + values = {} + for (name, _has_default, _default), value in zip(arg_spec, args): + values[name] = value + if vararg_var is not None: + values[vararg_var] = tuple(extra_positional) + elif extra_positional: + raise TypeError("too many positional arguments") + if kwarg_var is not None: + multikw = set(extra) & set([x[0] for x in arg_spec]) + if multikw: + raise TypeError( + "got multiple values for keyword argument " + repr(next(iter(multikw))) + ) + values[kwarg_var] = extra + elif extra: + raise TypeError("got unexpected keyword argument " + repr(next(iter(extra)))) + return values + + +class ArgumentValidationError(ValueError): + + """Raised if :func:`validate_arguments` fails to validate""" + + def __init__(self, missing=None, extra=None, extra_positional=None): + self.missing = set(missing or ()) + self.extra = extra or {} + self.extra_positional = extra_positional or [] + ValueError.__init__( + self, + "function arguments invalid. (%d missing, %d additional)" + % (len(self.missing), len(self.extra) + len(self.extra_positional)), + ) + + +class ImportStringError(ImportError): + """Provides information about a failed :func:`import_string` attempt.""" + + #: String in dotted notation that failed to be imported. + import_name = None + #: Wrapped exception. + exception = None + + def __init__(self, import_name, exception): + self.import_name = import_name + self.exception = exception + + msg = ( + "import_string() failed for %r. Possible reasons are:\n\n" + "- missing __init__.py in a package;\n" + "- package or module path not included in sys.path;\n" + "- duplicated package or module name taking precedence in " + "sys.path;\n" + "- missing module, class, function or variable;\n\n" + "Debugged import:\n\n%s\n\n" + "Original exception:\n\n%s: %s" + ) + + name = "" + tracked = [] + for part in import_name.replace(":", ".").split("."): + name += (name and ".") + part + imported = import_string(name, silent=True) + if imported: + tracked.append((name, getattr(imported, "__file__", None))) + else: + track = ["- %r found in %r." % (n, i) for n, i in tracked] + track.append("- %r not found." % name) + msg = msg % ( + import_name, + "\n".join(track), + exception.__class__.__name__, + str(exception), + ) + break + + ImportError.__init__(self, msg) + + def __repr__(self): + return "<%s(%r, %r)>" % ( + self.__class__.__name__, + self.import_name, + self.exception, + ) + + +# DEPRECATED +from .datastructures import CombinedMultiDict as _CombinedMultiDict +from .datastructures import EnvironHeaders as _EnvironHeaders +from .datastructures import Headers as _Headers +from .datastructures import MultiDict as _MultiDict +from .http import dump_cookie as _dump_cookie +from .http import parse_cookie as _parse_cookie + + +class MultiDict(_MultiDict): + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.utils.MultiDict' has moved to 'werkzeug" + ".datastructures.MultiDict' as of version 0.5. This old" + " import will be removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(MultiDict, self).__init__(*args, **kwargs) + + +class CombinedMultiDict(_CombinedMultiDict): + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.utils.CombinedMultiDict' has moved to 'werkzeug" + ".datastructures.CombinedMultiDict' as of version 0.5. This" + " old import will be removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(CombinedMultiDict, self).__init__(*args, **kwargs) + + +class Headers(_Headers): + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.utils.Headers' has moved to 'werkzeug" + ".datastructures.Headers' as of version 0.5. This old" + " import will be removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(Headers, self).__init__(*args, **kwargs) + + +class EnvironHeaders(_EnvironHeaders): + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.utils.EnvironHeaders' has moved to 'werkzeug" + ".datastructures.EnvironHeaders' as of version 0.5. This" + " old import will be removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(EnvironHeaders, self).__init__(*args, **kwargs) + + +def parse_cookie(*args, **kwargs): + warnings.warn( + "'werkzeug.utils.parse_cookie' as moved to 'werkzeug.http" + ".parse_cookie' as of version 0.5. This old import will be" + " removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + return _parse_cookie(*args, **kwargs) + + +def dump_cookie(*args, **kwargs): + warnings.warn( + "'werkzeug.utils.dump_cookie' as moved to 'werkzeug.http" + ".dump_cookie' as of version 0.5. This old import will be" + " removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + return _dump_cookie(*args, **kwargs) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__init__.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__init__.py new file mode 100644 index 00000000..56c764ab --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__init__.py @@ -0,0 +1,36 @@ +""" +werkzeug.wrappers +~~~~~~~~~~~~~~~~~ + +The wrappers are simple request and response objects which you can +subclass to do whatever you want them to do. The request object contains +the information transmitted by the client (webbrowser) and the response +object contains all the information sent back to the browser. + +An important detail is that the request object is created with the WSGI +environ and will act as high-level proxy whereas the response object is an +actual WSGI application. + +Like everything else in Werkzeug these objects will work correctly with +unicode data. Incoming form data parsed by the response object will be +decoded into an unicode object if possible and if it makes sense. + +:copyright: 2007 Pallets +:license: BSD-3-Clause +""" +from .accept import AcceptMixin +from .auth import AuthorizationMixin +from .auth import WWWAuthenticateMixin +from .base_request import BaseRequest +from .base_response import BaseResponse +from .common_descriptors import CommonRequestDescriptorsMixin +from .common_descriptors import CommonResponseDescriptorsMixin +from .etag import ETagRequestMixin +from .etag import ETagResponseMixin +from .request import PlainRequest +from .request import Request +from .request import StreamOnlyMixin +from .response import Response +from .response import ResponseStream +from .response import ResponseStreamMixin +from .user_agent import UserAgentMixin diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b5674f457cc63134bf4cb01333e5534da064cce3 GIT binary patch literal 1632 zcmaJ>%WfMt6qRh*l1DE~c9Ob4i@R&RkYyx`0!9(kNs1ysA3>Z#0D)q_nV~hTIOK%n zWTGtkD_!?b`VHE4)qX-(z2u0HYZM(p#NmCMx%XUho(zZ4ujI3z@`G0EkJg=M5Aj#{ zH^1YOwMZ*#XM3Vu?2)~;!~0^t=#Y-b9mEIZz~cjPSaeC(<3rIaj>wV6T@e+1()YNB zct8doABkZxA|sC@#A7n{xG#>237L32Ks+T=kB5j)$ce`zaauee4?G?ten=jAe2n-J zdF1g#d{mr~GsM%I*7*tj3mc1SrdJ)>b}vSaF|(oq94+85 z1y8*~SnRia#lY#kwmFweU;+olB`mhnccgbm=jy1HUZLt*<1_`n9;=Qj$y1dv$f%__ zrk65Rh2wM6@J1-9HoHLtu|u7{!GuK_b2J&2fVxr%fpPL|53ii@AblH!o&SX3qt!42%A3SS*|a$L~aB!QOvH4SU_3dQ2WP+veco{*&jbD3sg= zykI8PytGQ2kpF22Xj1+o;`r+~bh#x6S(C=ro z-V29JkDP7nmSg9LaO^s!u6{j1!*4Bp=A3T%`{~>k<-FwOEUCE2X7TOv@g;v-&%>3N mhcDwieEH^a%q6#Rd{M49y)O%uRf0V|MK%MtblQXe{rv;mCk9#o literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/accept.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/accept.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8518b8bb97e1fa5d897b1ae2140c567288d102e7 GIT binary patch literal 2161 zcmb_d%WfMt6rG1gFUxk&6xp;uxl6UkC`i$b5fo8X#W7&3M&hEt00m7CDQTQ}ndDft z5M-nLN7wys`Z%Y^?1$* zWgI>`^oc)b6sJ5%8JBlHxUZWH)(d!q>X_k~)bK27dNylNi`pNImFYQPH>jiSCfGV= z7;k~yrX4-rrd^1AFW)PoISYOc;^pr{6e$Bu6OR0l2*Cte1agi@jE;zu{OI!iw?wel zOr%LHn9JhZfG6=KQj@_|CRrCjlL?wJiAWeCIcMnA#l<-)(nLj?0uiBC9_eks?Sk>Q zOP0-CN+c1IXTHoh6K)aTB}%TYnJ)$U5<(N%RT*8e+njNhO#7~W^G!fTHTAFH8o?tz zfleCljBE26;98l|UReNuwMMqTk>S1eUi-9CI6BAox z{75u!Dm48<3;zR{TdLZD=fe#=@#xj?^_y{pD{n)Byra58qr9tZ1!&Rrz{(HHoU4!@ z!JtqzFdWNVezpUhYUOTl9>ABIR9l&vXunm^u-H#%5YM);DS{9#LgRWKlt>EkNX8@0 zZbc!&8S;}T1$l@diP74j$b8VMK(l3#f~S{C##JHaO>G{vn(Wh^OJjz zmx7V&XcQ+@^R`NLI-DH;FgzZYXUw`(+=d$5Q?DAr$Esdh3>^@|uA`z}I_Y=vHpVfD z7{+-Q<0zq7sO%obHyH`bnHI)0@iFFbPaAw+bqA_bXA)Q9*$}9fs!}O$L8s&_l!V(( z!|JtqonBjyPx@W&VEf+Cg4dbq<1}x~rA&*%*2!cL3cY*YEUp#pW!JWO`+1SYH|jRg Kd-u%pXa56^nMdCM literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/auth.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/auth.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0674411a6bb1c740052dde3b3a948b85fcc8eccb GIT binary patch literal 1650 zcmbW1L674!6vyo(Z8N21yTgjZ2&4!Jp&}+-u@_VgqaATz_P{KHqLCsY*BiUj%%(}! zcD8IZ%VkEux8TfyFO(}Mz5*xSb0(!7_JBy`SKD#k`@iR({b)Gs{~CSt{ZAete~_&Q z#^f|DE17sg%DgK^J}d&2*g zjQ9R@z}=YE2L)GJGG3Zxu9AwIB+uAVav>GGeZP6TUa##6nVBT!M*g$lUd-dA6s%Br zA(eR*gV)XDLhms&{T>)eA}UDa2pYN46OM3i$Tf{R!UH*-djDiw!B@!-Nml)SB7_cj z7EHM@YC7K$IS<;Hfmw1BC|M|}L7|4R46Ja`58!#p(^3Zc!p_fk;>?34)qrcebQ-5z z>*@T*wN%e5Szd&K8?KEiV^f0r@Xpuyvr8G9(0&_J$Pyo{EVeJ8=?7r0$R)X?f?m_t z)Hql04=Fp<$1~7*S5M-YVYGibn|;krzMGvs{pLw@GJEp$Z0y!OnY~O@ zp4IM!G|KL%Q+rybi@Mt+_8U=sQ1I7uVpheZNQ%Q}Ws-_Rwz&B8Ve(=Is%REMC>aow^S&D}<7`16l<;1+m)}?kqnWcWa-qjIShPb)T_SF3J@91IAvI zJiUF>V@%{RV+vg>3}S_EnYVDR1EvejD)2qeu`~ahx(Day=a@kYcEjCq!(EHrUHZ4l z%L5MN=_1cGAlA^Z0Rj1MoBjX>Ka&MuAeY)!|!0N3>5p zT7CAWO$b|Gt&Z?0&10VG<8b5Z-(ttE+6T|7hX!i_6IKb7RhP~V51-85w1rvNq1oQ?h3 tTN+c?gKe{^JEcidZO=&EZE&*(z<%&1-?e|#9Jpho!`6L3;pdKqe*^KHwg&(J literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/base_request.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/base_request.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a805f0eb63ef402b32fc7e722f10aba07f2c743 GIT binary patch literal 22634 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 Sr;^9#yZ$fC{xWC&pZveDS27m> literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/base_response.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/base_response.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..afd066f78a29b713bef814a8dbf46aff29695f47 GIT binary patch literal 23280 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 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/common_descriptors.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/common_descriptors.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8edf96c1d8b7577dcfb67db4e85ebbedd8c9b6d GIT binary patch literal 12149 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 Mg5T5st4ra30}zG64*&oF literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/etag.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/etag.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..24c0c043a7883f88c469ddba16417ed48d3f16d0 GIT binary patch literal 11691 zcmd5?&2QXDb|=|i>{jd3vPSmIc(~r#*uAmZh9{XxwBE@$vOHEYmJ>xFOOH3C7vt72!OqW1c>2>=mY$Kwq*iF})nDwlCY4nO*_CX0I`Q zDR`&7Zm%=F8eC~#wXf>h=bE@I)?R92&3pGeXTOK@cf>l**ZKT?ab;htUH#U8d}{iz z8pYD@969k>*Nf=fIr3u1>pb^m*rD^SuoHWoc+c$|c{snc=Y7@lqIk<~9(#08h5;_G z?s-u+>_pzw_4y;O<4HI694~f{(6D?Q$6ZI@3O(gVj`X6iC!3zr4u#+HJ%Q_2yRM8p zr%7WtO*M#f?76~|V|Nu}jwH@TcPr}IWP~|&MuXGrE~`_&HT~3zx-s3?SG{n=dbQV? zIA3J`gwvH_*OT!X`d?H`j$c}Jnt|tb9Jkr@y0IFUSebWNq+d$6i>I4djqH;H^%=gA zz`@gOU1+u;bUWweg&}e;wR7DrfX<5o(?!rlQDV9T+7xA`P0$rF$8;HVRm?M80lgp= znVu6%P>1E=()NLSl&tMz|7*X~|L6NcSXg;KKC>V`%k2n@XKV>CYD&KwhcdF_&~h!Q zbixV`pLxyL3S~;2`tfna!pF6~-2Z$B-LYP^(XHh^cm2RU3_Qz?tW7tLmUk=v-sFcSWcA4QtMOa zewuI&{2@~ym$8L!w2s3-d!{|pg?_HT&|_nu3nR{*=OCwC|Mb4K*$mt$0<)){Jn4JA zqdJt$g&p;paS!TTpJ5`6L?S#e38V!f5qo~88Ma}7Gx>}ZqtxDBd312_N6yy$tw-C= z)|1_Xy(eGn*7CzrBBfytb}K7jUKVhu8N+a=2F>J5 z@+RG8IWK{TNz(c===M4OAYY^Zllz@id1%dCzeB=tgMg)_me}v`Nn@wA@z{-<$Bk@R zGx2W19=qP=>(`1{j~dx?!+93-&O_(%{e!JXwVa#>pYk0#kY?0$d4*__qB^_>YG}fv zw277P;VdG3(u(~n7sQgbdMk;Xznw&O!;bgAE|x_5AeP-HyW4Lkn|aK-1E!RKHpT>W zQEw)izLk`I_W;JkPFz^57)dnQ*oTFAsfLiNp~w*XZ7)%?y1kYy`I84b4|ld7IQu)h zTiaOsDwuuk+Aq_pCZjnKjrQBw9CQ8aGnHVX`CHBN2UGKW+DXTLgPE?UGkv=I_y^xK>vik7CnG=XxI%bhbJMz0|73Lg zjs3w+OO23qJn{&8_jf-htyp*ytssxUXyW%W@tCtc0=IfAnf!QMCjZw0nHEQdbtsj^ z;+x2#z*F2A6U5pDJ>e$1wd&AxoQ~V}9A{W@$gX+;(N)L!s^f{|ePYwZeCsxRHG*s?sO= z1rDzQWeSqnMFq#~lDH+@@zmej88`fGK1aUJJk;ajFnC692H%vd+Sub?O3j#t0LeZ7)9FY_z23^${BA zEEJ4ndvS;`?l*xq&MY_*nhwd}7IlzJ|G7s^)wE;6rOES$9wdf)7yyFcWXL)MoV6G( zvba1z=a$4lQEI#6i=S^opL>`*$zc+9dj|-wQ(MQ}k&)>tu?zT3+Gy z-$btrGG!4|%}_{_02BMKlr45%4OSBZ8 z{6VcDvgl{K?8rhJ%jwucEGq<3)Pa+7Qg9+aM03c$j31flU#fbX^-N_t?>khp;gU;Y&s6N76r57|9{S;UsufJ# zz+Z*G6{CN9#tQwqo_3p@UZOwZjWm{5?C(JcI6W%py~yj@ASZGsrd${KebA)4qHvG& zIX6H?S=FMC2dJ2!#U{0g^8@`ER+F;L7llEA@BGOi4{g_fst*d!ibTCAf+{gp8WgEb zG#He)?aQn!>Md6^+%>Og>)H!*U=ECvocufd5)WnYP=fuKqJm=?*D9**z&tlluAAG} zh@V>3{U^lbM-)=MDGQQb0DmJAWs0nudk?ohx%<&aHAE5ww8nj|Cn-G`OJEbf4sCjl z*e-5y^q#a$*2`?kZds=Yu%3#HiBHV5lhP$F_8fu}_<9O%;6wFF_Q+R8YCVd4@CNB3;!FI!VA2B~_`J}<4QUFz5_;b;+n_&-8lVUZPOOj5YrAT$-i7|Vm zng^`{%B|pYBWx|wx zN(Sasv9OmUTPwhcqdcqq4k8{q=uT3POyVDkMdLM9d7C==2!~o(#UgSD!$opNfrq-N z>TWncQQBli?5dKA@)Y)*Vj=F~IeT?tkaXyU^y+Nyzm|HLN#FAl3`O6^L7S@@Cc<$= zU&V1jH}O}&-x7Y8azq#Lw?qN^<_u4ixUk92A7(Cy0tN+Ic0qpwf`SDcMShSM`V~zq z0F?Yvf#aSQ=h%@LI7e%^CaBj0-zIPPmyQ}gW25?B2U6!hypL?CC_?bf@VX&EMslt0O8ce zTmzSoQ;f}E75pn%D9DmImS*Jr>LNg0eC3R zC`n_Xrj3S@3NKB)4I?A>n%dP(s8X#ll02zQg2^bSO6!nFcQ?8LvfZ(PH{nIyHo9dE zb>P7hUEH+X^lGXBn8JlE7UZdiBg;tR*^J-R=7{%6@s3R-Tb>ymq?gQ|;&QkN|dMbNlBZ4{x5)1{X01HQv|o6R&pA&BB}fg56JsC)aE2*bPBFg zHASw{;Zr(rDoVgr?Yt2NwI@BZ13k*{s~XH+hhuN{C}WzsQ!6oawO1}WQF)I>`2igW z*xCg@x_jqid6zCsWxY$&PW>;@D7uM*cEi-Gg^FGU&?MNYQr;y4v{5vQdIhkQ;AgrK zG**+n5Gk4@6#CFFeYfz9eglVr9xb3yLFKQKyiUjt+tNsK&+#e%5GAFQs!+3u8gGWm zQY6;wNl8_R43R11gJLE0og9mG24|-h8O1270}M?PGQliK;CE=!TOkBE(qc^+L0O(k zpH$@3b5EuvW~MOj-)Ih;%R?sps~5p{+Hm&lNin!IgIO}7)luS0ic8FLO&Yr6hE7VM>Kj zEHHYZxO2;*BXyBIBL4t9Vdl&DQMUN&wz&DdASlGIGAZO|Ng-`EQE?+>rf#(TyACh95T}t{vv7ii`O0Sq;gNwD0E548M%zu#xx#C;M z!>jbyFIto8bgG`v|Mvsnn^z&G?dPa40*d#Jj#((Q$!48Wi6fi24>a3^bH#n^*R-*N z;Ukq-K^C|f%7}?|Ly3YFL{X0%Jt8Np8lS0J7f3`c-s4CoSjtgxi6HyAbDK#7M; z8t3Gq_!Q$%W<()1V{PWfFNB!G4q;}AqZghNDDkEU zJ@z76qFSnlBvGteZ14Ukzd|&*nENEzPWql5?7NBG+-!4~pau4IeQ)Gw0i69VK`@5A z8I!Z^)7VA$eMnzyOYr}yB%mX2(1C!Jtl=;;)0ZpNEqJ0?KY0z(L~<*X$ap|}Xjq;TTkP!TD1gPkd0G^=i{W_L6r zcelKj(B>iQH!ArBRPjtzUU}nz-!ZQ|z|#MAU^AOJi8HPQ6|C8;l2pgF zpr+|+;*RS<-85!Rz1s^K4~=x!F?jRD6C=~0pI+Gt8Xp^}^~iY7U^V7GGnmV_&+Xs} z#&zal?CJ3iv-XWv<4ee7w9NcUbSSfAs(2WWCz(*aFRfysuJ}_Gs@a5Nm-q9C{hB|X za;Y$Sg>l6PDx9ie$kRc_;`C@h{FaXm;%zi}2OT#8lNo`H>#huC@U9n7ON5?5m#_v);M!DFnlTRxfwMaHPgb7`7U@7t1)6DoO`DcUh#k zipM;6h|24+%!Zj5M=E!w)0pMXM;|?SC%2^%d2JNQNGTy42q#>0dHn$Ry(>f}0GpZp z#SpJx`gymb#*@w@p4>j1#tFL}4v)TfCw_d|dC0}doKKHBrz=84lL;5Hb1bv8J()pL z#)r`~QCGo9Zlg1-rs?YDnN4eceFMDqa`S+0l^#Nn{64ycbqsV^?c6d8+5tvD zs~q8Kh*s9Iy)cL7!ulMDw%lIsNj`~0q%t9&n|sgAZeA+|%j*(`6rS*zJZM?st2jh_ z4PDEjmsGh+d<9c^B_zG_3Y(56vSsJ?Ad$J99UkY_$*Bgb=&lo!Z=m}onj~yV>us}X z&aZCjtNE-=D7ogRUZfn$F_l&>-$CMCJwB{%B!;c-#lkEBnV+y1>M^$)o} zj-PVoV>|rNKg`s~^YL`G`rZB~OV4SamY<0~a`@?0@f-lPs0I?`wWswmtpIgQ4G- zh>!^l3>ENU4eJb~@|1w%`#{BhIpcY{yxLr=0{bNve+Kys~-Vsm8;-atcKD~U8u?{h@FQ_F9rIKHdU}N(1W$Ll8?+;N zGTg9iGV0tROz)D)I@HzX+ba`m)6xnaTBfGqc?|@?a|X9(=7}}&7v?e2)VY}v1tX^n z(sJgX-W&132_c0WfDINfT|!Btx#x4J!^KMa|Av?k8-B_9tv9umtWlWnTn2pJ+?<(L z^c#pr?ovJkTonl=31Es&Oj8KTx1o1#jn!ooYvrxIhxH;@RjL%M5N6kKmU~t?h0tuE zX+$Z^&YFZNA^I86bC9J`th`i5w zy%v%|(AE%fK-m+=A zJ=%v_lh?6k$y*G{fwC7ivpzG=oY@XWltmomlM3pzAyltI^)F20tZEwb_ZOC!GpvFC zpNRi&t+U#hyQnQHLu8`RNMFNjZBeE7H}<$^^+jb-FZMh%KBk0io>f1oJ~GmsM3Sh{4O?PAbJp`o$^!lPH;T z+BTI4%*Z9A>*m_V>0K&l#*|kEyz4(WN;APPVuM5cC^?O0;3H=1gryVIO2Lwkgovr? z`up@hD8epjh8%&SiL%jBkR=i;4q6GM7XL|CwlicJ%9gvTsB&1Oo)Qf!>UGjdh2T^{HCU2rM zcCMkC@=V8ST9&zkp99)K&}v$q{@47Y$e6ZYVk!Gsm{^9h+@gte%R$t2b%>GhI~TFT(;Mrd+<&&MtbJozOTKG z%)TgtixL9WI=%+G{vYm~^$@Zv057jXID8~6BlyoScli!~g1JAU75Tb4*UWSw*nY7U z^;-7*`vv(ulNxSe@GpfkRTa0 zfXgG_^LJc*S4 z7R<&uJDS_ipB%|C9XY6%b!;ZhzkYj@E6IPyFV=o%DYtj$yd=e Tk-F*25I=YZeJ^d>JKy>@taxl^ literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/request.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/request.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a52e9b01b8b12a84fb808d7f4deaf41cea30824 GIT binary patch literal 1767 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 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/user_agent.cpython-36.pyc b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/__pycache__/user_agent.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..841c03a8611b9d1b1a192d8efcfdde071ea55f02 GIT binary patch literal 795 zcmYjPv5wO~5Z$$%OD@Vm#|epIJLKYQ1llGnPbm9{r2r1$2-X$o$hKu{#1k|ds_ ziLZhlb4!y!kJml;V3fYdRB7MlU-EME>q1Jy1e-OG=K>2eCal%@ys?VeirJ-NTCE#p zEUV^MDz&U#=IL_Gz|yL;A}@{Ws)aU6GDKnyiB$_%nCq&=q+JTj06NQ*hDJbkAou73 ziJYf}Fy?&rwN?7_Mm1T4cn;1)d-Ag#m8fR{Dmz29&|ia_M-U{H9x8kX3g6OOa^-C) z=<07y-@{sIqctpiz&O$f1%e;%M}>Ye{!c;U1$IMKUgx?hL$3>rDi$vLgXkd?|4w7O zs^dDZ&*n{D$TPmkoyD{ghN;Ugb{w?lftQP q^e6~Cm$?jsZqV4gFz)y6sDBTxc7Wgj5vCix>}kA0RSk}u`2PUsao1Y_ literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/accept.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/accept.py new file mode 100644 index 00000000..d0620a0a --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/accept.py @@ -0,0 +1,50 @@ +from ..datastructures import CharsetAccept +from ..datastructures import LanguageAccept +from ..datastructures import MIMEAccept +from ..http import parse_accept_header +from ..utils import cached_property + + +class AcceptMixin(object): + """A mixin for classes with an :attr:`~BaseResponse.environ` attribute + to get all the HTTP accept headers as + :class:`~werkzeug.datastructures.Accept` objects (or subclasses + thereof). + """ + + @cached_property + def accept_mimetypes(self): + """List of mimetypes this client supports as + :class:`~werkzeug.datastructures.MIMEAccept` object. + """ + return parse_accept_header(self.environ.get("HTTP_ACCEPT"), MIMEAccept) + + @cached_property + def accept_charsets(self): + """List of charsets this client supports as + :class:`~werkzeug.datastructures.CharsetAccept` object. + """ + return parse_accept_header( + self.environ.get("HTTP_ACCEPT_CHARSET"), CharsetAccept + ) + + @cached_property + def accept_encodings(self): + """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.environ.get("HTTP_ACCEPT_ENCODING")) + + @cached_property + def accept_languages(self): + """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.environ.get("HTTP_ACCEPT_LANGUAGE"), LanguageAccept + ) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/auth.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/auth.py new file mode 100644 index 00000000..714f7554 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/auth.py @@ -0,0 +1,33 @@ +from ..http import parse_authorization_header +from ..http import parse_www_authenticate_header +from ..utils import cached_property + + +class AuthorizationMixin(object): + """Adds an :attr:`authorization` property that represents the parsed + value of the `Authorization` header as + :class:`~werkzeug.datastructures.Authorization` object. + """ + + @cached_property + def authorization(self): + """The `Authorization` object in parsed form.""" + header = self.environ.get("HTTP_AUTHORIZATION") + return parse_authorization_header(header) + + +class WWWAuthenticateMixin(object): + """Adds a :attr:`www_authenticate` property to a response object.""" + + @property + def www_authenticate(self): + """The `WWW-Authenticate` header in a parsed form.""" + + def on_update(www_auth): + 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) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/base_request.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/base_request.py new file mode 100644 index 00000000..41e8aadb --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/base_request.py @@ -0,0 +1,693 @@ +import warnings +from functools import update_wrapper +from io import BytesIO + +from .._compat import to_native +from .._compat import to_unicode +from .._compat import wsgi_decoding_dance +from .._compat import wsgi_get_bytes +from ..datastructures import CombinedMultiDict +from ..datastructures import EnvironHeaders +from ..datastructures import ImmutableList +from ..datastructures import ImmutableMultiDict +from ..datastructures import ImmutableTypeConversionDict +from ..datastructures import iter_multi_items +from ..datastructures import MultiDict +from ..formparser import default_stream_factory +from ..formparser import FormDataParser +from ..http import parse_cookie +from ..http import parse_options_header +from ..urls import url_decode +from ..utils import cached_property +from ..utils import environ_property +from ..wsgi import get_content_length +from ..wsgi import get_current_url +from ..wsgi import get_host +from ..wsgi import get_input_stream + + +class BaseRequest(object): + """Very basic request object. This does not implement advanced stuff like + entity tag parsing or cache controls. The request object is created with + the WSGI environment as first argument and will add itself to the WSGI + environment as ``'werkzeug.request'`` unless it's created with + `populate_request` set to False. + + There are a couple of mixins available that add additional functionality + to the request object, there is also a class called `Request` which + subclasses `BaseRequest` and all the important mixins. + + It's a good idea to create a custom subclass of the :class:`BaseRequest` + and add missing functionality either via mixins or direct implementation. + Here an example for such subclasses:: + + from werkzeug.wrappers import BaseRequest, ETagRequestMixin + + class Request(BaseRequest, ETagRequestMixin): + pass + + Request objects are **read only**. As of 0.5 modifications are not + allowed in any place. Unlike the lower level parsing functions the + request object will use immutable objects everywhere possible. + + Per default the request object will assume all the text data is `utf-8` + encoded. Please refer to :doc:`the unicode chapter ` for more + details about customizing the behavior. + + Per default the request object will be added to the WSGI + environment as `werkzeug.request` to support the debugging system. + If you don't want that, set `populate_request` to `False`. + + If `shallow` is `True` the environment is initialized as shallow + object around the environ. Every operation that would modify the + environ in any way (such as consuming form data) raises an exception + unless the `shallow` attribute is explicitly set to `False`. This + is useful for middlewares where you don't want to consume the form + data by accident. A shallow request is not populated to the WSGI + environment. + + .. versionchanged:: 0.5 + read-only mode was enforced by using immutables classes for all + data. + """ + + #: the charset for the request, defaults to utf-8 + charset = "utf-8" + + #: the error handling procedure for errors, defaults to 'replace' + encoding_errors = "replace" + + #: the maximum content length. This is forwarded to the form data + #: parsing function (:func:`parse_form_data`). When set and the + #: :attr:`form` or :attr:`files` attribute is accessed and the + #: parsing fails because more than the specified value is transmitted + #: a :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. + #: + #: Have a look at :ref:`dealing-with-request-data` for more details. + #: + #: .. versionadded:: 0.5 + max_content_length = None + + #: the maximum form field size. This is forwarded to the form data + #: parsing function (:func:`parse_form_data`). When set and the + #: :attr:`form` or :attr:`files` attribute is accessed and the + #: data in memory for post data is longer than the specified value a + #: :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. + #: + #: Have a look at :ref:`dealing-with-request-data` for more details. + #: + #: .. versionadded:: 0.5 + max_form_memory_size = None + + #: the class to use for `args` and `form`. The default is an + #: :class:`~werkzeug.datastructures.ImmutableMultiDict` which supports + #: multiple values per key. alternatively it makes sense to use an + #: :class:`~werkzeug.datastructures.ImmutableOrderedMultiDict` which + #: preserves order or a :class:`~werkzeug.datastructures.ImmutableDict` + #: which is the fastest but only remembers the last key. It is also + #: possible to use mutable structures, but this is not recommended. + #: + #: .. versionadded:: 0.6 + parameter_storage_class = ImmutableMultiDict + + #: the type to be used for list values from the incoming WSGI environment. + #: By default an :class:`~werkzeug.datastructures.ImmutableList` is used + #: (for example for :attr:`access_list`). + #: + #: .. versionadded:: 0.6 + list_storage_class = ImmutableList + + #: the type to be used for dict values from the incoming WSGI environment. + #: By default an + #: :class:`~werkzeug.datastructures.ImmutableTypeConversionDict` is used + #: (for example for :attr:`cookies`). + #: + #: .. versionadded:: 0.6 + dict_storage_class = ImmutableTypeConversionDict + + #: The form data parser that shoud be used. Can be replaced to customize + #: the form date parsing. + form_data_parser_class = FormDataParser + + #: Optionally a list of hosts that is trusted by this request. By default + #: all hosts are trusted which means that whatever the client sends the + #: host is will be accepted. + #: + #: Because `Host` and `X-Forwarded-Host` headers can be set to any value by + #: a malicious client, it is recommended to either set this property or + #: implement similar validation in the proxy (if application is being run + #: behind one). + #: + #: .. versionadded:: 0.9 + trusted_hosts = None + + #: Indicates whether the data descriptor should be allowed to read and + #: buffer up the input stream. By default it's enabled. + #: + #: .. versionadded:: 0.9 + disable_data_descriptor = False + + def __init__(self, environ, populate_request=True, shallow=False): + self.environ = environ + if populate_request and not shallow: + self.environ["werkzeug.request"] = self + self.shallow = shallow + + def __repr__(self): + # make sure the __repr__ even works if the request was created + # from an invalid WSGI environment. If we display the request + # in a debug session we don't want the repr to blow up. + args = [] + try: + args.append("'%s'" % to_native(self.url, self.url_charset)) + args.append("[%s]" % self.method) + except Exception: + args.append("(invalid WSGI environ)") + + return "<%s %s>" % (self.__class__.__name__, " ".join(args)) + + @property + def url_charset(self): + """The charset that is assumed for URLs. Defaults to the value + of :attr:`charset`. + + .. versionadded:: 0.6 + """ + return self.charset + + @classmethod + def from_values(cls, *args, **kwargs): + """Create a new request object based on the values provided. If + environ is given missing values are filled from there. This method is + useful for small scripts when you need to simulate a request from an URL. + Do not use this method for unittesting, there is a full featured client + object (:class:`Client`) that allows to create multipart requests, + support for cookies etc. + + This accepts the same options as the + :class:`~werkzeug.test.EnvironBuilder`. + + .. versionchanged:: 0.5 + This method now accepts the same arguments as + :class:`~werkzeug.test.EnvironBuilder`. Because of this the + `environ` parameter is now called `environ_overrides`. + + :return: request object + """ + from ..test import EnvironBuilder + + charset = kwargs.pop("charset", cls.charset) + kwargs["charset"] = charset + builder = EnvironBuilder(*args, **kwargs) + try: + return builder.get_request(cls) + finally: + builder.close() + + @classmethod + def application(cls, f): + """Decorate a function as responder that accepts the request as first + argument. This works like the :func:`responder` decorator but the + function is passed the request object as first 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 methods and standalone WSGI functions. + from ..exceptions import HTTPException + + def application(*args): + request = cls(args[-2]) + with request: + try: + resp = f(*args[:-2] + (request,)) + except HTTPException as e: + resp = e.get_response(args[-2]) + return resp(*args[-2:]) + + return update_wrapper(application, f) + + def _get_file_stream( + self, total_content_length, content_type, filename=None, content_length=None + ): + """Called to get a stream for the file upload. + + This must provide a file-like class with `read()`, `readline()` + and `seek()` methods that is both writeable and readable. + + The default implementation returns a temporary file if the total + content length is higher than 500KB. Because many browsers do not + provide a content length for the files only the total content + length matters. + + :param total_content_length: the total content length of all the + data in the request combined. This value + is guaranteed to be there. + :param content_type: the mimetype of the uploaded file. + :param filename: the filename of the uploaded file. May be `None`. + :param content_length: the length of this file. This value is usually + not provided because webbrowsers do not provide + this value. + """ + return default_stream_factory( + total_content_length=total_content_length, + filename=filename, + content_type=content_type, + content_length=content_length, + ) + + @property + def want_form_data_parsed(self): + """Returns True if the request method carries content. As of + Werkzeug 0.9 this will be the case if a content type is transmitted. + + .. versionadded:: 0.8 + """ + return bool(self.environ.get("CONTENT_TYPE")) + + def make_form_data_parser(self): + """Creates the form data parser. Instantiates the + :attr:`form_data_parser_class` with some parameters. + + .. versionadded:: 0.8 + """ + return self.form_data_parser_class( + self._get_file_stream, + self.charset, + self.encoding_errors, + self.max_form_memory_size, + self.max_content_length, + self.parameter_storage_class, + ) + + def _load_form_data(self): + """Method used internally to retrieve submitted data. After calling + this sets `form` and `files` on the request object to multi dicts + filled with the incoming form data. As a matter of fact the input + stream will be empty afterwards. You can also call this method to + force the parsing of the form data. + + .. versionadded:: 0.8 + """ + # abort early if we have already consumed the stream + if "form" in self.__dict__: + return + + _assert_not_shallow(self) + + if self.want_form_data_parsed: + content_type = self.environ.get("CONTENT_TYPE", "") + content_length = get_content_length(self.environ) + mimetype, options = parse_options_header(content_type) + parser = self.make_form_data_parser() + data = parser.parse( + self._get_stream_for_parsing(), mimetype, content_length, options + ) + else: + data = ( + self.stream, + self.parameter_storage_class(), + self.parameter_storage_class(), + ) + + # inject the values into the instance dict so that we bypass + # our cached_property non-data descriptor. + d = self.__dict__ + d["stream"], d["form"], d["files"] = data + + def _get_stream_for_parsing(self): + """This is the same as accessing :attr:`stream` with the difference + that if it finds cached data from calling :meth:`get_data` first it + will create a new stream out of the cached data. + + .. versionadded:: 0.9.3 + """ + cached_data = getattr(self, "_cached_data", None) + if cached_data is not None: + return BytesIO(cached_data) + return self.stream + + def close(self): + """Closes associated resources of this request object. This + closes all file handles explicitly. You can also use the request + object in a with statement which will automatically close it. + + .. versionadded:: 0.9 + """ + files = self.__dict__.get("files") + for _key, value in iter_multi_items(files or ()): + value.close() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, tb): + self.close() + + @cached_property + def stream(self): + """ + If the incoming form data was not encoded with a known mimetype + the data is stored unmodified in this stream for consumption. Most + of the time it is a better idea to use :attr:`data` which will give + you that data as a string. The stream only returns the data once. + + Unlike :attr:`input_stream` this stream is properly guarded that you + can't accidentally read past the length of the input. Werkzeug will + internally always refer to this stream to read data which makes it + possible to wrap this object with a stream that does filtering. + + .. versionchanged:: 0.9 + This stream is now always available but might be consumed by the + form parser later on. Previously the stream was only set if no + parsing happened. + """ + _assert_not_shallow(self) + return get_input_stream(self.environ) + + input_stream = environ_property( + "wsgi.input", + """The WSGI input stream. + + In general it's a bad idea to use this one because you can + easily read past the boundary. Use the :attr:`stream` + instead.""", + ) + + @cached_property + def args(self): + """The parsed URL parameters (the part in the URL after the question + mark). + + By default an + :class:`~werkzeug.datastructures.ImmutableMultiDict` + is returned from this function. This can be changed by setting + :attr:`parameter_storage_class` to a different type. This might + be necessary if the order of the form data is important. + """ + return url_decode( + wsgi_get_bytes(self.environ.get("QUERY_STRING", "")), + self.url_charset, + errors=self.encoding_errors, + cls=self.parameter_storage_class, + ) + + @cached_property + def data(self): + """ + Contains the incoming request data as string in case it came with + a mimetype Werkzeug does not handle. + """ + + if self.disable_data_descriptor: + raise AttributeError("data descriptor is disabled") + # XXX: this should eventually be deprecated. + + # We trigger form data parsing first which means that the descriptor + # will not cache the data that would otherwise be .form or .files + # data. This restores the behavior that was there in Werkzeug + # before 0.9. New code should use :meth:`get_data` explicitly as + # this will make behavior explicit. + return self.get_data(parse_form_data=True) + + def get_data(self, cache=True, as_text=False, parse_form_data=False): + """This reads the buffered incoming data from the client into one + bytestring. By default this is cached but that behavior can be + changed by setting `cache` to `False`. + + Usually it's a bad idea to call this method without checking the + content length first as a client could send dozens of megabytes or more + to cause memory problems on the server. + + Note that if the form data was already parsed this method will not + return anything as form data parsing does not cache the data like + this method does. To implicitly invoke form data parsing function + set `parse_form_data` to `True`. When this is done the return value + of this method will be an empty string if the form parser handles + the data. This generally is not necessary as if the whole data is + cached (which is the default) the form parser will used the cached + data to parse the form data. Please be generally aware of checking + the content length first in any case before calling this method + to avoid exhausting server memory. + + If `as_text` is set to `True` the return value will be a decoded + unicode string. + + .. versionadded:: 0.9 + """ + rv = getattr(self, "_cached_data", None) + if rv is None: + if parse_form_data: + self._load_form_data() + rv = self.stream.read() + if cache: + self._cached_data = rv + if as_text: + rv = rv.decode(self.charset, self.encoding_errors) + return rv + + @cached_property + def form(self): + """The form parameters. By default an + :class:`~werkzeug.datastructures.ImmutableMultiDict` + is returned from this function. This can be changed by setting + :attr:`parameter_storage_class` to a different type. This might + be necessary if the order of the form data is important. + + Please keep in mind that file uploads will not end up here, but instead + in the :attr:`files` attribute. + + .. versionchanged:: 0.9 + + Previous to Werkzeug 0.9 this would only contain form data for POST + and PUT requests. + """ + self._load_form_data() + return self.form + + @cached_property + def values(self): + """A :class:`werkzeug.datastructures.CombinedMultiDict` that combines + :attr:`args` and :attr:`form`.""" + args = [] + for d in self.args, self.form: + if not isinstance(d, MultiDict): + d = MultiDict(d) + args.append(d) + return CombinedMultiDict(args) + + @cached_property + def files(self): + """:class:`~werkzeug.datastructures.MultiDict` object containing + all uploaded files. Each key in :attr:`files` is the name from the + ````. Each value in :attr:`files` is a + Werkzeug :class:`~werkzeug.datastructures.FileStorage` object. + + It basically behaves like a standard file object you know from Python, + with the difference that it also has a + :meth:`~werkzeug.datastructures.FileStorage.save` function that can + store the file on the filesystem. + + Note that :attr:`files` will only contain data if the request method was + POST, PUT or PATCH and the ``

    `` that posted to the request had + ``enctype="multipart/form-data"``. It will be empty otherwise. + + See the :class:`~werkzeug.datastructures.MultiDict` / + :class:`~werkzeug.datastructures.FileStorage` documentation for + more details about the used data structure. + """ + self._load_form_data() + return self.files + + @cached_property + def cookies(self): + """A :class:`dict` with the contents of all cookies transmitted with + the request.""" + return parse_cookie( + self.environ, + self.charset, + self.encoding_errors, + cls=self.dict_storage_class, + ) + + @cached_property + def headers(self): + """The headers from the WSGI environ as immutable + :class:`~werkzeug.datastructures.EnvironHeaders`. + """ + return EnvironHeaders(self.environ) + + @cached_property + def path(self): + """Requested path as unicode. This works a bit like the regular path + info in the WSGI environment but will always include a leading slash, + even if the URL root is accessed. + """ + raw_path = wsgi_decoding_dance( + self.environ.get("PATH_INFO") or "", self.charset, self.encoding_errors + ) + return "/" + raw_path.lstrip("/") + + @cached_property + def full_path(self): + """Requested path as unicode, including the query string.""" + return self.path + u"?" + to_unicode(self.query_string, self.url_charset) + + @cached_property + def script_root(self): + """The root path of the script without the trailing slash.""" + raw_path = wsgi_decoding_dance( + self.environ.get("SCRIPT_NAME") or "", self.charset, self.encoding_errors + ) + return raw_path.rstrip("/") + + @cached_property + def url(self): + """The reconstructed current URL as IRI. + See also: :attr:`trusted_hosts`. + """ + return get_current_url(self.environ, trusted_hosts=self.trusted_hosts) + + @cached_property + def base_url(self): + """Like :attr:`url` but without the querystring + See also: :attr:`trusted_hosts`. + """ + return get_current_url( + self.environ, strip_querystring=True, trusted_hosts=self.trusted_hosts + ) + + @cached_property + def url_root(self): + """The full URL root (with hostname), this is the application + root as IRI. + See also: :attr:`trusted_hosts`. + """ + return get_current_url(self.environ, True, trusted_hosts=self.trusted_hosts) + + @cached_property + def host_url(self): + """Just the host with scheme as IRI. + See also: :attr:`trusted_hosts`. + """ + return get_current_url( + self.environ, host_only=True, trusted_hosts=self.trusted_hosts + ) + + @cached_property + def host(self): + """Just the host including the port if available. + See also: :attr:`trusted_hosts`. + """ + return get_host(self.environ, trusted_hosts=self.trusted_hosts) + + query_string = environ_property( + "QUERY_STRING", + "", + read_only=True, + load_func=wsgi_get_bytes, + doc="The URL parameters as raw bytestring.", + ) + method = environ_property( + "REQUEST_METHOD", + "GET", + read_only=True, + load_func=lambda x: x.upper(), + doc="The request method. (For example ``'GET'`` or ``'POST'``).", + ) + + @cached_property + def access_route(self): + """If a forwarded header exists this is a list of all ip addresses + from the client ip to the last proxy server. + """ + if "HTTP_X_FORWARDED_FOR" in self.environ: + addr = self.environ["HTTP_X_FORWARDED_FOR"].split(",") + return self.list_storage_class([x.strip() for x in addr]) + elif "REMOTE_ADDR" in self.environ: + return self.list_storage_class([self.environ["REMOTE_ADDR"]]) + return self.list_storage_class() + + @property + def remote_addr(self): + """The remote address of the client.""" + return self.environ.get("REMOTE_ADDR") + + remote_user = environ_property( + "REMOTE_USER", + doc="""If the server supports user authentication, and the + script is protected, this attribute contains the username the + user has authenticated as.""", + ) + + scheme = environ_property( + "wsgi.url_scheme", + doc=""" + URL scheme (http or https). + + .. versionadded:: 0.7""", + ) + + @property + def is_xhr(self): + """True if the request was triggered via a JavaScript XMLHttpRequest. + This only works with libraries that support the ``X-Requested-With`` + header and set it to "XMLHttpRequest". Libraries that do that are + prototype, jQuery and Mochikit and probably some more. + + .. deprecated:: 0.13 + ``X-Requested-With`` is not standard and is unreliable. You + may be able to use :attr:`AcceptMixin.accept_mimetypes` + instead. + """ + warnings.warn( + "'Request.is_xhr' is deprecated as of version 0.13 and will" + " be removed in version 1.0. The 'X-Requested-With' header" + " is not standard and is unreliable. You may be able to use" + " 'accept_mimetypes' instead.", + DeprecationWarning, + stacklevel=2, + ) + return self.environ.get("HTTP_X_REQUESTED_WITH", "").lower() == "xmlhttprequest" + + is_secure = property( + lambda self: self.environ["wsgi.url_scheme"] == "https", + doc="`True` if the request is secure.", + ) + is_multithread = environ_property( + "wsgi.multithread", + doc="""boolean that is `True` if the application is served by a + multithreaded WSGI server.""", + ) + is_multiprocess = environ_property( + "wsgi.multiprocess", + doc="""boolean that is `True` if the application is served by a + WSGI server that spawns multiple processes.""", + ) + is_run_once = environ_property( + "wsgi.run_once", + doc="""boolean that is `True` if the application will be + executed only once in a process lifetime. This is the case for + CGI for example, but it's not guaranteed that the execution only + happens one time.""", + ) + + +def _assert_not_shallow(request): + if request.shallow: + raise RuntimeError( + "A shallow request tried to consume form data. If you really" + " want to do that, set `shallow` to False." + ) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py new file mode 100644 index 00000000..d944a7d2 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py @@ -0,0 +1,702 @@ +import warnings + +from .._compat import integer_types +from .._compat import string_types +from .._compat import text_type +from .._compat import to_bytes +from .._compat import to_native +from ..datastructures import Headers +from ..http import dump_cookie +from ..http import HTTP_STATUS_CODES +from ..http import remove_entity_headers +from ..urls import iri_to_uri +from ..urls import url_join +from ..utils import get_content_type +from ..wsgi import ClosingIterator +from ..wsgi import get_current_url + + +def _run_wsgi_app(*args): + """This function replaces itself to ensure that the test module is not + imported unless required. DO NOT USE! + """ + global _run_wsgi_app + from ..test import run_wsgi_app as _run_wsgi_app + + return _run_wsgi_app(*args) + + +def _warn_if_string(iterable): + """Helper for the response objects to check if the iterable returned + to the WSGI server is not a string. + """ + if isinstance(iterable, string_types): + warnings.warn( + "Response iterable was set to a string. This will appear to" + " work but means that the server will send the data to the" + " client one character at a time. This is almost never" + " intended behavior, use 'response.data' to assign strings" + " to the response object.", + stacklevel=2, + ) + + +def _iter_encoded(iterable, charset): + for item in iterable: + if isinstance(item, text_type): + yield item.encode(charset) + else: + yield item + + +def _clean_accept_ranges(accept_ranges): + if accept_ranges is True: + return "bytes" + elif accept_ranges is False: + return "none" + elif isinstance(accept_ranges, text_type): + return to_native(accept_ranges) + raise ValueError("Invalid accept_ranges value") + + +class BaseResponse(object): + """Base response class. The most important fact about a response object + is that it's a regular WSGI application. It's initialized with a couple + of response parameters (headers, body, status code etc.) and will start a + valid WSGI response when called with the environ and start response + callable. + + Because it's a WSGI application itself processing usually ends before the + actual response is sent to the server. This helps debugging systems + because they can catch all the exceptions before responses are started. + + Here a small example WSGI application that takes advantage of the + response objects:: + + from werkzeug.wrappers import BaseResponse as Response + + def index(): + return Response('Index page') + + def application(environ, start_response): + path = environ.get('PATH_INFO') or '/' + if path == '/': + response = index() + else: + response = Response('Not Found', status=404) + return response(environ, start_response) + + Like :class:`BaseRequest` which object is lacking a lot of functionality + implemented in mixins. This gives you a better control about the actual + API of your response objects, so you can create subclasses and add custom + functionality. A full featured response object is available as + :class:`Response` which implements a couple of useful mixins. + + To enforce a new type of already existing responses you can use the + :meth:`force_type` method. This is useful if you're working with different + subclasses of response objects and you want to post process them with a + known interface. + + Per default the response object will assume all the text data is `utf-8` + encoded. Please refer to :doc:`the unicode chapter ` for more + details about customizing the behavior. + + Response can be any kind of iterable or string. If it's a string it's + considered being an iterable with one item which is the string passed. + Headers can be a list of tuples or a + :class:`~werkzeug.datastructures.Headers` object. + + Special note for `mimetype` and `content_type`: For most mime types + `mimetype` and `content_type` work the same, the difference affects + only 'text' mimetypes. If the mimetype passed with `mimetype` is a + mimetype starting with `text/`, the charset parameter of the response + object is appended to it. In contrast the `content_type` parameter is + always added as header unmodified. + + .. versionchanged:: 0.5 + the `direct_passthrough` parameter was added. + + :param response: a string or response iterable. + :param status: a string with a status or an integer with the status code. + :param headers: a list of headers or a + :class:`~werkzeug.datastructures.Headers` object. + :param mimetype: the mimetype for the response. See notice above. + :param content_type: the content type for the response. See notice above. + :param direct_passthrough: if set to `True` :meth:`iter_encoded` is not + called before iteration which makes it + possible to pass special iterators through + unchanged (see :func:`wrap_file` for more + details.) + """ + + #: the charset of the response. + charset = "utf-8" + + #: the default status if none is provided. + default_status = 200 + + #: the default mimetype if none is provided. + default_mimetype = "text/plain" + + #: if set to `False` accessing properties on the response object will + #: not try to consume the response iterator and convert it into a list. + #: + #: .. versionadded:: 0.6.2 + #: + #: That attribute was previously called `implicit_seqence_conversion`. + #: (Notice the typo). If you did use this feature, you have to adapt + #: your code to the name change. + implicit_sequence_conversion = True + + #: Should this response object correct the location header to be RFC + #: conformant? This is true by default. + #: + #: .. versionadded:: 0.8 + autocorrect_location_header = True + + #: Should this response object automatically set the content-length + #: header if possible? This is true by default. + #: + #: .. versionadded:: 0.8 + automatically_set_content_length = True + + #: Warn if a cookie header exceeds this size. The default, 4093, should be + #: safely `supported by most browsers `_. A cookie larger than + #: this size will still be sent, but it may be ignored or handled + #: incorrectly by some browsers. Set to 0 to disable this check. + #: + #: .. versionadded:: 0.13 + #: + #: .. _`cookie`: http://browsercookielimits.squawky.net/ + max_cookie_size = 4093 + + def __init__( + self, + response=None, + status=None, + headers=None, + mimetype=None, + content_type=None, + direct_passthrough=False, + ): + if isinstance(headers, Headers): + self.headers = headers + elif not headers: + self.headers = Headers() + else: + self.headers = Headers(headers) + + if content_type is None: + if mimetype is None and "content-type" not in self.headers: + mimetype = self.default_mimetype + if mimetype is not None: + mimetype = get_content_type(mimetype, self.charset) + content_type = mimetype + if content_type is not None: + self.headers["Content-Type"] = content_type + if status is None: + status = self.default_status + if isinstance(status, integer_types): + self.status_code = status + else: + self.status = status + + self.direct_passthrough = direct_passthrough + self._on_close = [] + + # we set the response after the headers so that if a class changes + # the charset attribute, the data is set in the correct charset. + if response is None: + self.response = [] + elif isinstance(response, (text_type, bytes, bytearray)): + self.set_data(response) + else: + self.response = response + + def call_on_close(self, func): + """Adds a function to the internal list of functions that should + be called as part of closing down the response. Since 0.7 this + function also returns the function that was passed so that this + can be used as a decorator. + + .. versionadded:: 0.6 + """ + self._on_close.append(func) + return func + + def __repr__(self): + if self.is_sequence: + body_info = "%d bytes" % sum(map(len, self.iter_encoded())) + else: + body_info = "streamed" if self.is_streamed else "likely-streamed" + return "<%s %s [%s]>" % (self.__class__.__name__, body_info, self.status) + + @classmethod + def force_type(cls, response, environ=None): + """Enforce that the WSGI response is a response object of the current + type. Werkzeug will use the :class:`BaseResponse` internally in many + situations like the exceptions. If you call :meth:`get_response` on an + exception you will get back a regular :class:`BaseResponse` object, even + if you are using a custom subclass. + + This method can enforce a given response type, and it will also + convert arbitrary WSGI callables into response objects if an environ + is provided:: + + # convert a Werkzeug response object into an instance of the + # MyResponseClass subclass. + response = MyResponseClass.force_type(response) + + # convert any WSGI application into a response object + response = MyResponseClass.force_type(response, environ) + + This is especially useful if you want to post-process responses in + the main dispatcher and use functionality provided by your subclass. + + Keep in mind that this will modify response objects in place if + possible! + + :param response: a response object or wsgi application. + :param environ: a WSGI environment object. + :return: a response object. + """ + if not isinstance(response, BaseResponse): + if environ is None: + raise TypeError( + "cannot convert WSGI application into response" + " objects without an environ" + ) + response = BaseResponse(*_run_wsgi_app(response, environ)) + response.__class__ = cls + return response + + @classmethod + def from_app(cls, app, environ, buffered=False): + """Create a new response object from an application output. This + works best if you pass it an application that returns a generator all + the time. Sometimes applications may use the `write()` callable + returned by the `start_response` function. This tries to resolve such + edge cases automatically. But if you don't get the expected output + you should set `buffered` to `True` which enforces buffering. + + :param app: the WSGI application to execute. + :param environ: the WSGI environment to execute against. + :param buffered: set to `True` to enforce buffering. + :return: a response object. + """ + return cls(*_run_wsgi_app(app, environ, buffered)) + + def _get_status_code(self): + return self._status_code + + def _set_status_code(self, code): + self._status_code = code + try: + self._status = "%d %s" % (code, HTTP_STATUS_CODES[code].upper()) + except KeyError: + self._status = "%d UNKNOWN" % code + + status_code = property( + _get_status_code, _set_status_code, doc="The HTTP Status code as number" + ) + del _get_status_code, _set_status_code + + def _get_status(self): + return self._status + + def _set_status(self, value): + try: + self._status = to_native(value) + except AttributeError: + raise TypeError("Invalid status argument") + + try: + self._status_code = int(self._status.split(None, 1)[0]) + except ValueError: + self._status_code = 0 + self._status = "0 %s" % self._status + except IndexError: + raise ValueError("Empty status argument") + + status = property(_get_status, _set_status, doc="The HTTP Status code") + del _get_status, _set_status + + def get_data(self, as_text=False): + """The string representation of the request body. Whenever you call + this property the request iterable is encoded and flattened. This + can lead to unwanted behavior if you stream big data. + + This behavior can be disabled by setting + :attr:`implicit_sequence_conversion` to `False`. + + If `as_text` is set to `True` the return value will be a decoded + unicode string. + + .. versionadded:: 0.9 + """ + self._ensure_sequence() + rv = b"".join(self.iter_encoded()) + if as_text: + rv = rv.decode(self.charset) + return rv + + def set_data(self, value): + """Sets a new string as response. The value set must either by a + unicode or bytestring. If a unicode string is set it's encoded + automatically to the charset of the response (utf-8 by default). + + .. versionadded:: 0.9 + """ + # if an unicode string is set, it's encoded directly so that we + # can set the content length + if isinstance(value, text_type): + value = value.encode(self.charset) + else: + value = bytes(value) + self.response = [value] + if self.automatically_set_content_length: + self.headers["Content-Length"] = str(len(value)) + + data = property( + get_data, + set_data, + doc="A descriptor that calls :meth:`get_data` and :meth:`set_data`.", + ) + + def calculate_content_length(self): + """Returns the content length if available or `None` otherwise.""" + try: + self._ensure_sequence() + except RuntimeError: + return None + return sum(len(x) for x in self.iter_encoded()) + + def _ensure_sequence(self, mutable=False): + """This method can be called by methods that need a sequence. If + `mutable` is true, it will also ensure that the response sequence + is a standard Python list. + + .. versionadded:: 0.6 + """ + if self.is_sequence: + # if we need a mutable object, we ensure it's a list. + if mutable and not isinstance(self.response, list): + self.response = list(self.response) + return + if self.direct_passthrough: + raise RuntimeError( + "Attempted implicit sequence conversion but the" + " response object is in direct passthrough mode." + ) + if not self.implicit_sequence_conversion: + raise RuntimeError( + "The response object required the iterable to be a" + " sequence, but the implicit conversion was disabled." + " Call make_sequence() yourself." + ) + self.make_sequence() + + def make_sequence(self): + """Converts the response iterator in a list. By default this happens + automatically if required. If `implicit_sequence_conversion` is + disabled, this method is not automatically called and some properties + might raise exceptions. This also encodes all the items. + + .. versionadded:: 0.6 + """ + if not self.is_sequence: + # if we consume an iterable we have to ensure that the close + # method of the iterable is called if available when we tear + # down the response + close = getattr(self.response, "close", None) + self.response = list(self.iter_encoded()) + if close is not None: + self.call_on_close(close) + + def iter_encoded(self): + """Iter the response encoded with the encoding of the response. + If the response object is invoked as WSGI application the return + value of this method is used as application iterator unless + :attr:`direct_passthrough` was activated. + """ + if __debug__: + _warn_if_string(self.response) + # Encode in a separate function so that self.response is fetched + # early. This allows us to wrap the response with the return + # value from get_app_iter or iter_encoded. + return _iter_encoded(self.response, self.charset) + + def set_cookie( + self, + key, + value="", + max_age=None, + expires=None, + path="/", + domain=None, + secure=False, + httponly=False, + samesite=None, + ): + """Sets a cookie. The parameters are the same as in the cookie `Morsel` + object in the Python standard library but it accepts unicode data, too. + + A warning is raised if the size of the cookie header exceeds + :attr:`max_cookie_size`, but the header will still be set. + + :param key: the key (name) of the cookie to be set. + :param value: the value of the cookie. + :param max_age: should be a number of seconds, or `None` (default) if + the cookie should last only as long as the client's + browser session. + :param expires: should be a `datetime` object or UNIX timestamp. + :param path: limits the cookie to a given path, per default it will + span the whole domain. + :param domain: if you want to set a cross-domain cookie. For example, + ``domain=".example.com"`` will set a cookie that is + readable by the domain ``www.example.com``, + ``foo.example.com`` etc. Otherwise, a cookie will only + be readable by the domain that set it. + :param secure: If `True`, the cookie will only be available via HTTPS + :param httponly: disallow JavaScript to access the cookie. This is an + extension to the cookie standard and probably not + supported by all browsers. + :param samesite: Limits the scope of the cookie such that it will only + be attached to requests if those requests are + "same-site". + """ + self.headers.add( + "Set-Cookie", + dump_cookie( + key, + value=value, + max_age=max_age, + expires=expires, + path=path, + domain=domain, + secure=secure, + httponly=httponly, + charset=self.charset, + max_size=self.max_cookie_size, + samesite=samesite, + ), + ) + + def delete_cookie(self, key, path="/", domain=None): + """Delete a cookie. Fails silently if key doesn't exist. + + :param key: the key (name) of the cookie to be deleted. + :param path: if the cookie that should be deleted was limited to a + path, the path has to be defined here. + :param domain: if the cookie that should be deleted was limited to a + domain, that domain has to be defined here. + """ + self.set_cookie(key, expires=0, max_age=0, path=path, domain=domain) + + @property + def is_streamed(self): + """If the response is streamed (the response is not an iterable with + a length information) this property is `True`. In this case streamed + means that there is no information about the number of iterations. + This is usually `True` if a generator is passed to the response object. + + This is useful for checking before applying some sort of post + filtering that should not take place for streamed responses. + """ + try: + len(self.response) + except (TypeError, AttributeError): + return True + return False + + @property + def is_sequence(self): + """If the iterator is buffered, this property will be `True`. A + response object will consider an iterator to be buffered if the + response attribute is a list or tuple. + + .. versionadded:: 0.6 + """ + return isinstance(self.response, (tuple, list)) + + def close(self): + """Close the wrapped response if possible. You can also use the object + in a with statement which will automatically close it. + + .. versionadded:: 0.9 + Can now be used in a with statement. + """ + if hasattr(self.response, "close"): + self.response.close() + for func in self._on_close: + func() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, tb): + self.close() + + def freeze(self): + """Call this method if you want to make your response object ready for + being pickled. This buffers the generator if there is one. It will + also set the `Content-Length` header to the length of the body. + + .. versionchanged:: 0.6 + The `Content-Length` header is now set. + """ + # we explicitly set the length to a list of the *encoded* response + # iterator. Even if the implicit sequence conversion is disabled. + self.response = list(self.iter_encoded()) + self.headers["Content-Length"] = str(sum(map(len, self.response))) + + def get_wsgi_headers(self, environ): + """This is automatically called right before the response is started + and returns headers modified for the given environment. It returns a + copy of the headers from the response with some modifications applied + if necessary. + + For example the location header (if present) is joined with the root + URL of the environment. Also the content length is automatically set + to zero here for certain status codes. + + .. versionchanged:: 0.6 + Previously that function was called `fix_headers` and modified + the response object in place. Also since 0.6, IRIs in location + and content-location headers are handled properly. + + Also starting with 0.6, Werkzeug will attempt to set the content + length if it is able to figure it out on its own. This is the + case if all the strings in the response iterable are already + encoded and the iterable is buffered. + + :param environ: the WSGI environment of the request. + :return: returns a new :class:`~werkzeug.datastructures.Headers` + object. + """ + headers = Headers(self.headers) + location = None + content_location = None + content_length = None + status = self.status_code + + # iterate over the headers to find all values in one go. Because + # get_wsgi_headers is used each response that gives us a tiny + # speedup. + for key, value in headers: + ikey = key.lower() + if ikey == u"location": + location = value + elif ikey == u"content-location": + content_location = value + elif ikey == u"content-length": + content_length = value + + # make sure the location header is an absolute URL + if location is not None: + old_location = location + if isinstance(location, text_type): + # Safe conversion is necessary here as we might redirect + # to a broken URI scheme (for instance itms-services). + location = iri_to_uri(location, safe_conversion=True) + + if self.autocorrect_location_header: + current_url = get_current_url(environ, strip_querystring=True) + if isinstance(current_url, text_type): + current_url = iri_to_uri(current_url) + location = url_join(current_url, location) + if location != old_location: + headers["Location"] = location + + # make sure the content location is a URL + if content_location is not None and isinstance(content_location, text_type): + headers["Content-Location"] = iri_to_uri(content_location) + + if 100 <= status < 200 or status == 204: + # Per section 3.3.2 of RFC 7230, "a server MUST NOT send a + # Content-Length header field in any response with a status + # code of 1xx (Informational) or 204 (No Content)." + headers.remove("Content-Length") + elif status == 304: + remove_entity_headers(headers) + + # if we can determine the content length automatically, we + # should try to do that. But only if this does not involve + # flattening the iterator or encoding of unicode strings in + # the response. We however should not do that if we have a 304 + # response. + if ( + self.automatically_set_content_length + and self.is_sequence + and content_length is None + and status not in (204, 304) + and not (100 <= status < 200) + ): + try: + content_length = sum(len(to_bytes(x, "ascii")) for x in self.response) + except UnicodeError: + # aha, something non-bytestringy in there, too bad, we + # can't safely figure out the length of the response. + pass + else: + headers["Content-Length"] = str(content_length) + + return headers + + def get_app_iter(self, environ): + """Returns the application iterator for the given environ. Depending + on the request method and the current status code the return value + might be an empty response rather than the one from the response. + + If the request method is `HEAD` or the status code is in a range + where the HTTP specification requires an empty response, an empty + iterable is returned. + + .. versionadded:: 0.6 + + :param environ: the WSGI environment of the request. + :return: a response iterable. + """ + status = self.status_code + if ( + environ["REQUEST_METHOD"] == "HEAD" + or 100 <= status < 200 + or status in (204, 304) + ): + iterable = () + elif self.direct_passthrough: + if __debug__: + _warn_if_string(self.response) + return self.response + else: + iterable = self.iter_encoded() + return ClosingIterator(iterable, self.close) + + def get_wsgi_response(self, environ): + """Returns the final WSGI response as tuple. The first item in + the tuple is the application iterator, the second the status and + the third the list of headers. The response returned is created + specially for the given environment. For example if the request + method in the WSGI environment is ``'HEAD'`` the response will + be empty and only the headers and status code will be present. + + .. versionadded:: 0.6 + + :param environ: the WSGI environment of the request. + :return: an ``(app_iter, status, headers)`` tuple. + """ + headers = self.get_wsgi_headers(environ) + app_iter = self.get_app_iter(environ) + return app_iter, self.status, headers.to_wsgi_list() + + def __call__(self, environ, start_response): + """Process this response as WSGI application. + + :param environ: the WSGI environment. + :param start_response: the response callable provided by the WSGI + server. + :return: an application iterator + """ + app_iter, status, headers = self.get_wsgi_response(environ) + start_response(status, headers) + return app_iter diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/common_descriptors.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/common_descriptors.py new file mode 100644 index 00000000..e4107ee0 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/common_descriptors.py @@ -0,0 +1,322 @@ +from datetime import datetime +from datetime import timedelta + +from .._compat import string_types +from ..datastructures import CallbackDict +from ..http import dump_age +from ..http import dump_header +from ..http import dump_options_header +from ..http import http_date +from ..http import parse_age +from ..http import parse_date +from ..http import parse_options_header +from ..http import parse_set_header +from ..utils import cached_property +from ..utils import environ_property +from ..utils import get_content_type +from ..utils import header_property +from ..wsgi import get_content_length + + +class CommonRequestDescriptorsMixin(object): + """A mixin for :class:`BaseRequest` subclasses. Request objects that + mix this class in will automatically get descriptors for a couple of + HTTP headers with automatic type conversion. + + .. versionadded:: 0.5 + """ + + content_type = environ_property( + "CONTENT_TYPE", + doc="""The Content-Type entity-header field indicates the media + type of the entity-body sent to the recipient or, in the case of + the HEAD method, the media type that would have been sent had + the request been a GET.""", + ) + + @cached_property + def content_length(self): + """The Content-Length entity-header field indicates the size of the + entity-body in bytes or, in the case of the HEAD method, the size of + the entity-body that would have been sent had the request been a + GET. + """ + return get_content_length(self.environ) + + content_encoding = environ_property( + "HTTP_CONTENT_ENCODING", + doc="""The Content-Encoding entity-header field is used as a + modifier to the media-type. When present, its value indicates + what additional content codings have been applied to the + entity-body, and thus what decoding mechanisms must be applied + in order to obtain the media-type referenced by the Content-Type + header field. + + .. versionadded:: 0.9""", + ) + content_md5 = environ_property( + "HTTP_CONTENT_MD5", + doc="""The Content-MD5 entity-header field, as defined in + RFC 1864, is an MD5 digest of the entity-body for the purpose of + providing an end-to-end message integrity check (MIC) of the + entity-body. (Note: a MIC is good for detecting accidental + modification of the entity-body in transit, but is not proof + against malicious attacks.) + + .. versionadded:: 0.9""", + ) + referrer = environ_property( + "HTTP_REFERER", + doc="""The Referer[sic] request-header field allows the client + to specify, for the server's benefit, the address (URI) of the + resource from which the Request-URI was obtained (the + "referrer", although the header field is misspelled).""", + ) + date = environ_property( + "HTTP_DATE", + None, + parse_date, + doc="""The Date general-header field represents the date and + time at which the message was originated, having the same + semantics as orig-date in RFC 822.""", + ) + max_forwards = environ_property( + "HTTP_MAX_FORWARDS", + None, + int, + doc="""The Max-Forwards request-header field provides a + mechanism with the TRACE and OPTIONS methods to limit the number + of proxies or gateways that can forward the request to the next + inbound server.""", + ) + + def _parse_content_type(self): + if not hasattr(self, "_parsed_content_type"): + self._parsed_content_type = parse_options_header( + self.environ.get("CONTENT_TYPE", "") + ) + + @property + def mimetype(self): + """Like :attr:`content_type`, but without parameters (eg, without + charset, type etc.) and always lowercase. For example if the content + type is ``text/HTML; charset=utf-8`` the mimetype would be + ``'text/html'``. + """ + self._parse_content_type() + return self._parsed_content_type[0].lower() + + @property + def mimetype_params(self): + """The mimetype parameters as dict. For example if the content + type is ``text/html; charset=utf-8`` the params would be + ``{'charset': 'utf-8'}``. + """ + self._parse_content_type() + return self._parsed_content_type[1] + + @cached_property + def pragma(self): + """The Pragma general-header field is used to include + implementation-specific directives that might apply to any recipient + along the request/response chain. All pragma directives specify + optional behavior from the viewpoint of the protocol; however, some + systems MAY require that behavior be consistent with the directives. + """ + return parse_set_header(self.environ.get("HTTP_PRAGMA", "")) + + +class CommonResponseDescriptorsMixin(object): + """A mixin for :class:`BaseResponse` subclasses. Response objects that + mix this class in will automatically get descriptors for a couple of + HTTP headers with automatic type conversion. + """ + + @property + def mimetype(self): + """The mimetype (content type without charset etc.)""" + ct = self.headers.get("content-type") + if ct: + return ct.split(";")[0].strip() + + @mimetype.setter + def mimetype(self, value): + self.headers["Content-Type"] = get_content_type(value, self.charset) + + @property + def mimetype_params(self): + """The mimetype parameters as dict. For example if the + content type is ``text/html; charset=utf-8`` the params would be + ``{'charset': 'utf-8'}``. + + .. versionadded:: 0.5 + """ + + def on_update(d): + self.headers["Content-Type"] = dump_options_header(self.mimetype, d) + + d = parse_options_header(self.headers.get("content-type", ""))[1] + return CallbackDict(d, on_update) + + location = header_property( + "Location", + doc="""The Location response-header field is used to redirect + the recipient to a location other than the Request-URI for + completion of the request or identification of a new + resource.""", + ) + age = header_property( + "Age", + None, + parse_age, + dump_age, + doc="""The Age response-header field conveys the sender's + estimate of the amount of time since the response (or its + revalidation) was generated at the origin server. + + Age values are non-negative decimal integers, representing time + in seconds.""", + ) + content_type = header_property( + "Content-Type", + doc="""The Content-Type entity-header field indicates the media + type of the entity-body sent to the recipient or, in the case of + the HEAD method, the media type that would have been sent had + the request been a GET.""", + ) + content_length = header_property( + "Content-Length", + None, + int, + str, + doc="""The Content-Length entity-header field indicates the size + of the entity-body, in decimal number of OCTETs, sent to the + recipient or, in the case of the HEAD method, the size of the + entity-body that would have been sent had the request been a + GET.""", + ) + content_location = header_property( + "Content-Location", + doc="""The Content-Location entity-header field MAY be used to + supply the resource location for the entity enclosed in the + message when that entity is accessible from a location separate + from the requested resource's URI.""", + ) + content_encoding = header_property( + "Content-Encoding", + doc="""The Content-Encoding entity-header field is used as a + modifier to the media-type. When present, its value indicates + what additional content codings have been applied to the + entity-body, and thus what decoding mechanisms must be applied + in order to obtain the media-type referenced by the Content-Type + header field.""", + ) + content_md5 = header_property( + "Content-MD5", + doc="""The Content-MD5 entity-header field, as defined in + RFC 1864, is an MD5 digest of the entity-body for the purpose of + providing an end-to-end message integrity check (MIC) of the + entity-body. (Note: a MIC is good for detecting accidental + modification of the entity-body in transit, but is not proof + against malicious attacks.)""", + ) + date = header_property( + "Date", + None, + parse_date, + http_date, + doc="""The Date general-header field represents the date and + time at which the message was originated, having the same + semantics as orig-date in RFC 822.""", + ) + expires = header_property( + "Expires", + None, + parse_date, + http_date, + doc="""The Expires entity-header field gives the date/time after + which the response is considered stale. A stale cache entry may + not normally be returned by a cache.""", + ) + last_modified = header_property( + "Last-Modified", + None, + parse_date, + http_date, + doc="""The Last-Modified entity-header field indicates the date + and time at which the origin server believes the variant was + last modified.""", + ) + + @property + def retry_after(self): + """The Retry-After response-header field can be used with a + 503 (Service Unavailable) response to indicate how long the + service is expected to be unavailable to the requesting client. + + Time in seconds until expiration or date. + """ + value = self.headers.get("retry-after") + if value is None: + return + elif value.isdigit(): + return datetime.utcnow() + timedelta(seconds=int(value)) + return parse_date(value) + + @retry_after.setter + def retry_after(self, value): + if value is None: + if "retry-after" in self.headers: + del self.headers["retry-after"] + return + elif isinstance(value, datetime): + value = http_date(value) + else: + value = str(value) + self.headers["Retry-After"] = value + + def _set_property(name, doc=None): # noqa: B902 + def fget(self): + def on_update(header_set): + if not header_set and name in self.headers: + del self.headers[name] + elif header_set: + self.headers[name] = header_set.to_header() + + return parse_set_header(self.headers.get(name), on_update) + + def fset(self, value): + if not value: + del self.headers[name] + elif isinstance(value, string_types): + self.headers[name] = value + else: + self.headers[name] = dump_header(value) + + return property(fget, fset, doc=doc) + + vary = _set_property( + "Vary", + doc="""The Vary field value indicates the set of request-header + fields that fully determines, while the response is fresh, + whether a cache is permitted to use the response to reply to a + subsequent request without revalidation.""", + ) + content_language = _set_property( + "Content-Language", + doc="""The Content-Language entity-header field describes the + natural language(s) of the intended audience for the enclosed + entity. Note that this might not be equivalent to all the + languages used within the entity-body.""", + ) + allow = _set_property( + "Allow", + doc="""The Allow entity-header field lists the set of methods + supported by the resource identified by the Request-URI. The + purpose of this field is strictly to inform the recipient of + valid methods associated with the resource. An Allow header + field MUST be present in a 405 (Method Not Allowed) + response.""", + ) + + del _set_property diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/etag.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/etag.py new file mode 100644 index 00000000..0733506f --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/etag.py @@ -0,0 +1,304 @@ +from .._compat import string_types +from .._internal import _get_environ +from ..datastructures import ContentRange +from ..datastructures import RequestCacheControl +from ..datastructures import ResponseCacheControl +from ..http import generate_etag +from ..http import http_date +from ..http import is_resource_modified +from ..http import parse_cache_control_header +from ..http import parse_content_range_header +from ..http import parse_date +from ..http import parse_etags +from ..http import parse_if_range_header +from ..http import parse_range_header +from ..http import quote_etag +from ..http import unquote_etag +from ..utils import cached_property +from ..utils import header_property +from ..wrappers.base_response import _clean_accept_ranges +from ..wsgi import _RangeWrapper + + +class ETagRequestMixin(object): + """Add entity tag and cache descriptors to a request object or object with + a WSGI environment available as :attr:`~BaseRequest.environ`. This not + only provides access to etags but also to the cache control header. + """ + + @cached_property + def cache_control(self): + """A :class:`~werkzeug.datastructures.RequestCacheControl` object + for the incoming cache control headers. + """ + cache_control = self.environ.get("HTTP_CACHE_CONTROL") + return parse_cache_control_header(cache_control, None, RequestCacheControl) + + @cached_property + def if_match(self): + """An object containing all the etags in the `If-Match` header. + + :rtype: :class:`~werkzeug.datastructures.ETags` + """ + return parse_etags(self.environ.get("HTTP_IF_MATCH")) + + @cached_property + def if_none_match(self): + """An object containing all the etags in the `If-None-Match` header. + + :rtype: :class:`~werkzeug.datastructures.ETags` + """ + return parse_etags(self.environ.get("HTTP_IF_NONE_MATCH")) + + @cached_property + def if_modified_since(self): + """The parsed `If-Modified-Since` header as datetime object.""" + return parse_date(self.environ.get("HTTP_IF_MODIFIED_SINCE")) + + @cached_property + def if_unmodified_since(self): + """The parsed `If-Unmodified-Since` header as datetime object.""" + return parse_date(self.environ.get("HTTP_IF_UNMODIFIED_SINCE")) + + @cached_property + def if_range(self): + """The parsed `If-Range` header. + + .. versionadded:: 0.7 + + :rtype: :class:`~werkzeug.datastructures.IfRange` + """ + return parse_if_range_header(self.environ.get("HTTP_IF_RANGE")) + + @cached_property + def range(self): + """The parsed `Range` header. + + .. versionadded:: 0.7 + + :rtype: :class:`~werkzeug.datastructures.Range` + """ + return parse_range_header(self.environ.get("HTTP_RANGE")) + + +class ETagResponseMixin(object): + """Adds extra functionality to a response object for etag and cache + handling. This mixin requires an object with at least a `headers` + object that implements a dict like interface similar to + :class:`~werkzeug.datastructures.Headers`. + + If you want the :meth:`freeze` method to automatically add an etag, you + have to mixin this method before the response base class. The default + response class does not do that. + """ + + @property + def cache_control(self): + """The Cache-Control general-header field is used to specify + directives that MUST be obeyed by all caching mechanisms along the + request/response chain. + """ + + def on_update(cache_control): + if not cache_control and "cache-control" in self.headers: + del self.headers["cache-control"] + elif cache_control: + self.headers["Cache-Control"] = cache_control.to_header() + + return parse_cache_control_header( + self.headers.get("cache-control"), on_update, ResponseCacheControl + ) + + def _wrap_response(self, start, length): + """Wrap existing Response in case of Range Request context.""" + if self.status_code == 206: + self.response = _RangeWrapper(self.response, start, length) + + def _is_range_request_processable(self, environ): + """Return ``True`` if `Range` header is present and if underlying + resource is considered unchanged when compared with `If-Range` header. + """ + return ( + "HTTP_IF_RANGE" not in environ + or not is_resource_modified( + environ, + self.headers.get("etag"), + None, + self.headers.get("last-modified"), + ignore_if_range=False, + ) + ) and "HTTP_RANGE" in environ + + def _process_range_request(self, environ, complete_length=None, accept_ranges=None): + """Handle Range Request related headers (RFC7233). If `Accept-Ranges` + header is valid, and Range Request is processable, we set the headers + as described by the RFC, and wrap the underlying response in a + RangeWrapper. + + Returns ``True`` if Range Request can be fulfilled, ``False`` otherwise. + + :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` + if `Range` header could not be parsed or satisfied. + """ + from ..exceptions import RequestedRangeNotSatisfiable + + if accept_ranges is None: + return False + self.headers["Accept-Ranges"] = accept_ranges + if not self._is_range_request_processable(environ) or complete_length is None: + 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] + # Be sure not to send 206 response + # if requested range is the full content. + if content_length != complete_length: + self.headers["Content-Length"] = content_length + self.content_range = content_range_header + self.status_code = 206 + self._wrap_response(range_tuple[0], content_length) + return True + return False + + def make_conditional( + self, request_or_environ, accept_ranges=False, complete_length=None + ): + """Make the response conditional to the request. This method works + best if an etag was defined for the response already. The `add_etag` + method can be used to do that. If called without etag just the date + header is set. + + This does nothing if the request method in the request or environ is + anything but GET or HEAD. + + For optimal performance when handling range requests, it's recommended + that your response data object implements `seekable`, `seek` and `tell` + methods as described by :py:class:`io.IOBase`. Objects returned by + :meth:`~werkzeug.wsgi.wrap_file` automatically implement those methods. + + It does not remove the body of the response because that's something + the :meth:`__call__` function does for us automatically. + + Returns self so that you can do ``return resp.make_conditional(req)`` + but modifies the object in-place. + + :param request_or_environ: a request object or WSGI environment to be + used to make the response conditional + against. + :param accept_ranges: This parameter dictates the value of + `Accept-Ranges` header. If ``False`` (default), + the header is not set. If ``True``, it will be set + to ``"bytes"``. If ``None``, it will be set to + ``"none"``. If it's a string, it will use this + value. + :param complete_length: Will be used only in valid Range Requests. + It will set `Content-Range` complete length + value and compute `Content-Length` real value. + This parameter is mandatory for successful + Range Requests completion. + :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` + if `Range` header could not be parsed or satisfied. + """ + environ = _get_environ(request_or_environ) + if environ["REQUEST_METHOD"] in ("GET", "HEAD"): + # if the date is not in the headers, add it now. We however + # will not override an already existing header. Unfortunately + # this header will be overriden by many WSGI servers including + # wsgiref. + if "date" not in self.headers: + self.headers["Date"] = http_date() + accept_ranges = _clean_accept_ranges(accept_ranges) + is206 = self._process_range_request(environ, complete_length, accept_ranges) + if not is206 and not is_resource_modified( + environ, + self.headers.get("etag"), + None, + self.headers.get("last-modified"), + ): + if parse_etags(environ.get("HTTP_IF_MATCH")): + self.status_code = 412 + else: + self.status_code = 304 + if ( + self.automatically_set_content_length + and "content-length" not in self.headers + ): + length = self.calculate_content_length() + if length is not None: + self.headers["Content-Length"] = length + return self + + def add_etag(self, overwrite=False, weak=False): + """Add an etag for the current response if there is none yet.""" + if overwrite or "etag" not in self.headers: + self.set_etag(generate_etag(self.get_data()), weak) + + def set_etag(self, etag, weak=False): + """Set the etag, and override the old one if there was one.""" + self.headers["ETag"] = quote_etag(etag, weak) + + def get_etag(self): + """Return a tuple in the form ``(etag, is_weak)``. If there is no + ETag the return value is ``(None, None)``. + """ + return unquote_etag(self.headers.get("ETag")) + + def freeze(self, no_etag=False): + """Call this method if you want to make your response object ready for + pickeling. This buffers the generator if there is one. This also + sets the etag unless `no_etag` is set to `True`. + """ + if not no_etag: + self.add_etag() + super(ETagResponseMixin, self).freeze() + + accept_ranges = header_property( + "Accept-Ranges", + doc="""The `Accept-Ranges` header. Even though the name would + indicate that multiple values are supported, it must be one + string token only. + + The values ``'bytes'`` and ``'none'`` are common. + + .. versionadded:: 0.7""", + ) + + def _get_content_range(self): + def on_update(rng): + if not rng: + del self.headers["content-range"] + else: + self.headers["Content-Range"] = rng.to_header() + + rv = parse_content_range_header(self.headers.get("content-range"), on_update) + # always provide a content range object to make the descriptor + # more user friendly. It provides an unset() method that can be + # used to remove the header quickly. + if rv is None: + rv = ContentRange(None, None, None, on_update=on_update) + return rv + + def _set_content_range(self, value): + if not value: + del self.headers["content-range"] + elif isinstance(value, string_types): + self.headers["Content-Range"] = value + else: + self.headers["Content-Range"] = value.to_header() + + content_range = property( + _get_content_range, + _set_content_range, + doc="""The ``Content-Range`` header as + :class:`~werkzeug.datastructures.ContentRange` object. Even if + the header is not set it wil provide such an object for easier + manipulation. + + .. versionadded:: 0.7""", + ) + del _get_content_range, _set_content_range diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/json.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/json.py new file mode 100644 index 00000000..6d5dc33d --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/json.py @@ -0,0 +1,145 @@ +from __future__ import absolute_import + +import datetime +import uuid + +from .._compat import text_type +from ..exceptions import BadRequest +from ..utils import detect_utf_encoding + +try: + import simplejson as _json +except ImportError: + import json as _json + + +class _JSONModule(object): + @staticmethod + def _default(o): + if isinstance(o, datetime.date): + return o.isoformat() + + if isinstance(o, uuid.UUID): + return str(o) + + if hasattr(o, "__html__"): + return text_type(o.__html__()) + + raise TypeError() + + @classmethod + def dumps(cls, obj, **kw): + kw.setdefault("separators", (",", ":")) + kw.setdefault("default", cls._default) + kw.setdefault("sort_keys", True) + return _json.dumps(obj, **kw) + + @staticmethod + def loads(s, **kw): + if isinstance(s, bytes): + # Needed for Python < 3.6 + encoding = detect_utf_encoding(s) + s = s.decode(encoding) + + return _json.loads(s, **kw) + + +class JSONMixin(object): + """Mixin to parse :attr:`data` as JSON. Can be mixed in for both + :class:`~werkzeug.wrappers.Request` and + :class:`~werkzeug.wrappers.Response` classes. + + If `simplejson`_ is installed it is preferred over Python's built-in + :mod:`json` module. + + .. _simplejson: https://simplejson.readthedocs.io/en/latest/ + """ + + #: A module or other object that has ``dumps`` and ``loads`` + #: functions that match the API of the built-in :mod:`json` module. + json_module = _JSONModule + + @property + def json(self): + """The parsed JSON data if :attr:`mimetype` indicates JSON + (:mimetype:`application/json`, see :meth:`is_json`). + + Calls :meth:`get_json` with default arguments. + """ + return self.get_json() + + @property + def is_json(self): + """Check if the mimetype indicates JSON data, either + :mimetype:`application/json` or :mimetype:`application/*+json`. + """ + mt = self.mimetype + return ( + mt == "application/json" + or mt.startswith("application/") + and mt.endswith("+json") + ) + + def _get_data_for_json(self, cache): + try: + return self.get_data(cache=cache) + except TypeError: + # Response doesn't have cache param. + return self.get_data() + + # Cached values for ``(silent=False, silent=True)``. Initialized + # with sentinel values. + _cached_json = (Ellipsis, Ellipsis) + + def get_json(self, force=False, silent=False, cache=True): + """Parse :attr:`data` as JSON. + + If the mimetype does not indicate JSON + (:mimetype:`application/json`, see :meth:`is_json`), this + returns ``None``. + + If parsing fails, :meth:`on_json_loading_failed` is called and + its return value is used as the return value. + + :param force: Ignore the mimetype and always try to parse JSON. + :param silent: Silence parsing errors and return ``None`` + instead. + :param cache: Store the parsed JSON to return for subsequent + calls. + """ + if cache and self._cached_json[silent] is not Ellipsis: + return self._cached_json[silent] + + if not (force or self.is_json): + return None + + data = self._get_data_for_json(cache=cache) + + try: + rv = self.json_module.loads(data) + except ValueError as e: + if silent: + rv = None + + if cache: + normal_rv, _ = self._cached_json + self._cached_json = (normal_rv, rv) + else: + rv = self.on_json_loading_failed(e) + + if cache: + _, silent_rv = self._cached_json + self._cached_json = (rv, silent_rv) + else: + if cache: + self._cached_json = (rv, rv) + + return rv + + def on_json_loading_failed(self, e): + """Called if :meth:`get_json` parsing fails and isn't silenced. + If this method returns a value, it is used as the return value + for :meth:`get_json`. The default implementation raises + :exc:`~werkzeug.exceptions.BadRequest`. + """ + raise BadRequest("Failed to decode JSON object: {0}".format(e)) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/request.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/request.py new file mode 100644 index 00000000..d1c71b64 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/request.py @@ -0,0 +1,44 @@ +from .accept import AcceptMixin +from .auth import AuthorizationMixin +from .base_request import BaseRequest +from .common_descriptors import CommonRequestDescriptorsMixin +from .etag import ETagRequestMixin +from .user_agent import UserAgentMixin + + +class Request( + BaseRequest, + AcceptMixin, + ETagRequestMixin, + UserAgentMixin, + AuthorizationMixin, + CommonRequestDescriptorsMixin, +): + """Full featured request object implementing the following mixins: + + - :class:`AcceptMixin` for accept header parsing + - :class:`ETagRequestMixin` for etag and cache control handling + - :class:`UserAgentMixin` for user agent introspection + - :class:`AuthorizationMixin` for http auth handling + - :class:`CommonRequestDescriptorsMixin` for common headers + """ + + +class StreamOnlyMixin(object): + """If mixed in before the request object this will change the bahavior + of it to disable handling of form parsing. This disables the + :attr:`files`, :attr:`form` attributes and will just provide a + :attr:`stream` attribute that however is always available. + + .. versionadded:: 0.9 + """ + + disable_data_descriptor = True + want_form_data_parsed = False + + +class PlainRequest(StreamOnlyMixin, Request): + """A request object without special form parsing capabilities. + + .. versionadded:: 0.9 + """ diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/response.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/response.py new file mode 100644 index 00000000..cd86cacd --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/response.py @@ -0,0 +1,78 @@ +from ..utils import cached_property +from .auth import WWWAuthenticateMixin +from .base_response import BaseResponse +from .common_descriptors import CommonResponseDescriptorsMixin +from .etag import ETagResponseMixin + + +class ResponseStream(object): + """A file descriptor like object used by the :class:`ResponseStreamMixin` to + represent the body of the stream. It directly pushes into the response + iterable of the response object. + """ + + mode = "wb+" + + def __init__(self, response): + self.response = response + self.closed = False + + def write(self, value): + if self.closed: + raise ValueError("I/O operation on closed file") + self.response._ensure_sequence(mutable=True) + self.response.response.append(value) + self.response.headers.pop("Content-Length", None) + return len(value) + + def writelines(self, seq): + for item in seq: + self.write(item) + + def close(self): + self.closed = True + + def flush(self): + if self.closed: + raise ValueError("I/O operation on closed file") + + def isatty(self): + if self.closed: + raise ValueError("I/O operation on closed file") + return False + + def tell(self): + self.response._ensure_sequence() + return sum(map(len, self.response.response)) + + @property + def encoding(self): + return self.response.charset + + +class ResponseStreamMixin(object): + """Mixin for :class:`BaseRequest` subclasses. Classes that inherit from + this mixin will automatically get a :attr:`stream` property that provides + a write-only interface to the response iterable. + """ + + @cached_property + def stream(self): + """The response iterable as write-only stream.""" + return ResponseStream(self) + + +class Response( + BaseResponse, + ETagResponseMixin, + ResponseStreamMixin, + CommonResponseDescriptorsMixin, + WWWAuthenticateMixin, +): + """Full featured response object implementing the following mixins: + + - :class:`ETagResponseMixin` for etag and cache control handling + - :class:`ResponseStreamMixin` to add support for the `stream` property + - :class:`CommonResponseDescriptorsMixin` for various HTTP descriptors + - :class:`WWWAuthenticateMixin` for HTTP authentication support + """ diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/user_agent.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/user_agent.py new file mode 100644 index 00000000..72588dd9 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wrappers/user_agent.py @@ -0,0 +1,15 @@ +from ..utils import cached_property + + +class UserAgentMixin(object): + """Adds a `user_agent` attribute to the request object which + contains the parsed user agent of the browser that triggered the + request as a :class:`~werkzeug.useragents.UserAgent` object. + """ + + @cached_property + def user_agent(self): + """The current user agent.""" + from ..useragents import UserAgent + + return UserAgent(self.environ) diff --git a/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wsgi.py b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wsgi.py new file mode 100644 index 00000000..f069f2d8 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib/python3.6/site-packages/werkzeug/wsgi.py @@ -0,0 +1,1067 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.wsgi + ~~~~~~~~~~~~~ + + This module implements WSGI related helpers. + + :copyright: 2007 Pallets + :license: BSD-3-Clause +""" +import io +import re +import warnings +from functools import partial +from functools import update_wrapper +from itertools import chain + +from ._compat import BytesIO +from ._compat import implements_iterator +from ._compat import make_literal_wrapper +from ._compat import string_types +from ._compat import text_type +from ._compat import to_bytes +from ._compat import to_unicode +from ._compat import try_coerce_native +from ._compat import wsgi_get_bytes +from ._internal import _encode_idna +from .urls import uri_to_iri +from .urls import url_join +from .urls import url_parse +from .urls import url_quote + + +def responder(f): + """Marks a function as responder. Decorate a function with it and it + will automatically call the return value as WSGI application. + + Example:: + + @responder + def application(environ, start_response): + return Response('Hello World!') + """ + return update_wrapper(lambda *a: f(*a)(*a[-2:]), f) + + +def get_current_url( + environ, + root_only=False, + strip_querystring=False, + host_only=False, + trusted_hosts=None, +): + """A handy helper function that recreates the full URL as IRI for the + current request or parts of it. Here's an example: + + >>> from werkzeug.test import create_environ + >>> env = create_environ("/?param=foo", "http://localhost/script") + >>> get_current_url(env) + 'http://localhost/script/?param=foo' + >>> get_current_url(env, root_only=True) + 'http://localhost/script/' + >>> get_current_url(env, host_only=True) + 'http://localhost/' + >>> get_current_url(env, strip_querystring=True) + 'http://localhost/script/' + + This optionally it verifies that the host is in a list of trusted hosts. + If the host is not in there it will raise a + :exc:`~werkzeug.exceptions.SecurityError`. + + Note that the string returned might contain unicode characters as the + representation is an IRI not an URI. If you need an ASCII only + representation you can use the :func:`~werkzeug.urls.iri_to_uri` + function: + + >>> from werkzeug.urls import iri_to_uri + >>> iri_to_uri(get_current_url(env)) + 'http://localhost/script/?param=foo' + + :param environ: the WSGI environment to get the current URL from. + :param root_only: set `True` if you only want the root URL. + :param strip_querystring: set to `True` if you don't want the querystring. + :param host_only: set to `True` if the host URL should be returned. + :param trusted_hosts: a list of trusted hosts, see :func:`host_is_trusted` + for more information. + """ + tmp = [environ["wsgi.url_scheme"], "://", get_host(environ, trusted_hosts)] + cat = tmp.append + if host_only: + return uri_to_iri("".join(tmp) + "/") + cat(url_quote(wsgi_get_bytes(environ.get("SCRIPT_NAME", ""))).rstrip("/")) + cat("/") + if not root_only: + cat(url_quote(wsgi_get_bytes(environ.get("PATH_INFO", "")).lstrip(b"/"))) + if not strip_querystring: + qs = get_query_string(environ) + if qs: + cat("?" + qs) + return uri_to_iri("".join(tmp)) + + +def host_is_trusted(hostname, trusted_list): + """Checks if a host is trusted against a list. This also takes care + of port normalization. + + .. versionadded:: 0.9 + + :param hostname: the hostname to check + :param trusted_list: a list of hostnames to check against. If a + hostname starts with a dot it will match against + all subdomains as well. + """ + if not hostname: + return False + + if isinstance(trusted_list, string_types): + trusted_list = [trusted_list] + + def _normalize(hostname): + if ":" in hostname: + hostname = hostname.rsplit(":", 1)[0] + return _encode_idna(hostname) + + try: + hostname = _normalize(hostname) + except UnicodeError: + return False + for ref in trusted_list: + if ref.startswith("."): + ref = ref[1:] + suffix_match = True + else: + suffix_match = False + try: + ref = _normalize(ref) + except UnicodeError: + return False + if ref == hostname: + return True + if suffix_match and hostname.endswith(b"." + ref): + return True + return False + + +def get_host(environ, trusted_hosts=None): + """Return the host for the given WSGI environment. This first checks + the ``Host`` header. If it's not present, then ``SERVER_NAME`` and + ``SERVER_PORT`` are used. The host will only contain the port if it + is different than the standard port for the protocol. + + Optionally, verify that the host is trusted using + :func:`host_is_trusted` and raise a + :exc:`~werkzeug.exceptions.SecurityError` if it is not. + + :param environ: The WSGI environment to get the host from. + :param trusted_hosts: A list of trusted hosts. + :return: Host, with port if necessary. + :raise ~werkzeug.exceptions.SecurityError: If the host is not + trusted. + """ + if "HTTP_HOST" in environ: + rv = environ["HTTP_HOST"] + if environ["wsgi.url_scheme"] == "http" and rv.endswith(":80"): + rv = rv[:-3] + elif environ["wsgi.url_scheme"] == "https" and rv.endswith(":443"): + rv = rv[:-4] + else: + rv = environ["SERVER_NAME"] + if (environ["wsgi.url_scheme"], environ["SERVER_PORT"]) not in ( + ("https", "443"), + ("http", "80"), + ): + rv += ":" + environ["SERVER_PORT"] + if trusted_hosts is not None: + if not host_is_trusted(rv, trusted_hosts): + from .exceptions import SecurityError + + raise SecurityError('Host "%s" is not trusted' % rv) + return rv + + +def get_content_length(environ): + """Returns the content length from the WSGI environment as + integer. If it's not available or chunked transfer encoding is used, + ``None`` is returned. + + .. versionadded:: 0.9 + + :param environ: the WSGI environ to fetch the content length from. + """ + if environ.get("HTTP_TRANSFER_ENCODING", "") == "chunked": + return None + + content_length = environ.get("CONTENT_LENGTH") + if content_length is not None: + try: + return max(0, int(content_length)) + except (ValueError, TypeError): + pass + + +def get_input_stream(environ, safe_fallback=True): + """Returns the input stream from the WSGI environment and wraps it + in the most sensible way possible. The stream returned is not the + raw WSGI stream in most cases but one that is safe to read from + without taking into account the content length. + + If content length is not set, the stream will be empty for safety reasons. + If the WSGI server supports chunked or infinite streams, it should set + the ``wsgi.input_terminated`` value in the WSGI environ to indicate that. + + .. versionadded:: 0.9 + + :param environ: the WSGI environ to fetch the stream from. + :param safe_fallback: use an empty stream as a safe fallback when the + content length is not set. Disabling this allows infinite streams, + which can be a denial-of-service risk. + """ + stream = environ["wsgi.input"] + content_length = get_content_length(environ) + + # A wsgi extension that tells us if the input is terminated. In + # that case we return the stream unchanged as we know we can safely + # read it until the end. + if environ.get("wsgi.input_terminated"): + return stream + + # If the request doesn't specify a content length, returning the stream is + # potentially dangerous because it could be infinite, malicious or not. If + # safe_fallback is true, return an empty stream instead for safety. + if content_length is None: + return BytesIO() if safe_fallback else stream + + # Otherwise limit the stream to the content length + return LimitedStream(stream, content_length) + + +def get_query_string(environ): + """Returns the `QUERY_STRING` from the WSGI environment. This also takes + care about the WSGI decoding dance on Python 3 environments as a + native string. The string returned will be restricted to ASCII + characters. + + .. versionadded:: 0.9 + + :param environ: the WSGI environment object to get the query string from. + """ + qs = wsgi_get_bytes(environ.get("QUERY_STRING", "")) + # QUERY_STRING really should be ascii safe but some browsers + # will send us some unicode stuff (I am looking at you IE). + # In that case we want to urllib quote it badly. + return try_coerce_native(url_quote(qs, safe=":&%=+$!*'(),")) + + +def get_path_info(environ, charset="utf-8", errors="replace"): + """Returns the `PATH_INFO` from the WSGI environment and properly + decodes it. This also takes care about the WSGI decoding dance + on Python 3 environments. if the `charset` is set to `None` a + bytestring is returned. + + .. versionadded:: 0.9 + + :param environ: the WSGI environment object to get the path from. + :param charset: the charset for the path info, or `None` if no + decoding should be performed. + :param errors: the decoding error handling. + """ + path = wsgi_get_bytes(environ.get("PATH_INFO", "")) + return to_unicode(path, charset, errors, allow_none_charset=True) + + +def get_script_name(environ, charset="utf-8", errors="replace"): + """Returns the `SCRIPT_NAME` from the WSGI environment and properly + decodes it. This also takes care about the WSGI decoding dance + on Python 3 environments. if the `charset` is set to `None` a + bytestring is returned. + + .. versionadded:: 0.9 + + :param environ: the WSGI environment object to get the path from. + :param charset: the charset for the path, or `None` if no + decoding should be performed. + :param errors: the decoding error handling. + """ + path = wsgi_get_bytes(environ.get("SCRIPT_NAME", "")) + return to_unicode(path, charset, errors, allow_none_charset=True) + + +def pop_path_info(environ, charset="utf-8", errors="replace"): + """Removes and returns the next segment of `PATH_INFO`, pushing it onto + `SCRIPT_NAME`. Returns `None` if there is nothing left on `PATH_INFO`. + + If the `charset` is set to `None` a bytestring is returned. + + If there are empty segments (``'/foo//bar``) these are ignored but + properly pushed to the `SCRIPT_NAME`: + + >>> env = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/a/b'} + >>> pop_path_info(env) + 'a' + >>> env['SCRIPT_NAME'] + '/foo/a' + >>> pop_path_info(env) + 'b' + >>> env['SCRIPT_NAME'] + '/foo/a/b' + + .. versionadded:: 0.5 + + .. versionchanged:: 0.9 + The path is now decoded and a charset and encoding + parameter can be provided. + + :param environ: the WSGI environment that is modified. + """ + path = environ.get("PATH_INFO") + if not path: + return None + + script_name = environ.get("SCRIPT_NAME", "") + + # shift multiple leading slashes over + old_path = path + path = path.lstrip("/") + if path != old_path: + script_name += "/" * (len(old_path) - len(path)) + + if "/" not in path: + environ["PATH_INFO"] = "" + environ["SCRIPT_NAME"] = script_name + path + rv = wsgi_get_bytes(path) + else: + segment, path = path.split("/", 1) + environ["PATH_INFO"] = "/" + path + environ["SCRIPT_NAME"] = script_name + segment + rv = wsgi_get_bytes(segment) + + return to_unicode(rv, charset, errors, allow_none_charset=True) + + +def peek_path_info(environ, charset="utf-8", errors="replace"): + """Returns the next segment on the `PATH_INFO` or `None` if there + is none. Works like :func:`pop_path_info` without modifying the + environment: + + >>> env = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/a/b'} + >>> peek_path_info(env) + 'a' + >>> peek_path_info(env) + 'a' + + If the `charset` is set to `None` a bytestring is returned. + + .. versionadded:: 0.5 + + .. versionchanged:: 0.9 + The path is now decoded and a charset and encoding + parameter can be provided. + + :param environ: the WSGI environment that is checked. + """ + segments = environ.get("PATH_INFO", "").lstrip("/").split("/", 1) + if segments: + return to_unicode( + wsgi_get_bytes(segments[0]), charset, errors, allow_none_charset=True + ) + + +def extract_path_info( + environ_or_baseurl, + path_or_url, + charset="utf-8", + errors="werkzeug.url_quote", + collapse_http_schemes=True, +): + """Extracts the path info from the given URL (or WSGI environment) and + path. The path info returned is a unicode string, not a bytestring + suitable for a WSGI environment. The URLs might also be IRIs. + + If the path info could not be determined, `None` is returned. + + Some examples: + + >>> extract_path_info('http://example.com/app', '/app/hello') + u'/hello' + >>> extract_path_info('http://example.com/app', + ... 'https://example.com/app/hello') + u'/hello' + >>> extract_path_info('http://example.com/app', + ... 'https://example.com/app/hello', + ... collapse_http_schemes=False) is None + True + + Instead of providing a base URL you can also pass a WSGI environment. + + :param environ_or_baseurl: a WSGI environment dict, a base URL or + base IRI. This is the root of the + application. + :param path_or_url: an absolute path from the server root, a + relative path (in which case it's the path info) + or a full URL. Also accepts IRIs and unicode + parameters. + :param charset: the charset for byte data in URLs + :param errors: the error handling on decode + :param collapse_http_schemes: if set to `False` the algorithm does + not assume that http and https on the + same server point to the same + resource. + + .. versionchanged:: 0.15 + The ``errors`` parameter defaults to leaving invalid bytes + quoted instead of replacing them. + + .. versionadded:: 0.6 + """ + + def _normalize_netloc(scheme, netloc): + parts = netloc.split(u"@", 1)[-1].split(u":", 1) + if len(parts) == 2: + netloc, port = parts + if (scheme == u"http" and port == u"80") or ( + scheme == u"https" and port == u"443" + ): + port = None + else: + netloc = parts[0] + port = None + if port is not None: + netloc += u":" + port + return netloc + + # make sure whatever we are working on is a IRI and parse it + path = uri_to_iri(path_or_url, charset, errors) + if isinstance(environ_or_baseurl, dict): + environ_or_baseurl = get_current_url(environ_or_baseurl, root_only=True) + base_iri = uri_to_iri(environ_or_baseurl, charset, errors) + base_scheme, base_netloc, base_path = url_parse(base_iri)[:3] + cur_scheme, cur_netloc, cur_path, = url_parse(url_join(base_iri, path))[:3] + + # normalize the network location + base_netloc = _normalize_netloc(base_scheme, base_netloc) + cur_netloc = _normalize_netloc(cur_scheme, cur_netloc) + + # is that IRI even on a known HTTP scheme? + if collapse_http_schemes: + for scheme in base_scheme, cur_scheme: + if scheme not in (u"http", u"https"): + return None + else: + if not (base_scheme in (u"http", u"https") and base_scheme == cur_scheme): + return None + + # are the netlocs compatible? + if base_netloc != cur_netloc: + return None + + # are we below the application path? + base_path = base_path.rstrip(u"/") + if not cur_path.startswith(base_path): + return None + + return u"/" + cur_path[len(base_path) :].lstrip(u"/") + + +@implements_iterator +class ClosingIterator(object): + """The WSGI specification requires that all middlewares and gateways + respect the `close` callback of the iterable returned by the application. + Because it is useful to add another close action to a returned iterable + and adding a custom iterable is a boring task this class can be used for + that:: + + return ClosingIterator(app(environ, start_response), [cleanup_session, + cleanup_locals]) + + If there is just one close function it can be passed instead of the list. + + A closing iterator is not needed if the application uses response objects + and finishes the processing if the response is started:: + + try: + return response(environ, start_response) + finally: + cleanup_session() + cleanup_locals() + """ + + def __init__(self, iterable, callbacks=None): + iterator = iter(iterable) + self._next = partial(next, iterator) + if callbacks is None: + callbacks = [] + elif callable(callbacks): + callbacks = [callbacks] + else: + callbacks = list(callbacks) + iterable_close = getattr(iterable, "close", None) + if iterable_close: + callbacks.insert(0, iterable_close) + self._callbacks = callbacks + + def __iter__(self): + return self + + def __next__(self): + return self._next() + + def close(self): + for callback in self._callbacks: + callback() + + +def wrap_file(environ, file, buffer_size=8192): + """Wraps a file. This uses the WSGI server's file wrapper if available + or otherwise the generic :class:`FileWrapper`. + + .. versionadded:: 0.5 + + If the file wrapper from the WSGI server is used it's important to not + iterate over it from inside the application but to pass it through + unchanged. If you want to pass out a file wrapper inside a response + object you have to set :attr:`~BaseResponse.direct_passthrough` to `True`. + + More information about file wrappers are available in :pep:`333`. + + :param file: a :class:`file`-like object with a :meth:`~file.read` method. + :param buffer_size: number of bytes for one iteration. + """ + return environ.get("wsgi.file_wrapper", FileWrapper)(file, buffer_size) + + +@implements_iterator +class FileWrapper(object): + """This class can be used to convert a :class:`file`-like object into + an iterable. It yields `buffer_size` blocks until the file is fully + read. + + You should not use this class directly but rather use the + :func:`wrap_file` function that uses the WSGI server's file wrapper + support if it's available. + + .. versionadded:: 0.5 + + If you're using this object together with a :class:`BaseResponse` you have + to use the `direct_passthrough` mode. + + :param file: a :class:`file`-like object with a :meth:`~file.read` method. + :param buffer_size: number of bytes for one iteration. + """ + + def __init__(self, file, buffer_size=8192): + self.file = file + self.buffer_size = buffer_size + + def close(self): + if hasattr(self.file, "close"): + self.file.close() + + def seekable(self): + if hasattr(self.file, "seekable"): + return self.file.seekable() + if hasattr(self.file, "seek"): + return True + return False + + def seek(self, *args): + if hasattr(self.file, "seek"): + self.file.seek(*args) + + def tell(self): + if hasattr(self.file, "tell"): + return self.file.tell() + return None + + def __iter__(self): + return self + + def __next__(self): + data = self.file.read(self.buffer_size) + if data: + return data + raise StopIteration() + + +@implements_iterator +class _RangeWrapper(object): + # private for now, but should we make it public in the future ? + + """This class can be used to convert an iterable object into + an iterable that will only yield a piece of the underlying content. + It yields blocks until the underlying stream range is fully read. + The yielded blocks will have a size that can't exceed the original + iterator defined block size, but that can be smaller. + + If you're using this object together with a :class:`BaseResponse` you have + to use the `direct_passthrough` mode. + + :param iterable: an iterable object with a :meth:`__next__` method. + :param start_byte: byte from which read will start. + :param byte_range: how many bytes to read. + """ + + def __init__(self, iterable, start_byte=0, byte_range=None): + self.iterable = iter(iterable) + self.byte_range = byte_range + self.start_byte = start_byte + self.end_byte = None + if byte_range is not None: + self.end_byte = self.start_byte + self.byte_range + self.read_length = 0 + self.seekable = hasattr(iterable, "seekable") and iterable.seekable() + self.end_reached = False + + def __iter__(self): + return self + + def _next_chunk(self): + try: + chunk = next(self.iterable) + self.read_length += len(chunk) + return chunk + except StopIteration: + self.end_reached = True + raise + + def _first_iteration(self): + chunk = None + if self.seekable: + self.iterable.seek(self.start_byte) + self.read_length = self.iterable.tell() + contextual_read_length = self.read_length + else: + while self.read_length <= self.start_byte: + chunk = self._next_chunk() + if chunk is not None: + chunk = chunk[self.start_byte - self.read_length :] + contextual_read_length = self.start_byte + return chunk, contextual_read_length + + def _next(self): + if self.end_reached: + raise StopIteration() + chunk = None + contextual_read_length = self.read_length + if self.read_length == 0: + chunk, contextual_read_length = self._first_iteration() + if chunk is None: + chunk = self._next_chunk() + if self.end_byte is not None and self.read_length >= self.end_byte: + self.end_reached = True + return chunk[: self.end_byte - contextual_read_length] + return chunk + + def __next__(self): + chunk = self._next() + if chunk: + return chunk + self.end_reached = True + raise StopIteration() + + def close(self): + if hasattr(self.iterable, "close"): + self.iterable.close() + + +def _make_chunk_iter(stream, limit, buffer_size): + """Helper for the line and chunk iter functions.""" + if isinstance(stream, (bytes, bytearray, text_type)): + raise TypeError( + "Passed a string or byte object instead of true iterator or stream." + ) + if not hasattr(stream, "read"): + for item in stream: + if item: + yield item + return + if not isinstance(stream, LimitedStream) and limit is not None: + stream = LimitedStream(stream, limit) + _read = stream.read + while 1: + item = _read(buffer_size) + if not item: + break + yield item + + +def make_line_iter(stream, limit=None, buffer_size=10 * 1024, cap_at_buffer=False): + """Safely iterates line-based over an input stream. If the input stream + is not a :class:`LimitedStream` the `limit` parameter is mandatory. + + This uses the stream's :meth:`~file.read` method internally as opposite + to the :meth:`~file.readline` method that is unsafe and can only be used + in violation of the WSGI specification. The same problem applies to the + `__iter__` function of the input stream which calls :meth:`~file.readline` + without arguments. + + If you need line-by-line processing it's strongly recommended to iterate + over the input stream using this helper function. + + .. versionchanged:: 0.8 + This function now ensures that the limit was reached. + + .. versionadded:: 0.9 + added support for iterators as input stream. + + .. versionadded:: 0.11.10 + added support for the `cap_at_buffer` parameter. + + :param stream: the stream or iterate to iterate over. + :param limit: the limit in bytes for the stream. (Usually + content length. Not necessary if the `stream` + is a :class:`LimitedStream`. + :param buffer_size: The optional buffer size. + :param cap_at_buffer: if this is set chunks are split if they are longer + than the buffer size. Internally this is implemented + that the buffer size might be exhausted by a factor + of two however. + """ + _iter = _make_chunk_iter(stream, limit, buffer_size) + + first_item = next(_iter, "") + if not first_item: + return + + s = make_literal_wrapper(first_item) + empty = s("") + cr = s("\r") + lf = s("\n") + crlf = s("\r\n") + + _iter = chain((first_item,), _iter) + + def _iter_basic_lines(): + _join = empty.join + buffer = [] + while 1: + new_data = next(_iter, "") + if not new_data: + break + new_buf = [] + buf_size = 0 + for item in chain(buffer, new_data.splitlines(True)): + new_buf.append(item) + buf_size += len(item) + if item and item[-1:] in crlf: + yield _join(new_buf) + new_buf = [] + elif cap_at_buffer and buf_size >= buffer_size: + rv = _join(new_buf) + while len(rv) >= buffer_size: + yield rv[:buffer_size] + rv = rv[buffer_size:] + new_buf = [rv] + buffer = new_buf + if buffer: + yield _join(buffer) + + # This hackery is necessary to merge 'foo\r' and '\n' into one item + # of 'foo\r\n' if we were unlucky and we hit a chunk boundary. + previous = empty + for item in _iter_basic_lines(): + if item == lf and previous[-1:] == cr: + previous += item + item = empty + if previous: + yield previous + previous = item + if previous: + yield previous + + +def make_chunk_iter( + stream, separator, limit=None, buffer_size=10 * 1024, cap_at_buffer=False +): + """Works like :func:`make_line_iter` but accepts a separator + which divides chunks. If you want newline based processing + you should use :func:`make_line_iter` instead as it + supports arbitrary newline markers. + + .. versionadded:: 0.8 + + .. versionadded:: 0.9 + added support for iterators as input stream. + + .. versionadded:: 0.11.10 + added support for the `cap_at_buffer` parameter. + + :param stream: the stream or iterate to iterate over. + :param separator: the separator that divides chunks. + :param limit: the limit in bytes for the stream. (Usually + content length. Not necessary if the `stream` + is otherwise already limited). + :param buffer_size: The optional buffer size. + :param cap_at_buffer: if this is set chunks are split if they are longer + than the buffer size. Internally this is implemented + that the buffer size might be exhausted by a factor + of two however. + """ + _iter = _make_chunk_iter(stream, limit, buffer_size) + + first_item = next(_iter, "") + if not first_item: + return + + _iter = chain((first_item,), _iter) + if isinstance(first_item, text_type): + separator = to_unicode(separator) + _split = re.compile(r"(%s)" % re.escape(separator)).split + _join = u"".join + else: + separator = to_bytes(separator) + _split = re.compile(b"(" + re.escape(separator) + b")").split + _join = b"".join + + buffer = [] + while 1: + new_data = next(_iter, "") + if not new_data: + break + chunks = _split(new_data) + new_buf = [] + buf_size = 0 + for item in chain(buffer, chunks): + if item == separator: + yield _join(new_buf) + new_buf = [] + buf_size = 0 + else: + buf_size += len(item) + new_buf.append(item) + + if cap_at_buffer and buf_size >= buffer_size: + rv = _join(new_buf) + while len(rv) >= buffer_size: + yield rv[:buffer_size] + rv = rv[buffer_size:] + new_buf = [rv] + buf_size = len(rv) + + buffer = new_buf + if buffer: + yield _join(buffer) + + +@implements_iterator +class LimitedStream(io.IOBase): + """Wraps a stream so that it doesn't read more than n bytes. If the + stream is exhausted and the caller tries to get more bytes from it + :func:`on_exhausted` is called which by default returns an empty + string. The return value of that function is forwarded + to the reader function. So if it returns an empty string + :meth:`read` will return an empty string as well. + + The limit however must never be higher than what the stream can + output. Otherwise :meth:`readlines` will try to read past the + limit. + + .. admonition:: Note on WSGI compliance + + calls to :meth:`readline` and :meth:`readlines` are not + WSGI compliant because it passes a size argument to the + readline methods. Unfortunately the WSGI PEP is not safely + implementable without a size argument to :meth:`readline` + because there is no EOF marker in the stream. As a result + of that the use of :meth:`readline` is discouraged. + + For the same reason iterating over the :class:`LimitedStream` + is not portable. It internally calls :meth:`readline`. + + We strongly suggest using :meth:`read` only or using the + :func:`make_line_iter` which safely iterates line-based + over a WSGI input stream. + + :param stream: the stream to wrap. + :param limit: the limit for the stream, must not be longer than + what the string can provide if the stream does not + end with `EOF` (like `wsgi.input`) + """ + + def __init__(self, stream, limit): + self._read = stream.read + self._readline = stream.readline + self._pos = 0 + self.limit = limit + + def __iter__(self): + return self + + @property + def is_exhausted(self): + """If the stream is exhausted this attribute is `True`.""" + return self._pos >= self.limit + + def on_exhausted(self): + """This is called when the stream tries to read past the limit. + The return value of this function is returned from the reading + function. + """ + # Read null bytes from the stream so that we get the + # correct end of stream marker. + return self._read(0) + + def on_disconnect(self): + """What should happen if a disconnect is detected? The return + value of this function is returned from read functions in case + the client went away. By default a + :exc:`~werkzeug.exceptions.ClientDisconnected` exception is raised. + """ + from .exceptions import ClientDisconnected + + raise ClientDisconnected() + + def exhaust(self, chunk_size=1024 * 64): + """Exhaust the stream. This consumes all the data left until the + limit is reached. + + :param chunk_size: the size for a chunk. It will read the chunk + until the stream is exhausted and throw away + the results. + """ + to_read = self.limit - self._pos + chunk = chunk_size + while to_read > 0: + chunk = min(to_read, chunk) + self.read(chunk) + to_read -= chunk + + def read(self, size=None): + """Read `size` bytes or if size is not provided everything is read. + + :param size: the number of bytes read. + """ + if self._pos >= self.limit: + return self.on_exhausted() + if size is None or size == -1: # -1 is for consistence with file + size = self.limit + to_read = min(self.limit - self._pos, size) + try: + read = self._read(to_read) + except (IOError, ValueError): + return self.on_disconnect() + if to_read and len(read) != to_read: + return self.on_disconnect() + self._pos += len(read) + return read + + def readline(self, size=None): + """Reads one line from the stream.""" + if self._pos >= self.limit: + return self.on_exhausted() + if size is None: + size = self.limit - self._pos + else: + size = min(size, self.limit - self._pos) + try: + line = self._readline(size) + except (ValueError, IOError): + return self.on_disconnect() + if size and not line: + return self.on_disconnect() + self._pos += len(line) + return line + + def readlines(self, size=None): + """Reads a file into a list of strings. It calls :meth:`readline` + until the file is read to the end. It does support the optional + `size` argument if the underlaying stream supports it for + `readline`. + """ + last_pos = self._pos + result = [] + if size is not None: + end = min(self.limit, last_pos + size) + else: + end = self.limit + while 1: + if size is not None: + size -= last_pos - self._pos + if self._pos >= end: + break + result.append(self.readline(size)) + if size is not None: + last_pos = self._pos + return result + + def tell(self): + """Returns the position of the stream. + + .. versionadded:: 0.9 + """ + return self._pos + + def __next__(self): + line = self.readline() + if not line: + raise StopIteration() + return line + + def readable(self): + return True + + +# DEPRECATED +from .middleware.dispatcher import DispatcherMiddleware as _DispatcherMiddleware +from .middleware.http_proxy import ProxyMiddleware as _ProxyMiddleware +from .middleware.shared_data import SharedDataMiddleware as _SharedDataMiddleware + + +class ProxyMiddleware(_ProxyMiddleware): + """ + .. deprecated:: 0.15 + ``werkzeug.wsgi.ProxyMiddleware`` has moved to + :mod:`werkzeug.middleware.http_proxy`. This import will be + removed in 1.0. + """ + + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.wsgi.ProxyMiddleware' has moved to 'werkzeug" + ".middleware.http_proxy.ProxyMiddleware'. This import is" + " deprecated as of version 0.15 and will be removed in" + " version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(ProxyMiddleware, self).__init__(*args, **kwargs) + + +class SharedDataMiddleware(_SharedDataMiddleware): + """ + .. deprecated:: 0.15 + ``werkzeug.wsgi.SharedDataMiddleware`` has moved to + :mod:`werkzeug.middleware.shared_data`. This import will be + removed in 1.0. + """ + + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.wsgi.SharedDataMiddleware' has moved to" + " 'werkzeug.middleware.shared_data.SharedDataMiddleware'." + " This import is deprecated as of version 0.15 and will be" + " removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(SharedDataMiddleware, self).__init__(*args, **kwargs) + + +class DispatcherMiddleware(_DispatcherMiddleware): + """ + .. deprecated:: 0.15 + ``werkzeug.wsgi.DispatcherMiddleware`` has moved to + :mod:`werkzeug.middleware.dispatcher`. This import will be + removed in 1.0. + """ + + def __init__(self, *args, **kwargs): + warnings.warn( + "'werkzeug.wsgi.DispatcherMiddleware' has moved to" + " 'werkzeug.middleware.dispatcher.DispatcherMiddleware'." + " This import is deprecated as of version 0.15 and will be" + " removed in version 1.0.", + DeprecationWarning, + stacklevel=2, + ) + super(DispatcherMiddleware, self).__init__(*args, **kwargs) diff --git a/week-0/day-3/my_todo_app/venv/lib64 b/week-0/day-3/my_todo_app/venv/lib64 new file mode 120000 index 00000000..7951405f --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/lib64 @@ -0,0 +1 @@ +lib \ No newline at end of file diff --git a/week-0/day-3/my_todo_app/venv/pyvenv.cfg b/week-0/day-3/my_todo_app/venv/pyvenv.cfg new file mode 100644 index 00000000..7f0d9af4 --- /dev/null +++ b/week-0/day-3/my_todo_app/venv/pyvenv.cfg @@ -0,0 +1,3 @@ +home = /usr/bin +include-system-site-packages = false +version = 3.6.8 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..36659e5fb7b65436e89d778eda8f3909bed7d4b9 GIT binary patch literal 18720 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 Obo!mrh;t=jUHt)|Z35N+ literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..4c1abd7ef53f59c2f974ecf2d09b84e31b55f523 GIT binary patch literal 12139 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 Zf<}2MaEO22efzUx{z=z)=>EC;{{Xs7sp9|u literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/certifi-2018.1.18-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/certifi-2018.1.18-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..144996e06cc8ba53f4bdea554705883e120be146 GIT binary patch literal 150807 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

    ;>YUS{A#%)2 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

    lOB^utP3PxpPV>|tv2!@#E881e`TlFli&8;1g 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�+DqSWGMREKi0 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�)j`)>% z7$2mgiink)4IVfx0FyE@kA0+Iu*lYscz1o%gCNSb1 z7sW=Z-w1@Yp${#aM*&u(Xi5Zt;}X*3f$SL>PJ|7SWI(Z}2E7B-n{*p{=&>r<@{0X? zS1w$EDQvaY04NMh8>v1}10@TF7Il%-h)k##f|6i_6@X!dJ7@?iicBYKL)15!2Qoq% zB^5M1CxVwrGKSOFa_*X7!6e{h+Odn1w1k@#8GxlNQS_Zb?N?Pm%2ek&@>+;nVA2x2 zc;dMgm}1&|?@=UCS@)W^bpexuh+gtkemKKZ*AdEhRY{qoYGVx!^IN;%tMks*fe&vp zcKRb#UlLPYAL2y%t?_qf$=Ldw3*LJnsmSae@P-M-S)f$OTSmfYQMh>GL}hcDu}q=f z{5u8a6cVfyx4HG&AWE5llJ`0`Kv&Fwa{UZy5CW=d3#rKFNTe=aQyrs9yIB}Le02z- zVHa5YMT9~#t&(lK57z08Hnpc+O0xyPWEwb0laYNugm@1ID28W~_I!~t(bnJr*@9I{ zREidBrw%CbjGKm@BD4<+9F|JL%|kLX`;35pl(Lu}#=8p9iz~L6gv~Ofx6YBuO8k{% zZDbTKRAr;Kw?gwt0bXpg;UufG;x-Q6MejshE49(o>`2sPmFGpe;U?z8Q4L(jBf?%aOcje$OO-)re?r}fOSFl+ioN_lM z+Fzn&A}UHndJxS7b-c<6uzWAWEx9(}04Ib+)gl)L#GYVyC$Npn=>}*(%#fZI|3I-l zSc3+t`WS6a-n|+wq#7}T4ZOH7TA51G`B)zH^YWlDH)Mm)>@w3~sNNK8!7yy*u4X4A zntNCUiA4K#wE(Sprecdf-723K#;>a*5Lse`#|RZnMC-qCjHu)om72vQ(Mv4LoTMA` zl^=EAo8G5>gka*dZ1`5VST><~&(XzNmd>#kwLU{DJ(oVL9(R)iBB>4A|5gkiBDYqY zg*{>_C^q-COlgqUuSYPNW?-tB_u_!L75+7Iu@r#eM{tu+(2r+nezYmWtWU-~*T70q zbBrLMx&iWFJ57sv&-SCmP5K#AOqx?khvg`{mhKpHDO963T0GOjjD72oi6CHhvEyA6 zN|TMRotR{05{xUx@bDtjDrS|!k1%2%r?Rj<+O*u>rO*3u`hJyTI&+TX}f ztob;~?x5@Bz>FxVpLE(!;?(`+rA5H@q|Ru09xBKWQ9=Dgz@Z`EL_BbCbfG^U7qcA*fR}xmJ8Ax%fMOEjI$8kH--jJXl@Zv^-;DKQb3^Ysyf83Sj($< zX79nb0SIBF97ElEDhS<9b5NNTc8}GB1?t9j!pCcDQderr+Eu@_3Zo0RG#|E%Nzgjp z+UZdZ3oCj?V>*SoT4pv@ORmR7XI4Ib^D2LJ$E{q+F#P2W_(6nd7!{&}j4U;npevPg zG;y5uZiHFNXw!AGNrP1_ZhGkBxW`c~BN<&g58ca%D9TlNs*%Q~xZe{M!Ja9-UcHl8AaZ&u3|Ab@Edp%voVvaRMg^URDlNp{=e}xB z#h3o8q7ret{*_9{?w1-O-SJRNd%aTq5W8v(BKeSmZ}cjU@G7~Bz0?0s=o{!$^6_*Buu*-Z`p@IAr=Y!Pl)zG|4%% z;j>Bnj(6lYE1tD^a!1-lN<>#ad1|C7U}A|cSSGW-!8e{7(cGycL(|ZC58b=Hz@k0N zCPSUt*jBa~7?x1r@~oX={B6t;d6RO!Op;BE7u=EbW}MIc`R6%U&J?)lQL%(Yk_|I* zgDl7B-jXlbl9-ytqUIVMF{IoW{ICK-WCVM&cGX9oWw=f2qjM5=lem85$*OsTfOy5e zKxt2s(oB^8gG1`4rVeyfpzM_^&n@{~v#PAO7}l zm+zwtgz4_NmB5LKz{U&v8$;L<=7>+#oc$4QGA>fFWJ$|*FbA$zZx@eOXjTM)tgIXz zKjqU{`I?!Snwrzs&jf_i{oVWb!`q3oK5|{}_P<;`JnN(#2};UUqmS{M3f_>ZvDj%@ zV=NJg1u$Q@^V&cLEQO(`onjfKEFlF{BH@#%jN^t0#V?hAn1_(wbM|><8XF|#J>af{ ze6lb5BggC!3v#cYEP4&miv7r>`p`=VN8BBJvP?9$3lTLHX%=Q6(wE8&?iQ;Uwv5hix!-aRZ(=??R2)s(aU!)sVB@U!;NyW zXgmsT@vWrF9^Uvuj$Bbe-K*SD)hwi*8ybUzXKw=BX5v{u_8*W0RR)$sEPkfo)QNTBq=-BAag(SFu?kjSY?t( z(VwZ$a57)qfmo;kXb%Jr8VL_dd=&_i2zH3AABji}>NiSS5zB)5NgCB+8VP0#F$Od@ zo)8S2%C>9mKpAV!Rq#t=USiuNnj!h*onSPjv4_FbLP0h03go)-I1{iL{3h4}N z1EdmlcR@opFtuKZ*hYvCuqq_f0b+#~N8SMmVNixwj+7?>%neI^p%5G)Eu#BSA`{Rm ze2Z3!$MJJR@iS*f@?F|FmU~Ik5e|06P#~k|ilWNSdrC1t-w|#F(s@Q^Am@y`kGDVhPJI@qF%4Bv_rau0pxl$a=2ex%V{^M%k$33+##Z*6#Ab)4y ztBf_Ta7;uQq5ylga^pmjgXq_C%dZ~1Lgp(JBMhmLsjxy5+(D!RqZoJVu59y|c_h(= z#YM82&n>0AC%6$?s|Ht&ovZ+VcAg2QM>_S+Bv1+N%M@}4EC;H7fCzsW@C4;Nq z8P--qd-<8Y4C#WV)n6z%22n&XKbfwkV_0ji{Gw&@l|^5bH#+{!E^RAPx5lYTl=ZZkGQUUU!ZqvPnYg(%7E*KR<&DLM zkH6X(>qZ~6P1hFN+N%zF!P|tdp$rRQ)frzuouO;j@`tCBkh8C919d~D>0!ansoLsL zw!)?vo4!r6jthyumC)fLLmO*-Mj~?XN-)Qq^o9rt0Yts@bpw{FT-!(C+@Hl*il zH8AGLx)mEDHLskZtjmWRZ#AF}ZiB|!dH1|m##sB|f@gl%$|OfMI8f+C#8B76rB~~x zbtB_st*mgxkMvGGTU$h86)@rCE_h1fpvbN1&~8^6=`NA^1*pYn*&u9+7~2Y6{dDi! zFzUq>#=BzI%u-uBLtK9l!V zphqo-S$;L>fVB2@N?@z-mznv4Z-6i79wG3Y^;5{XZ2FeT`BYWrh{d;OE=Lday7I#D zdGSuVCpd`nINvwGato74t>nmwK)&$MEC;>b(_`Q4sh{_9ZM&#;dqP9=i}>hMqU7b= z=Q>j?rFhcNDVxzmet^!zBT*t2<;9P?oyU)p0FmNmkg@U(>=#3U7yENZ-(3ghCo5EU z%eI&o$LCaS&6j!*Vp!v4`JYk;0mp8Up}6`?jLJ-^K|mPhpsX`XTQj83RpU( zkHk9SkndAvS|Vfa^L?miks;@tJecCh7qUzYv4y*8MNkjJ@v%O!MNeR{`Yr6ZB+$Ds zG(ajoj}E@V>S8Qd=Vp> zIaB+g=x-N@e4)85e4N-P#^ z$sFv@Qo{Zl2r(CG9Zl@K6ZkHYgRi&GBd-~rFAqO&*O$zxyqrB_jJ@69*ikbVntJF; zYpJCEG(zprQtCzJMCJhiiSvI(#;9vOrDpOG;m$hp>IU8(x-C*;Qk0OKkj~Uex1&%UW{OTn14ln|418=g+qVka!W^%FpuwCZ_-gz&5imTO&A0@N3r&@Hp4q! z?`ggpiM*Wdlz#hUp%OYqDXSTU04QJP{>C0l@51T~fhm&@%7kS|WwqtbemRh4bm2r} z!TT_)aWU)6^EdrMk%XG-X7mA9QHsfjpaPl1zA4mIHIe{OQjo&+k+MZH&&DwWXW#Y* zl^Aj%l^d{f8s`DBVcd-7_6HrXNDazBXu!o_!q60`q;0V(!%#PAqtwS=k^=a^Q7M9e zJ6_JPQPC-Aeygxyp^8#LGgAj8AQ_8LLA?+W;Q_-@sDT3MC_?teQfD~?69H4g{uaUs zaHGO8+9Y^?9`2?Lu^@`1`VMIWDJX+51c~Pz6au)BD94jLMoST;4WRe~%?C+HOU*Ki zK(5Jw_Jw23hYLtsgxTRh_L1sH5`+0e1@Ys|Ngq?qhd76EI1q`h><4ZP92UD+BXn0K~glqrHDC=7&DGg?GRxS z(FVYRccX#P##ySxw*Im_!E;qLQi7MssTy2XI`w04TA1}5XH@zOso8~Jq5C~ahtK3)YdFXmX5-iXFOXQVa=}a?8U|EX# zju`LjU&RgYY3ci()MCRX7qdyXx$Iq&y}F^jGFQbJVhQSe0A^QNPXviW+1jw8;~~J! zD!R`i8J$4YGD+2I_7lRUi3|+m{yjfyAWEfb1{OD3c*Ei{CHlE;sS6ok1XUC`yfjr? z(f)8rwuTUoF5N(^+Vav+C|HLV!i}$T6In?4StHVmW>=#+h_HZ%MsV#vhjL2RrW7N2cuHNP+uP#6O zhGv5V>C;Sja*Hc?Tp4(V2f9qP83$VnFV? z(|o&0o;QDUh)k1q2QS+fa8#lY$WE9myZoHKU9ke$J3h%ZDJUL|3Mn{jDo)zkk$oQ8 z>FqM_PEPH{DC4b`xJ)9S%*nT!&#WVBJdI=e^pvx@;>CFzgc-ON?N(hj#tVBXm1>Dr z7Kay!1LVq@1Mp6%4!uZ9UN)~0&Q={^I)q*IR1;Ci^yBXtI#8N<t~rjv6Vk8Cof{q4PAeTs2!^%rq{_ zInea-kZ8D(bnDUBxv%i)TQW+=~jds(cb=FH-u#Z}Gq91kZ58>K%Es(B$ zW?w|OVR-+yYc6vqLN5xmaLA0J6Sf0-=bwel^u-FzMz}UH6K&t?vQ<5!KgZbvmgTn2 zN0YW(&PiXR(^Y5v($s{5HJbe2?FXEeXAnQ&mZ2Pa&n=Ryo*cJrjjH9;!h*H+Dz(;C z4gqzWf@m4u0P>|)e7d+l8Y-{7Ke zHOF}a-O&Tr6OO3i6-#3~^PSlBsh|^Hm<>kqPmC`LkN`)r)UD{~Zw<>G9qa6^ib;vC z34mqdQzmWd_j=l+iTq{t$#%`rb2@!V>yk{)7jI7Tcq1_8*Y9vtE>IInoDQ>FjG1MD zhNWR^aO+l60fR2a%jg-*baW8qKn;Ig{l~Wvn0{9C zaa3zC?$~6mF*K1EI8oe}C~L5A;3y&lddeie%AfY-N@E|vPjm|=luodmP{@Oy;p;?F z-7VQxPG7n^^`-M*nfL9xV_M?*HawS0`&r zXN&)X%3E4fb{kSC-4E0-iJ}SMSB9MQnof0)BgW=Yjy3~sOrv9Y#VxWy6yOOm1)7)E zmtL1X_Kk=w`pPzL?0#rN=?fuw;vAKgmEG?Z9c8EBSD&__W@~(Mga{Uz+c&=-!(NPb z3A^}x-96>ZOC?86Rz@D5FZWM5aZsN1W~T}ZBKds77O3(IZEC0(PJNyw{}J?cZcd6N zU*tGlsU}Kg(_%@P?#yp~*#nm0N&Q9hWE0qAWjA@#Sh>;M%7!#?*rCN?O|4xHeG?B? z&>@%fql-JungXS%GdoqwO9u2Ktrer-VuD|uu8$dmE)%djj)o+Mbnu%Q!gniH>IE#$NhJOIcEo&8m6){oGGf6$ZH zeS>`SDZ4}FXl0N(HYYc)f_puAO1Y{R1xOUy{6)Cl!SRZC#V16z7*Ppvh<^3tZhv~- z?S&xB2+rSxs;h^da1!naVHox)gLzd``)c{uItQqGB&E<|A%Ne+*2ee_MGdt6a~9$x zY<{9FNwfY0bvIq)iU<`B0u^tPd-kLOg)Zr58e9AtD&|pt-BW|dtWOBO?ncF}s z+zMdnIl2W{Oj<4$q=cws1j(WL*h_K;Ule>2Of;_-HmazaPd`K_;fs*^VxT~UANSrJ z>cG144j%Mds)QK%s8R~&`gkB4gUn(T38sW{jAVmM>!T7(#2b_u?89li`cGY4`xTrA{vWwF$MUV5U0$?V)P2T=yP$5zY zNys<*NDh;s1rLD)r`Z*BisAn;pG}FeyJ%W5;#?Dtc?`n)%GUF^o&1S^_z?#ln=N(N zDdo@FLwn(pL|HM8+IxeV83D+P>|C6*Z7;0MzgXA@gko)O41hs}iY#E{dg93pV{HTm z%>4-j4}w<8O(SCpcYx9Pr9t-OOckdgWMJCg)yse8MMVUyJlsYMg-U^3g}jbKg>7h4 zlx%g>umi#j?OiW8#NF2(>m21AIG3m4NH(zeud?CY^f3>#3j2 z95@dS&!t1?E`n?mENT~xoy0pTEwE#T!4h;$Gj15%ztBRxnPiki2CUbz0=<`W-VnM8 zgubYjJ=&2!cvmd55?yqxnw6&FOsSV-63CQt6ReOl?Q&(g1WYb`t8L;i-tbaD8E z)!+>=!ByEXKDh7W0r^iMS8;IA_O^0_sN(cww6UgFtyLb4F#)S4eQu#E!(03y&(zku zaC+gRxZA)gehae-TvqjZCP)^eeTI+Q z0+63pK2AZAQfSl&-fx)2?fERB7t39=tPP6ISaRH9SYSZgmc%?pmIgNJo;Amng=6n+I;qqz&?m9@S%1+ zeNv0>+%S-xGNryR?q8LBjjy#U-XiEjgSrj;FT`Dh!9;X4ynPo0?R;zOc7+XXLHo%j z=bM2SS)a%3$xg`LZ-=C1_+P{Vs)EgQ@+}KGyYJZ?J&; zjv=HK!6*3dL*9Zb3DF)wOghw-)A@CINH_Dd-5G0>&eN7T?6UEVjX@?T+^d3eD7OdB z$`CnzsGL;TF8%};qdt0v()54%lDqT4`Sw=FZ%c2CMd-cdw2gZYJUWbiw*WAHEYiwp zXm9(h+m}b5nN4M~|GYqR?@NaY^01Bd>ZX0v*;u~NGStf6P$SiX$V4v2Q9+hDn%PM} zvChDE>oHW1dR5c=BJqX?7laDSXoAPIH2N5v6@G;oGaT$Y(@hE^9N2ah@v0pUzP4)Q zwc_c1yv?5oX*l3knCm{Y?2JnK(Yg+KW3YWFg3Ut(pEJtV4351Uo0{OfLG{3# z?gXD61%|UZv9#{SZv`Lu>Myxgpi?yc6?PM5M~<`!vViDDz47H#gbCXE;w)Z#W7G%? z`eA2P>Oc?_&0{Sb2)x5%GGVdN?u@C0b;~L0wOW%OdoGuY1qXHaA%MX_w4RoE-OIr% zteg4T*%+Om(ZksG*_sKtGf2nEi;>1-;zpsTb~Q%Nbkpd{;glq9th1{zE72bwu!bqp zgAcx@)H}Ag4{Tn5tJ10l$5j8t9yKMgR^OZOx8A>Y*{8Wa6W0FPlX(}J<0IB#T(%R4 z^Y`Wa($pt01_wrvjqP>)73vn%Dtsz(_{YYym>wo1U7gTcxnV7Mh(mV7VM9FUBA?_Y zoUJC2c2pd`T}zLk!PsI*-4{VSGt6fvNKKfZeJeBO`wPf~ID+1+;vx8y6`$klxP)$} zbqXKmI=J)bg`I#W1>)rkSwjBQRRdl8K{u*5Fp$n#Ch)y<4A;yU+8sMW^8P#jJ~(%2q3J zH)}g-9}>j8=8CRsn`Fbx-}+wc{;ypADfs=6IhfHwVW zoB3Z?PQ{mK^4l%=v{*k*2-{4)vj^R^;L5IS+dQYAn#QTUbW2@=7TIg{FB>=qIPnJDGg1KK`kyRTkol}pDnRdAa zLldCuj}w&o@>-|4ZBwc|%4v$ncj~{bejf8t=+q@C)qH{*|Fl{F^3;{@l zM@plo!0-b?qZ-%J$21&(R96$n)bV5!>voBX_J9UQ;3q9vNmQ?;%GrA#tOPqKQ4E&1 zVG2jG5U8X>M%t)aJUwqw=-xtFeZ$_b^h4M-utx;|3X?`+k~RA!B{Zf=D>+kf*M_~o1zY}UUX2{ZNzla7}F0b8HZunTp%Sv4~p+M z07o54I~qZmJiR65mO&$MP1s78m&$v4KRixVKACbS}ycA!-FudL`P%N-fqOgX7RGA{FA#jbZDX zJ8D)Ko+M-;u{Nl<9|3YddxNR+(hDUhoU-g5t#rkI`cCUTn?~T!)_=p37#55MpmX>X z2+{JTt-*B4E=(Gp5RO1V8C@@d=<}<;iyWVPwC<#HRV=^cscsQ)tw12zPee_V!tQMdY?kjd9$d9- z^{Q6MJ~Og~GR=ouikj;ykSpi?{^sqvUzt0jPTBo0gx|N$npq+0mH;5~z7)dl)r8&9 z9PnkI zO2qrsx1uOsE7Y-d(7khu@zscWTfF7I6H3y%m04fz$uV~ed1nhj|JcX{^I=X`3}-Lw z=KAw%mZW?6?IT~@yZYg6eQ-q}w^r8ssz^U7H`zGVNDpqGHG^_*{#OvG0O?U9OCuyv zdM@JN%Pnzk^VJFH9e>dWzy(3S>QJN&;m-AczU-D8H#apy6l!?=z0WFm*x2&L7Cyt) z3>zK8dJBIWG-g&4E6*daXXzS!0+!pu;uqb(GY&$G881SrDwT4OyL`&|gpBy+`#7Lg zpeyVQP#;`&&(i5NjyV3Dbo1_MneXg)8!}FfrY8{gOBDjY<;#$RR zV10J6b@d74W2P`eT#%lo7z5v(h(XF*jm|y`&oP2D@Xt5s$Q~Cgj~utjH(UGyrOuv; z217=fP?6FU5@tIKg9<*GDgwSXJ|nlrlX!1SlEdW3%H8d(?82-7eE2}A$VPf-y}?Eo zXq4p>B8tF@?|?ZKK@{s(G@2@GQ$3^Ko+6%e!E(C!81feMCisS%0!woOu=n};^3m1R z(^m2KSseBbycw;#+w5Q|AExp!MZ6Yxsp=437ACB}N|2#My?lGDFfSVpH(lCX+Qp#x zV_jAsD;vBO!BqB{l3khruH`nrgrHXs=OXo0y3x1NABLOSP4iK?YfM}>1fOm+ymgb| zdPa&7?vss}>NJ6(H>fSzm|siX>`nx{ykVGQo9ebJ67}^tXM3F9ebiR5$99>=i0f|c zq*7Qj_GBduGj(Hp$iLr$z_;ac4SKo5`nOS+%t%lww3DyoA{2#l%>2V2ypry)GiRT%W1d8EXOvFudGhM_rNB_KTy8wfe=d0 zyz2i3Cl}UEUB?wc{)wf?5I*>E+qLOPP#N5m`qmfW1Ul+w(U4&vQ@^NaSqbeQFn1|i zTfI)!5&qwI8HX#D>=qahkShFtPJY-L8Cw`SIh(rt-|MVe?Z$pz0_kg7pSh!qM}Zrr z{Qamvg&Yh;1!NQ}yFl3l+Y7FewbP<&I{D+`W7!{mwFt9ZtzdU6o%3P)6G~lu332O* zFvJ)K-s|hGO5VLt`o_M)z)Q80#C?cu&WO5*P+30sH%UI_ljvZ*yfd|)CS@D6TDRP) z!e|I+AsaZ8?Ggf%D0P(o8h?*d6-Sk{xCu?3p`ckJ*msCylU}J3SU0i^#h)eI;zmrM z1(mZckGwTbym_Nc;uO)hbtBsrsAd+G8}`$Vt!toy`M=^@Tofbg6o(G|@5uxBi8%=p zk>W7EPepgwlw$JT-xA8mjLjMglp-M^Q3YqqRY{X{W|j25Um9y($q!R#<8UQfvzN~;CIe&)`|N#L{{9y4SJ%&0tF^N7q5{x z0`Wa%Z_f#_gOf9JcZVh7Kba?S3I{k!(f%YW9{V#}5x-evPCe_gMmr>l&wdXjCMTqi#qnCg-b07?Znhn&T-YViv#0>$})<7&gnmzlPT=v3TzSbRj!&vz~I8 zoI%nOb9+@TSqWcKuG(7K3~nvoLTh{-!Z*gY7b6l1nD|xdIwf9;jv{;H^tRmn_3U?C z6q}eR#tg@b_TyDccqx09RLkZ~ zTSSS3#_<^IxL*#G8E(8kc(?A9zDfS9%~MD04kR1 zB0ibl`WE81Y#TaJK9QdD`VZ|C>zHX%^(>;7_$t6YnGXDE%|OpX#gMHqxlysH?keAFFhINxAsJg*@yp_0LwE z(rgutW2#(w)YW%`PdV@8vEbbW-n`sLuRTRr9jrpSvjsfw1}ua-UZO94;eyV0wbgjr z5l8vb<4^h`{X|PR^l4L}S49nfplEHX+^{PgVE_JZ=a99L^|5 zk6d!E(UaRyN{@Wq$F2gf@5wxjf(wC1rBXNZ*8r4}4)627i!u|8j2F_en=f0wGx#xt z0=bB0U+^KnO!-o1bZhv$ac?i4d9^jhY(o>C0uth(G$G&~1l_r(2q;z$BoufWG1mf-?kRsZfUo^B`3j_(wP|4ib| ztji*8+QN__n}n{W6OgT$x&|FYvucc`3}GEn)=K6bz9>$+)A0x|=7>2L4(zycgGA%p zqd%9HjvvvAXgfL%F8z=Osm?;K1bJApJ+K!GBS`ZoQ5bDT*7lS zNZZPK#DACA7bRs|%-ivBlGh=+S$XyXK|XKc8CgPzl7$j-J@)=t1#M@v$vaCR<6|2c z-$2Qtkd-dOzk-O_0}sM_ME6Qi%YvC`6yfLtqT`P_*)facekzfFT#YQ)cKLQer27=c zsJTfWOdDr9l3_y#2o*;278S1*%!xXY@BY~PBY;213~!G7M0F|t;8>UTNCJbY z$Q21m&o%v~XvBC-AHPF3E!4iGfI=AxZTV6t*ryi>VJd_B+;8aoFR>^Yt#Ww0_3$NW zRl7eF9Fm>#hest1r+Bf0ctLtSkL%WDeQw=MQTSW}4K6kYfisVXl7K!bSlMPQt}J_; ziXt{&*_AH%uDs1&Bhed)`M%5=ygwn@7jcCgyf0u9p*nNk zr#qx_C!sNXs01?{56Gj3eNo$>qxcbyphGbxieLA`vBUpAj^{`7ugM~3kk{IC)Px44cFpFO)>bGM*#cVqUi>`o)@GsZD@-h!sv zL2gF8Cdpzr#teyS0{$sIz@Z)Cs~?4klc!I=M*}vyrV(^f;fK13aqr_GU%Y9ooesSe zcYhzp6aGaM`~;?s%GT=BzwCFc1wBczgpXco$u0nF*;XA}hbt`>APgNzJP(6xHCzwTpJrI| z4^>cl4))^nU)PzWtT6`l*j?R(_O@rU4ZROZ^%&6Zz!8w7NttP&xsl`j|L(Y76HO=%e9=@<4EgapZFM67s{B36CHv+Rr=4C%+gt_<_>d$?ir6k|jh7 zJOz_JZ#S;b((lhBB@+UIJOt$dVZq}F##&tsVp5%qSc`(>I~6@Hldc&IO&9=sOA%)gQqA}9Xd%mr+cYM`&lbd-m$iZLPp)Cba2fA3O+q4GgHP|kkEy2`d!F6AW^w$uRZ(byb9 zld!X!aB(%CP{L?s0d)5qeqffpupBo^H-%gG8n&sxydDTQ^fW!dw2uVux*HXL5dGUxxZY4lpozNvW9Xg?Np zFN}GFSU`5IEbIYWmOpp#T9*5{5xX585?YB_QHxm4vTCn26m=!ML1OawxmiYaRU57a z15$IncohEH)UVhwr9yKnof~=aWZpQ#K;M}u-iE=TW}ey6_eTMiW=TqQxmO4>Q4FY)FL8o&_2P+~tIdY5L7xPlMS{&lL}JYXU?Yc;C1>HH z>(kL|_v4%MuO6Ra=2RSQ7sxNs(NF&AAK1!X;A`KC5Tl*BDc=n`Q6UVKA*Ye zR9pP$oo3{eB-I_b$>;m((RWj8F=--*FN{*TWN%HXw3;x#kLR-&wrd(d_+s&oNV}UC zG4h(j$1(@e8i56U-r3MpiHsXSOx9U?FMCNCpDz;(IZl2>6IxY@77bhggYc!nl&UkjP>h(?_Wl1P=VN<3T;lDVnuD<7BOP7Q=M3=;w>b}2MR2aKklnlF9wBj=d8fEzU zE2x;hRKp&1W|7ca;o~oa1mCy$Qro=Kh5Ia8D%3f+YM2Zd^=GDCH^w40d1D4ABRo^` zubr*Yl+AZkGaDN~z8a>7H+UN!AYV*XXD~yESySo3vy(i0a<+>(e=DyrefP!~N)dc@ zp0;G8cGXW=c7)(zPfCsqn*$V42-dTsoDbi61ODY(-*#Bfu5i9Is{?ppY&Ov5D!#PT z9L`og{0<$d9r($1S|&UWP^ey5f}pQy%1eZ80cDrxQI2^|bN-}ioKj9HxrB{h5yiy2 zDwt*#lS&d?i^uz98dzJl?Q#STWToS8K;@heFy+X&+dHAo&Ff_2POs~1){o=Wqzk-t zJ^KMtyxL^ksBuy8?cr_Gt{-TLLqPpH%G<(jEbr@DPRTrXIfL35p=k4lRs4{#wW^q#2f=5S(uYr$~NZ>P5m3pRq@;#DMkXqBSp#E6TApm%L7x8NC z&?2IeC3AzX(x}lzahkmzgKEO2^y0Ip0#?rSM>NV^Eda6{8p}wbm`ibZxS@7s_-+gx z{pm;9@jm3e@}9nj$(x1gjJL)HE!fNnf|;`6^A$))&j>7olgc5@;tYxum&0ern+ADS z4JPjX8^n z2*Poy)F5)*d;oB&6-|XLIQ8Y87DTADJu_^lG;7Bg)d#`TF599pl?w)Noj7_!8;&0ySX}+fJ5xJG zrGsY1e4nU{9HyDzeoStsXU(;sspvkl!Qe!K!F)a7@K1;KOLJ5X6PtI04>;|ED@k@a znu;#I;uu~b!{b)-MRR~o?Oq*(o3(lGJxWtQx5<>_*woRPUa_TLza%g)a(796#ujma zWx^&2R+Q$RNJ_cE&${c&FX(hjBC4gI-O-4wmfsvJl<8+bTPoj$=l>XdCHu*}sM)zF z(fI*AU|jQSXth!fb0zCv|CJh)t~XuDx)wDPhg8LOlwU;vzkuqU6I&B@A;&hQ2_!nq zwgP_HqEw0el~wT*q7a4fsxp`ec0RtZ9tyE_mKSn}LRgoUF|MB2klqluW(2}3A6k~^ zaw^~AL<@O`w!!)kHL-affqBs&wI*BtrKoqj`g%kK3wh%GyvSP!C4*&Mr?YZ zRI&UxSwi34qz~IhKMwSvRIQbuLw#+FS0}W7MzG~20(ffok+G$0zpbA z%?dduguGXAw23(`03(a`YFRvQ^JezL^IiVJU~bX!(WM;n69-kC@SE;MukdpH^qJ!W>7mnzpdRE`~|pJHLUtLZi&8?FetBT^XkjSZ?}Gi^-H3 z|5RflsHQ&rx^M0sog*jp$7kW0wup{_0v$_2cV|co{Yl!wDDwlag!v|%z3K@037PAH zfD7?&T&@U#CTBgGsCK)__T`#CB>IuaizhU%t8?<1@SM82b9_}BrsvL4P2yEe_uVJ5 zSxDf1Ojlo})QZke&Pf5?mL^qkH1-diOzp&rEA8<1#u6j^5B5|YzN=-Mnk=GOL(f+y z<(qD$)Fv65Y}Gu9U^cJiY!J9KOwXSy?#8Pgci+j~##91^=gwm)#fO~%9&?W;NE(R; zPS6tK<`uTf&f(XY3g#M>*9|BtQ_M^*cISl&g;|+ew>c=cSgm`}-IhuyENRJ`5*G<% zdWh+i2zrbIpctE6F7@zwkt?ie=}Xt}^Z{oQ&2%vAZpq+6~0 zY&j>2_?+CTo0aF)v@M$^A!SY@B@_^uCIoW2scDN~gyG_;5FG1#cv9E;#NAla-s2}` z=O8T7c{Fq|WMs(AF&`9k2Dcb@y~uspfK$oCyqm+a^B_s8PeXyms6vMc>e}x%pBZ9> zVJ#B6rnPWxmT>nF4Ti`uG5|{q-ETl(%Zm^O4DL!&J$mWXM_@mw8Bfam0lz%0tc!8u z{zFtqvyQTADN!nieV;GQDbsAgM-NXO%&+*G4zCUUhq7-a)jr@Fyd9V}^v_fzm|~Be zG+|7jm7&ngt=S$E?ia-SRH>Inz<;DNj160{^VJ$yyU5aMu5C%BGzr8VK=e$oU zj}*l74m<%Mcc!an-I7!SEkTY7$^_8U^kBCwJlVLB5WYw8-(O?%1aILwq%Ew&o|6!% zjSCj{PrVx8*z9Aq_BjF_GQDXyrIj@+}?L%1rD7*O)Uy<7(*a}itzgvu)cA;#r{rh_H_H_z^Bilf`?BV zyIA_+PzQwVajj@W((3flLpupymonQVKUA2Z!14(&*#2JRb=vMfV-0W9b;iGGJ; zS@ZE%b3~YuLY?iiMMU+%+3=LKgCCdpn!fZ`gG78rOmv}#eT3YNwi>lHHfW{K`k}K! z5o;#jXLv2gcHz@HdCI#9vcs|leJ1dElzAl&C(4MRvCO8g)U(8D4_t$ZK>wZwSC-cA z4o9o)BAJw5d-PjaI-;8yU+tI)GuCk;9+pJLE;?l{xBivovM@JV^Z?<(}d<)LY_%$Q~}bV_%7zEQV(;H&+0!biQeJMdOhqzP zSEx!FMAcWpW;9Y^>TmK*hwyd+r;xbBw=F$3le#RlER9FWbX`Q_7JDs^hvA7~N~%pK z9N%1YELG3BqmyZ|d%hC&^Hm3^)E1`Yr8BGh;aX zkr5s{{3)KzAT9sxqppyLO(>v3~+26+)e=IDtbI z%@4T2PY&tm2KD@8yz_E4M%M~NQOD~8H`dM^ZB(d)l=sd7Xn<*V`riEfH%)hwtd7#r zUc5BB(;WVC`+Iww;@`i;?}hTlPRD+z8r_XSVqrF_khW&y#M*8%!}iU1j5!skEVCX= zdzb`!Z*FJ$Me|d@pzR5ZZrrn<=&O`f3pi(9y@rC2av>yS(WA0L?pM&6Z8V}&m4?@t zFz?(1wXVl)nF>{tlh5Y)+QOS3wC<7;9>_fumQ1JQs}sn#!TN~OYuKP>Iu63Fkz%#D z&(M09QTej)-xbE{1f$faC^-rjDx906vI62_qptgc-QBqf3Bqa*RAFNs8MXhUS&Us<&~8h|SlQRWz0GNl$EdLtz;q}OdYmaiy$0c(=; ziQQ!QC}T)7=$i;}Oxdr`jhDB06uob;E>*1*s?!8c zbnhzJUA8J^u@ZC@)+P`rOZcu&P(z)hbKcC1&vLrJx&l1p z^&p73{sHPb8!^)-9=NAP?YY+KhDa}5!+vZ;NSP!j`9~$;p?K07$Bhqkzy#BKSk`$1 zC@B>oEppbTz_qY5ryMFwXAsROQ_V`2Q#Vp^4*>2v@4(B?xDCauP>22vnX=rN+}=0e z=07m%w4`DRMaHfbsa7rtlT&`jB(eNf#RT*LOh-3c?SgaafN;P%(uTXHPztQQ@X%5; ziUljZB2K8^cc35TV42LJuG{`E;J%@;URJNIIy7I<5K zF)5L)WNx{}3J+YMik`3aF@sH8ptN?%9R!L>b&3C@LbWPEB&+t+Y@hv#P3u#S2pQ;W zUkH+W(A8GZ-w)vL>a(St<+4 zcsjDD2ERM5!(>BtMAh zbvf(J8%VlQsv5i@a-Rfn0ve(>a~*09XY5ImX>^YMwLOjt=;BMMqo`t@svoR6x)e=E z!q78i`QspPguL8c7Mun6Gk*Z@;m6bWk`DBr8>s<)dY{|!=u!Y`6PkK3nY)gRfO%Nd z*l~@o=Je+g5AkatA#Cb=opoeIu7Hssi)A`z ziC-gIs7QG|Wf@J;HYw0w4|dpo9_{~KBOPeaz$E2TLlyPgua2-4e-$$ds|w9T%|xTf z@Rf<2|GS*@^pb&YyDl+r{ZTgZiipH7Hlw9CobINZco@~Sm&GNX$9)no)IUT#M%?7<)f+gy!mM`m$re@W9>o$tO(_+e zHj%C=$gnaahf{ddeiz;{dksMWLzi+JNq%lVvqL0f?BtERLBie;=!U&xzAFlV2VCj3 zjp3^3#%Y^6Bu88V7JTDa13{iQMkAsyhadmDhF1$)@7+JOVXNIY|)c)!OnL#|W8MtSG0@NcdrQSm;PF zQZ3C}jrss?e=c?di-OVBax0LB$6HD^SHs=ib0XUlY#63kXjh2yALX~3j&N{|r8Kd& zg?x2xBL+1~E;Tyr4;~@y{Js}FjSfA31L$t$^iE$|pOLILe+Io5RLfOuP zp+qN3!`_y+(#6)@;A4S9uLY*ez%@$hhkyop{Vpc+4LDo@ zcd-H#u(E0sml@9$zs}0u6cyrH@o@Es{I)O8aTqu^YTy%wNYJ=9eq!mTa^~5h?jUhF zve{Q3>6XjFP#Zx{8KX--Oxyd*oAO;+c+VX#KfekPy+*am2r!&hng}+|Nl}TT-xbwC z*6I>0Xs~eo;`@1{u#|CgO!V}f1|kKcKCy&@A(cQ6-Z;N&x@&bM1r>^3*56~h!CYtEt58k9A_=dPFNza1s{^s=qd&#i8X<42=exaVWbMNXFmm8nINP4R$ZlH z%wf}p1QOyY={Mfz;|j_aA+|t}gEkYi5EDp5wvdPXXun7Xppgl9B%G;GA;{%J$oY+tZ?!+Hoj;sT>tz13hj-{RitqTCnSwpnuDs%fRQ zu=u_f>*?rf4ivDAd%G*Ia;6G6-PZ>Z59hjmU`27n+BB z>n~rr0T5@W+LLOJKg{Sk#1m=>A_`IXp?(l*PAxxWKt5NzEAOH7A_sf#s4=_2>N3yi z$>t^tMe-w2r9^!5{i&cGQ$5sX&^)G;y5%HKpz=!4#=d8?z%xmAn;nRqV9?%yL*#AU z_Pd2=lGgRLM~4KUcZrU$E%ov zuPgP>b3vS)^S5S%r72D$=0r3OQ!V+xea)=xPf5Kbv$&(%CL(kKOh0???8UP}hby$4 zw$2PzGs2Z&ReQYpeMq(YBE)3{d=~7c{XHR{orSTzfsL(>nZ5zQKo4N~(-nPK)!Y`d zAK_q4$Fg%j2mYxD1gIR4k!Z`JjaBWC0-fVrDoD(Aka3Mg2C7-$+-HGASdJOP- ze;&PdB*Ss(KQ$>2;9Q+eKj8{YZ6Al5go7}gaZg+3cvZ{Ct+O5-QO6yP6IQedB{$5c z$i<~yESL$2AZQbW(@5P&pxSRyx6#g(x|5uAr->e5?enOx*^aP8Yj6D4;Xt*n^5X~P zWF21uXgB+2sO^?qvb%GXr%H{~o<~5dC||i(nygar8xG}g``lOC;&&4#uP8kR72UhA z=k;EtLga7z=kOZ3M7G|&xd9 z0o2d?cIRk&x@ldo5cJ409%T@z*?WC=o^5RfRCi;p$z5e{e|7hiL z>hKHBHFpJEFAGa=b9--XTDOcg^4lVk!0vGr_+SmN8nlu!D~LL?<)oIky{97A85}pl zg~z~khxV=C*_Buh;xzDXJw)-Ww!DB^5YAg+t>d_(aZj zL_6=}SvMg<14zv*mTj>sJ69Eu3_E#a3Q3dG_gxsOwaWCN+y=X%oZOXxQ{i6@+c;+= z(PS&mi`yx&3wtz~KIywSP=}7q3nY zCpzbvD}}tiKP?5J(OgkKifq{Ab$E|(dOnWL$*r)7oxFd8I}?MbmJDqqnZv&!#!8A@ zp4*c)D{KOa`3<7BjUAK3=nH|V<#At#He@DMiOSnUEF`p`M;vZ}tG2SPW@K~3* zOn?-Y>wZZAbFWede?o@}FqWhn-(F?=rd}8x=j(z%OPsUkJVgm9~@)lyUl)M54Xi}@dX-$7ZOZDd*N?2P>*{yv%_4JDg%8z)yPmS3l|y z5ICBxs2uEqoRh=Vq2+v1IDX@pjB*64N$a`NCucaCnsqEQG#b2G~7dNh%0IIE^@aW zMcu`&gml~)3Cs11MXVgQl8W$nkIh-u`eFLev|%!3D0*QdZ4grkW!|m83k#a>2(nIAEJ40R$t04XR2D`A`*^uh z5%g~j>Sx{{dBW&*67<%eKfFaISBfRerp?SOP^X|v7fO3KHC!GZoX-jk0Wv5?l_73z za9@OF)Cl@#)W*VM+2!~WoLXnl z)kyrB(YMPiH|CdA)*)5%@5fli1)TOqTgl6CK`XA%Knvx}ZSWzp@)f+E7 zX74)5Jk&q=j^$9SpU((-KNZGZ<|2pf99L<1sPIjp_d{R=hO(1^>dQXE?rBeT#tu)n zM^>F(vloOqSDxN&?l(kel45v}Q5he8mav;Mr0VX;Ff-4MQ5}x;UoIqxIQ1WsT?$|A zaN1rtiWw+PC`IzuSHq#-{@V3gX+f}c5GAqn8E=n)*s~rqCc}nJaAW$BT#ZB7!g++$A{PjtP-ai~_w z+^tcjFB!otwPeMHjngTbT*XtLM3}2alUbpr?rG}Ya3&3j%V;ijKKutf?Qg0>6qn?+ z{OdV(lCs1KZ0QMh>Pp45)JD{t(G{^1)o1d;Hnts0&wTmOE2UGPtH-%@s5{TsVL}yi z#hJ5ZSZKPV=`h&N&FJ^ZW8x_shiNOjtd$7jlE0SA$xT~SFWj)w-udKL$b)H{NK{3; z_RjCAFJ6uKEw=k@VuahG-I=S4okcd#NbxNiNwIaN#;5JI%cb4_hmYcNmRj!(Z_XN@oOYNd(cYEFqV_^+8V4xVZZdM3<3T( zTs12lQ#jH}az3>hfJRjagx0h^3A2EZRIh~4H*GDR$9Wnj5Cy9`dn?m%#CIF>r5@B8 zxhlFq4}fF2Wu~ zWe0b#A@W8RICZ2}=gbuKei^x4@l|1P@-3_B*}8*c+{}!l5-=Ne_$0u#mHf8)yG8hU z7t8Sv7E%)o0N*P>R#JF@L__{eUw_u)$5ar^tkY5*ZPK$nn|>TRln}{f3B`(*dsi%~ zN8Ywcy@36X#QRzA3k40WaXqz@#%)*G$n#q!-6ys5T*e)nm`D;Hww2}+ zJ745`3Fe?lVeg$<9Mg#*m0tF|My_NVV#MnQua<@4f+YG|@zo+X8yAZsr}%qMHD^!L zF(z`dEr`Ut@-9NvQ8(&X+vQ~WX}GT^N^T*{uJlm7(4@p8VzatAiL`7nQH@+f&_x*B zuNPKW`$H<4H^5ZXYAb-=-@;ekA2P<^Y+Mwz9aGfa6$J?w-NYXl+^E+=IoDCLfYLcX zk*eNFzH{@pw>RktBYHU@f7#l^B>=SCj{t+_{L}bl2QXy)hw)3za!(N6eOoCw0!=s& zI$ttcOfLG1h;+MP&6rHe2fa|8=u7H34btq^mUU<=7=EtYg4DJ6+m_p{HG@%4Fm8huj`J8*R(kf1E2e@q!l35D$uA}tS-{HpGHTn5F-`odMru~1 zjbDpLRhjN_J$~|$-+5b%@BzW*oAF3v*T?b`JH)2CAQ12oN>?1mr8Y=SJhB*e3C#qp z?yib=M*QLm`NDBjkfdJmhwro?=o}NoN!v}+-8mt#=dX1RoN2$@wn4w|>;|l~yRHsv zEZ2azc4-6!8K#(?wRDrq7)G$irv;+VDD0LpYD&CzdcD7cV?0DhKSvg@gY?79{{PYKv_s!61 zAbM)kd7zDs`ci6k0-dt#j7#*Zu?Tl@N7+DT%K20oX_8!ykT`k2-;Gn?K<2>v1&>Ie z*D#$`fg^{G?4DG?4QY_QDROh&h8GQKs0pj$PRY+%ly(PwmmjE812b5Hv=A=uPQ*Jl z%n)T=+CcA`yMc2Dj7xT;C(%rCjaP*j)n#@qx~Bjs5Vcy4@B3cqHMLEo=CY=1Pa9GB zK;~5LP7vP@a$Q+JyIpNem|cChH)JhWb*!2k%k2uBjbDSxr3HjE;BR8{T@ULf+QxDh ze7KqI=PS6rUnb)rbe${{}5OUCl3y!pX z`{Woyk|$3jFo1|mhssOQ_`K%aZiV2}9%M8z2)I~Qb!qB)o9%DFJ#JO?Sif@cZqU@u z!9f;KN!Qw5DiP0gQ?PWl^{T0Xy>sl#Ovb%p=#yJP-IegL8~j&JAX zLl;R$tqyFGv_%DIO%>A#a5N}%p;WXtLIsK&$cmo@qw7H96_KY2U1J#exYmcVMJ0u) zuGGUwVNwSAOmZTKS_GPj<)>@v48XDxVpm1eYuwXUgA7YX;)s|o>#CY$w3xJK2mX)Qk1;CaX;P_unhu5eW z$od)tgc#U-B)?Is{|~CU0YFDz2cSc3VryyfQqVARmk8hu6xiV}k+eWZw?EYxU}>dg zW?*k%_HR<2e20_U07{7l4CVn8>pvyS)9n|MMoY`s!Wf{X1-xEf%EZ>{1Aoj00)p!N z5)c8*bNs(D(dZf*F&WwzSpN%PaNEd`6R5X~KnZ?68vI?dJS*gW2mI$j;iU{KDr8(- zKn?07{wo~cF9dc01V7^^gbI~82k&$)o;^41gLcuK&cS^BhSw(4%hLYD03^Ff0Lw{H-YXmuvvJ3 z?F-b>|CB7x7@!vZt#f)-Y>aGwY*~KLqW(6Z2yQ^NgZ~fVrwH`!zZeDAnYxytC^JxuIiMK7U#j1bUj0WU{zCjwj(6k} z74g9P7cBEj$PMZ*$Y1$L{|M>8WYa+b-q6bR|9a^8rJOzFzaT)jgFn;++=;|Q5;$x% ziod)%p;iBJyp^5>!0}(Mjg!y)1NhLuhY)&CRpTb!_$ke4A@enA@AenI{_K+8+c%P0oFIN!T}ssDG*zmC=~mm~Z-{M+=e!~c76!b>q;`ak~S=r8@o`Ttbsr7O}e4#E0A zIRA7^dMV1wsrO$9z|JqkzfHuyB)v2Z{UYIB{e$#RL(xmb%U^lF5HWYZ5Wjx&NsEC2 V2Wep1Kj0q+(0{<={^#@6{{!4Pbz=Yk literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/colorama-0.3.7-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/colorama-0.3.7-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..75345fcb6c5bc0991ede4e3455948968fe022294 GIT binary patch literal 19915 zcmagkV~{67{x9mbZQFMLx_i2(ZQI7QZQHhO+qP|M+V-^W?EjuUcXw}`Jufn%qN1WI zv*PoO%6uy2r9i>ZfPjFYfc7N=WkD_wkGfERfNmLpfT;eSHL|s`buh3tpl4!WW#D8m zHg|NQH@7jhWfT@s5>k|qSC){IWpHqGs@Al0+-j@;oYC_iQsGHp6j@KO+8w*wS+F#z zezKFe_ek8Tz()vA?~fqE0$B?Cdg9s!B4i~U*OK_?PZ7zR|K*g+x6O|Rojl6g-plxV zCB@X&v(rjaMYLkACpB52V@=knq!JL@N@>rX7~h@?4&wW4tvy|&lY^BUoqa*FupITh zE9c^P0EaqbL>rCX3wRSis-`uleAP{_7Op3&GG<+O8W0ct&Q!LKpZa-JU*F)NU3gLq z$HrZyk`jT7ySV|@U$2Xn9;1YeSuXBu`0P$4@wvkhh^wO(jutLk{3?Jq>6w1Uk{Wzv z5@*V4a`Hqb>C{uBYDXudSiX>8&-dsXut(C9D2k`OlLZYIE>*=ETM6(74vPP-GKt@N zA5m5-sB+SztVn}Sp;hu1Xs0=V`}sqCLo;qEIX{1cN)tAab68N#wSYlUysHgaPbL05 zI6Pp_Gjit8lbR*^i9!*hfTOA4*s%Gw6k%tM03`~KeA;YmQuj!Cf1xnt-v}&ige*4t$0RtwjXHxqQ#Sv{hPyr=$$+y z;f+&q8V=bN=7SAU#Wx-k-{#Y(;gy2FJ|IHI4I@FPWw4x7#o5sqZ}B4!tU7i_(+v`L zE73rsW{7=iXfu~mQnM$k&{#FbB386Hgqh0eH<#jg$*j?N-n$u4xG}8yX6m;`ESuR{ z(IpO9g4?Pxn3$YdDBtH>uHSg3sBG#5p26$yv;pfbYo>nrWQI6$=hCa9c%}LX}W&vWl#q zicDFR1wKRqXq>mLAT|wlKKq9vPIm)5HdKaVj1rl5Z9?iQRGsx)1WKovNPeFf@~8qc zHuyrE!yRQH1X(6fEp1FREYaApkds7)sBPs#9t=I)FUBXa`vs`bxAJ{5Eo|eO4U#ID zQ7~wpJEx$+PsAsbf<+QLQ;ku@D#C7 zm}2^^e6$)OIH2Pk>G3EsF+it)PHD$)iz`RCB4E3BRQ8D3-wf-#lA0pBqBO+HE1t3N z|KwoA)h}PW84rPRO)Q*~fq7t1XKPSV$&fNYP=qew<+kz-(n|F@nbm!YJzTNA{pyUs z++>)v8HC_>g&}Ozkvkt)(W16OO%6T*gH7Ie>v4O3Zhrsy%$`Zwf8FEGDc(v;AmcVW z@Udbhr4{?71;d!-p0n`ktH!qD&N}xRg6FJr#gLL>JrzcZ++p*ET{nw_!nlS#Se$N| z#~`hf0%YB~MWw<;IXUksse;`wN95$kQV0S#w*M6r3=9nILKhgrj(65j{!8h=EE+51 zBrJBu*zjceVp|+<2QPBFx{!{dX?*MPWvvYD#7vAbm6LJ|DxGY7w4q3x7KLajE<-;<7 zJkl{Lhy$7-M=6{2yYN}Fq)9Gry4o$U8WZ9)VHP&NqVKPPdcgp9Fj6JREESpX`ClW! zIimuS+d4t1FZu{RPvB(xqNCmT{bp>)cz`h*n0&77bt; zB}rst34^ZDHy!8~Vp7T#rQ*kuQxys8k;EDG4e3;>u8qKC*iAMExLYL4qm|wY=kITV zF6HDY&_eAUFbl>kS;mDl_Tm3v=;Y!>ej}60ZdUIUPWMw~;AZRQW@#?~6z7l)nMwUH zQN40haLz2vF>2BAb9I^$_3iiGI@~yK{~Y~3dTtGTc-SvR9xq{i1R(N-me&ak8J8B@ ziNCUsin_wlu1CNR?nIxbT)p5+{W<>rUcSEm>7sX1cmjVk+C3qbc@R8GNs2w9$Q5lV zkI9E#`$lvV?VP z*|AI#vUnP1v1GuB+5kX|heB4KyLP`@d}}Yx!PNZS!Tg7+5sv&uO~>RcS2Q21o^=7S z;}xD%G*kU@k53hQRTr(ez8T?3yAK=qxxM#Bxj=jkGxP*fELYG!3<{jbi|Wh8!N=zb z9oXsXm<$aQvXnBl6%x?ji@$fc8f(@{$wttFTaOo!{2hXa5aI2A3q5?i{50IpRic}l z?bG!%NTm#dMo&8rYG<^|+GKP#z=9W4CY6g?B1|P6as?i650p0UH$pw(Zm+Eczgb=+ z^K%fcU;eBEEBBpY1V-D#L9j+DXWV=y75->HsHX>2@X4>#5A2&$(P3e{dA+1puUn)% zl3s8aD4vwiutp2GV~WvPZx@xBXnTd_zQe+Jn2(h#yht!K(EEqa+r164QHqoS&ar6l zpX$i-8jnFmx&W(T)%ROe8us=x96d873X~-a12h(v%miREHW>pYI|7EG?C#VG9WAvz zMx|U8b(q4=+N24skt= z=J(gp`xzk3)b848NU6H>1uk+3-Hc8h!mtF-2j7_fqY)#;B9lZfZrad@h;(<7FPn-j@T|%!`gn66j$0rrjv?K{lAyZctsO%s6a+BD||HrZVMDoFm-BiFT7>ybx{f<&-<9pwp02!A|` z#jODut)27NMnu!q0BfFV=;W9h|M!uH#1B8g_kYkdfG1^qVCU)lNTK>V;(o07P(mUiTXr?)wJ;tjOj?ZxNQKEm zw64Q=nDQGR*h6F5}n{<0*!u9I>5kRDK@XMnaY=6AZ{uKjfV1-c`AT}l&52xcgaMVB zYt6GFf--L?EGB-p<-`AjzN}tKfs{}(mF?EMMrsub!Je&r%+K!ncc6`<8|k&Oms*+% zg^GU|-)z4ow!$DrDc$)mREVxxmoUo<)b)xotKk-hF!BRqyctY*^o~d_2R+_=f>66x z8Be2luiE;#q1l@E#e>7Hvl`=^TkiYL29IL~jY z9oL`vXsEt2+O4mnM6VN{_jhZ)5OY+A9{Z{@#^`@O7N&1O!GO7_eo@eGaiI97CR5PO zloJjVtTAKXZ&&Mg(UBJfDV{#n=ieAVcCy0jw~e2XjG3^fih7Xu7~F|#4_uo_hwN9> z%iL9W?<{`fxSEZxCRZ>eoVMu0zE)&ldt|}vghs)`D6OtJ3-ox<3n45Ul*@6OMoYrM zGPu&!3h(Tv)pE##bkNLJCDCLCy4ONJY=!lYX7`Jo1FYIc>^Iq-yMso-Z=4eKst~Oz zS95D>Bh(}Z#QketMffvnLpY%wQEua z)u!ZeV%NVj0~~8&&O|BAT+_5Dtm`tgQ6eoLG&3^rM<5nVM7Ae)NVkr_ZbBamkwYyv|DuWP>X6IuZ#mCsbxyB#8Z%2N7-_ z>c$k|q)M{PDRYJ_im@HtSl6%g{c%_!XY=OVdg0$&fzu{11|2`K z4_sZiQ>%u!zW6*vHqU*CmRSP43+Iou+UQO;6R!^RCHz|Epcu$i#!=$DvRLJb{@^l; z$18|zUvVim$JqmXsmn&+EAvO(R;tahmf-X)U`k)@jdBjx*H^A+?N$cm9K+(!HXL>- zuYRiU$vN2}JF(Cu|6Hlmd1T0%q_gssZ6HZ2MGzxjbJ+nlx#*_L_No@x@SWBwX^>BUdRbGl?8uL~B_$=k&q4XDc067hK?7n(!?fP3~Dr zjGi=hkC2_p=>o6GrW(*^x`UYC?xwt1RB#;VwxN(KeKWjnL}Z)fkPM4hy?;1vh|k2K z#UlHlL`#$NnP<+qzwZ@7>~*{rFeK_wBLw*ehJ#k}_!i=2B$d9r$Ec~Sz0{}XC|;tp z5)r%;;?R8{QTB2TXQfU)k#1KYZXGv=Me_-UW$hAZuhSb&R9SNnp|-~WZAj4mPxu2 zxG8?cR+d-X;2oFR49oOgK}-1f3c0|)uv#NXyHRwFHLH^cV)!S=36S9?hvacmiv0bP-~MXihK;Q5@>Qk$5dS@pj07IX#!mpasFS zWcv(YKtnoiQe32dBa)ch1l#PkdmyKjX=8zIxZ_F*@1AfnyR>oChrg(8&|yWz4wUp# zEb|uNr?j?4ZOWEOaIaRF3>Q*C8@Zw^HS@l*Vf$>+1EWa4Z9YS+Tbv5TsC0>}I8ZjD zj$%FL^hh$@N}S1J)zuiNJi9a62uJ=ZDU@-bNw)WO@r8Vl9}XLapIUv7^bH9Rns>w- zZ+&G*jmUWeY!+P}UtOeA_m&u;^e3a0;P(q21z|2dMm_9TnaCYpd(^<^`Z||(UyUEV zcHqGulnIg6udNIW)0ut+si1GY)m5BSV1=p6@6PAPOdc*p93+WmTeDngpAf<6or(6Q zysbs8w*iiOA}jYkVW;`TYH=|GY?K+8&oTLP z^wQ%R;7_C-1SdA6K9CL0!c6YtnP-fZljP9bVDVyep(r%qBi3Ec3Ut0(%n&c|5>jkR;h^q3?jO6!0eo9 z+a%wCprrnfo_Xe9Hspwe&$L==uS;`mZW}^2>zrHY;VB0*4At6eQ-62Tr;pNXV){&c z|M8WOwyQwVz@oeReNN@Zn3-Ioc-Y$KySl8-h>R&3o=l_I%|eo&?S$KI=?la6O87iH z`tWjsnL86WNXH>Mog5S)cCTvMF=b*foE&X!J@nP%#?UepDp~4mXwYQsm1g3=cGK3T zlFZ;nK!JBYaN0~v8JsKvV??l2o*+VEo~MUc%8YaIB1_6pBReFZq520y>17?~>SR6% z7Am}&2IHWDS@pLKgQ|>)#07>68{VeIo}EL69S&wBPN{?v9~&Swz-Qxa>pffhM#Q@^}^F3@SxalxlVSG}oL-Y3gecVPi%V5CVsvs27g@RYeb_O1h_c0x&TT6=QB$e~SN2iW?k(wE8Fq z-1FsVyNLBgsdwyEa4|&^G%6@_V72c*1?(_(#Yqun{2{SWQq|3{)$Bn)p-8_~P>ZnY zfvr%j$M$0%`moCaI%^Ohj;z^;uOGOQ!TouG)c%$Jvt`l45v36v<@G^c4T)hT zQ5~j{`m0*3l!Tt+np7??Upn@JLgClQTQ=RQMIE)`*%*|W6`;c&l6fJ!nO?QYsGnxwnVvP5OJNNsjAxgh z9vK=a>k9T8Px&D5WkF%e0#xDP2x3ayiydRTW~eusQ|tmD8kE|}PaM18GiRWx4yQ`(JT9Zr#4Zrt`IWhRi}V31BHm&FR5p9I;9JJW9|NP2rw75VTk=D3 zdI=nh=Am^J@-9Y>+{JT@L_qKKc@zOz+uR{G5zY$WKLC?RRzuw+i)m+0b#Npc{+W_h zCkK^|axOmdia-#3LddD4Qi)aZDit02%6V&+sA{oLz)kY>)dg>U@f)++{Yu5GZ7joJ zrm-@l9L7yyf~U( zccBALpqR)AaadTSb7V5bEveExdOG)FEdbZKeK!<_?T}QwECKaMr^wwXFP|Z*4JVCI z&c$czPjXbO*TK5>75MfX@71I;Txp$Z(rN&j#}gd8USsBLa8Zrc5X5e!XIlof)oiflv_nI)`tF!2K^2UEi>#+20;abnu z!b}TGb{0QRf%n4)}wOG8#yp<*H~7$P4uDIKkkI#vjk zZVN+3U=##FSn@Z z7}+@AeXuY{5RM{hl|v0I_Mgi>O8_7W=nW8_^n6)PT@iHZF21z;`M^Rpfqymk^JCQp z%kPRMCScHTI~F38@HJT0Pnu>XX`c$QMby_%Rp`=hnmV)6CE{{=n(}vmzoDCD%GnVF z!tZ~G4-h&8x$h`hw%aHpccMOLtiO+ev#ZkR3D6er1wUAFX(B5Lw#LD<|f zj`ILTDgm;UfSSBZI`TPbnSDpcSp z%sA6+a}NM0nf=`%9^{`HL91cU%wu70$dx2k%N5+sSX4>S3B^IVD%Aq32$^P)@P^(| zKk!SKD#;d(9tBQy>*#MpHZ%*%ip7s63YWy_z!qTBu%ys0-qZM%WY$~iVyYD_4wb+3 zn?87m-$|38hcf}~&L6%H=@py&+ifBpZDJ{POdMxowN7jhY=v?e@E2AtKBNo;)Lp>PwqJZAFc3o){$Sxx}OCdvVg#H%_`tb7c zcE1JzaeunuMKlJsj-IUkML|8p+q=ci#0w)F#NB9hgy9KaAq2?b9{$&$gO7vz%RMwD zM!B7y&gcIZ1ug#*1zG>EC`kB+VFc&@h=OYWM8Vu1{(qw2&A+4IwaL+YMLhcZR2*3X z3_im1+2eR(rb?6sL$G-gF8X;ZLq+E~yi`3@1G?7LQ*7DNQHiBj_EfsKd}Xl0*qD_p zMBE%(uuQ*u8=pdhKb^H~-ODC6{Y&8qNt_uJ1QeTPMA z>V*agzU*cpk>RNy@wEzBxgHSgj$Dh)^JPn>S(hFLdDN4TUIQ;sZYlB)z*G%vAZzYY z%YZdS6@O2`F9;PuAhk`amY8E)>+k-SFla7fL!|JUJXaWZm9k*YU+cU*ovKHlpU5+h zorCf_acjS%Hf=1I8k}?wp4n-rx$O>q<2iI2ef12kr~S&d@6cnuFgDNP^H+EEt69IP zv)zn3qZg)x7VNA@N`?dBqAO_+&TQ#gzB417ssZ10(L|-e*D3dNj0e+mC_*21#8 zu9NEHEiD$+tY0>Lthqn+2bN?nf^S|9yam|a z0$qPA)EX^41Jbu7D~x2+G7cCoGzlgUH1-$?her0-71nm(ZmdFjuF$Qbcy#mI3JE_y z2Zobh!3jJ?xC)LWkz_aI@5&aO6A%$g`6xdG8DT`CJOU%`l{Mq|4=--xv_6HkaP0%F z2M#e&dbk(O2YLNO6;*+&`6d0s+(hAFV2;GS%6|IJY*m9Iqk0h$q;~+Zu$T8W$7`7C zU%dAdnyqOwVt92Cl-$?0nh}wk}N{B!N zIdT#@We(!nmmYKuRI!x92tT?btW1RAv;a&L#4?%oyqkrzwQ|Q)MNDX0l7;AyDG%*> zewEGX(8s@@V?P0c25mQRBab|zlPP>$)^jlkPgGpVAHZu#d$oAn#Qux{(=U^F83{7t zX~*H|;YavJ^rkXjeg?WNe+DT^fAHFG9}ouYp}tI(Dt%+~7e-wKYqiIzoIXf#4k99f z9p&YvH`#59e+a2&)B#F;pdt-NjmKPD1Mbu%g`tb*UPeQD66bGb*!=b>N+XF-v28@bcmBaC`A`=iXMxSLihuj5U5a-^Mz!tq_h@hOfP46?^; zmek*n|Dba#&HUK@^tXQcb2xl_w>cRZdm{E8Sl%i3Ue0Qll)2w(_Q_dM45j2I3 z(X#1lS+=7C|MMC?wet9O@!<aliRXhP7`g79`7ErN*V=I5b zZ3!oO!)qAT&4^=kgZ!5UP5&O^8r>)uU3#x$dB*-VL8*~8-@>11%UvC)Hy>3sf2?Ws zXs>|^gcJEgf$k~|t$%;)W@vbutC79AGiT$2Q<6-(}-rL&0!2&{#svQ&2bBY@i|;oy66L9sNH z>}i1(M!IIa(;X_zwl72Tq-e;t$=;BEMmYVpBTMc!i(DUDf_PreV{#bB;9Qb@LAvi= zUW6mycggZ?@;Saz07CFMlW^L4YSgP-To#xWe9oF?(p#ntoe^@R((R_y#>f>a^sVv| ze`XfVoB?{Sm~RPI(0RjTOj(gqrjf#M*R-pWn`dlr zL-ITwnib~*S4;10l>)jprWDFU}Va2J~H zf`PSVQ(I~P9chyDjZ76rugxL0O$y)|zXmysvtOO#^A~dYPMnBEkH*FBFq&U}Yjn9C zr+^2h8Zc!iK;?)Yvu-ckMN$vCLe;?FZ!5KUgU{u1xq`iR!#j_tLvhWqb2u$3ZtjHx zA}fWp$)(V6)7lJ9OMldG=&)uPOKGL{oRnX`u3q1s611b+F$w*!lpmNSZdFO2@}BJp z1A!=ZwMs#2U8;4SVjgD$U*Lb?k0Jy+t8(eqxPk${+m>nrt~5e6F~x;6X9g=`NM?OS zl-Ns&4Frt(W627USW4d*-VNPK*Vf_ zl1+87B=#nsNf7Fbmeh7uK8G7mxAAq_tSc+`7Dc@80I6mTxG|1vVqzPH*5nS6TC?VF(XdPn}IP=;8&z*)X7 zT~TMe!&lp+2&+@^WC}3cQzmZ&EV!_{R{2|&S6tDtb-Q}USdlN^u`Ruc-Kl2mXPA(G>^P zGm2PdGq#UZ(`}U5TxMMjL28SKqfMx!A2MQ@N6IvZUzcCNzw;xYBXQGeUogMnz(WgC z0SU8rG7RXv5B4n*>yw+Std2f1qhtZJ)Y3db!DG;~WoOtYgBnKv8wCsh2L-ufAne!j zwm}0@Q&%R)rRU&Y#%Di1$Or_5uD)2VjYL3wq(4c3@S!V85bJ?EOv91%98#> zmTtg7YrI+z>HM;uC0OCfdvswqdDv%oV~A~AqSkr&boq$(hb;W zem$FpJa_LK_}@uT(dfsN3W(%hUtR9V6rqr`XfVAU@+rlGC zmKv03xw7Bi)OCPG=1}On+mWC0ya6O#uPN06Vxkvnja&MH{_@N z_ONo^a|c9ryY#h)G3K5O<~Uo9y*n8@EBUSyVEMqvT^XPEGwctrwrw{2_xv9ffhFkE zg6qa6ffG$U1$)_el{r%gHF7#nAwQ(~YnpjNJo|Z_bXsTC(OC3ucUYE8Mvbu!AJfbZ z-O0htBJ+Sn9&AZgJjg5^$bMS4D%`w)BI5GenMxFhQ6xBoMve+RfX=Vhr{H>iE7RtS z&%u!ga6XHwbw`UL*^0W9)bPw+(hzDVJgDB!)5xUK@wzyci|Ef1CtGx)da4mzG&$^- zf6tWc^43r@O%aDgUifWL+FFE~TH=+|wfC)S<~LL8FIt}Bo~Fs$S_Hc;! z?@4^#Ug**Ln?Retjo`l}QB7P#L>hKhTxNP6UW%S(W@@%kk!gu_&p~clie8d#oUuVs zTymU_A)FDiTw#uBj+JAMb?yjeVwQ3KiEag+ie7ShT)IJ#ike2|7)C<6RgtQUZDD$H zR%%&hsxl}Xi&VG`=-;~rPbfBZ0}KS@4+aE8@!z^;ZQ^8LY~WCY_-*x8+E##)Tpk`EWWpiy{6&c~J% z767Af1Q?@HR|Qz$jPO#cIaf$dxAGEnA8vjMt3NZLzq-@hPO|NJkTGU31J3HMm_OR8bN(A8)MYgcKcJjnLEBT^cP2 zm_QnlUeAj8X?A6rJZNxu&PIF-_&)c;U8LdIB{AxB>;p#jeI#bo*d+L7SFn9$CyN7P z>#NcE-s2#g+`Vt%&h6X9p{{UFaB;d7%AP4TXYCPQ)-SKD^m>Kr*VvO60{yrB*T^{8+UZ%DxR_WmIJr4V&CHH7 zN>0fff&51T)tAh<8vowv_HX;gj^=;vU1rqNGq*8!($izGbC-#(j{p%s5`K7#fB;Q& zmgi(*0jMD+4;q6H=4)tK+qh_YY;UwIs|jr0GXn#B-;` zP!@-ZbO$*oi*%U;jKLR6gBz2)ZYWpkbO)e{-Cq|i1e^?wV72c$c%rkr#eu{;N_(4- zDxhh>iTXY}Fq`;jzDRb-mZ`)VcX$sRvedp-VQ425)H2qIjVN)Ytp zf*b95Y|M9b{r58CLod~f{QDi+`uoz5{&kQBHjd_h2iUBt;J5)m@_DJ9lO}+3#H;VO zE@|Hfj>?=vIR#4BF1>O?^X%`yS*Hvy{CL+IM;Ni|F(){OBHLgDu6~HIAUL+dCDxi6!mat zhmgYu8?TqyH=P}vMi3hsXlDR4P@tCj>Y4ls@;xb&1>xu9N0}{$WciS;-MH7bpX&1m zrf|iP#Ws_1RymWEg!rn--!*|SIsei1I+gx~VV@p|c)oZt%B6cLZnvCz5)%B~_A@q^ zOFfGF6ss&&YJ}lpxnbKzpllSU;s_}~;Ua4+9pn^4_Na_)J`(3P@e+J`p4NC)+0X?W z5<|AX=Cd1A+IdOSEWi$Jltg@L=1UDW$iXc0eenj_Ci zN3_52ZMBjE+Ab%oKBg2|`@^t=NBn?_l+P z|H#T_-oe>B^J#!N?~~EEW>H`EcTEwf8KVLAYPk^5QleM@MKH}c7&>vMKpVnmRrUaK zXyO}R8UAt5H=;Z=93@BT`a&JuLN#x>xaLATHCEJwFY{22>5B#0_SkBTiv z5Cf^THE7l2h9x^GUVAP8$U6T?7GrW|7V962SkO|;>lTGA)IzT`C{;yOW{rLm$fDkZ zx3SXu?}a;R)VFR20|Ycg4g`expM~pW>uPSp%JR2vDzPr~D;sKcR8|%(0l3jU-9k`{43{%9J z#p@igYL?SJlH{wF4C|gb7s6KSXLsWl%$;rCle&b{D7sYr2>=wua6f9|wdG?gA8#JB zNdWR;pj%>byJ2!AhN34Z0fkpR~$YtKJTQ4{p115QvyJ(Flv>FUb#O#e@jtR-jVri~O5q-^x`(q>{ z`XNTZTSeGP6m6ScQ7{2`lo)pkt=CZci~$>K4s5wbO6hK^6?FeC88MX;lMhW3P^LKl z3tonW=wKtVM>a#+OV+67D=A`#DZY?g+*`2tP=sZ@KDUW^Jn9Nv@;3%o6mVqmg0^TM z=c=`|I@Sowioq#uJRNY{fHoK%jkR^ztLqq1R;e%^x&yHTIxuv)pQ={($Z6gQU8rXm zENd$U3{~E$^gXX!LmP|0&4__|OGeVwCVbUq+?)jdfIsS$ zJQV_7H4=fhyft;I~^W=Yu}L)`sRwVU=z>O9i#at)C-41azjvT zkptyJT@-)OpM7v3LnPj+>Xq{0af1M(#fwcTjB0m;Bh(Ni$qz-SJbxCifv!R!;5$MZ z?6C}V&CPzWiu3B=Ci^_-vG65xjeR1_NkNeA{zxeCsthzC$^q<;&h){sBSXC6Ot_%g zmmUJb+$>*SpU*!Rfj7Ci-Z~#&rjHg!KW_{5O2xiC@cQ2u9jRo5u<{ya7K64opw`HD z7$e3+ML)edvf-Z|!ak$wGaur=pWg3walF%f_ynRICHt;a&BL5iY&hbw1HEBQ1O8y9 z5!bDD`Q2eko{q=g2AHzFk_bNwxQ^j0?BV50!QFLTx;<45lw z1GhtU(%ZikWa<)+(~wGnqA@l#-#E{Y0Qyr_v#m>Vi$?|vZ9*3Pqn|ARLql`@HDiq9 zw}g~QWtCx}!nP94pqY>}lf*LCMZ65fRN{u?R=b!kZFG`oY94pVcboC7`4_z8k%TZC zb)ljGtT=pFy^;t5QrG4!eOjGhydP`Uygr{aP@3hOP<|0)K03Bcy0a}p7~@DKbEdW0 z9(QNsb0M=l)<&R<7+zO+bE$g#eqUMx+cX}Q+o6lm1dk4sN@dZ0UVtW?wNgQFB0HUv z8Q+W8r?x#>Q8D(DTaH>voUjp4|I(r_`^=-o!VTW-#%Op?BS{?`lTxF#f$8)8blD); zd5Djzut|+1y=8D{g(-S;P!+PC`68~tn}b-CEEp)W%YkLc>UE)lPb2^&T%ARe0)^wNMCm>l#{ksiLkg?KocYeUK+TEu3(BJxJK1- zRf;MrAKPX^2e+ig4CSk9D&{~E2L_@{ksWZOwm=1SuzDDH(rN;|f-NW=X5$#sP<1xj zfet~Kq~qfmf)2$}avam* z-X^62@cf6LB$<-C@p706^lF{pmY)+kOFy|m#=c(wM6%IjqPnd?>Rok61v##2_Z*}# z(6(Pj=m#$I`}5QTIy1N#o7ls)@g}%JU?2c{nOtqBnF0cDjw4tzFrs7sK+|6E$`T{Z z`Ji<~=%ezP_b~JA>VqLmS0|f!*Dz{4GwzVU6b)`ocT2m+)At06rZJg@Q>>+*Xk>FT z78GbT*M?8F76Mp0@n@tz?!evfveR?FfcgSM{nlmrs?am%Lu+UC{&Cz@XXe|7M=N_b zLBlsoZ^s{}UfjMe!kDiIFRIts2jYv^Mc0Rm&NCaJO?@b%XA|x?5HB8M@9(dB8zP{w zz102wK#BF!Y>>1fhJ$y$eOY%y_*urMd@V!TP*#dh+OEwS*!3S@?XugirD+e5F*T8*CG`wo-=IX%n?lE%VQKE2W`Yrbk&D zrD`n46H+7QW$ZHuW~=;{kC^9iLv#B_bL85}&g!KH5KYjqwL8u)Ip9fA5RA`m(CkPHy{E_v`tf=g3N|*|55DURB%d<#k8Cjd%O@VpMQ5*dKOl znl}6T-)5f$LaX;q%U0YMj@f_oo3E^tk0N9{V=KjuZi<-I4JrySf^Q24Lo7eM^jlqL zG_KsBGv&qvuUqeh{mpZPumlg*Q3Rq?Mv8Z(4EV>Qm$bIe|A zr7}RYnkw?ZIXIyjGZN zc8o5<8a-u$q^44H1CpU!epjukr*{YO*>???`|(7tS{T}6Ujf@=vd_IUz)|z^JZHDv z!tdd6le&X&;~Y;u5Snqv`A=_0$!EY9KF7 z#MDqa-E((S$IW-sQ|Z-+>1*;O!9@1*+26J2Lc3;)cFco20EYA7%G`ASy%-w3YQ1!e zKisnzz_tsXp*ywH6Be{?F+2OaS_^^w#RGd;j^aag4j~vNn!~xl6IHRW%W|ZBul&_xgh#+fgyQNa4v(ML&@TBXg@=Odc=1<=n{^HqxuYkMup*@KKG&5 zM9DXJU@1^ml^03p25IfHs(S@_N6Jw?FUnjodG% zlc!PjKD4Q>jKqYv&SwJJ^3HU|uhdu5YzMzXouhSh=B0f^DPr?(og!)dMhQ%8W#`b{ z+6&BSTPJ}(q^-}w0>fJMeVKbb%vbD7BMEmt=BlrS(uiVjzahua>7b znDnR>!(o+6We8^^qLnll7k-<~t3PSvwES2r?-(^3dv`u1wVIfRx*(i`W4!>@HMqFKaWYiB}8J%F8*}vAdb>huBq1^%Olnv0kgl zSRpC)QAtVbLNZfpF{rzGzkwn#Y5QrSiCz(kN5I%fyxMiDZ?0G6?flJ$CJRYGr}p%0 zI<{pcIynPuc_M3^(a?(|#nYFz%1~1yaesB+RGkTUJC;yIB!RcgQ>Z2T!(As0?F0#D zQ*$Hp5HRNoL#!~h^|y{+jco9-LD z2&Q$rcY`&52J;l=KNfEt$R?i(Sqt>3fo(8~V?%hox?BYQz=Z1UrPy~YDXKxixd4Xlpz z@n@fZM=sdb&<}1W?7C=Ah`qYte!pNGxGB(%kzdKZCmTe=pHNej#M@om_RWLwg@myN zszS~|jUGMj0*`D0TDO#_Y|XgktR6gFPUf9->BgR9h%Ti;B&rS3jzg<1vQ8kYtG#kI z%L;Z*B@8#r%7{c3F(faY0a98Oeap#3zH=1l8Bos-@gtBkMee%g6c0Oju*)kSIv5*a z<4#yxGW&-c6!;Qdo;;(NCW{vhKI~BSl(OY~Ws*m@taPtrDGt3GEsx#%htxwd32zNV<=VpHnltsVrjRHT~|#;FOz}WQbF@$(Vm;9Z_b-R_3+R^aYh zS3w@Yb$CIUU=jf<7E&RKjkyPpHZ07WQ~3=W2s>Wtu!e9!`gbg-OomY`kx`D?UxvD? zFPRHy4&k7N;!3ip>V271^h9KLs*`=BgxeP|(SLThUBK<;{rrLkoike}=>z9TV)WA) zSwiYxbbj8?O^>d-bzn_E-(~ zqx10WbBd}O)9cvL!C}CWIb6wnrL-J>or)gW21^LV4zu-B6Xw_`3k;X?3s;uzIMp1V z4v}?)+Oy~f2D6Noepp15y#GvTzwyD0*q}%tVs2NfTXJ=hYGm*3 z#5V|3_=Tak_Uc|-kY?G@AkblILeCv>9ryPX-y45aMvYgIgjVqMm*KK*E@I!Y2X9oy z!H!@hG<~0SoR0PtxXw)^1yY3fIz4(o&2zEiy75Lho)>KNrV03@O% zx-zx?{Dv>E6mfe;)6=mK_@)tK#qFaN1L~PFdtlrYofxj<~##l zE^tw+1{MfzDY3On6Zl6?y{kA?YQ+%)ci8+6_LTR8H7+OEo(o4N+T&*DG2aV@acMfK z#%hOnv|i@t4Y?X)hpdb9uhx9hw`2OM;MJUc8^ag-1T>FE=_*#{A;-}N@Hzp|R)ojS z-!aDOS$^3n9hlI(+ZVSU5w2YB#!VdyUHE^WNhtUH&0{#aI!!X-|4`nED?XN|ahDw@ zO%OU`xTAP7!CzXauyas+=PP+=(b8R$3lfrGu^5=)fvZnNum4>kbL5mS6CT2$BispE zZFf|;QIa9;)e~jkZq&mnMK|k3*haQEKYg(nzOka1SVqjrO6xhi)>y>G46|uETxJA| zSJbD~Zf~a~Tpef^{#g!?G8bt+zASUo91EfgtI6lqEaMTqnS5JE3frB?+62^Y^fPBb&eyZ4VhduG4S>|bkrYrXHcHs4$g z7&Ulqks5njUxy9|n+tIa>c&V(qBI9+3=yJPFjOhL90mn0OU_h+yo`lk=yX-*J2&*p z^UWB?u>*-tt@|%u7t5&zNVt{JA;VKM+B!s=?KvmK6Heq3EC5v|_O(Uc&YXVM!IC+- z8;+;#oVX(EsK7(^r=AiY3h(`JHv(U4Li^7+`3bB!2uGO&5Ea?NLCeVY9R*eyYuI=%M7I} z)GfgG812kk-&k9fzs}h6ug`b&rCEp!U-uGF5sF^1a-!yNxi3BQn8mM@wV``Ba#%w> za?^CcWRoe;QOvi={tQ@^E@Meh=@~2}yp?k|c<2$j>dq}81=dZv_N@WGStmg%&RV{7 zO&`<4W$wo*ASdlkAKOb?hb7f6k=rj4uXk^hT4CMyTNZcrZGH63pcZ!%2Rz#byX32c zi!-bAMVQTaEoZpwjs>d&GjKT7XhYUwHA!;^?3v5=r@jq7xvHlDx|0q0X3O{i`JsIQ z&%Swizk)^2QEe93FpmDUX7Igt^UT!I&>PE5MRn9SLEd&h8hVj8yxflph82r3&p#B| z(Oq`Z00gc0BzWP=^SJzY_LMn^P|h5et&r`ekd@P*yY+&p&-X_>zm-PTL+OU+kZdh* zpXIOHp3T#JPg}UeVn(|l-rbt12OT1A776ty1skA3m_Q#%eEqDWFwBl4LA{6 zALnWY_@nlvjD($ejp#G9nPa~OF*A0Aq^0rk@)9+Q&z`>BpTesvt8coSRKk~M(|30_ zS*L7ciR0ti)Lh+;GHFF?v zZG&8kNWHKql4%Oc*%K*~(~JgZ1Kbx(-EBFBrlGU(QD-%e*S6-G3KR{+53n@tZhP%c zR`gh9)t_uC9uU%{-N~)#e-`GkNSK zgK>dLw9^2A_9ph1ao`kcJ$%-JlQtHSFLm1?ni@(INa_KaLj(rAW$8(w;m`DQASW7u zb?oHLNanPr~huGt~c~s8AuVAzb=#FyxNNm*gY?Og|phvQDJhmt50uvuG74e*{PVgURvXZy6%X~d` zGIzQRJnU@vvLiLqMJI8d6*jVtdfRAX6I0MoGq;*h#k?d6>@V5tlgB>o9Y%pnh;0L` z3-m47xK^?2!qs2G_U_6poO1bc%}-fwK5@wmc-I#?~1-1)Wq4-jrSlZil?it}%ki-(!1Dc5^PCG(hNvX=iZ&VL1 z8M3M{+E#4~f38%GOj}SOUP(qDmaP|I#Kp7i*Qj=QjX6UK)>VVLqllVG;vig&Y4JW2 z0afZVUjNQ^HuQ$wMy?H7Rur~uFD*Gb^(Uf}&ikw@t=q0bTToua1=uS^sY2tbuOv0? z2%yLNjw?b42~tU!ak33YzpIiTKNg+H7fr=TXrhyJal5(_C#7$&JdRsjgtmNIV%RKc z&=d=ej`48!o7kh1++66le!DfW0!;Bt?9O_WAd?WcPnD_1+f@!Kt#h-QcjJFJL@Od z9iNffGK*mO9GUbUZU#rd@hyK-C)t}>VZOQ?g$OlbMstvIitjdpBX&PTntuD`Lt~U~ zbIAoA!bsnkee_m&cI~*cPkIfto^ujUw?G<(T|&!8K!eFzWNfDpj-V6v=uhw)4C$D z%id3KQoq%v%1)1%p91B}a-V%Dv`4Z4je4yW@;(X3>d=UY2lyg@@F)Cfy!W}OK8H2+ z+~8e$J~r6$z$G$7N&X`GHD17jfxS2613u+koSQ!F_Dw4nW6%FK2%wVMbcOCIhCkd! zo@l|xvKh6YDgoST>!#K$$7Wgz(k(mD^5Ad*Rp@9h(c!)uL2WkBO+Bw7gKE4e8HpW4 zOteH{l5l*V(osCMCy{@ER#JqbRBpU7-$QG>ka#gPo{u6Nnk(FIbexvM#c2y$}&DR$X=gcPKcZ6dipnN5JBhCz#$pfBbM}|KF)nlvK*zyuX=LR5^h(M>EgAQh#*nQQ|0bJ!Bm4Kfl5Ko${fCQARV! zundvk!2SwqP_ihq6l9i?=xaWVwvaukwEiDib*UvF{(9IJ!NL(g5cTzrXztLU&Sp literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/distlib-0.2.6-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/distlib-0.2.6-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..161b4c21bb114ba04a707b1da0b0d9d69aba56c8 GIT binary patch literal 141707 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 GjQ$U&0@_vp literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/html5lib-0.999999999-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/html5lib-0.999999999-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..d9fda41f3a6a2142d85b014814c1b67937204256 GIT binary patch literal 112620 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 E4>c1E*#H0l literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/idna-2.6-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/idna-2.6-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..ab09a80bbe43144c1ef9137bfcba5bfe33f9cf77 GIT binary patch literal 56485 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 Icat|sf;SJ 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 literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/ipaddress-0.0.0-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/ipaddress-0.0.0-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..aa2a948b7174e381ffdb27805917503a08356df4 GIT binary patch literal 17503 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 Spa=s4I}oY?16bJ!!~+1B^%lzj literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..c91f5425d5af3f889f74599ab46418b6554dade9 GIT binary patch literal 13506 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�y_7OKmjU)V&Z4k|4`-=aTgNCF#&7N`iKf2U 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 N-uZiS4E}TX{{SU*_^1E? literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/pip-9.0.1-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/pip-9.0.1-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..0e229b5d71d7597bb2b9500800069958de10499c GIT binary patch literal 159152 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

    &L9{^2IpaR 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

  • *Ure!7cwK@-=01WnqpzeIY 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�IjIR;4`a+OD`XE=BC_$vI~ zr>R^+dN7H`dXvKUHj%cJDcWuFAX8AzhyGR}lBh zds!WfwN!F3erLfR<&31pbN%v-8f_(WB7J7-^>j!}aofv=;B%Gt?rODJ^Q;Iq(EF+Z z;f?d#Y+dLb07vqQlgzcEoI|OQTC ze@h<*HJtkb3W8^jjW_RI3b{r)Hu6=s!4C(P^hF6)RVM(4Mm`Zyzm`aAn!*}T7%>z} z$~ow<;5tIIzTmB_e&}jo1{Y0E1nNlTGa{sDH?%86xcw7LsZSF`24p~-KE+G;v@Y!d zqw_G&kg8e$#CgiTT_R~J#QcuiMT04C@*3+=ZWAQj?JB|tc3!t% zTXM|~zR-#0x7E_JrBOB=e@;V(ZfS(H?D|&k#O*}8=Hat^Kq*3iV#_}g!=azorv6Od z|KVL-0Kio8BX20<9;usu_;6O5)*@kz+obQiWW!d~UF^=K7Rl7VbEan<9a`s0HQKd? zb$Y#Rf>K^GXtYzkXs00k&rKWQ z1~Mcunu2{WO7E9Z=*iQw*zdKv`SVfO{r<0cZG2;?8$W8G+6-sLQG8fxu&Rd zF063aXb=}Mx5{sVA=APr=~+xtnDbHO@F3!cu79-`&MBJgQ#_Rgw7$t8(ic18jXDXk ze&#u}Njcw_IB;@jlfX?)7U&)|9f6EpS}96%D$)`NEbyB<@j!wB8iY*;N!+|D56km) zLn(L<5$9+hrq=$$??4n|n#7t7~p! z?xd^xISbpM0*uY%K<;>`rgBE)pCK+Eqnj3P3&q>7#j#dt5k|S@pSJE_>SIe2D1W;s ztp(1qkhT3FYA}-&p% z=sA)jKX4%(v4ZLMOn&e6sp#XZ9-K0H!>w{Mx6+wD25*-U6Hn`EdumMC`{>oZY(Y(! z{#F0Vo;tRTX>QRFYSJ#=vzNP?mH97V!f!Vs#QkR4d&#*}(??;v<5Pe-x^W%Jz_X_< zFm@sKU*yQI=MbuDIG z@^Z3t%DDP=Knd3@Jgj2=ia=>9CE^wr{tt`~K?f-p;b3u5qm| zwFvx<6(C%FZeI(ce~J&Zqj?iVCo^fq-2YOJ61h^8=APv^5W&6*Y=0%fcI}I~gx<$( z;8Inr=-~isC+DJw<_na@9IJ!OBT;aw#*1=&o4-B_Rkz`*&n=}#E(`aFpJAp3d`zAMe?pdc@G2mW z)(QbfsCA-bH-AUE_>rB_j3ge+=)%k`@l`BC29p(WHod)gehSA8>S-LrCW6)2i?!rk zwNc?kixMiw;*__K_i01JaM8qL<>!Hr5@PkU(j`Va|Bx#5OK146(;T(r4--?#aJWca zD2Z=dbf=3JD@!r#mign|y}7s>)%r#uy)Yx#6t*m2c9=GL5JzJAtVKHj*7?5NZ9xg- z`dKi)^%sp-FddR4Xh^(B2LEu1j`@)YBL@EoPx#%NA^Z_% zB{8(_qQi5N@1)h9&yO^35Wb`7yfrT-2pJYhZs9se(v!N*X=O-m9Ket+cqG#w$`Uj! z2@tznPrdy^^?L?VhDGVJc95cL(PgLOhN$#=OX4j^1zgj47jo5LAcNai(ZDN{o12!m z-*wNI3TU;PFm5dP9B`hhbyXYY1wv5V6}#$=oePlGxh}BS`Vus^QQJ|aM3p%GrK-MF zfw#~R%2uE2w&eQ9mPiEA1%=AVIFIET+ESepi!F@=u~sNJOsUK@3=?jx(||1Uk?^H0 zY-fiz^A?wMe1q42Ja_- z&pY_YJNPC}iV_aR5PL%?dTWL81jQ4h`3fp01p@j7>>tT2I&{7>@Sjx=`&sBd%YR&j z{{Qy$m(&(IM*4rdjm#aL=*(?QY#D?_6onKdQP`B~_X^l3-`f2M+nkgS66 z---9@Grx5|2{xaF^e;pOh<`;?6&Dea{yUJhr+KdE6SV$WX#N7c{+B>&V<&wheJ6c- z3rAaJ(Ycnk7xlK$7u?;jYz|4m=|FK+^f|I3#`|HRLProU9- zeQ(Eo+I8}+~7IyyNx8#+0E zCZ_$9YG!;yTZ8&+@*G5em$@M3U$d?C9W0IisrrgS@K?P)jS=kAAQ=84^L6UK<~kVL zJDWQgTN~Rr{WGDxL;|B?u>b&f>%Y6Iww!+rceFD$G&eE-=W_QSQzD^!)^*Wmq56y5 z$<6;7?d)W3_0I%Gyco#SNBDG9pN{pfmT}thuc3{NUO#cb*?+K0nfh_cgNeB5KJi@=HH~!sb{~nnCgB02HchY|k)BjHU jdwB2^$PeuSl}rR literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/progress-1.2-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/progress-1.2-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..df711803849fccd7438961472d741fadc954bd8e GIT binary patch literal 9606 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 lm#Y64K=AoU!~aeHuNh^})v4-E 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

    *T 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%0ACv3zp0Ry$ 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 p=U&hb}yZ--KX*!QnQ;zgLh`9G~)k{twov%YFa= literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/six-1.11.0-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/six-1.11.0-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..40c26d83dbc95c3fe3738298a2b67eb07343ac02 GIT binary patch literal 10720 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 WWuX4!?gL={oZx>dGD`iQr~d=Z!Mh6p literal 0 HcmV?d00001 diff --git a/week-0/day-3/my_todo_app/venv/share/python-wheels/urllib3-1.22-py2.py3-none-any.whl b/week-0/day-3/my_todo_app/venv/share/python-wheels/urllib3-1.22-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..62fca28e15e00b19c91293eec7edc1324f0102fe GIT binary patch literal 124700 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⚩bG|=;xR04X+d=#;8uzjQ?=`*5T5(?o|BkO+2Vct3}2}m*;w3aW7*zx z8dDMJ2^fLFRi_akzfm&C{Os?A8;84!y$irIC-u2B{M z!#I^jtJ~z9NWs&bnyv{Mue@6wI%TvJRgfSGh{o}lgjj6a0iZCS3)Q_xBk4N z(UL+E<2jx(T``vEFJvZ?wRPV3i~_qF`bhg8j_&`p`{;hKe8O4>M?#dqY*zElvo_EG z)`iLFINQl1DyW0vFlVZFX5#DN;UTB;MGau1Lfgv%nfra@2x?*OGSv^cUfcLu=4Y{R zm~whjQ0ecFf>=Zm&`i07!Ee?mQE;w3SYV#$CCSU$Axz&#lUbm8Tjvim`4M8$Lcb?m zHLHh$QA7(}KQL0tpBz^`Y%WcUUBaV-A`GLM#^ZboGy)GGL59SG6Pb_i^%0yHSt8E# zwnWkgN~Q416RD;MD}7+3QNsXc0Z==>SlT2zZ0>W*yYRBU)GHnnyaYf@Qp(`_AG|8O zmdD_cx^f09?N%_|v|ZmMex;9i63iT7`5DCE8Ry*UX=9uMJ#vGMv`Cm8m9T7Vnehq) zV;)6fqRk+Qq?@!0@e6Q_@Ez~>9ijctoT@dUzoKqLsB}`j(axS2Ybw_-NeU@xQOHg(JfP!+LF9bKZ$C5Fxf?$#r zwqWGXCu{@btbv$X+%|3V{Qy&-7B33jw}I1GZ>rtkLg%C+^8)&XmHwOiRmS@EYjFpwAH09j}i_A>r(6g5i zEd8#C6Rqt62Z7=h(gImdRlcN93uF>EmJLtLuJ4RWQ^@rA5sCpHD?kwu@h7d;`{kD= zzWCWo-Of{l#JGb#oqT+M={6ptMC9&Sj;Qn2Y|1_|88Qa{JptGW(Z=tVCz$8&sS4B1 zmaz79YkJw=IC^+`vgELwA+!7VBag_~aHWXNU8)t{N;<5>O(Ag1U2`;Uy$Mgben!I&AXWE_D9F=qjPLrJ0 zmRDHehO(Cw9-hQOGOuWohR+3LY3(Qb6r{V8^ldz{pv&d+Sv^g!)`>mCWf{DT%8@mG z8C@&&542$munrhK+2mk1bAV`Om7KN}Fl*(Qfzqb~d{$u+xu`t2C4Bm01)I)FYWvIt z*GWeEjV0_%Fku3vK(p|7Bru#1U*gtXb#Mj=N7>CPdSs9?LQA5u`>!@tfChtVBJic z;k@N8yw5~+@8L1*Cxt$tq3}+XBwi+IWSeE$m0zsVfVl-g6-kQ=&Rhyo0<`V29v=v%OCtSusv$-qw8Sl(> zR&gB>pw+2}MMBT3Hjtrw83$n`e;mEQ^@43It9dX}Yb%aQl$smLEVAdJdYHXKspQ4a{0URUaH$dfw!v0RM&g< zO8{MJ={z!e5K9||8ct%*sp8MBm|ry%*yYY_ymilV!F zlwI~IRGiXPum)cyc0<&7+=nE8EFX&4p}xhBVlKsQgmiZu(hcpvA<1Oae+#uqMffJ- zAbJe>aA0K8D88mfz+MinF!cDP1Y<3!-{*`OnD&62S&_MeyTrU8M~1&^Gzw~zgb<@w zzdr7uFdyA%8ffH5ls^7w2j7F{)Osg=&il3%X(zN~xU4*J!Txv0X-~(YiWyFYBGDS` z8(jdF|Hv7D_rZOemh!8R>Y4y{<{%!vqeyw=1Nj|!;v()B!`A5T$nd&}(WzF-Nz@&W zM&@If8{|2@C^JQ1`HA83u1>8wF_QwNuT(CItrAErSML>!!KZqVqntLUuaV-p@WA*wRUnmoyzK5fg{bJS63#q22)_J<>bGtGn zGHj9a6jXGy!!uaRhKs(UN2cO=bFf!~7s~cSW)J^@igH*qO)ZW2#VRbVoD3V^Yyp>s z=;5qJ6_10fgO6cDxQLx%{vH+9+H1_s3MSwQZ>SNq>yEIx0ulF&U}gE}?1Q)v!q7bm zXJG8>AQZ3}=!tu!hHR=#xrT!7PD*ve$5q(um_?Ase3ZZ)z8zXrE^qp9x|h3;qRUDF z+GxlsCrgRIHb;m{Y>qP46bs;)7wi;>vTO(YSs9D}nEQ^ssU}>p9RvqVD{0fDl`dsv`>=ttm`!>M^kBjpb&#lG*j^;aplLr=SBGM4I}JWO)Ew1MZmXD{c+Xa*#`= z&X*WI&*#$+9~gxT>{4FwJT7zuJW~btdOfe(&6}Hd+r@VK;@Q4`^qU(T9w!>48f370 z@sQ4|7QarQk3?Jsg|_%=7O@Isyxi|kbCVleB*fd5rngDkOu(mEZ1K-WcDv7VyUSX3 zWXfzO`DE<-Xha~_0i3gwI{#dOLD=Yo@1(@l{hQAkaY==Z`URuBtf$cF`tvWP|A?-= z3k#e=>rWn3UAX+aZ{q&;=mL?jC@4u09Vq5r|4Am54q21a*9i9;;DKB|;5cGxu>Z3N zJ-L!o-f!t$?8P&Y8tIDS@GR8sj_K>S3BAvZdGnuN+ge_eM!?!`5jUC3o5#K0|65ux z`!{-MA_D+$j06C{{BNZNdpkSpfAYdLua(p0O3Lmtb=`uyLxtKHc^0~hN;zq)L~h2I z;&sFEsCBh-g$w7d>9r&CZeMhTb>-AX_a9lUDyVdX*&#a5dr8;2w`AK(D-$*B&^gL; zeG4zRSD@aR+83wpt+MKafS#+C&2H=pn!C@}v>n!u@0s2^^yR)gWxU-w`8;grbTYrG zCP!%tw1Rz6X5eI2@9GWN9IH*STY!SA3WB{>$LT$tRkY*2U}#=9^ivO|TUV-A{D_a$ zik#X=#c8)@y1R@z8;)2RtF^rM&^f0bqc0eI0Bw^Y@mJB5RrX9g zpzH%8$}3n)i>^xI7$OAItco#0=q{WO`g&z|(-s0Y62I zN9wnV%zN)xb>2Mr*w_>LWva^ww2fu8U%)}E!QrAL5DVR!vmz5nt1OP-fh?mQ&i!{h zeEh}Va1}`Q(Q{Li40rXqpwlOo`E5tw#v<^Uvio%+*aU1ZbrOw~FxVYYTE$IH9|Nes za&I-Y$eOvxZVFayVnrD})XGe{2jq55KsEY`!kpPr&6G-ufz8NI24My!!HpbL8gFUX zEzvI)4Zy`4r;hu3H&#~pCpp>(mc_&I1RpeRne!i-4D`-RdWh1IH?zdlXISfH5^J7a z!no{7=C@sYZlNN~>4Cg5TkMQdc3Og{n)1YXU|HT-JQk*J@M+^@9*L1_-_o~&CH)ze z^xtZH?(uT$jUoKx3QZSxb$3?t@9|A)1Un}jT))m4sdne%{sOr)irX$xF2N7+J3TW} zYaK0Nw>Wp~MoaibI|F4=RWdpM5#S>7?Xk8nbGT5NJ7JGtb z2Kqcc1+~f1(%Q&Mr4{u2Z^`#3H~F{|HBxN=TSjtJuyZi?yEpKUlwAJbllNh_MG;@0 z-;=@0G(Yd>li@sHk&=Gn-O@vcHzzE~l<=UgU6#H+{B!HShAVdI9Tz;#jHl=!~ zs0KeNhG410LBdCi&fJvuKTMTkv}}SN7qH;LN~wL}QQ2fJA0$56eKdK+@?WEV)0qe4 zvI&P3jsDv`T6-<3y+b=)4AOoDSus0=7b-Io=%Wp0aC8f_v(kGSqD<<+S= z1iyeZQySUjFd*pRmj@kVom1#G3*1$yprBT%q?HXbn%WrZ0HB3#nOoLS06-#tEvjYZ zqlqFJMVbgkjTMpukyQE@RHajvs5?XRllqYOj6g-5Q$w5^=>8yYuj({}nAG*D)-lGd z)E%QT7qkc}_`yn>Hqm1y%O#ysYfIr^uz&<#q|!#4Bw5&H_W59NmP8-j(No(s@EVQ< z+}GbA+zhjQ7Dwf!Y)0L7T%$U}B|USJ5>(C9BuEbo40s}cP?0pUc)%_WVXHiVhy$Xl z>6|P4X#kZiHIEqV+YxKP?ORg(Fr65?^+x z)2}*UdHoJ%32l!&ngx8QiDb7MSEJJA$?~R8YffNGs&CJf`zi}QSZ;}hDDP4qpAr-R z4;#brXN7Cx@3m~wE&Cj+fF`R{NCO0c*{X&@Axq}NNzt02KL-YuNEPJuI9iXtJlb-@l|C6e!ylw8A^!XWSCw)BjFmd~ zm;gcOD3){g;13WOdyS@JzAIGP6d{l9#O6RHb=1q6g1-#RJsU+of?PbXLoh)1IcEtj zkoY`S3Ax2Y53*;L5Bt~Db4zS4YA0X;kRcC+0msy@N(aIWq)VsDapl;7Zj-X#NjAS+ zm3;%YXrsVI8Lz4zoX(N}4W_e7hk#Opo8adP-Pl*P7)QH5FL#73xqe;uV(F*GDS;Gq zj$y4CV8GZz-hdV|cDCodXaS2}G*;FKv{l}7VN->OQd@}J{#Q=cxFNs@uh5&TH35we z_dnY$i^|UNn2qy2(*%L0WPyY}9zV~I@U=U$yLw%GevkX#O9;1DVV*Xg_OxVpn4g(;w~%;3)&vh&g=BJiTRQdP&^BzoG?$#L zJ5iG6rC26LrZ=VLY*UhwjI(k;Zw>Kd-3|ssjcT?t>AV@+QK7e7DR%od;37SuaY+aK zhqoh{_|TdnV)Ofo@3X&-dvb}j3J8VjBxynm*GM{z ze2J?B0&|=!x%qCT=DYx=Un1BcCpr(->j~x`&64M5^g%uV1q;WQ=c(HjSYhH zrT@$%WRMb}#DtBCIxa^5Qm#6Uz}U*A`%jg&+^->rG#*=a`hTTvYvw?=;_U!|+CkyW zToSX@jIVvus-;;$!wAY_Q+caypU zS?=pA?4mh=yV8|cNG2817zPx(u35ESm9_@4KfQ}wO-4R6m&7&luh%yTGQ6NXGo2am z9N_<*!Df;5eVcdlR=x;b`DQB(aHnjL2z;U`DKGs*MY)TI-8ra%2voP5_sNzOOMIglg_vwN zh8h6&RR=5vs+^K57p3@@zslGqx9N+L?<+j zI_#sm$X)ghaNMtxnzdCq5;KE7$uPdBK_k&ZhgN(q&>JmTI*hMC!*ed9D%Iy}u$ zpBI>6*9iF7s4%s`aDd~Wh=uG%IBR&tkAB8Kjgua1EDs@cL&7*y?B9f74`yeuW2ry` z50|iC;Yx;F%?!_Y50}lxA_cglmSf;lK9knWRe9(FjRr>f26v(1JZ90-4BL2jJ=wx+qC~~U;S(k@i2$&Py(nGyh7cCgP-*^-C{Yp zzUM7?X6P2l6^uR#N!{!rkHf`cS?&j}XVi^s0*F%yLaWg{SYFt{26D2<`}`27 z)0su369!722KX+!wP2d)XaO7lONF2%Pc{xSWWuGP$sg1Uw5tPns5ca zhoQFDb-j0wv_!6ri#W0}m=qnr@2@P@4JF$PD8K+t;{9NCV=)>*o)5%y&iWeR6<%3% zF*-`8s`?3p^Te39DBgMElrTwmbT_UN>K;g^b9x6A z4yFn7&#Pm zqVMAcjEsqf#@ml@aU-Ldi;HboOn_H0vRbhY+z5yi#&|OK=nK^%`gehwM69^-C0KmJ zD14A;-)e0U10$isp}ov%p*-MIxu8x!F5sbQw2NfLWQ%yf2)=S!9kbN9*#XlKZZ(Lh z*e>@CWKdYF1V)Qdz)xw%Y>(Drs{C_che=@+=8OgeV~dw_02)EjUs<+(N8N^^5zbvb zkQO6vk)-j*4H>66ruMz%P>{O<7lTQF-+CS{?gE4%$N^TBxHjUi2$;Vaqu5=7d^i{K zMdyA~lATI>QG~xp{2-v18wze~p2=IIFzPJM^x4o5-BTCR$<`Vs5GlbghqKMrt_=}_ zk^V^wkW_5MG4MvV9hl}~DgkRK)EbBB&0B#+3IL5Xp*(7L`5~QqF3$FgXt{lo<0)P1a!0DOq z7aA10Hr!>>l^qZ)LAXU!Ye3(KpaGLN);r@)asLryjS!RV6zEbX{@J+013_lqEZq(z zpU-TKeu{(e+@gQ4K9KhdE)FRf`pp|6={nh?oU7bfapWLhYLkp~G^Ox1D5+$p#YNU0 zNIcrI9`;B^OE$n&mayi$>`p7{>mCub@1jYWP-v>b64+==)ZL?-xMeLBfP5{_!D=yl&|Ifd=|!JXDQDHX zb5h$L;Qp`5!N5A11aDo856MPBJy( zrPR=dz(N?SlKHag^{jUS74upaG-mQBNwzE8_W9yOdir}p;C#SYq6vBzN}Ce;(0L6z zZ&jnRF6zs1O#%x|hOk~ZV{HrwZh_eir83$#c})ECQy&yBWZ}CZWV13!fmeLE`H%jC zT#7*cdDAG2F&cW1>F<|Z=Z~CzjOFF~(#VlGb1Pkb<~K4i00^$299R7e5LT2oK+R%0 z&@9G27}KFRP9C!4w6RP=*Et#6{y=tbnN1kr+D`G`+l9BFPCeixb`?icn9(2u?J-5; z9&(X1dGN#?ev`N7@3v{#YL`MpspmH|?_{v~8Iv_Ry5 z0HHh$6aX_^$qG4#sTdByhp|5M5RHWqO z>(w#FS6-^7x6*@gk^eS?L|q6D5=JFB9q7~V2Lom5R2*oI+e#n-SrCepSG2!GH|FN| zK?fYX9VZ{UcPvY>woUr`A%Tt6x!85ZmP_1vzeQ3T(#6nrVSX4Dh8QS3`Sw1>Vr7#_ zr|YD(|C=QwZ(|GF8Rjv!_0X$^I^UF4l0$yu3UH^VZqD>y`xng}gP~yVntrwd15p0C zEFt)nS6q1(kJkGxTdRe=m`gR!zTU}_k^X~Yt;Hq7GhCW{ObusQ73|;}OU3Z~*c18` zIGc75M%hF@ET|4M8EM7y*0&9~zIPI<#mC-iT7Q-PXrp8B0|=3TC<^mya5S=)W6LwA z-`k%D&h?J{C2_X98~g6()I?aW7}O3b%qB~a^xZG#wU+7l_JEMAyQrvg>3Vn{iYE(m zLK5TU-{QF~9vi^J9d;dzn1$QeI>}@;58-9}1#32F>{W^H`sAXTTy>_%Q46buL(B!3 zBtCn2=6~v9i%eL+$j6XzaK?dKRHoX@KqwzT$V;FLIok(I(7>``Qn%3!lK}6YhhT_C zFp4V(3SuKhz}R?+pEvIC&l~Hy?iev&n9IJw21LhW_UcTJ6-gf!rp5~b5(B~2H;kWJ zo&HLy<6gP~T#EdL`4sj!C)CT~d&6bH7S=$2?mTcKSa51i=ERq*A_{jM#_2M=Y&1Fu z6r&q^G~@pvOVG~R`<@+rUEb&Ugaba<3APPj-Xg#%_BU3%w8$WgF(>HF^&~6JZic~J zIWV??X?{Ca?t+4S&XSd*qmtJoH_=c+VH_+rZYO$a%E6=BK1Dmv?KssV=rcbBR=kB# z(bf7W+ZHMYjBzx^=}i)2#`>`P?5^GrUNap<*y|>7QG18l0N?LfmNvoxrk}}wlK{q* z!+nPPrj{JnE$$YDC6^se6?b+5R0-I^N#&Gm;mOHR8GE>3iaGWTozu`li0*aEi|i8R?I@=D#zKH2C@#8u$D;Vtq7eWzam$BeRAC>h*RQcq#l0BaC{S2!(uD$}Vx^lKEiA~65@FzJak;hgSx5ry>byb+eot7q#9fx| z(StAn5*xFQ`_43NcJcfmD~eMM9(_3V0414qS~LCC(v@?WBj22_iY9lDLP#d+pq17{ z8IWwFWri?F%r~eJJkee6p(4Lt1aAx!di8f*65{*0MV^i7drSdrLKY)uI|p5q&K>Lr z(qmQ4c@M&FFvF-U5*9en{6yvygY*F6a$j8n;DCR#162yTpCvz?_K>Z478xcj$PXDk z`1THserRopq;khn2TPX!nC$#$Bl`gz=F;mNU0n5 zjQYyU+7@yGTZWkjiQA*q=1`#G)&cD)dGmA!G*fMt_1`3k?3m;XHt>0U8AJKyhCX_~ zykY8oBmI8)CX$_|6Izk?Q~}N(cLk2pk-^iINWR|n&jVpzj{EnM_;>KPtCL>HE`Yqq zVbVy^={v;~#~#2Xcxrng8qm4X;h>ZCO0|)HpkNYsDIHd@C#q9s1(Dp4gC2sDR$M1+ zjnUL|h=%a)(x}C=qh3aiaQ1zG%`!5oEumzkBNecV);JTy4;F<2Q74Ev4Da+$vTc60 zPZ_x}alNyi#(kf^RapATP2dJ(QZSB3m?Wv77{(qBzEP%rwkZ*Q7ErKezZ>qqLR_um zyk)9CaSUZ3*Lafi(;dx+tQFZ3O92gt>$H}E2Oj&RRI{7)6JlpksD`G+OqNrD5Jl?3 zoNh(A9$FidJ98B0i6EXyjTK@JgSwW{Mea?wv)BCrvm%qg|L2(rv1Wm8!Um?`T}~Kt zIe79@DAQk7_#4JImVFdvcsz0ISUhbm)bpc;!A75z4mL?66gylf`Av%{4?ufCm5spC z(2#vFz-PA4TV1}#06``j3mgss;prHPmeE>dJ}stnaGW#@zzd7#t9e2%Vj+Ya+$527 zEwMI!D7k5zqAR*@n(yz};QTP+K64AG7%8pHY5u~9xo?eEFN|951YH=|p3>s+_Dwmk zpn1rWefk$A+7MRF=g8ZJOVnE=*9R*#o`T#T_#iS}>Vl&!mQ*3~M-4G;$k^7>IR@K# zK-q6uvvOQ7c8(Ip@pZmt$Axq~*7bG0QK*0JyW9|{Aq;lk8lId;8paU2ftHbWo3pbl z*Ef-V6d^Lm)nN?XH2JL`L?KOa{0I5RLkp;q0#s>+;<|G=&|3+MAm86>!c#W;hJeZL zggk46vnF;Ap0vZ0)^yw_f+;+a7@ri%vG-CvtX_^8%VrM*b~}%yLhySKp7B!Njo}cG zSU+9?@FzjBM;{!>u#gSZusA&kLuRLF3M8OIUR0XTrtT}3?BvcMjX83#LDx)HumRCc zr(h6UX2Bvp-z8CiULQs@7iOtP^MT(wvqP(B(O(#-V**WYybcDW!&DWIrT3pDp)gyK zzGaSSNAPt#g-f((-l z*`3ko)d~&jG-0D_`)|;?Xpe{#{{?#4_<#Kr`!1W)`3?wEQb#XS!+Hzm>GJ@j4we`HC&@5^3v%@5!El#q#ypN1b z-fFQX73~D&VdF>O?;)p?kEG)ncOofKw86oPu46#DN`I+CcrJ(S@awY-!+%?&#nwc# z?XhaU_t>d6xy>7W6pZb=!VJ~euL`!g@XvLy?{)Gkurb&U&;tseN=Fx-c#oruy@Sq8 z3C4fzYUwiI+x{biTxv3fhEB^DcMl7-^<~`8i}nFkP7GyWm}F9MFl0dsdXb5P%qDN< z|4~pr?B18$04@EJqLJ2h>$As~OoCWLLrF$pui797>H9dCU>|r#tG|tZW|DEVjWhxp zd082W1-wOC9L;`(d;PjU2}^(^G2tk}Hz4_HZdKEkQT^jt%xi?-jLs7$sB%)$&(b3{ zW>BXm45}-d-^Xh(B_=4$ibU#WsPP0~}2Qia9hxK@nCI~4neJJ~&$ZPjU zruzQqOi!rfI%D00hT`8+@M zU7*|H7g=<0-Od5^Wd>J_2NyBF>wn0XQ|<&u%N1L^v39(rbm z9g<2}3jU^q;Dq0e2QU>U)5f1}u6t7%0a@KZ%ad=9nZZme88tS-$Do)GS75pfZ|&5n zfK$f$9TC-vb6LqXR_8d+QLqAoM1YR!0>8iVgArIw4lYH;x!6i9$rl|6YxBCwN^GFq`fQ}T4ZI)NUI1((GHnoxy2A#SUVF8mij=d^ z{LAPuHK=mu!JleavA`ZsJV)2{3f;ki?T)K+2_Epnj{4I3ZX#IVK7IViP+5Um|BS@u zr-k*E3YV({X?-~V%VjtuG0S%|KT^?E_F+~c*4;fjJKDLZX88se)nLyO{3lPDSm7(b zFMwk(lU1)EZf%E?w~BH`6U5@PGePD=F6xzg^M+DzYOc9pnQ(P_4(kgj%^j_I`UjX~23lm%huh{CQ@Jksj%{RPg(*JImt0=o z75v_G?MCCL>G#k1`Ry`CyXyYvz76c2ABMI#K@iDaGc_kAB#8@4KAe&LmP68oP@3C( zM%&r^77@Y%PIER-0O~-aD+%C9=h?Q>PVTQ-Q7t8?3DP?xcOk}T zM<5ORa5hr##GJ5n_m=9%#*md`qW!ca4?N$^<$%|DT9P(u_LrkU6II@!CB>;lb*|Gi zf)MlwuQMC{mt}T0SJ~UX1WU%Kko-}oF$q@gI+@K7l-<_XDQN)oFTRFhAbNev3=pgp z*_rt{(=Uhhrl@5C26ttkFDj1~gd9w(pLXZAS8N#0&$1V1nh0^qsNqC#+%M}Tc}-ta zr>??n<)aClF|e#Vo;%*KM6f8QqE^dfFJBkHJ3G6uVFd(Lgb{Gn2g^K;{BR;(L_R#a zDbD&Bp_7j74nRk8d&DSa&>IA8RfTQ}rTL)D-txq>i;6L-1~qS%`^n~b@3(Sd^iVJ6 z(7zBLNImd^_`ZaJVH~f%$AWrfAh!Z<*=l%Cg75!=&fbT<{OoZ=W{%TevEr;4-Rxc; zem}3DQ+RZ{Sv|O72y!rDvm&KsI(a~5x%1a^Ca*M=p z>~7c;WLp#s=@*LZ> zbsE8zb1WT9Yg>bYufc8(`4XoOx+%i+?X2~)!vlhet_n)x)mqfD_pp)Y=Z9KKu=IMpBnS%$>1AxouI1R&r($Mxhw5 zSIl5ep%`xQhD`l4P)7Yy>H1GpvaR(S1 z-XV=Of*@O3+KOl=i4eiiAeMheUXLfFRnES^jSOak12!JV66EOUX5$6%sRs9`?!QKK zam#L3q#PWTW=C}DVc}Qr`Lzp)YjDrWzpSp{3}4Bhky=YI9+x!wCs` zZ)B-%f8c5r?U5_ zI7|=cL?GbAW9;E^qZ~c2elI&TG^LYC25`cm4s%lo$ad>*^D1P>G6wQSDWZ;6N z#U>opPr7t3n#$x=Tp}$LJ9t4Q%1lq@3>Qnwo4!p&=;h0 zOudXMgFgx>vv(!$2FBPjQF@>NjaISoXTTC0qjs0u5ah{b?@8av4lya!qD6tam}gS1 zv@wKm6?4GI12cwB{BY7TupQ;N#G*2|Q=R59(dh518NFXr)_(ctV-$!fmU!!|TE&N? zw;ZAl4u)YDeP+ZvakYb`8e(DLbcwT4Sf8Y57b<>*L6OVeZy#Pc>yRq+M86=Jf^3HI zEaY|>9mi6H<-(wfz>j)9{)FjM)+pJFt$Gk9iHI_LbVNwfub$>w&b!L~jN z`d7`szhmUJ2vPETsbJp@P|6ax`#SfY2~`07 zf9T?#3aWu59*p_?lcDKjgZrZ{M8JJK>|EFo`9g5wwk`GI@6&6q*GuhJl|Y{-PBN_q ztSxo#CgXdCRN^s)Bd}0)#>Q47@>GwWp?&j+A(WPafPaY2A1vlvVVe3HI3}v!Wro?^ z?zT3DA%Url+K-o@uIK>UGODym{*U23k=0@{Bx-g%UiS~~;v?`PNDCuwfajt=&E=8d zQ0Kq@MIHhG*p~{D`{!=^uZR6Fa&fe_wlHL-|F=cw>}X;5e-eoP(AcmRNO5deVyuS$j%w#F8=X8*w&nbz{MJCH#7 z&6A%`Tc#pl#0e%z(zwo^VKfa)1sE`HC|ZWXG!LX7xqc*u{5-F%*o=EYPRi--q>#$* z#Otl7sqxLr$zes~UL^KvfuxZFit{wS#>aU(Wo}@)hGiVPj1}Cbs$1nAXfcMy_fA^J zW6bx2#rGb3;cakP?AhqLhF`HB1jI5n@dt1-@^lu~ExQabXTec%ETn}Nh_gr%Uu+noZDc>iGuYYS<LNyM2$!P~?q|?wC!7up+X_#lNG0^PdxZ^S&(+046 z8~PhMdexG@5731RT?MP5U`x}sfU4-x5B=L>_!CE|!?5w|~g5r*_wFr1Xm)XeYMaeeOUG$Y*_m z+JUL*Z@Ynjnq2s}!ae9yXd_~=27chLHD5`+%V6W|-)~Y47-Y{H{;;;>UFG3zFa$8AHP zsnriwFS4B4&K`nB2rFU_e*YHGvvA_Rx#l%R`%}6lLawe+(rSeqPJqx0@WfBxF~|l7bBWXZ;bX%t^}G1 zZ#xc+z@70}O4xx|Ry^Q!L%TbucH-KcN7Ebmnhl4RjKYf}2RURa`Q5OXFFJ)YgLleI zNe37M7=ag4Hq>dZc-tyT6r4pEbG~N)y>OTEkg?+MAsM{RI95G^E5|1*u4jvOY}=V< zF8@vyIC$b(9r>b9z@;ksX45!-i&~Fmh80wDK#l}eV*D^Cbhu0{K+lCSQ*MsLg-c^< z-wK;1m)`JYG@+(Bf(ic|KqH+qFA&R_(O$NlU@ym92&sdATS_2s_upNj7>j&LqxkY7 zfQ*7gj-Yz*Fqj5yTVQ;}A4kb4UNNwt{85@SR_Xihd5B5e$vZ;s8_+zAQmz1aPG*v| z0sm&0$66VbWp>d-jUEQ4M(6xbI@!%zy*=g-+XC&{%W{2r`1V<5-1u|{(bNt z{^S@j1_Yh9-I@I-#TX)iKRTHxvW!9b*~-E zbge6M6477eRhS~s;zvZazwLBRS*L43!h|G=fIbM|&?pU1qjU(H=2e()*?z~AH5lPg zB7^B<0ZK#K&?=hxm@Vc@-#D!vW_ALd3a#rO)t_F<@YAg(0!QGnqFG*p7DCd^MU0(? zoT=yRv)rfEXyCaA9~mrO+idL?<8=kVPGemVelw+PGHfMW?DctX?4hpi508j7pU>!%^u zbE?FLi}B@U5f5E4TH(5u1Zo)L7xu<>XV~<83}HaHp^TrBjRp?^z@w*a@&em^cd)ud zTq-g-bV}N*9K}&Lz`N=iP5Gt-p~f(2%A9st&htPWT0O=r2pF7Sb=GpNe=uH#ODL=e znK0m1Lua)G5&mJrU2wtt(mQ=(A4G^**r}l=HS71+H5E1@v*W8zLaL+r8$=v+sE-S9 zQrpN@$_50yt*Y|6ndpCo;ugJGtNhUv4Vo%Yz@DlheW%_y3oQv#UQU!&*=W+&Zwz#) zLlTrZAI|w~my11{`pbL$$`InR4R$;Rdxa<69~umqSoA-p>|=OAk0~qt(Ju6r8Lkym zKHN{3@~SgZ77F8376Ux$@Y4CFR~XXKdf!o11zMjbF55w}9#kWM*y`zyo`ELm?Fnmh zxW+QwWDTQYr5kZB{+P*C@vTti!9n#q>J;sFf+y${1+Pf53WBGC7T?~#ldoaZlRv8A}J3K znCLr@QNT|O%_pXqOk>T!ZXDy$$N`VLFHv3gq}X3PolyipKn|k~Nu!sOXxANet5YVVU}gn)M!Eo7&NE#uOvIhRfiBPUeu^%8p_9W4mwTw0$k7L6E@(k1#SSVyoVGT*OEJp_O0YP~tE{UMkglL5fFtZ&5_uuCCii{(+?R_mWe!9lnJW(~h?0pv9FD>Wr~apB*^ zd==BmoO|g{t&kmFR)pa7?&c`M2Ra&24nn1-3r;G}{mYy#p{i*1cYv}$nCb%?NyEyL$FkrlATQ6o(5JXOE+L|2s9+H&`6=~*iBJ@{Eg z(_))dhAV3)i+nJKM43kWfomsXh5~x-HhjjtayjqU?o~?ZpVZ%a;36TE_Rj+eZ@tj3 z>bp;vBo$_=aau}J0yn<^%4t>{2fhf(dGOS)+mB{MCpny49;_umhTDA%?IhCh zDaw^d2ial9qQjMwiJ5zPr9C(aA~M>PhCL}oMji5xalVydZ1UtBGx}o%%^#ewjjRd%af!<88+s1a8j_ivmFXD% zCmUJZJQh^`f18i1&(#ai&j&tNaBt-p&EP zs6^rFZ!8db8JJeP#Gz@PCT0kmYf7_>E6Kgm(pe*-!?V|1l(4hwoF{{Z?!=tbRJN|W z9qik-t*h5$YemcZdisJS9Vl+DPSZkzVZ!e95}u z3&ZMhQeJ;NGw6p8;@%CDy^|=EX_2F$>Cefq`YV^h>EuS=&NQuwr<%NSez@~rGMyx! z7tn^sd;`ok?0*6+0h&sjk*&T1?#z%X@mHfoF&nyPS_cbm$&SPre^9aWNR)~AQIzkhVIH|9vQN3q; zokT%1cES?fRO0jp%ck4e!UyKN_%cz4Td98D53FyGiJ3rR>#kdpi$}FpU!)fF#LqNiTP(en$MDb-4 z_tCrS#nH|a;qfwupgmdg?uxdjIuMrHoQ{r}1s=~u1-K*1M6~6}gq%l6QGjcDeV!L2 zg|#inKmkE_oKEr~bm9eWM;>Na=Y@nSTGovjbfS7#R~U#g_3VS%rJx+K9>MZ~CczM`GkEs8e^^Sjbx3GtPm}DtRog&!@(QfEoR{da~u45grAR4gchfPXR*YzRzV)1gh_PDKV=JI@N4M{3rFr%-H-qLQSposCAyn(GAZ+*EeM)$t5^cL0tgIt&e)HF(;U` zZA~nq*%zybxUwWT~j(cSzLD&p$hH~9Z-_5W9c4pO@nFZ!=R$D;=Tp#A@8^{wsP{x|dZ zKWLy{{|G#2zq@&X(hMSWIE0-Pp+o`<#ugo*R#`-nb`JBXV6+PLXc|itlr^vCw;u6C zl$+;=I{;cX89Y32-ycJS3D$5j$kwVz>v?*;W8g@%L2`-!FixHw4 zrzSqTB}wDkip^3IMMIsktxL@mA6%DGI<0j|u20g{+zDx7COXZCVk!+v?Pn|rx~Z?y zUKj73m97nE*LW%AEh(l!(6=gKQEG1<)ziXMduuTimsJ-|96D8L9g2p4;`AYOBF7{d z+U7;N=RGr|4?;~_~54Rh8BO!ofpT{seGQ@+nFNXE>^kyh9cVZUvqBRvW9K2=kFNJ;Ef zUz6bAP>Ew!=E|H><>2@iOrUBBwp^T^-e|4ZU@dppnUukhhs;waa6vf0FK;{C5;oB!?Bnw`RGX!FP)C$cL-kJp%{~7 z?P9kh+|unrtkHu~!CjG_L#ET$3Jh_2XXt6~Y;Dij(G6oF$S`+X`ga-=?b$ilNBi~a z{A)l51S_2r$DY&J|1w6nLSks3s)jE@BP!<@}Z;pL_&qkHmOUHEW z1vi$ts@YHs{>}Z@d}!|~BIpm*>>9qM6QJN--7tD46NxnRVQByrz9}ZNdQp>m>1B6r+e=`_9 z;O}QAJ*9_o$6u8GNRNfQ7qW)jL(S5!>3~O#Q+Y`L*&K^%M zH;<$?RM*)huBeoI>rEZ?ja_B8{=6NR5wEH6pgvV?>^X_9>jp5Lf!^C&-R`>7{@=6^ zZmeMMN-Gzxc=adI0vQ4n%n^+QKUrU{_tnSqI?xI@j`LNCeNlHsm|5{Jn7EicZw-C= zCRCh$L?>^o1f~WMeHS0E2-{?wdHy{B*n;S&G2Cr~c!XG<>;Cj9PpJc&O6=J<6+Y`D zc#9eenb?mS4qpTKI*SmswzEKMxH2Q%OU`#+q2D|}gfZnHv~)968qUGRf8$1FgsS8? zT9Zi5skQBeGgdM?d2mqwzW~EhKLO5*=LBm+7j@Zb**OtOi+%EU#SxP&O~!l>w+Ql3 z_;do-#{TT#lD8?(c+~jg!piwoEWDmOHzLej!LQbw<)A>Dl{qvoDA-hgIzydiMf{wP zKylX2<7({exYwVn-|Bgh_&2s#D9G97ToGc?vk9GL?CkXPJh`rFi&7vP_a5m#!dS#K z5$4NOfPSYjKdyr`o`?@1w&db*_KA+xQa})b#H`zSDXfBb5#UeVhw6gL6f~#%v;b^4 z8K4LiPGC0e3&v6#s>Jt%GdS_R$oM|0MCQ14zP`4=!0i)h7rlx;$=)q4f)JnqzeBaf z``Bm^41s0fQ3XEvI6MFB9?igirLy2^5^%a#hRoODq@{{xDBN3Or}U$z;H#hBU+kvf zN?K^Y?L6gZEAK)=$pLZnNqW^YR$v5SXtlp9tJUJ(z_9FP_-caQS{Y|xF__A(<6VK1 z^EH{5CYbzb5B8Yn;%2#a7VDl^pCL0KV2p7E?K+H2KXQ{~II+ks?Al)s#-Ff_@DXfq zd0KS_i@i5@ni~2UGI_mO9&5EUnom=i5n|rLqUlIOf2epYQE-v-XSmlL8t@6C=}KnK zYIBC1fktG-4^fD`zzACx3dp+$*6Tt01|kvmHmi&N%SfsN?5{o9A?(v9WVCw^&pk_3oI%kbT0h-^hnoF~3$3bDa0>oyIv zFZ}PlN}~4q@UJ+dy>k(4i`rbI0;sfD;+E*N2wM}|pxnKf>AL1GOIoT@0 zB7026$f0-@D{$;VUG=zRKwca-QWiE?e}J`Y4n;4^E1!JCzIqI`0e#LH+wm-N?a`SJ zkFe|Vo_ugNTJBex%HfGB9hSe)H@G7qX2KrHDo-yCcrm0dUl(R+szOdxG+z#nd*iZUsB+N)krxUPWcT3yStn zi%$uRxZquyg#li>tSgv@9j^?XraFk&Ku7FjWlpU|Nlp92rIwh&M1#qE6|p3D<|PnFkvpqI41N1KJ~rn>n(C zvJgf!aBC);*={S87;N)wZialQ>a(tl_uE^Jj_r)}8-RrLd&%(NmH8H0z64&j#{|N2 z?4s_HjxNFE7}6k&>|1eD96X$>v+W+3f{MeA3GXY0h4D0duY>262jvTubXCbd6x&b^ zIqBjbS`1X|f~*M~RJgu_;sAcN=PuxR+p4KN_3g@{9swN9PN3>V5X7{kXJVYsE(z4( z%iR!)9SQqPC;`GQQG(zGK&}vj8SJozRZ_K3uf}3~E!;T-*20W=2cz96uR_W=j<+R41MW|wYb;|Bww`K=m{ z#W)0I!?<3_OR*YJ8U_dH17y!A7p^l@0+u@k1?&N=ka8}=A5%;m9I?UaK$d#YgNZ)E z6%U3;YLNY(X^Z0WoeFYN?${19`CXY@vE6%5mvHcQjsL`8tekK0aJzZv8pMaC5BP0e zvAC{hXO||-pLh-01dVX>R&M0qk9}SAXl(M8mi)Q=xO@iIL1=AZTN*%ZQ0#a>&$^ZGydKmMX}>c z?-Cp9m@$yes7+FU$x=GYT!})lT6h=&i9ZDbF{T*QcJhI+&Ipi}k}s^6wIyh4zmBZR+-@$m^LQ*C zF^P?TgI?!bsA;equEAo}$xT$1c^Fbx`8Um@TB03^bFJ1~;`f`ZrY%ls(ZE<`PhajF zNM8xF&Om^Gbk(RUbliEgA7HEO;z584KrV}<$>kyGkA@eJy2gCE&Tei?VNK$cJtjDN z7ZtO_d>Y|@4pbinU_MfMlKDZ$Zd-weCW4+few1`1eY`4L=qNj+!88jrLtOg`VGIST za)5@FhunDhG_=EPUsLwU*q)#(+ctMBF0l-K z8EP`LY!P=elKoo*^zsYnIaFi3A|BV8S;o%kJsiaUBlpR=n`h)PC;i!QI~1v?zzxHx3)h5HrSb0sRr2 zMrdvIpK(~yel!qc(AhonjeJc#75(voMK^Snm)qhX-tvSXkQR?B#C$@_Q7p zcN-UEoS9;B7MadJ82e9>EFTH&6w$`0yE_lrcCGFWf1{35lHae}_8mXJ zitrnZ6qtIuvY4s&qR-{T*D?1zkh6+}$9-UmlvarFLki`UU@ml4Y(y;znJva%>zfgv z7bk(z0nbDA?4ZV_!xNJ`GRrEmJlpY}`#oqjv{qiCz?x5>7Of$h^R zlSG}xZ`#2}x8R`lcSR8a)w>S6fm~EMy(Xn}^IC&+f@1DdBLZV-)S}6DO5H@6p-t3@ ztSgt7oK%)dd8(mPzg4Kwt_Q;(Pp10B)SCkemr`-~OM>}LQ|+V{C6iKnrXL&VCkhUlHg9*L_z|BL0lTV?R&hEDfG5h> ziBqLq&j6-Uf(p1vT#*@=BPRK;qL%10m1s1B&C#d*QqxHaSF)+yk!%lE(jqn2(OG!SIxFG< z(6D~#Bc7Zlvv=1qag8H8D=~Tn+dq{ni3R|k#4a01OH4NoC;1#prw4vz>8@!C`knWP z2@WOI#D%PFRt1GxXaG_h_|)?y(;UUzGz-sLU4(+Y=%IAx3{dVvf%M`O06E$@^aI?X z*SU)T*HN5G479=p0FD%L3%+_9sob2-O5AkEBEZ=lX9um1f6lX zFHotxJVgqTjoYl#qLY z8Ml+jc(KI=N0c7fsafn7$sftqWHT_jr}DxWGNzck+M(85C&;QSskyN`1`wc_$U16b zV~?5BD55n;Vx!SZ*KSLUDldRq;ugTlpx<=(3bz)t@k_1<(IiP?Y@bE99Y`gsjO@US zdag=sLB%)z#bJ~U+lBro)$#d~(Avsl0F_^lkBr+bKomtT*>}wWd&ckvU2V4_NJ^eh!z7{JmfxY{yB)IiaL=r-%7!Xq4?kdfpv z*ES%5fOsN^Uiy(;wTwW?uBGuvoS{qHF7VH#r&8XA*82@k^109KH6?_BkN@aZ*3^Yj zHU12U-~o9TibFEwM_^DSP36uCPex-@Q(!6;gW@dcEY#2%7uW@Z+(lie?~>4&@xZT& zDJLAG^(*wuXoKmdmth7n#j#U`zX4MRIFm3Y&Obt(mW$D;;q(kp(oOv8-GpIqh+gU) zv<@dt)sji68E)4MEM985!mTTyi*-A{6ii-j6VuQ`GRFv+50s$0Hzj)ItgOkl>vHl8x2z?a|qB`1dWS{YB#BQhZ=APcVv{H=3er0OdUe zmY_6&Fz0WD1y+%lCOXlqu^hE)%1s~@%VG127v&(qvXZlH!s;m?gzU2x#8a%FpgFXJ zn=(B!61#5+Sm+XGDC>&e#hb91`C2P*@*%;7wF{E82%0Q|l}YPK3#3jZ0dRm=#lsfB z?%}v@-hul>3Wfk}|4za}{C+V)=726QjRgEXXGlj>iO;XF1u@Qf2HF*qfJIH!jGmkW zaDQpy?MzT=c-2`pk1X5Iq8Nkqva=gin_$7^$eNbM-(eRH5}KTCnL=RI6oWf zilMwHa}jg{W?fIr($eVc_viS0G{W}!el|&hpKk_7t%y0KB?d|qxiPawzk4-z05faO zXC+-}D~Uv749}IQD4^*`WDuv#5u{&JvAjRB)_@Ux+3yOAC%y1-kzaUF;cbxMuN#fV znvBBPq4KF3X4~C^#>P57@qoYcenL&MRxn!4SU=Snk|d#~J~#8>xNuahd=?Y60Eq?d zWleLZZ8A%f(NABbIXszWa^ML5{^oePn_68x>&!C-IcTkkmC()*I8&~6bf&z!fadw{ zva}+>3cgV^rdtgLv8tNQ1x7Loix=Z9>E>JjdD+&FD<}YE?#AkFOxMp0IUo=`mpm z2%OdC{t9->#X&ar3f1S0&!?{0vBc!JW-u%Ys~MAHX7v4#Hf~PF3kUsII+x#VGlm12 zvXj)b& zr{}$Phvp~V5vdC3SQvk^lMz-VwHa46rm0J(H2N1Jq%(Ud9l$IcvJV^U@61nD($Div ztL@O3zrNrx^5A~i?2CSs)wLS>cj?549sefY75{_=5Es_r!qNIewG71c`1~=Kj-}a? zn2F*)iv!3iSh$2=qb5pfp2Li;5xiN`6V1*h*+?n(m?u|QA<-7{jx8-TU@Q-iv+(mC z%P|HPfz%52)`Up0AU#Dd`9Mn~PjHOwwK@bw*(3$kZ^`g>Ejb(dKckYP?H6lngS-LY zIW>_o3a%J=xMK79cGo^5E9>S9EU#+ItL(HL;BmlRu(Ci!?`M24^30_ifBfi9DA>V! zcm$+7O>Ikk)N((M8H+@%+)dd`N^(V* zTlknx8kc{Eet^T7``n9^eskw81QCn_M|Jx*+!6fX*5!kesGS}Z-W>2s%*YF0y$xPX zBy!(;H=+0mtwL!Cy>=Q301O&~yF{CsQ^%0wvEXF^0xLZ^1Yye$IA-lJnN-%hV zI3xAZPbI>W{dx_{Orc;HN$Zq%7y2oj^BapY=8`kPYT6M#ccLFW!eg_4aBEsW9*4eBReLF-8bpxMYxvkm6BOUS8vUhXo!6_k z6Iw11^HD;5_D->42$g-!@}TG0AV(&DfXSn%P%xfD?J0Ki&Yzf!M6M|ru(i+ydHP@?rNrCHBDU!y+SuZoS&hy8;(>uSpR1d_ zmO*a?yl7i+)uMHzYJdvXaXRWKC;q=VZ#hzBs;*@}m<$9=leeSx<6ir_nP8UB7;+4YMl z5jFhNcKPpr-7N~`^5wap007R20095Dt+AbpjqU#dYtE|g|7SZz@O#%EEQKI(tum^= zjs`SjV4{ajD-%5~f|nzhSlT=zipG)@z5UPH(M?P$-L&H(5pL+$=!bLP_jPwi?CRvi z)TO7>Yv@?no?x9fl68))29fxW2C*~EN7YJV^NJaG@*Y`2kc#%$howuU3gpd(=`9l| zqp5an^yP*IkrD)(kPQ044EdJ(aV$0O1nJ}Vt5$pw(572V|jBA^<{-R3{1!Q)3J$ke|+d1(( z!Gi9|J)?qE@msk88NL8$idc#%&d0}a)q+I`gT|(~TQOyv8|415nBq`>43Ta4Od@ds{=Ob# zNbq3;56SS@v}Up-L5NsmTQ$YF!CeGmB1Fyi&mWopCk?L!v6K!Xic)NyEYwZ2tnucIdvdw;bE@lJhYmmg9pnK1) zROu$v1}{ohB#@JuttXhw(0v6O3j~t1g|HCTi{bexofR>~o9_gfH+0S-L8xk{V=i{A zX0i=NhZ$Tqb8>V*ZkgH;iq%FXmug(U`^s+|XlpN`P3V$e{r8^5y&*IsB)QY~xqdi& zy4<$)9B%AoJ-}%6e|zhJO>AP^L|p+i<`@E!zhMiZbqQ45>Z&R|mlNO|G=xL(WMEMz z%E*RfxXS$A@@hGu`3=|;%4tJlmiDO@;L;;lm?i5(Whc9M)$tYJNwadX`d|?tpx6sX z7v6r4?v5PVv&HOxv$HowcW&k5&vB@qy|-CpA1OXxv$^Zi{1x0Yu5@S6<@#Lty3sgs zG$n0tw@xVjN7&o|J9&d_q;JZ37U=gAb#BLgkj<|{DRHir4B8tlTYSyy6R}ADj`=<# zwOQipC5&;iGo}e3?s9x9R&ry;_3F>=1KT8+*OAr;2<0E-G!of^V_BlK{@dajVbL=0 zN|L1@e#fz2mx&Ro^&7%7wF9Y*c03oYd*cMhSrfzY76rQoiYS+U##*{zx1yS+tpO^j zIrfguQf`iEg8c&nyOm0<|6=iqXkJ3udTPI!S=A+;;&bkyr?+!p1#5Yw*y;{5EbEOt zur5nmR_CBHq`tZ^vk3Vj47~bEW)%NC&qrF(PXag>hRcWQ<~LTJ z@H3XZZNN($dpmc#c#2oNfDJu4NO9J{(O!No^Wey9eHftE>?xGmeIvl69n6(mRdV|E za&u+v@3Sa18JH7fbdQ4b0G7@2)#%C7r>C3mZgPpZQ*^`oxplv`e>Ic`-@gKl50Zah zpig{H^)2j1W&!=shx+y>-Whj~FNf-E&nZgV_tf>YU~IYoOStyJHjarO9o>Yhc zJ5r3U581B?S|QD7l7iy#`@h zJ(GakLPi-jd1MZ)rgc%29u*R205U#>GJ!#QuT(pX-oksy0XT|D@HQ-2eA9%E8nAzc|X-`Tyl5pK|}lOCD?8 zf24LhnM81*&}dqgqtkY)noyaoq`8c8*;zRT6f~eL0&2VfLYOsK+TU}Yy90^_C*^eR z-&tE8195n}@$7f=b#XbFIZwAiN5^LC&-yp+nQ1D7W_Gw3qTQ3gaHYKL?F6{j3|gC z-Y{XA0B~(Gm)v^J5iOg89G6p}fgB%@V=Cx@zk}H8iAVw&KNk0#Wcqa-Q$CRbodLCx zJ>vH1eLupD2_!)Au1R=jl3@EbvpZ(lL)(6{;(hGPZe&f_79a!=#Uqcv6Sq_V=6#!M zL4ZBG;J6ow3mzDEHA=wn0ca9TV0(bLZF}Tk>_5gUMuYxAdT2AAi^KxK12~-&d|^B} zOtjeyoBokGD5Pd)gUnMvLLwhTBF;$Bsqg+wA zVHb=-I(ZE1)r^BU^3(VnyFJ-ALIoxt5- z-0C_@sr_qknbUV=dA#TdY~>jg}cP{OM0R?Xx1{WB1L!| z+e|Qzdk$4JqNfd_wS|#^ufEbupdLqkg4WWeZfFd`6se&Tuo}Rc0RXZ%v1#ieWoB{{ zOR0HAlhE@f*D%CvN=!k65*r3A48FV%GBwBym<4ET=7|$nSie3%ifsK5$fH5pf#UPE zdgOE$P-~WS&Pg>Cr8zS@XqtB3-u$ktU<$a`@DkqeB?CT4K+EtHAhG_aOX*47b=s0^ zhL8by40B6BKWOljn3$dX9E7H(b-%c{eL1=rJ{<~=@^#*v?Y^x2=ftK@laBCa0(0X) zF#Vj7U;db38$~odUa$AKvOW6lI9AN@5YpovDqnx5Bjoc~A4L0ZZdpQ`pcal~tJ3(1 zf`t?fPXr~6iSC{6KZ%5hE_@D=1jCtiUq1~ra`ZJO6Rb*?)O672<%aX42d)MGd+%aY zr1^d7PX4$2b7dQp-!6Dq8(lm|)YmFgE?R?+|Qx%%wr+0iO^k-u&@smS33_z(&x zz>jXqXoSNH#-6wA?nKZ^fClyv&bu*mv*ox@jp;pTM*t)ov4MAv3GbNgXc~Xw&5QkM z9r0=us(16!adWJ(kDvw(nk`Tz=h>Tip2;H+BskIuPMCCzr9Ja8%#KgBOLhb&w4LiY zlCdIW?Qrs#4rP_k4OSE7D4N3&cP|VB5S`T^ADlPAiqQ!8rz9ak#8+3p=kJz-j$uL| zb`#_)XDWQhc|Ui?*O%K6O2awS1J5+tt`~{tr<@9eK{cR1a7X|ozw2o@3%5+=sJOwi?`JNtk=cQuK@_xPGaiAGUh+~wS%C0*1@=OFY{4{7$ z%i9>xR(tB>)%{RkS6?zA`PN9R`rUrcuMI&0+S>*}@%?a!RM*LGlE{`Y0*#_g+J z{sMfx(eA5HH)odqdjmv4NPzEHgsR2^=$*9~#XZ3qD!ttaPwd8DQg`e(g2!-;hY}5b z>69%j$t3d55+^YlEYVmI@G@LT^GBVkjpElh`N+RFho<}&K7IY%KWFZrKlEGP@BjSc z9!G5Ab8gJ?Xnj8}F3+z85O9u@#3+IS9PHxxYCY~qFfb^Nd)C9Pr!yo^r@JrDIQl8j z1}qAAUE7@U0)8**HUB=2pjD8^9vEJAMfHNCtQOT^!Kjjz-*(D!_3(Z*pD_)?jqc6bd6>^XQfi!d6rRF5q75(>z*bCNe zbrcMzNa>M){b$D!2)68!3Kh==ppi516Pv*+#Jn-lD80Ex29+cDNhP7oA z7l|T#h-e56w+0o*+cI4vd9u>I>l?Th7B7fna0|6i1WC}=Cdgjbm*tANW|(IIF$A17 zRv~q;#Y^})KVIC ze&7Xnn`2(}ujUJ_MS?XyU}*#RQiY@2KMu_ao|mH_rXnBlCeRFGL!iuOywts<_al@w znd4Eezc>f82BZQmyIyQDrf_wj?g&Lu8GbrbKD1>BJ%c86Mww+)EJ9eHxB(eCpmi#| zRZfOW0UL|A&IA7{>#^x034|0>0Y=s5t#N;<&wH?P>GB ze>Pwyg26|P@jY1mh%6znBO(+qT!B(!V|dJ{uK%p`0(E;UF8qRx$*opkhZG{={IQ_$ zj{@FO8Fm1|m49Ew4$^o^ShXi^et2`XzCDmR^T0AQfp z;G4o3!K`t34F5yZCQ{5Jvf>oWJPHZbx`~J>69REnKq;yvxHOYO<%!@}f&_>G6uMcv zHkInG%j(Tc$KWD>sX3;{$ly;6PRDCeJsrUI!DHuv+QD*v9nc$mYSeLD?K>87-w;U~&K##2aI5f!t@3W|7jDvo=K^Xr#EP*cPF<;N-nkQ4pyC z{aOy`v=_S>IT||}Qf@nin=deM%y`{MJ+0~!cuqB7L2Y4rf<58XLbPJH#x6S6xY-thPpt>Q=jO&d zJ&EElaE3{k30G?bWW+flihYWb3_E@HJ(dPS8q`Mm(+3ENKMRqZc}+8``1mj4E@v6fn@o_bLS0x2Ho3RfqR zL9c-|Dk$+W7X?<|Y!ol7LT{VB|EG<;$ZE)Yn~JjwUv1-JIK1V5G75fI%$9-QA!WK? z5KNsLW(TfZ^9nFbBQ)EM%go5S6J8a*`oz^wfs=gFRU!@uHn@sfaMir@Gy;7AMH#h1 zC=dpJ-RM=J0J7z6P$tk+c2rjtj!Zi=De*GE((g94 z(c-2}aVo6qfRa!;g<^Ma|J|8{Q)AgGu~Laoc7=HMwCB%85YO%M*0DVpS1~7cQe`s)tA@S^>4Sq$$Wra^flx zBDTU`?ZTziPF0%vSUx}(gwBoe3agH=c$8~I!6*TIRq)1;q-G;jvquNd%B3{!05?LQ zjui=Yt5JsOC0NFd$_fce!>UmVpdBS{o~1giPtLvdQ4WdLx4hkkTK@!qCQjM!Ihn;u z)~*ihOuuoI_&^ok5QRL(h*{s=S9Nw}7{P!g7{<-waFks(5PMqW53lQRxuR2&V{wt) zbRUmBKQmOH-SDSMaZF((XH=I}JV3>w;gu@kxJjgJ7NkI&Pv!~J>{G53@7U>u`Y)r5OG}!J$x{Cb{{9sjdJB3+Kg9$T~PGt$9hzF zSpr`W$3=?meQ!3Q1ikgx(b+~prRB8theZsS)n@fz{yNA|M|wx&)cQml$^ola{OOo- z)E0jLqsqt9d-nmYOJO>>Lh3+Z^LYsb!75L`o3tO_Y zj$8FC$KtTTy@1~xqS*kM{ybhnoJTGw05TS2UcQbNlv^%->IRZ;)MuYsfyyvLU)Ri! zS{R3C;pP3#m3EZs<{3>V;k=?`H${xlfxhRl#B*3x~*kj0o(Llva@9TdYv~~T5`q@ef$jt%l#7noNwy< zsC&-?GS}w(N2gZXE6m56Z(gGUwpXQIU=!tY5pX;@R;7)_$Xyz$x|=WzT{0;;4z@+2 zQ67rb8QM;f>CfXoQZ$V(ip1JfWXrYrMYGk$+JCiKUG;M3+!KsiPU0V3LnbWUtD0}5 z#SRD~k^FpBi6D~j;Yw|QW-H~pKE}s{L(`6ajMuBG%5AeG_%6qq-Vpkrz2+4E-APG> zRQgej*q37Cm z6GH7LCG(A0P3NiN%+CaY!`1G(aPR11PhP&vhP7Q>=q~WwIuku*v%c9)RIwf$y>aUL zxHP-UpRJb@$F;Clu(bV@2DU2@pABZbw)>Bo(sM(tbTa|&^E zy?Eo0h7w}7!_1+cl7-r@b*RVMMaz8O9Bz;OR*-eNe}NkdH`()zRXw7uxYpZkzWXa& z1xsf;qwzc6mfN$d*sOZ4n<8Jgxt3s7@HVrKB!jk zg`w0}vXoPvu^fjP%|=r}R%u0v`L=@mXS#H(Nrx$PTv@tsZ02D^Ep+J4(ZqTwNm4OFfyA~o>)nHFu@lmq z&(AJXNW;f+H=LQt_5i0X4Kg>8>lmpkRexRxTREA(`Z&c%-?40whfRc0+Y;q7GK!bZ z8!;9G_L@sge_01#o&_XO0yd@E0f$IuSNM665)Q%tVQstIiywt%4*BqN2WBKpghkC|`^vc4=>3(|9T@I)x~zDU%(jRA6%0_rQ^`J;^Ir>&m)ZG z(^EAC15BG_Vd9|d;^Uejo+^W@@NGDM~}kj?%!S#?_T>ZBxWn9-aWi& zu&%Tskqc}Wm^|3JbBE9~p+|x1DcPVKDrmxb-^W7!4k|X()iz9xD|)y983JMAqGPLM zK3al`?Y>1`2(GqIA_M`ygLQQL}!@^cEGFqN;3r<1$XTVr?+&&BR z#M#yGTn3djr2w=5Ih{hQ9dvN$9?jxaz{Q@GK%Z4j;D(JT|85>HQ~eM>xVhTY%R&Eq zw)Tr`6@5Eb8z2_4xsi03q zsZ&vj=+$5DWlW1^l1T9Iqr*9nl8u^^JQuEaX^(VhioG+VRgq8^>^w8XM863}cfS%N z@QOGh$0AWes{m3uXPgR^F4#NqB3*T8R5T-u2)!SqDl!8ASDaAEnV>;p0scfQBhn*e zQh@lFr~u>{(~=>+1oR!70XZr=BFWwtb>8TfE5Czq)2|5S&LaR?)TAL709(V04_*tW z;Lsm^2$=yXcqeQCie(@-ROX79C`VqU%8D1i^co`qu%bOuk^8V*1M;ebWQtH{5gGES zaHNODPYx}!Y(}`Y2*5IDRG$a{apa-!W)sz5;vj*MW0Qo;vSJnrX^b*3T102mGJ_h^ zz*Z|RRB15?mWs`c<4AzTd{bV6Fv$(3*d7avK}|HzKxe6v|MbQ(UosF;zdYw(bVjL# zgDE6ewB$UK{KN?Z%@*{hqwkQ)LqW)7Gg%jK%J8e1z@12`a`Ay+)An8p%k%sfgtzEc zq?TF|dD+p~kGAdO0tF?BPJ(5kks7ujh&mTY=A|c>a)3dh8}&w#MeRX#g8Kt`1iod^ zB6wT#D_SOw7$+85WK0P5QX<$M3H1+#1aQDNm{VC2^Dt$KT83UEUJ&+T0*5jH)TgPw z->0FDBuU7av%4Id11AhMGMMR6lM*?8ROJj-j!sI} zkslWCUz}iG1O(-nlrb_3%i>!gG29?llnd>)`7d7gM5|Z9)B$IHtM~9OQZ>uch+xb~ z>9!ea9q(vY}CH_3X? zvnPw9lmmk$R9IliC1I?AxtFE~NYqcTkqh-8u!}{XQ*%a|Kc0+0Tw4PPVlXShIvv8S zbzl{fyqu&*>YyGa?dcFC#S8G7jaVTZspwRytObJ(=qg=$GKBFXIN%jb4)TG4Ka;W0 zdx(LUQl?XF^Ncv{;@{unW8l;mm72g*s-lfHq|uCgdFP?6X6cx|oAi1Bjp3;n-vBZW zBcQ-b{Hy$E*>4hg12@7i;f_Awbe!e++qv#VD6W=XC^KMi!mED2vq3o;R(4EJWnfGl zeMTr{s@XqS7w~Vz3b@32Qev_-01XlR!2l=8<%uPyNG4#e$QP)U8TAnMf=P#@7$XtH zD#lVf1_}Xtc?DX5&US0rrLRD|>UIUY#s_G~&>+J}X{Ui&m|(mzwMeP7Xu^naoTL-0 zS}Q1jO9ly$RVAPsTo@*jIPyM#vD#tEOsZVK6YZlpe-`j2XQT+<}Bw8(452b6V6CGwqwnn7)eak_|4W9KJKIdBFs zp^k~vt>lSkZA8G?(m4eJ_X2{lX~H2iaCp$HRE4}&mmBN?cwdfuVKnh(H{CbX>8%?C zg^}?VdEJnSFx3R`sGkPtxA&M$gh*nFfOhhs+HuNJmy*knGKYLQd&MZlb{U7DC*lKG zwP9Z3P`C0TI>KZ!L0q+Ysf53OFE`2(^+c54CmTfRm>5-V?QgxVVhW@)4!`SO4~Di#Gx;Qze) zmF-!_na@qZh=%RoR7Xf0be4&^m&LMs7qO_pLX^yVx+tlaTZK>2s=9KD$D*K2kuixB|BymeqK7ky{UJ>#?{Zao>F$ z7VCc0)*Q?(Z0keiL}+($J8r)&qEFDwB^)>L1`7B2Egb|OB&UeYc&alDRV8~W^J13m z2_xfp#NThtl6NPkjwq+qn@m~TN|JmzJmrX}bhJiAz&N%e6ZP`s zBt31)uPOOcOKIL##PWopYm%k(w3<*)>_E(o5To4$2{dC5ob1GYd(eXi7s7Hy#E>Ir z_8}aiZ(xF}9*xizdqSqTHh-B5l7(wXoIJ-gTNm>-858}+%^?MdO-v+yOP!LrfW>_v zvh`dA*E#CdPED$4EmC3a>^F)iLwcxmKyVc^ne@&t13XT7SUkSi#xgn6v;Ya6^46wQ z)thm|q_v68Mc~~2tJQ!Ak;MQ^03Pkl$IF%TZfQh15;7R<27~NRoxXg+(iPjShe`^p zY8k|-YAh!t$d!68HrJqy7nvU00uO`*rP#71*>jJ5W5?FbB0K#THPmmx24cJ9a$ zDA^D#jlYG#f!jh2OUWWnNU9p|C$mh;<~RcIa($;HMSU@bO6-&cN;z)9!O=~5^K^CK#&{qFbBn#=luwR|Eg>W5*mgn73dPTR zfTYQ+qE{4mpz$UU6tZ2Y2skSOz8a^LB9}ZH@Z7bNxs*on`A*J~iDKEiA>N-b5Fo7) zXl4#i!q9Dd(qK}&JZrVQkC?xmi`~**QcAr%ZOE2M2vfCcv>TkJ&x(dCbCWhR407u9 zrMyAsNsY{wC4lhGx^-&1<7b-&j)B;Y@N$hM=0jcKGm^vkJC~sxG~h6*-{)#&18A)) zrsap~^x^C3>h0*oQJpm)uTW5P2Y-rBROYXvoez@^^b?@ckh z9#%S40PB2Zww!kYCC!7eh2Z^F zae}%+_lJzkvM_#+j&Hv+%)!=dbF2%_w@#pc-kawA?QQfjg4-lR#gvT=o8emPYtma+ zb3QM6$RITVTS>eC8DMv_wQT>1mfq9o-qTsudroo}WbV#sAJRxgQsFx+!@EPERu-A& zDu=?`78D^Gkw`6ER-YpOe5w@rDnUQ~Vl}fFiTkuR5Z4W{w$fe>>6oeef zonu=uFe=UgAXRc?$Tg4?M&Og!+AM)_T{1o_JNQk1guBbStYpeynb``VqALb~ii)VP zB0$VQJD}vz8vqkD!6*QE;#51>6lz=}#SlPFfqvQJ$^t*SW6*%Fy7HZU!=?@%u|3wE ziS38|k}Uv>4Ezq!wt7HOKJBi9^UPPcyZlGQ{!?|qvlXyQ5-C99XX+ChspnT-Wqvnj zPYcsn#6)@EkOOEja~|h#r~==rW8dq+MwzJ$1i6M0{ra6-Nd*$rj(lkk&z55eW=tq&$et0z_iRUe_d;2OolB05arHpR_4J}Gtzu(d1KxFFAPatw&Vt$qO)@>PJJGI{44_odSC3xP@tIW1k zYb_p4HU2I)W7ajG#_xc6MX;7S;;c!qH1%=~bbta@_$N|GqwtrIS>@YLS*5Q`)qVD< zEdXu3gD^z{yi=yqWmuJtwgglrzM?9uQ=T*-p`MQAg8+L=YXoR#b^`0z5^!n7U1hp8 zjI?ahJRYrWY_isN_upNip+kWk(F~3%Z@bb!`qA>>H*{7n22mz#^1z|^rIFUr%B|rR z+++73S>K74&fEK!NvJ70QzWU_96-V(M0O;Gx3+D7x}0Uzmg(OhV$I>HP#-T%b2~;=ZRKFnHB-w| za)650vea&z*?leVr%C!qB6gvJ$X58>tENW zc7+N6O@2~T;gkIlPr?CD>WQKX*?$KH=B1n)e1PSA5@pC+)vq;dQ@K0jlMzF3Cd!}V zuEjxACJbNKRf8^&iEbt7%9YoN>o|7=1APIB zrsZ7C?u5AJlOw5u?e7R#-ii@5cq-G zeZF`GqEaFSq|IAEXW-QuN|6Ugf-2%jq!8e1Rno5xjiKZ$KMZIoq&S~fN%bCHO1 z|B$jwP71a?0iOX~2iwfgT4lzKn3pYLL)pWXjY=Lt)hEUHHig_q>hMWC+7gw;-ZMy% z=~C8hLDGDH8WpyY>^~YXanUoL>Oj&E?zzi$7_VG1Y-R?#Uw(55J>*^B{iST~gZz7U z7q`xV7mTcEx7;N%I795{d=mFoT5=Jl4kvIf=18b3k#EB;^4|r+7Mm2F z$SNP~nD%E;m-^hSv=y>^a5zFbswD`VnKZI3WGm0(jm@-ojjNJtENy*p{kGmVCoFBf z{b{w8tM)^vwH2$xz!104F*9|ke0xLUnDH*^&s8@P>cQ`n0|n8ul$j2==^Y&mY#P4V z(72xtDF;U@rstW2>-gT)yn;6jMzok{4yh3iu=4<$493`&X-3ECk(kyJMpwoZ>X!=1tthJSkupUdTVHM}fFq<;r~iks zcZwA)=(csIZQHhO+qP}nTGO^|+qP}nb4~lKKR4%O?|n~l@5p!y?sCQ|_XJ@V^EbrN!qcxV-$%!a#YBp|P>0G+v-EF86wBBhZ}34GAs zK@sbUWMpj5$*u#G_<|q`2KxJPy}h;P?jD!<;>xvup3ppy0^|Xgmv?C+*Z1CiC>2p2 z=aPBBhtbMBiC^j5JN;-!zIO*rI+Rhs#LHRLPcC%hQ)e3+q!;i zi}vQ#!yTD5u7RPOvX1X{0STD76~gPpgsO|eyA&)Ao{e4*|Qi%2A+}Ia}Q1Sd2{;6~-l8 zd|(cjkd6BL^NO{GYZvLhEj^Q2=&C8RdQFF7WN~o%b(sZ&OGcsDtw#m#N2KZ6%2PGp z|17Mu*r?SQ8CUs^nb*izn*;jItx-Ndq`*5mj77i*ntbh)Cx>9$|x+;X=pp&1; z`rETl9{6dxE44h7q2vkW%b_3MZ1rC&xfN02b7JSS3|wJdRGZG87eZCOK9(e551Z!D zscK!~&Bs?@ApE2do)`MIeZ)kwoYyk%&+L|&Bw@fv%ftshQf zZ}|s0F{rMV&i92XsXt=ugA3j~XXsg=Qsh|dRvp#}Q@K@*c+rLXlzoD4Sw#Zb>2rQ+%0alog;@&;(7A;;=tO3WX zcekRw*yPR$9+ri}2bQ`R*?&_s6==zNMN;s%2rMd*;TafVpKpt^v|0?yMeX^X#Pm3C z5WljS0}jjaWbM!Ze&$hJxENbnE!03jH(qAgnS=rfw?(sT)fQjIsR>(Pi(r`Y!zT7U zIJYw%E*@~`{V=b9>NW=>HZ-WBtN81dI)1md3<{6?^*h?TjAaxVFgaJ5!sM#!UDKZp z4a7Tl0m?uiNBAXOsr|RyYM#nyZ0dF&QtxQYYeZ?X7eUWRHNWCmz>xAx57gHBU3h8v z?$FbC(YNNVSqO4y3#5oqZOC91D=D50m31{eam-Z-{o2|Jh?-__gQ>*3Rm#dXrTUVL zO}Z3si+Z-Hvg}EpHM#@3Xh;we`@6h7Q@jM}D(M%oNw6d%ZUc6e%z^-N$s8+|++$9R z#ch!(HO%pBt5Poh8u#*;^Y2%JJPHg~=sTQy$^##9_k9HP`r7u{#bBnK;Nq5Pse)*7 z$O>hI6bFSxqu!4~)50s~QYXj!^0$Abcdmv&FB+}8jISG}J^Nbd@v{t?Y2cdsJG7a( zqFdufai6HdzkuhUG{9!pQ zSb3#Awk0&Mxbb%gtgL&ZUz;uJ5Zq79+gAkz3!#g_k}mjmWcq~OKeO+)uHQ=S9O-D6 zPrEfTqBxn7F5*3NEEDN_)9=;vjf>1CRqk((4i-Nxpv|!uJM&^oYzh~h_!qLbNXH{k zc~V;W3W{w_9Q?+2pl8j>`*^vU5^r3F?ryMxELUQ0mVNH!NV_k}KVWx-U?UgkzU=UR_hU1CweeS7s42rmADtsc&N3I zfyV0uZ?uMInnX0`n*j;#QgPNel(8?yGQ+=M*jd>H=MH^SXx@sCMdd=l6&0%-byg{MK^W=>+ zk_wmupC~QN_jVQ(4Uns2!Z&DcbqgJLuwWNw)SycZOq53_Xs>~-7b&6;9{ER>6fcOwKCSB!>cD*%o|oa+QhFYA~F{mAXWyEFA7lZ$)& zn0z&*C$_;8?yt97_dq|k^`ntvTi(^8m#$_GeAU(Z{?{8C3%91SKmEglXF#~`C1F7b zA)tPlf8^ot{CvyUDSE-3ryNxpc4U^^B9qPT^ObT+H;ei1IXk%bc@82w@*^DhDPjL5 zYj<-FOh3{B(rf?+!VKWFy;ff0KA)*~ALm=%BlG+a8c5V7Q}mR|k+NROGSVE$h5uoS z{&~l$@5^Wq)mI}69tELT?bT{(z`z+>UwOR7Yenj|$|}7!>T9}b4v%HT97bCX>Ix{~ zC24RsA^9fUw~Z};< zpzt_LSlmaMiY`7dw4rt_5JO=P!x(%My!!#@hi}rwo3=(z#>bgpW;O=~x3@)ZrB%kY zzs>NgX&R$rb3}qRRd=E@j!9BLeF(@t4p#j14NG0pn5BA+-cCmCl}y1FM@BpS22Q7? zTveL;i;77#_CegA&S_d_w3xMKUc2-JNtl*^kkU<6c04@zA4w=S zK$3KBT8tn%vJbnV;yJ16I1QNQC`bWrD*a2A*H`Zk{laU=j3Qtr>PHs69h-2bliAx} zL(vlJ{!fyyfFS=b!)m;*MH}fG4bPiWjCwezg+!N|vSUex?)DyNd-|W}p_7{t&zlts zP_eP5N;CB}b#yNl=yrZ>|LxOgUfe%ZXyUc4q?sOwcpsV4%y4RUm%=?*Y7u7;+Q)vy zZwg#D9Ia>Gt4yO&JlivmEwixsD{ab9DyMDdG8Yf@6B82Bcl{rxu^(b!A5tY2Sg#_o z9>$wN!|ryL#}lstHOi%(SdH&j2nk2q1WC3IUsF2I1=&`HStby)4qOHHy4gZwY&%M> z&Z$~W@#D2|SAc)sNkDXIBC;xsdu@c+vFAJ7EUw?R$Y$U+QK{Gm$IL(wAN)kJ=eJ_4Ar2sivO|BSOStz8O85 zgF%bBgdPo?87#T#L#mjbJ0)>lm3AjAnRC#ULVTiKX`d^K>Q$3A4yeWaMMECXvMGb~ z)6(S=!-9pM8zwGLO{x3?4qrbe5Fl>8fC&08kNo>*?Nk&CV~a-;wg)@*N;dPr`iaqI zp4ER9mshpIA5Yjo+^YLV1U*2(FvV(+R=P)2knkkHB5rLqOp_&V%93J*=1je&zdH#; z7ErjUe$_qyeizzaZLx#K7rs*NQh_qQwZ37xMtBU3M+eV^BbtrxQM4Q9UJO(%fB55) z&G}bl_?0fB67}rRE(Y(7@id%379i{j00LLD?2$E$B%3wmdkr`FIjbe1UDKseo`17s z{CXOdjBCveDp#6J^zm%UCBS^3NZB$S3+*|S?1gWZ$`PLAon5dqP4~dKtaQJUFIj7* z7g$3fulNaxd6y7%%M-Ji<}PsU`=P$6WU>o3!WG9!J6Zj?Sw7O?A&&WA_kR*-=9MWk zxWEAbm@xnV{=NS%*BEDeW9$Fev(#wV{-=%er&eFEn8F4;w$bp00b@Lz$hN`Aejw3~ zI#Q^l#92m#h&3_N8s_s~8)t<(rEJ%SFj0a#{9TT_*YK>|oJJ)Rp*?$bV^MH3{krWN+C+HM0-RDg3;Q< z3RfaXZyn}-XF=xVRU)h|F1@O!V8cpXp$-`o5<<$Iz`H%{Lhs+)0r4tNoC3fg3>g$t zIM969^K3P*!!6Z_@{VrMQa2ilDYt&xl7Zpt6jL5{s!Qey9(8aQFOGb&J&^@Xg&xoS z=Otwy4_g6gz5JL3yz1jooaEW)M?qt@vv6aSZ;}m0HD-zz#85#7*`kT$kT1nLa2DWkO9bJZEB zpyiXTSL}X-0>h5vIzaL4pKS;5(n?3q%&D3REe3;7*~R!~|M41EUE@6v69) zRr&|>MD71B)=endkK0r*c!6^6qx35)sG>Ro?5ZTCYGFy*84#by@?br;jnS{wNf(F} zGmT^ZYHm!nUTYhiyi-74{4%SZYQWFZpc$E`+5O$*ZF}yj6YEZU*!^DyL%c6%pF{iv)PVAMi2i3wc2Zt3j?b`hyFb?QfXQvH9r-YXdT`ji47Pg zE?yIj1P4iZ5^_DRLM_yXo<6drlg?`u{iItIj~O;%k2IufI}r{{^)lBtQ@QSW5>x2{ zC0Tw}gQ7dz7R9%6h-)P4AdY;VY|-+3y3nPf`*iCSwF_eQP27Z#M6F4QhEKCoQ<2K6 z^}(4m=51Q-t|7CqP09T{r^(tdhD1k3Gy-jx$UVP|OS?M*81GpM_{9gwG$-4*Gba1_ zxUFh|SBiMK<1Gh&Ga3zI=$@-@z9{p!IE$iRzLZPZ9bF+OfAw}@TT>{v-KDfr^{nz$ zfX{u4l~Gx9RR6GYeB7vU!`|Lfc+hK*FX4?pI9epYZa)z)(N&%uXq2 z8R3nRzOQgbj$|ta^}+pCD9%bGgn~m;u9`qeGq7jD8(uRyo_Eol`)KCg7pZ);SM5yB zIa(Eu-7bIkkn=lY)iKs{hmZc{><>>+IyFMha^agl z9Cy6f_JKBUYBhYZd=QMBOJNe2_Q})YJ2?hxb5!Jj!OD>==4sP?cm^Wf%WAH z^!ahTIO?A6cY2V_f=tc%FrLo}rV0!bWwhjTbp7sFVp8DB=5Mp{yjD72QIT+YxB8d1 z6FDFUNVbfP7I{$wcC7t(b!<*$`fiak=}w+eF8Xp>yZO07$fS;BH(iuiPO7u+7=B!J zDos>LiX%JTUb0wE5$5It0$-n+TVja^*-D+4IxuO3W3miwHpUw+SvPW-YGqvpe55~I z7V7$X_*yKJ>->Ii>ewe{vZ~M}-&U8YO*67W_5OA*;RyK66@1pYU&hqpxt%A`b3IP{ zESk;O=Js2)zfNp-$_Nkk@^yD^|W62%@L!5_VVxZkONP#goOJcAD|St*D>` z!-`8Yr>Fg11j3dU%Iwm*#kG4WpA)-aDh~Ur^+Vv14FT= z+GKlY#<#ngSwK8!&pAy z|M!wWSt{u}F9-mD0Zae@)c>;IntB+UI=EQc+x=&=?a}z(%ml$=2piy9_GRv;;+%JE$2h8Lf#&eb@U%YxaPF5T1+}+!ljhiu5qJ|*<^yL#5ex;(Sk=VEz z*iq9?xhNGI`3Q15BP=7lfwN0h&JcXrLTrED=~3URT`g~^YkH0Lwy??UcbYPiUwA_f zq8`zJ6AF3|t?mO=6h{>XqF#83R1v2_TEB~d9J~cr8S9v+Hb`7A0Q1~SEJY-F*3~7nZn37vZhm>V)%H!dS-G{7}8NPWsUl;Yy@On1wE9zCD2v5Jn7f7*T11 zx;=RDX4ATwqL~9JBWnOin(NdKUv1-=3k|A6kn}nVeg`kMjNCDt-#`SzU8@kdvu$-E zk4A+^#+%P_pa|peq&I-AH;-y+5XJq4^fvxmrd|UU8;}BhFBNJDNs$8J-yl5&rmUxy zBh5^bS_^U@KNESND7w?PBeG)9V@$ZbD%+-GE8@hbfJIr}Z)b^%h>@BTgSYeMF7 zkP27+1e2ztQ_tlf0S$o#K(PYX$R8LlMno3oqK7AX0BH$oTDLS5*nTK}K$U=UBs1n{ zXfwV;>CVWA{mkk&q*qG$L{i_chIOAU;30=s&stU0=JJ#Fvew7f-;?M-M&fvc@mX@T zrH?y6b?bMEy!ZX3{4)g0l8%2XaEyX{>QYC zkSv+53*Lqc!##FPdp?$fV%$0^HpPlM+C>kLfo6Ot$kk?c(3HF1a{Kj$on`_xr@HIz zRCR8oSJe~@cQtxl(p|01^iG^8A8YD>n@^a*=8VzKp<{ra@XQ3CV6~A z?A8E%v`oeGAXnLcDhBpap7wGPb{HS=TS!bJV$5LF zLH>uN#pM0({1mc$lX%^F4+;Pmm8SU11Md#zY>zk!2N$lo zRmH8+T4{~3?^((8=arGM{WwB3M?+KvS z0u1FNY$XjY5l|Tkoec)_{w?)^@_R%GPO`Lws; z6_L1g=w<+ZgQ&7E`0Qv{E7snWco6pH$rYeO3OgWI_$Kpd`?J#@myjM{kC6sku0**b zQv7^6&WR=P&E}=~%`pc@BgXPbg%Os8f|2YXPPP3ifq)qDn)pksr0zFG*SL>kO#or| z%+`;x!h;5wTqp}Z^^?=52C8mR*bmw{9VrZ1T$cVYmS^lC%AY4g@D}ZqMn1TPpMpk~ z5I$Axuoi~=g>&k0G+bBou~*ufgRDil#iwcC&nD8n`G=-Eb!m$QX2&|bl-;TUaqEWS zkk&S8-ivwm+I;WwmT!%f1g`p?3aW0>1wBR?*gbxK{PtJ=v8{s;+ML-bMF8WV(!f%u z>E|8!Bm6OQZxZ^xF5yi47$E5{>#RL|FVf!vRF<-cY>?RtZ@|E~9wMFNck$*GKzy@< z*o0S&{`~Qh~VgeP@Bl{-~P@n?<{3AX6A929U($vP}zp4Va`hp%1B=)hL zWZw$y2=)20Z2;ElPbWk1AWXE1aM+SAqEs>LHhsSCB%}$6*)Bs*q=+Nlw>Jkn3!b!6 zi6ovynVF=J2PbmNk@GPqqD2};yXI~gDaq)HMIMA(C5dS=H|{dCo2V0a=1rQTPK~zd z$&yr5BUCB-wG3yVRTdMeAZ+uc3XTHqT|s3kj*7g96-JjDm6;1n8r5bXx$i!;zdz9y zB0CIB{+0xB{6NRq5!nhs{R=YoIyV-w(uk@jl6O||%Ry*(Q zu{xlu!Faz!NV&6C`Blu9B)wLl&c#BHqZE)!Pe&hQa;6gORvZlDjIDWRSG%03m9a?~4#41b`TI zL5RVUEM&^nt(>0X)+0-$`K}G&>y6!%2qw+CiFNEeJ%Ide?2!bn6m={@q?Jca@bvU_ z(J@YvP=3~bCFk8R1^qfemJ1Q|Nj-l*NI5w3{U3aMW3tech&@Oc2^E#%>g7x zEi9>WBcnBKi6>Qn9vk2ZJ-Qp?F$^E^rt4~JFRLnfRl=~4{$M2SON>4ebHa}!K6uRA zsy_FoU6~TA6-XKim`-}m-uO%sMebyAHESUL#r14cXOI6#!rKd>W%K90!%D&D zZ`*C*&Q`K`C3VduI?xJDGD5h#J0j-9wYkHUgwU&*lNx_yEXcYYD zDaKT3;jM9BEVOA&EXGE(#XWYl#R(@~F*2^$rvD*OKp#OZADvddxW!v*W{!%;&EwvD zPTj~05Z;n$L|A6Xlv`=6izE||FblOGc#Nu^jaK?`4nesC%Y|#p(!fUsX(ykk&`6|@ zv{m0fWNL2vrKVDE!FtXfK1zX3x>=ft!H-?+vCv48L%JmIjBhC2!Sa%COH`b65 z-;WUb;%XRipG1b~a3p4u^T`PV`p3!*G|5nFyaaNoU9jDdSwzROedXh>ln$zwGp4yX zS_i34QcjulvS(FTBtdX!PZ)I#YfNY4Ot@)iLx^ai;D=SAse#)+i*0@p(Dhs*PP?@& znUz&Fv8k=@iHb}#3pr4E2U-Pnv1};El!bLyr<;?!vr|L8ceg&%GS@W^p|HeeS+EC; ztI=C4Xx@tTQ3>N%2!tBR#sZfHT>qR_7<=D2V(ST__*NC5WeiRiX{R|aXhZ-nthz7> z+(%sRS_Ab38x8R*D>RA_$Sau>!QUbRwvG#;Yn3p-vb$LO<@hnyRvb+*F5E*)U@rV8 zija7?FbjhQbVta3tAt~q$W*$GiEoYTS=^TZa#<&TbCA!!9lrt%mFTkuZWKKaus4NVI>SA3? zo{uW(^VL*aKtpN)t1{b4wQ zLV+?MyLx-Jp$g1g{VKKEV9p`WrkHOE)MnQXHJxBc5iekat$DKH8aqFt`Fv(zrhM`oxGC61~an1tHYi@>SA#sm#G28} z`M4I$0Bbp@4Qn}i%c4CtX?5tpY8t!g$s1|0#JPs4D#TZ~AhH=lwI4vpDUXVGa9UTL zC(>D;ZxJD08}kZx?iL*9A*DgBv;@s(`^+Ke zmB^$yzQUc{ucGm+?r=mh+MvVlAPr|z2XmGRf4!^1aPqp?`CjSX1+d+MS#DE*8nE;f zKeKK@46vub1-hCzVR}j>1%e;sYu(#Ce?Ld(tAPf?fz$|o#v_e?Pq`fmd`Y)1$B-%M2}2{x3*p`-{z+I zgZt-dp;LdzD3urUV7^}$YOZ({-fvue*EK6oZAAa>XST6=1TM2@6>Un(d&S9lJjxdA zX?uHn_*Z@x;DwbvOq+VShsTBnG#LU6d;!vs1UtisAlhL3(7 zFAq7Pzb%?FrSk_I+x(GnfLV-t&@nt8pRx~ept1ci9AAi(M#2#H9PV#8D-YT}&qGVU zDs&A&-_;wIK&rxm%a+8Xz4rH6Omd-Ln$?tClvWADKaf{;1<9)8ios!LEF#hoL?N2O zmBx6i-*>i(NPctsFxWQCAMS!yN5Bvu$Dm%AKD~(j5K#}f1@YmTtEo5fAskk5z#5Vb5!H`LxcK)u$C=apEzCrEy zG1U@M+#VygD_S>H)pShLyAotz_F58)J*P2qp{0r5Pg!an>-TUASf0jGHUyetebpjI zRYhQnScN)-Q-r-xge(MLzFR&&h-0r?CCavteP1F^njw1VUrRJ4rLmwR!|&Ez)Tw{W z*fEVRxa3kp9s}ZWz>0`-YNm4i;_aeHAp0>Jb8$%z`q@dVig2wqa4e_` zrST|95@()8@AH9#i*9Fk&W*a6Bzl;gKOj-Bl6q%VGpDP5Y1i4&+vZq1@fKT-gNSbG0tvfOA1Qk~Co6rrEj6b|HE-msDshwtA`FO`aY5F>0}P z`x5M^2CgR>-#$D|ZU2DUxU^xy(Y|rF3DR+%4SMZ!Kj8m;<+<+R>(%~SakPN{op0x0 zXl!k0Zt6_0uWxB*>7uXyZwcDQ4nPeuAc)+(M}oqu#^XH^pgj@cb-#m4XWB_HT1qv7 ze!j9<3R2$Mx}V-e!|ehV;(0)XK-66M8pOLkxfu+4q5~;vabKXXqcLi^B&G-+5xXxc zHiYLO;EYQ3vtTRCCB)qAdj$%6Qq38dg!}=PWg-r_p=zzc%kSdRaur%^aOn^)Bov=`+aBK~Aj_cflv_k;BV_}_5?031jK%l!-S|2$;> zzFeJbY%GnK>HklhM*jkKuy=C#ZxR3RG5#N?NF{Zg4tXE|fR=xh*Z+?(Yz?hV%`9#H z<5A(NvK70@fZ+S89<5UYLMu{JDTTVpgMvy@T-miLouH*^FkakF!q%8m+WoY3r7aX- zgGca^&B^TSldaC+#~W5N-TuZJIC*>&XBVy@H4$d}3SJQ{C)GNZjV|${%NrttjggK! z_`Psl9PnDNXWg+=WSO*PO|byRJYEtcMZCOy9RQhSShZziCNUF2oLH|q4g&<7x#a^D z2y=YOZYO*Ac~n9Tt%Hp~No#_UK73Bj`GR;sD8Ec??!b!Cy z`JoDh0~kplt$}pzt3X-dGL4{tu9L41OU^g+eDQ;wAaL3<`38t}lL$Yd$uuV@0gN@% z-@+ZTwM_5#)@ym=$M$4SbAdO~zVeDqO_kjN2X20&O!reCWbWtDuE-Ey$Pt7kXln|f zhSE4{BXI!cGq6xE3vb_YIEt%z83~M@J1%}*Vaiyz39yA~$-F61C3}1>hc967gAPmc_jSl>b6)#$lxu+q5naq(Thh8PWl)DZ$XzyN zRkWX#gE;##M~E`o8_Dj#mOp*!_|fL);(cn#>Vqe54o@vE>aNK;h~9#E|oz* zPCr%g%cogC)-WqqB+Z>JweHa9nE$^|NwI-a^Lr=&fU|$C^aTI6X>IRhV(MgSqHkhp z{GVO4MeE;{H3!m9uD&1(g$+Fl`NdA_`hIu&j%_5gTN~x3o+CIhgT;ap^N^ zorY9qcXK9jzdRX#twH*FNA&3*)~H7xLr}{OS@^ll?+kJnVll|b`$f|eGo(_3C`|FF zVY{3#%z0!D(Fc^|R8$lGAsjv=QORlBx)OWZJ3nH3&dOv4F8w1Kli$_OBP_i4D zaYV@3`gVOy`o=Ym#R%ebHPP79(i)_Ov&Tw!`tkbx@v5$sqBPJ3b^JarPp0mEoIKSo zmu4`7^J3I68J2>At1&aosV7rpMD&>K)+_zEk@JidldogT?ON2h3=&i{-L!mhi)L@B zdt*^GMr%Gav!}@^V-Y`xm!#Uyx|B?wIH<$`dpWqdn|fisv-;~YN;3XAIB~9#pV=k+ zv7v1S6vr%ZjHT4!Cj4-I5r$*tE*Qvz6qcho3N`dbNKA>ul^E_I{(+FYP(ath6|kPi zhXpv=utFV>rgHj3sOmnh=j=7?2T&b{0}0WL08E91Xaot8fTlhKtWKnp8v0JFnL>%PbUte83pOCg!Mf1wuG=C(22)OGR@J8USSOBF%Hg4)&y=n`<& zN`Mg7*=}g_e*1k>7SYr5y*3u{?elpDZr&|o)8Dn<>C}>0ctP|6yQU57-@Ad2d_t}g<6rH3xKI_*5lH*PyS1*JnFyB5V-MQAT(qnmPGNPHiPv94x8gbmv< z$P54hDEvpliq9JHaZ;gKVuu%-0$|Nr(<=FzX1T~O)uf!#ipO}b=}Jr+DM{Mk=RpO6 ztAFXwn@$8q4~RLFvcdV4*nEVo;N;mv2(P`ztd$>Y`WrranN~$3o_qd-u%;E{DgvM# z42?1L=?@M5`uvVwDOAT$q-ra~Wg{bK+h3~x#ZvodDGQuMcN!&`2J2_-&S*=Whxb+D|s1BR2M zNqfi$z+3XBMa1lkBl!V@Eoy8kN(F+phZDu~f*`!dVMF7%`pf*1AWTRWtC&#(0Hh6!|6#SbKz~CPZj9^Kq_Dm`_dynGjZd;Zz z8RHl*fcPt@c3h&*^r*SjTiUZ}XjPf;HO;tH>n#utBV663HUPZDB4?#JK)YE?{Jm1D z4AxeE61XENYkbo+*{^^BWkd1<1q2UZQSMH8rDDhh8vW*?HO3N311yUIMqMFC&QeK+ zyXFUCf2pFX-*7SYKrzPUNiPXhZboDDJ!Ar5EnoQtDN`h{^afVScs8wPrs+}8ig0vv z!*fGz1Ud5?P&K+N8Ul76(3l?)t_LkX(oe-_ov6rpr1g468l1v?45C?DKC6IQHAdjk zM;DWe3p@n7Fj|;odQM!oo9fw8z#mtGFWl}8su4Prb=d~}+uiL?CKKZZtSdqUAhC_C z)$6dbb*vav3JhD|jX*2pb0HneML7{7>d7UO7gof(VQXjdZ5&BDJbj$i=vj8ma(qhM z;!0uw7)HAB=YFvWZ@u^{zkgOYX4X9^rKIJdriWPBraag=JX&)bFn#rce+c;Efpkn* z8;-Hlqo5~QvCrvO7_SSFL~rFq1Vptj3vRAOtlM@0ad$S9RzK(P z&;{Z&n{tU6^C<=Z;bJh9!QCGoB0MRl+@`Vj|Bn0378`%UYG*HF*D~0SHkO{3f2ZHv z9G7Fzs%tEkMTRI`4@1GQtXsJd?jY_E4P-F{|0IzKz_}xXoINFm=nI?mk+%CI2i)&~ zfi(m-qm#^Qr}D%#m(4B(06m@}H;vgtm`Yc79a`Zf$(I3CD?mS1) zyR6N+GOPXVxtS~<^8>utmXNZe%xczf@h6*U8F=y>Z2e2{7nALHNh_A(e4;?3?E=+2 zmj*}AC5#=w#_Po0rnR2}4EO-du#m^R4+y*4ZOiJM%s|!4NF303-V{Sw@B_@(Fsr3f z>P4m?E_bEs0<|5iMR{sDN_1`24|D?YSW<&5Chmq(apT8!m7Ww=3`w!i&IZ8OP;&Dk zK?XKFK-lr@HNzlTzPCP!A4-0&UR#P|7A~__2{o&9Op^d?<*Y#cytQM#xsNeW@im|g z8i@XA&4m(XAXK4}6y-J+s1BI{ZWW6NWD3~d_)ODG=We3U>Ki|B4@#@Vp^6zPuZvGKefgUk4PUlOK8}GFeBdG#!;pMhLB$kYp`9xGiWiP^%3EByr9*7vz$u& zc<8m%V0S$USu+i1XfYMyfradd)G5A~drSjkepR*i2A}~q7|v z_T9pjPX&}qET$})VrM;mh#|^V$+15F0VCQT6h;KHnQ2~w;@CRSOE7Hr6T6IonBPt~ zvCY1WVX%iyUkNGeNoeg=^kv2uPUGumOh8)yygrAXD-D^^WtdvKW@>nqTJavSEGC|n z@qA;`Q{iC32hU}V_M_x1q*6c5eZOc&yM4wv0B%x|E*An+joM?| z5LBBkOX;pa7XwTa3TZiVk|9Lt=5o=qI#PLm--|J!nJ>pJzvI+=VOCGMnW&@`BRV>E zfS9c%6g}jh)wKKW*eb}HVENp9v*$#3>HMblM>QO9K8TGh2dj|s%O3^jL6}1ApD}!LZ)dUdY`MmuaEvrsJ1NnCK66CX?jGZG@jH|;otTGDPXQvWkOFmH=v^U6W z@)T4Z>EN4AAW_=~*Iz8>ux}D8kyzB5f{i_0hF0~}y$L2g6qmgl%>6RDF(V%87wWEk zg=sKiY-#sJu+^E7a#vh*_?%}q{cgH~xLMBR z#gv9Mhv#4MZY$jcoMH|*)|a_^x}mvuWb(-<6`=+@YwFjEZ9jb>t?raSWs5#K{;SLV zU)g;3G$7-lncg(QZsmcv8vXU1#Mc-5A5KGwpaHr)XoT%Xo&l)lN^-Gpe?+;+|9N-w zX*+qs|1Z(4|Chwk|KCo_|2XdYwuUao7Wx+dR3|$_ThsrV|HdQ^$PF>Tgxz^Y>R->x zR(fT)2|54<4uj$mPGY%7SsYP0vVXi3Utlm;E;>aTeg5)qIqJ>{B8-(Mhdk&J=792r z1sEqZ4`yW#h>XcW$CIh?w9&UT-0aAAt^%Q?hf*kgB6%b5IgR z=aV9r9lPu>Zc#-Qd;DweMKO~4S6~wjPP0bJR+ZtwHP9~MG37>2=%BINli9kH`N6!f zFR<%G5S2;0Q=?LA4dfot@Lk|jN>J#RQyf&d&awEYn25-tp*M zwK1QM?;Rd{Gr!nD72aAls6k5Q%UG{XNZw+d-}m{=9PjrfuXtgyq9m?2-Ccm4vjTKS zb1#x=^XG=3UI#uY{*fD}tf$m|5uA@hI%Sc|R>GRcNK+>goiy_I?}(J||B(DzxZtoa<=)op*8lj+9D~ydi-^Pi0Da)VIDUWYen(5`%E&qhDbnElhb` z`MPId&yYTHv$~!+crc`;(|vd4#Hw&LttO|=vbQ_KNU0Rb)ix+YeWD|crx$(6h#SxD zE-1Tb8Y^Z|QHT1Ng;vUKpuXv*kj4pu4u}!F$xge%lu7e}NK+R&V|f0$Y*urky+OB> zpW0Ut|6}fMQ-Dc9Ak|>I5E*>*6i$gL(W(s^D3-=O3ER`%9_twB9Z3F$%rU)sUXS|Yz#G-1IqDHZ5UU;JFDka5p6F6oDQLgtqv zmVp|3;6Vqib-dXixiCnw#%xucJ;2!(RYUbCv%Z~!v(hFwsBcx5FwSJ``~$|`?fD#( zi_80MC?+Rn#~(a1R^(7cmd0M{QjypTv27%VyGe9p?fqO6>`|qr3jAX88y>en3Tk;o zxrPYuU;Tt#b&*1m6aDdWPK89zz&E=8)_>EC-uCz*LJ8d$*228m=0vM9UVscCr>jbp zw=T(*u?k=#aNn;+4AOP598QjCs&BN-k?9}3u9at0)sbsvR^-dHQ8zL;e!DI|q~PLq zx6t8CaIm`&=kNPtB6k?2$a$hv3s{-g^ zI5LB!3h~EL$}U)EtAXc_if-y;jma*uB4%;~?w^)Fp^+E5QoVE>g|XX{Hk_2cIdp~Y z8&U_+VJgezDS+$E&{g|BJ>utX{0<<=LEcZbXY?o;)m3yB5`*p-_~C*2hTJyW3yXNI=6{OiC;Xk32C>%M7Lfi>mUkza zG8*H7TnpBSO*V<@B>7IX)FZDn*6SWA#Ya{qa>Kk582-dazwRQ}mKJlUywl-dmpaXL8QW&eIKhtf} zxJLvHRSRc9Dfxh}Jqv?YmWT-7u`;F7C8Nq8s#zhp~Jr=yXA z6U#)Qb?e%>^{*R6vDAu`DO~(%61RvN&}^7>(zPBx6sX6JArcR+M7TvI zOJ$RbYZaRF2S?GjKsf@bWP9OoX7FL`U4l$YnXtbg`8G+G)0kwT`-Yx(eEYgXPqUxZ z%ht=274L}*47RlChGj03)qgQ-ScoKV8>Zo3c>)>X_uiiNYOFanFu*beV+iJtzF*VEGWjqRzU>^YX!>M z$#-yr{%93OQ~vuEdD*pCvQQ%1nb0k2Ka&i9l;PqPL`Dx?!WoZIYZndrxJDSpa}zox znN%o#5qF`?mH%)u+EjQot>VNZ3my!@5w-3Vu4OD{3QAT#UT^r%G2I#3Itnmu67F73vqVY88>JFPe!$+ypQaA zUVMxQlLJqc33oVHG@FI5&eQoUXF#_;>%6o5i>ijoP3MI7=CQz6Dju=Jq=wTQBk1iN zLDkT*1KRzd(>lpFm9HlO&v)ss>AqD`p0ZP)Vtd}`IiIiJ6Hk0Iq$`WDvQvvdE?U@_ zUB;ZnpZ#Y_q}Glbqs3t#oQ7vq5vUzp#CE-~1Hx`fC=icenqujgcA9rc*TC2b-NEp1r_*ygW3g*aq`5!$|T_@OWxhQ3Sn2Nn=>9-z_yY z1GbehdK3$XXyG^Af9kj0YOwVae*gexcmV)@2ciGFmaw(8vevix-M~2fmukytX}clP z^4ow41_w3v4{CvUXj=!EGH$A5qd;0?@JyS!0g#zcbeRdce1gEba_IZT6Ze6bVq@(J zGmL2JVA8$Eq|-XHYxKc-=c#(!G5;mBm0D`QarUhc=@^LAW$?y)EBb7fpLX z$tTaErpC#eInx@^DMi#1`_Z*R&RG@5m!ZOIX)$}T+2ZQGpxjc&2cXPm#Pw$9=W~4K z6XvfZW``8`O^|=j{S*W1kjz!Gc7+YJvsm0mJq0n`XKj_oQ@eGh3&r;6hHHgo?DNHp zwWDVzF@4Ws?)hK}Eu1TYM&O`-}ea&DfJL7S5)lss=i6jHrVc`w(2J#`^ONCc?`h}fd7-06tABmyGZ6^CT>+v& zuJ`N^TF&w`a`KMTD<`~fW;2blN2MBYTU7Ev0V#tG+Tm)^nlb+gb+8N|r zc$OqF{Dl+N!$8Ou9aAc!<_ek~Jp`)Es4>euzhWNWGE89~-V#@i2p4h{jnpOjj5I{P zh^y*?7RJ@1HiKspe|e)K{&A06He{&`Pb1xkxl+6rS_K((8*FNH#;T&^m5EtDqnk#F zcA`OfSZWvdY`~6EC3cLxlBSTomaDK_$yLUxse-9_#XQA0;mk;ze9j6~$|Uci)(zKv zq~t3g8vaG(0q|638}lnOBW_zpT#i;!2+|8)k$sJDCayX)K;(9EucBiY9U+)_Clbk_;)-RE?+Xlupt(ftvW0+cp8H?oFTXHa2w_zg4~* z(M=8y8o6-5?hX}9+0*aeD8lSCUGHfU9~+52VFXl*lo~$3Ujs{6HZ__x;}E-9edMmQ zUdMiozG1VVwfNjwXZfe%f~{p2XV{(Ib^B%^q@4?mn-6am!PIx)sG9w-G*DtR#||K~ z@J_(lzf?;qhqsc?%A$(S3)jY=?enx^s_~u0b$fjj$8VtamzS4O-@Z$fYvrS75cKXz zHBMN;TVe%(mqySr;m_UFPwexh-QFZRpEE1I8UbGIIEXV|hz+!$5(u4?b&8lz zAd>=1BChWm#vqU&3zWNU8jQbXI(#Xf2{3_MvlaMM9Ge^l0YS)lr@sYuTk`SYH?8}t zkNYB-IN_dT{IaiY(d%QDus&vITwHw#%BAa=Yl?g@Nmz0^oBwnYvCrcGt5#Bo(DW=5 zk^=tu?inIg;9g+y0VE@_aw^B3@zu`M_fal@86z$B4Rp+^Flk#O&w{3OIPzRf>CA7sM2 z@Og^u%$I4{>XiiV7_?ehBau9l)_LDzU_9s(6~|y!&UJx=ZVfr2pB9naX2@lT>&WUM zqS%B?<^t8LwSblFD$8Jl0A7O-^AMwRKETjQIG%<{2$*mXHVp7{dOQ*E5B?K8@E-ZC za6yI$gnMRw<*{kki_&DPt7zA@KLYU|KQ58Y^ar^!( zgW#rFu|73xAUUK#zp)Dgp0H4A4t(xyMsX7aA1J^xV^KW+TjK6`a2IISxOmJ|=K}uK zw1mM%vdgJkFY?GJK#~vvAg4_MXh~SixlW|rXRoLLsbUgdp&H|ynZ|q@e8Frn#z#8* zC`hQe*2y7XNGj>py;*E}YWMZ;{`g34N=E3c6z)mC8AdSs{BvRlQd|-N%=r5p>c)Hq zd2yYPeTWG5YR{%Wcfv~OqAvV4v|-caxnbS}A0=H}d7=&R@JkaTa2K8A+Zn_Y zrISLLgY|nVFuX#auw_k}Hf&Mtz4_xL^Xim^n#zBwRvK2r%an+CO|pmrXJs`0=-Y@@ z$6R~)buFpN4W>d|Ramg_^~vjnl{AQ~6o;U%Etm~xoc`IeVu_0Go!em--EiL0_dy)@ zsxs%KsT>L?HaXjTeq#in|Dg=>oi-U2NGW1;#b=u%5Sz(0Lqqt)0Dld8ifls1JJg92 zVPVZOA9pG2WA>-Fl4FR&KOKLk!cT0+#`ks3Q_4>sB10hYhaBdC2!g>($YJ6v|L~Ss z=tJ0k{(vQiIvs`pDUryN8!y%=W(jUm$BR;tSZ^Ce9k@bY)}Ky2D6}Sq1os^Qc8ieA z9Q*RKahIXa4+Bdz1_@&4oA1Z}+ZF)R@Z7t2l|LUG^01)za|h3;C5bkd8W}Ve;ejePgvPsqM|Xl)%I$9`s3N;W@*1Zc!| z$ap1&;+I{~Oc+UQDaaN>T4_u4Rs6sny`#o#nA)Z6AxOxMPOLR&{wI%QUHv^OzbGScNe!lk>{4h#MM6!fc}2n$L;lS zWqy>z3YUTV^!5tlL|5t;6wEL>q_h@DV3BIfvzD`~T>-Wt7zx}QXqK-x#`GO=umPDH zi1e(6^n zl0<-W3hs$C9h)=C&;d-jZ6MLPWzt3?C9)%)$?rREBFWE?1Z-sD(KqVyYfaGA0* zfFdv`fn%+8_oU^7rJ{AiW-I1&ngrg_*>WPFKAYX$auKlS5eR)%au%ChYYj&sX8{xV%k=(_R})wJ z=axO%R`xOhTV_8V$xG|`gX6&vuKjhwcP}3c&w14*AK*`5%dI$wBqa$D?b{l#mDR;v z4)>S~9@?Q5-EDu=f4#A&&u7NnBjI==GUn)!qofj3 zMN33i1oIX-#ywsMqgxbJ7lw1oCBy8tPNfcmY8~C5y5?mb5G{iK z4J$5i;NTK6j!SHsr~<(3W+9w;L+$a=Y=+ufeA;Q>^{T1M1b!N3waK~(BGJ#|x^jp) zy`zR{h9}{uOZT&qxkc88*Mz<5fZgY&&e0%v=qiv}e3iVnKDLUQ@81kSvZ|FPM_{`n z3*WW#K5@j-3q&EY%Mss;8W)mlTp6og<{1SDAt;U=BRIREOCO@Xm>?R5~IBfui;rBpg_Yxp;tG<^7YN~I_!rK?TKIFHZe z+AWY_ASdU;lk;eD^VY6g~kbj-8q#1#=B*ka>C7nK+lfv?tJ%K%l9aWm&CA zqj(-vQA*peb-wSTaIsPm-Z8d2M_f$Lwtx?0(zc_wOjy;S6_@AYQ0mW?%v|uu7@HEv zqN^S{v4tR!f98qQ#JycQ{~YkNtEVJg(>%S1THsPKUJ>TZ@3OVSvg2y6 z0yN#%v`xaYOZ`#$;vuif8XWAVczSkgNDgnGv|>`(4HJkPoOmCt7RVfQOCpr|7jKJ{ zW`bq&W(Et%X$?la(#X%*Nlbgrmk5)zq=0ifiMv)}|KEnEbgOBmpq z1*_{&)j-Is=+e)*_lBY*k9i*%57th+_`$jz8Q11(25n<0_>2gpnXUzjwc#WZR1O@9 zS6T(Mf{R2+RK=Vzxb0Jst#i_Fi;~>BolNqbN48p8SGS?K3;mYi9Rqy<&1) zFLo~pF24BY~sWiKb*>(j5@w>`N%ZY{{EE%gtj zmz9^5O;6V1p_FYGuo8DesdNe+m)w04v&_Z`0rL~(DCB>5pX_V1MX?u#m)4*=OvYyN zM5}ed6HNXx5^B5Zr@Dq;3kuzloBYyt6-z9|8g65Z80?xRLy|x0kPoX=%WUFJ9Eiog z@d>!&)y75TH>kj6cj>dqW9-HToItzx+E zI=~^|Xmpwo$Z7Fg+g<4XrEZoLhpX~-d4Iewd6sUP1$@4u&@g&K_tCxk?LL}QQajm4 zYZH;(W%9zM4ToxojBcw}ZclhPkUXgjPG3LVFsE zB3%Q9>IT`ROf2Pf2dy78i7oQ^?C?)l&s z$EGZxN6hA$)&Q3us2xIo0&M{H@yE?`8@+*RYiw)`EedsQ(~I69UuE=%ZRNYk5|tx!fQ5RIX9G5 z1~RlCn%ESXOzDf)n>|A-RMT9Bw4{_GOUTLyUolqa`ugOPKNP%vErJrW?lj0hR9}Q= zhHpLBOmLGaI(xNzUz7iM&nfLj>`ol!_tSUPuWdUI3~O`TRTPS>>fPjat`un{3KbM`kKfDO&1Y>2 z>wCsU^<>5=FwZt}mAT%l9_0e>o5;*DQt!;zSoj-H>Jm{c2;;F_1erWw1;{avtzK&~ zan~+M?W|Z@>ZoP6h_umEC38}UGmLb{8m3E?|G$4+x*ge3hkshz zIiZD`TpGZYjE>$;sWwSf1}|D9LLSz>wTa>RJ<9j;MrCH>t(Wq7$3@;_xI)hGSn4Sa zKwY)JUff^4uzD`rR3<+A0oH(7D@tbdKS5P4XIi)TwNpe>ntbcFg}s{L%73eRe9!gV z4mJ{-Psz}nn9X3nrF~dB7%DM?ZJ2`AAo(g0SR&5`VCbk_N4M86J9-k`q`W^K^-+8G z`wvnt?1kl5L&cC#%a`4Ak<;4I)#(8L{Z>LVAabgg6;RK_>&nt} zH$+8u;r7N`a|$;IqYpieYzXVNwMkWFwY@2TZw#l3z^<3cORijM+7rh0R7SO(vu>Ow z_egVNM&s9q*(g1UNgaS484m={8RjcDPJO7711hy686Pbe7Z zU!@+7-y)H@!~8?1WQgH*gR{q^u34^OJ0WKvE$+>kV>Cvz9uM`dpcyN>dBnaN>=>7w zW^FZ#nb0_<5VZN6L01dq0eg!2u|x>Z1WgLlw;{w_*R^5U9py4{`Wic=!X zg2MjES%Xn>5fFes6E*hacyaozM<{wo1C&EXjWh`PH1v+&T=PKtXgL^u*MCqgLkk_N zpbujRm3R5=(aR6bqOw`hcf26^3S=B-ii^Rni(LmWZMPeiz?9KD4OqMNoVB)w58(zykQcwNbd)># z_?`qg)u^L{v$YFLvN=d;|hAL;b04^qq+n#xFr+B#;j>`Z_rUIleox`Y{3zhmCz{mq4cb_HdhBH z{i85{aoTW2Umrp+7^BGRhvh3dOJBsr3Fg@rb1gUqGYZktXlUMGM>>!C#D<~J86Yzw zJG+_OJSL9OU-GgbRx8~(-^f!eekw55bwq4amHe-hljYNtdSxs3(@kCe{whCoQ6`q! z+)R5N-0a|e?@KM7`rQ0wew-_?sqGGk%3~7DB27#jWETJH0GznudxwAxgB;YLowu{M z{w6!HWJtHd02c)DVE;vGFCCK-7ej{f$-`J4@z!~$9&5!SdFr2dI*Ig%VQ1_kwe%vw z1gY>OAF_Ax1(Ce~+h^Ms@(i3k|9EmB_@spc{oWd)H2ndSH7A!SXpF3f>!8)X zq<~E5;9$nlIv@Frth6U!cyr0W%v}h5D8m7w7W6Vn1`o4c-25`-2_0aZd~_@JMEfqZ zBP=aC9jN}|G9P9Oe?V?0@v($XmO*P%&?82jks33>ZPa$#j4QMMU{c)8z&bK#+D9QC z=V{_MaA!mzwe~lplDxX?Tae#2+FE(kg_$frG7c1e_CZ4fdHakuRr(BU+Wy({kgjy> z>5AIW>N)*c2tQnSc<6z{bi-K>sLdU_@wjd+VyeD&9vp9b&U< z^pCo0xGh+m>qYey7sOt_G<@IoI0tSh#-p2k&GV(Fpf78F}dDf*YjVwmnkkw$AjVc-=)=YnM1smVx7u` zqeDdU;If6`(dAZkvO{Ll0U^JGSPUo-3~oU>{L4ly-UCQToY#qD`q6zvuavB-tZYwc zWy5O3nbXpuG)1XmeoIF|l`uzbL{<4wQcrG`-D<(8<(p!5`9F-3T&o2x?TLFK-Y>E! zdf&?a&t#N~=J6Gn3QAP?1{OVw=44^uN|pT>oy~{9RWE8kO#(Wc%Lg zi=cj`Po(?JTF8>+JzfB}n1((Abv&aM;Lu`zu3hH$;QzA1HoO4o|Ef!71@7Q2NYP;Q zB-WRxei_wOoc~c{sfOoNCzyI@O8B%QJf@VL0PX^Q{C*ynk!cw!YzngWOF1J{WF-5x zNn@Giv$SA_5)LSl;Q+ZNQc;b#Diq!^+LdqHbua@cUOuT}|@PhK=%o2RL$f1X=G)p^9Hi zsrux^QDM{)fF|I3Yssix-cV8M?Cy7TJt5MfL$|;Y%!>OVaXCl^{BNcIB;k$T&`I zOYxDj1Zc~4mWmL5f`1#dn>E*X)BS$&c(Bs?;z|I{5oL8FFDZ~ViZBc{$UZ@6*RI7d zaw+?x)bVqL!6|V%K{r@hAbnZ;G&|_#eaMxC@b0(bRIc6<{Br@S&+tiFQ!{7>tA*nN zaqnJTK5MHnK5fpwI5->|vIFF@v|4(MV*G4Dl@1}!OnXe#+{i0mVJ()`^j zgey?JqhWQdfv49go)*>V_z%G~D<<|rI9+1}0&aw-vMt2ohhP`rhSE|Uz$^j4*`FpB zd>=@do~&{Mk+@ySKo!h8wW5CjN~nDB2$~Xl*MDeqp`3~*koOv!pod;9$V8B-UNe?K z?34rAt|IUG9q*4z+ogtRhen#Isp^5qjA&WU3Mn%ZgkXn2qpA6pKBc{`&kLQ!>Fwwl z9VIMJniEquP}Zu%>k#?qY(Q>FCgLc$u}(EuPGRsNcTt&)#uD`iwo7xIceBQ>YHH+Y z-RjC*9P(8x2p+5c?wZsGIfq>O@76@ZzELNGvW+hWF7C^I&}%gq!H=Ncobz9~X!wmg z$%f8$TX{uS`QfVJ7ZsB)VJ>Ak(_*vZslO^o7Q7fkL8p)#T0))#82N9eF?CC#;zvTX zF)|~-dbuUB|C8$_Nv3N6TMgngk|T6i8+UI+?I_vw$5JBMM?L27qwn0L;;R^oUyNgt z11nBQCOXY&$;Hhu)Sip5GqJE27d>%!-jPlRgshEH1WO@)^ZUtVmmi+NJ;Xy}zVGjU ziUrFWLx4{QCV-}*TaY@w@Hm)l-+K{Z1nEJGjMn1H(-g&RQn9Yv`~;9__6ovTW$}Av zsYb(shSu5<*)Q){Hh881HXO^yQ&}>lM7)7{A;o7K6=GZnUkZL4dFp6=`5h=rYi(*S5?!$3GLSq#vg&(0sQMxzLy0m;ITu z@hrmg4I=jX-SJt2fY%{q{chKUqGCY$4$|;3G;VWQ;BS?BsXj}ehM^;CJCTs^+r+6H zt+4QmDZiR$bIU{c#H}WyS9f*P%WeAJG?<+=aAWYgIz(@ zx=UAIKr2`P8K+XYa8bjef{g`#U-(w+vW$juuoXkUE(q}o3L61dz~gtsS50pp0Ione zw8WI4rZLOBHv2K79~6|K?e=by9SUqx1laNV&^Y)y=F%=H2qSnf^RtxnsxIdA7|~VC>33(bgbF=p~?D5A!5jL3`HH{^k+UHhtm}yFfpqi!;d6ri1!$LM897>Ylk6 zE0LCn|N53u3;c+Av}ri`qMZD>;cgIJ3(HapQ}!TwJnoQ1Sc%I|1RDW&GRvj6^V6V2BpUMUu*^^dj$6kmHEEctstEr|n{6R)yr8 zp7wbyUX}QV`N0-kU0y23ffFjLCT$~?E*Yo|DUp2kly52Ugt>fE&*o-1_NMwW0p>^U z69AYI`A}}_Sq0}??g^;IKpJb9Ksgn-cn-PWvtL#EfLWY+9(-_* zHu#ZyCZ~kI(sKLp=;S;1>5XE5qo>(Kl9uYNn&Iwb_6QZbuxGw8AlV1W!c|-M71t4) z8^xg0U=pQQk@X+#4c{4})REnya)oZHc3vj6F5Vzs1%ra7Rp2`)+$YR66&xkF0^raSie=0;tRcz9Pqx;-Vy&?&t+4xJjHLg%S$SQ1wQ`Lj*PJ zNBeu-VkQ#m)t@wgLO*6I#b)8nO^|c~IKtzbstboA66t1BV_&nZUV((QCQyr^31OobW)`{DDcW*OiNw`qeOMy`| zj4@h`gnLf)zMY(g9cCy#dZhC)LQQU$8!do5Tkr!d+6;#!)drC;-7snfnzJkhr$p|7 z;F^Rui&CeQlhQL`LPJQ8e};1iSvO{n>T zOkPQL(Nd($Fb0jFA4v1Zp5lV*z6_Zy1yc!B?nwA6tlXZ=j|+^)=nf%bPeOkN@RwR> zNg=iyd{cxz0mtYSIDJI0DUd4*W`sA2Q_pQh6mwneQ>XLNhQWue>kl%i=r7hFjq73l z>ec?v$`?#p#vLEocdBrXY{?CuXD-MozI9!>F!wTIiyXT|lIZpb}L{daR6{BJl)-`rbt9CNwJ^l&<9dt#+=N)>PjXj92RuvPOci+v(xA7YbJY?bB6W8l=*iOV<28Ds7{qs`Oq9gTuskp z$venXW@>sD*dc%|Rli**xeA$C?54AH2n>%Ie|$INF`IuA_uq;GpL*A2SQZ^MP=6-u z++yF|0)d-*^jTJkB_ps8qh)wNO)ZXM_bJV{^5itk9K%0Gp9)qjt_rafxNKFt`&mMx zW8I_Jt`?S=3V8cT{qli#ROr%uysEi_Bw`tnIBCDzb*jTDp!@et zNgHO%0icf%qb#A|HbDxt8)V=LR-S`xFgSYBrSR0~dR5f$v6{C}+0SH1V$NN|Vk^i< zpA4WzNw@R~NyZ}#=7}ZFfR2w9L5vn!N1mh>F?h+-X=DRNG}J+0ofzo8r>=B+I{qQI zN{XM`(uJz2`o>+&lhQ9Mjc&l&xWy60S&o1CqvPSXPeYR`UM>I!fE@vwAREe8^e9xT zL`tok8BZj;2W<0r5lyiB&Tp+YJX@ zibMn2bfqFNW7aLbj?lJ`67>db9JGQW> zZBC06C?~^qrC!){AO{XYBC&z09n0WBhxt@+j|$h1l=ESsX;faL zu32-u`R;VdS5nMfd`6}7$Es@NRH`T(ruBkK=M?TWyVgwX^B?OCjT4}gVrUTR+@d1Y z$PDeWm$4exg9p7VUm2n<^x+>hTLPLp9B5ZuA{1bdN9WZttbYhY^z};$H}s>xA!`LB z;y_etHEfXx2}cCzFd0L~DB2PTa131DM%V_XBCi8^Wd)GNX$XtEsB7K5wa>E0gK

    >$YHezW82Z!*r1NxY5j~6NF#RmT#mGV!FSLIdW$b=28x1?fh9xin5 zjd12r9w%8|8P<{0DtUPcEtfeJM%Ae9w`q0EF4bNO5eCiv0E@kD-MH!&pk|paGWaJ6 zG*L~9@d?>Wr6io%$?1sDIGZ3PxJqu%y03QN(Lgu`mLRN2Zg>aG>awIZgBrSb&HHM0 z4o!D8g=2gyQ|n)(g;e^=)9f29nNNFP`ZR(IA|%^(sAzC#PICn9fgH9H!A*6|;32WX zmXWijdb@cqva)2Oep+3;6H+=3g+f%MZIdKa*_nnMO2YR(iNuC`|7n_jRU zHn)OK{El!`N{I|1--&Gd)*b(gY!Ml`MnqJgC7Q*6TH6-NpGV)!P^U}xWO^|yS4N!P zS~kpAK(xIWsMpq;%e%s`{<5ZTrcsMh*P6do(u%uJyJR_Su+zhH7eMmZ00(B**k?bj zRQ5I-^kwzf;=Z}XPZi{?rX`lo3SL`PE8q)UBI26YhB2ITRv(=4#LbFB~`jFZs*P7uP{H-k573NnR91|dgdY29KEPyMLlyPX&^@DVO#DhN+4W7 z*UW6~N{v2mH%RvO-}eGh2C-r0I)}WL5dSVny1}jn+`{v6=WP?OeLU zG2Og$TgcnUoFn5qnYET@7LI7UjW@LIfN3AzHG7eurVD#z?R@+%zR zs>u4>;1(%XIbwQbVaXkbQ78x=Ogr;mdZZVk%|9}}6fGmYkmZVMN;gO-eQ zR;T&OmWhylu`BrT3yr^uvlC}xo|S(e#m3Y9)>XA%EPMD{Gp%A>iB>EAL8$49qoZA( zV?ekhlFK)v8{9nh;+=uP;we<3-?m9Nk71?ry>V2M0vTNnL3@_I>H7-NeTs8SRMD?P zbJUM|l1hnkVt+fZWTpkidyM=$94d=4^-G`NVc~+!Ki3;!I1XHz+a6+OQf^1DXvFV} zrtnOJnTV!f=?>cKw_5HpQZN|AGYsuWmM7h?*!oxW*+>`K+xg<_Ipo9okx|Rh@wKQN z2g0;~3MWz!ecnlYQ#cn5G_D{>8 zW~3h#_HECOa2kid?JxagqF#H6ow7*HhZ966qvjl|impASv!VEnnj>Td6RV|%=!K_3 zakuFM2&$81#LpQH2IBhm-JZT}2hwW{>noGPNJ^)s_0L0D+=`-6^SXD#pQX5hKZ z1Fb^gv{te7@|||fQwDhAFiwI%=vG1kb;LgZ7@nf)kupLK7uJ_z{sP19ZCt3KEvu#* zHs@1QQ=@)(NAK3-ePa6gH;i*p`Nmo^Lf;9ob-!6G2ji4A;a?oMmNAM}Ta@PYg09Vn zMEqRvIMF9`_gpAb&c53d91OP%B5V}fuWT;Eu8=aNgk0FYc$5@eMw;9Yu(Cyik)(6cwUrp(t`9YjxXMNiB z?*!APXNn3JO*@^IJB(cuaE9-46BJM zDOPzZ6g&tsFprM;a`lrU;iyFEEME|QYPGr(aQwo88fT>Q8f^Jx&HVA`0;~Er;UMnk zCe^8w^S>pfC^tVy;jaTCs8Kc{CljRnlk>jf#H7a^`8%qsm%VSPijIHhbLF-~qqmK6f_V`N2TV6E`+M}3y0QjjpVS%(47w zDK$yF@HSeW2bNt~rB*4d*RMs5+EHef0kFXvfPO{bdd=vZl%5$DuVX*m5q2GmqLpDT z2vV4d_eEvTGdv?%zz8|wgTyER@%0+rv5WXrHTw~v;9_|_XGa*;$j|<&wtbcOB|^i3 zh(?J40!jAm9m4)~827L03?#M_y;JJI2Wa#_UiU-s&=p5ibXe3E>cCA@tM^&Obii=~ zne8Pi^hPb5{1{kd;tOYL84_sH6z`(Qp(%HMgR%F7oKU)d{!0^$XIjvsunXDJ8mSHAyKDE7b0 zz?}Dbihi@?$RPg-337HaxB7oWDM`;$dZ=lAUh#Vg1fZ7KG&)v_UJ1!P|o8d8BR8k+|yN@;30AFM0XkTs= zIV+uz-D1D1+?6X2q(+e^Q}wxY4tpImkKx9Km(I)I|cn0sk|TRhg^Hod^a15RCu;fcgKJQvUm74Q*{~ zj1B*H`aD@x-Ih=k!RJIZ=@PuxV8oMn8)6K8aDr5&v!!{rQ)q5>l4;idFZcPiKS>Xd zviBt5rNo}UKTmgiPldX9b1;*(a?3oIG{4m^+^McuzM+BZ>Bm!lt?V*+V>^PD#FNyD zOSWerdA|IZ8vY|hGDp2wn(OhyC}p|?exc(H!bIP(qItechwg+5fpkhqez#ptIKxso zg$r+X-VVkNawb7NsovXAA}2g~)Wa_~G7|dbb9^qSzgJ5Ydl2d}L=ZT17XiT^g*`30 z!U#^1izs=|ecloOAi=!F`DNIqkH#bcC2@aALo{S{p)1WUL>g6Q7>`pbPNP2)}pq{ z{M(fx{{tM(!%H6!n!!yWC<#I<5yRe%wiu1K`1+rOQ zC5*1HxI2J++bs{?C0J~iEKfi^x_*h{Am0J=0(jk~-jQPcf}v(^CWDWKwVNvh?F& zCS3SwabHijcjx;!pA4UzPOiy?x3AQ*g$XYu&(05qig^rK;B}hfb%^$9yT}21>ae&V zqci0;m!mX-p!xJ;fcB^87ne?i&QUjOeIPqjo8H|oEX`!K`p6-@!lJ>Q|Y znv@;lKd==MX)I(`v-BpVbeN0;0v^P+;Oq}k_FWvXvol8KyGbd*)kPSfb)#rw zmuJ_pPAoqh*zN3H*GLR@+Yp3cJ(qG^b|T$9n=`_x~_L(9EiSUPE}Ip zy}YDXcaY`_Z-ezgffzw2w`x+U5Z!@-OWdb9*g0(MkUZ$<%UdvylBSqcf{pMd_UBK7 zc%7C0wY)wRO}Vb43^vE?wJligU;~Yr*$pCM2~Mc;fBgpoH@?e$HdH+A=4vk5bD;3& zd3U4qFNf$ScXnh$)4&hPQPid#@tB=OBjfAOS>zg3i0;4bIbvms*`L4PW-^B*O=;b5JgXOo`D5(Uu7+frBC(W;$w%!HRl)$7vt^iG1IBXh1OY?wv z1_omXUN~FDv$njw8jPx~T`4nd7IInB$%Oq-y{e_6v3K~f(^gT?+3ECjJ)UpSz{36+ zI~O{8YNjvQXXX95-}@T*S)*(ZcXAAQ!R8EcLEACjFGUe~IsUT({3X2wJW*9C7OrSc zwkxWd zWLd2Ge?W%zvvQ-uR?UKu2K2K)<{5B+0VRA3-fLjNDKZRL;g4dJF`AD(H!&WnmrWb@ z1odMbp)*~&4uz6p37rnfeZ+w3HqG|<%PMHe14ZAshtw^osJh)|!pn5Jc@oYc{N9#F z-mc96<=ESK;+sB^EvR9JowD{9MJg@HpG7d&MdO3*y{sG?xfq4g2w7PNT{INct#D71V>G@6M; zgjLkVnXCBm>}cWoiUik zdJOMV6-9tR&A=3!*T@Yw;>O2@x)qemAi_qgWE+TXMYvYa);SCH^n$pH6WQD$x`DY! z?@4f;1<-OeBS=xFHxd#FViZf)b))DDuUVqyB@rJ)=OQkA6ftaPH)?x&i-o3-T4b*2 zdtU?$lJ^7gu|JX$(xy)JK*g!wMhVHLF9n;ZZ5p6B%NHxPu_}Lg87ekzqwR|2WPQVP zgCF4bFY<^BP=o>t)c6)pfOnn%=2{Q1OJIY-VRkBSQm?pyV=MMH%CMNq7Kgf*(HMDk z(wxYum6jos_mf5g1~_%2InYGAIeYgx-?fgA{K8>e_l1!i_hgn%0$r(n;Em_^IM0T0 ze7SD-b&Ht%AvJt)&H->{@du;kCS1-#H7rYcMsZc}j%C5^%FsOpLr_!29bXdDMj1)Z$|Xt%P^e0^S~Iy zIKwQMGt_P7Nd6ITR<|UK%`7*O&fYG$FshW_K$sPiPj#5r`zh=Y&_l(Nwj#zHn(>#P zOp#21HYTQIjKL9Mvh}l5x5gO5Vn|v$`b|_f>ZGtG?jr)jg|&P(&BM9fzxb4`WCe}E zQ$w^j6xoa2WE|5vs39-rem>iw&!&GBEi$trF2|~SvXqJTxb$6q&ey6!w|$=SN=bZ? zwXM%8rcXLDasBDL7+yP5ja(Pl` z)4501K<3pO*B8Pn0pD(|aF8$g=6X;6S0)7T3BD2E7bUL1UZ8@umpK_;B&C1UK(`hb z`_YB{Z<@FS^!hdkAR+~keM1F<$IZIyVXQHMZN0kU1xV9U3YwlIWK64}^SD&W0+E+l zVk~+i+YiZj*6abuO#=}V(Xl?M2WU7o3?G+wzbo?ZQHhOW9LrWwr$(CGb>MP z^-$;5jZcV&6*I;fv-kZ4wu1KNr3iSY$t+e3q$)Xb>aWiP=}UX=Bfp#|F?m6}?;Cxz zTnd425H1;NVZgG5id0;>`Mm+!?@_r^=E7Jf+?`UKbsro!%f_bAEmrXv!36%{_oV$G zLA5(ri$!%$Xy0g$Rjl(hvlPASK?UScrMAEC9TZg7uP)0esKkox$Gru%2i@+`%A;>W zG1w$kFO6mVbq)}6oxXV>54-=Pj!qw*96$Gqp~r#zU;gR-pK4o`s!ZIk__gap4W<)Z z%3lqlJx#TjNS#EsE37ffQ0tLwVSdywl?XMleud(Ghx;?0bR!D@^gK$&VcWZ#-LXmq zT2$esc|{$icSF_!+S)4llooA|ry?g~uSTQd*&M85c)gke^p6C@L0q7nSs&NLZPVbi zBdMG}YdzEx@ znq@1V+~yLgH8>G7xU|S7xid(zAORX0jMh5vi7e}P1ci+oeuQA}`FwmhYZJ>1bmlZM zg7L%FgoIzV>@I10-Hs`9nM}tw?mU6{=a7G%nU)<<_r0P16M);$G7ll~2~T;;Wo(~` z9Hb~Q(OT@W9BE3Gl6UoFj%7-I?P?BdLJ_~N6Ofp!HsE<+4hCu30kb?aBj=ZY7Vehb zt)a5j2IH%Q^rK~x>5zG+C;iw*mhnTmrkY16FF4a8GbT~%UnrNZsT?3(6rev z9NjGDQ#!W}%jzq-sSD7Bu5Zn{jKB2sh-UW0S%?E=l3^+>uYi`=nFY$P!{K-CWRx`6U^S87>f#a&8tKV{DgLxb0~<6Yme9vj0^gDvejapkWi~> znv{f0FX!m6uay~E{oCARJlZ~sNq?wTJH^MX_V{(Zv%%sD%89}QTfZZ&Z|rjw&c|Q6GLZ&dVh%5&ibPl zPC@ycnorw%n81rYdxvNC6Uc(Zc{O@LW(Dy5?C}e7BfZqUWjbgh3O9CD-l(cQrj?RZ{7A?(~d$5S089r^r#pU z9}2}cN%wc>;KX2jbJIitqpJPO>TOb0R8*Bb?|6GUP-I+gcs#XIWFWP<;^;u-KAh-9 zef(2`A5IHf_dHU&1Mh(FLNbTAI2A14MoRsQE2fPs1I~_g$WcblH%M| zQDrxAfrn9d0Z0BhG9LHE1HRMAh%L3=ROS38m+!7axkdIJb{WWO7K2I=Z-9ElKQZZ_ z<2le1SXM}UXg4kX$>02h1`Br5G~vOU81YXv%+hH=or)BDbRA2|L5aQli})ctVB5fB zCPC^>EO0BdS$>vC)oJTm$?HEZGTtjhaG$(HssQZM&(x`p-Dla2`o=qJYn4#G6faL^ z$xDK|Q3*iR85*(+{l}#!frA^s_~apBPN~F{E;&2`WN&|hvUC4zpYod?wc(YCWx-X( z$)D3MVEv_Y7Xm@lqTm}ohm-`wfJZh81tW0GZ2}d;DG>fdE;pRJ8{FxSM4KNIBx#r( zl`FzhL}nk*s$Tx`Jy>NVgIaTm@If8yUEc-Srw^ zeBh~Gjoy7H+Qk$82q>a5&a7%RX|{jRMkGF5FMxF^XMjuhH@$Tv&qg+9HQ9akXl9cr z-MQzXkiVL0Hf3Vcx-17nOr(sv)IMfmXh@_PTGRt@4ae&UkhbC4t+%amZGTOr`3ts! zL=6GDt>o}SXJ^bRl(+d*ZvqJsswmOuVrB3W^{R=@++xDgX-Y4uzy^OZCAo4kTVAF@C4`S}Ji3kH?6=L!mhY<@jY`#%^dEoz$!;6^CM_10qRS-UP2Tzrx}g zSr7l3$qILy++I$>5OSfIxiz$dn|}=OFydJgfz0wCOb;b!@h10 zAWrZ1V5*Al_^ylq(x| zPJd15>jjLT&yeH=*tDtNw-L*|-+H8C;!bcitp5aJCp=?+s$-AWC@?8W$uYrIE9eUa z&(f7gQm?eIX;-S95rZ+2qxclegdajKz+EwI#`#d~2DYZzH7yW`CWIgA`?4~TfUJHk zE*sSz2)@G2IGbG9=X`@#j*zs2zJ|PG2@0jf()ddLGDBrA9?^?p-~*HMF5%%E?Dd#F z{2~*?0oxrZ%e+{~U}{1*5J_bQ0K;ioC>pE~XcPkwBWRW|lE%~uN?#HBMA`{|x9-pm zy;{w7XSkoIOPywScdI5WhCesNV%@l8*sdTe?wt2ZzmwU?lH!ZM6kxY1)wZa%+MS5V z$%iq38~OpW0O0jUG?7H}Q)dnnB`jb>d%Sv$%_prQt5O>v`k?1`(5%ayz-q7`*#xoF zS@eL~1{=Mg;UvTO72Ebb2po0w@FF(ZPP_x$DKJ}M8*1U~NbtJDa}z*g0MAla0rI8P zY#25n2#$@NyonbFW5IL$F|Q{dbJl986X8LqEEM4fUT+DLXvX+b8v-~>N>=Osj91

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

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

    `%Am7 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ໞcf$(9E>UWtqg`Q1b?HJnx@uIBTK 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 Rm#}Y*^zFyP48?;=GQ|i0+8)>a5DF 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